Đồ án 1: Đồng hồ báo thức
PHẦN I. CƠ SỞ LÝ THUYẾT
Chương 1: Giới thiệu khái quát về 89C51
Đặc điểm và chức năng hoạt động của các IC họ MSC-51 hoàn toàn tương
tự nhau, ở đây ta giới thiệu 89c51 với các đặc điểm chính sau:
- 4KB EPROM nội
- 128 byte RAM nội
- 4 port xuất / nhập (I/O port) 8 bit
- 2 bộ đònh thời 16 bit
- Giao tiếp nối tiếp
- 64kb Rom ngoài
- 64kb Ram ngoài
- 210 vò trí nhớ để đònh vò bit, mỗi vò trí một bit
- 4us cho hoạt động nhân hoặc chia
1.1. Cấu trúc bên trong của IC 89C51 :
Hình I.1.1: Sơ đồ khối của chip 8051
GVHD: Trương Năng Toàn 1
Đồ án 1: Đồng hồ báo thức
- Thành phần chính của vi điều khiển 8051 là bộ xử lý trung tâm hay
còn gọi là CPU. CPU bao gồm:
Thamh ghi tích luỹ A
Thanh ghi tích luỹ B, dùng cho phép nhân và chia
Đơn vò logic học ALU
Từ trạng thái chương trình PSW
4 bank thanh ghi
Con trỏ ngăn xếp
- Ngoài ra còn có bộ nhớ chương trình, bộ giải mã lệnh, bộ điều khiển
thời gian và logic
- Đơn vò xử lý trung tâm nhận trực tiếp xung từ bộ dao động
- Chương trình đang chạy có thể cho dừng lại nhờ một khối điều khiển ở
bên trong. Các nguồn ngắt có thể là các biến cố ở bên ngoài, sự tràn bộ đếm
30
31
40
1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
39
38
37
P3.1/T X D
P3.2/INT 0
P3.3/INT 1
P3.4/T 0
P3.5/T 1
P3.6 /WR
P3.7/RD
P0 .0 /AD0
P0 .1/AD1
P0 .2/AD2
P0 .3/AD3
P0 .4/AD4
P0 .5/AD5
P0 .6 /AD6
P0 .7/AD7
Đồ án 1: Đồng hồ báo thức
Bus đòa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7) → có sử dụng bộ
nhớ ngoài.
+ Lưu ý: Khi Port 0 đóng vai trò là port xuất nhập dữ liệu thì phải sử dụng các
điện trở kéo lên bên ngoài.
- Khi lập trình cho ROM trong chip thì Port 0 đóng vai Hình I.1.2 sơ đồ chân
89C51
trò là ngõ vào của dữ liệu (D0 – D7)
Port 1:
- Port 1 (P1.0 – P1.7) có số chân từ 1 – 8.
- Port 1 có một chức năng: Port xuất nhập dữ liệu (P1.0 – P1.7) → sử
dụng hoặc không sử dụng bộ nhớ ngoài.
- Khi lập trình cho ROM trong chip thì Port 1 đóng vai trò là ngõ
vào của đòa chỉ byte thấp (A0 – A7)
Port 2:
P3.4 T0 B4H Ngõ vào của bộ đònh thời/đếm 0
P3.5 T1 B5H Ngõ vào của bộ đònh thời/đếm 1
P3.6 WR\ B6H Điều khiển ghi bộ nhớ dữ liệu (RAM) ngoài
P3.7 RD\ B7H Điều khiển đọc bộ nhớ dữ liệu (RAM) ngoài
Chân PSEN: là chân 29, có 4 tín hiệu điều khiển, là tín hiệu để cho
phép bộ nhớ chương trình mở rộng và thường được nối lên chân OE của một
EPROM để cho phép đọc các byte mã lệnh.
PSEN ở mức thấp trong thời gian lấy lệnh. Các mã nhò phân của chương
trình được đọc từ Eprom qua bus và được chốt vào thanh ghi lệnh của 8051
để giải mã lệnh. Khi thi hành chương trình trong Rom nội PSEN sẽ thụ động
(mức cao).
Chân ALE: (chốt) Tín hiệu ra ALE trên chân 30 tương hợp với các thiết
bò làm việc với các xử lý 8585,8088,8051 dùng ALE một cách tương tự cho
làm việc giải các kênh các Bus đòa chỉ và dữ liệu khi port 0 được dùng trong
chế đọ chuyển đổi của nó: vừa là Bus dữ liệu vừa là byte thấp của đòa chỉ,
ALE là tín hiệu để chốt đòa chỉ vào vào một thanh ghi bên ngoài trong nửa
đầu của chu kỳ bộ nhớ. Sau đó các đương port 0 dùng để xuất hoặc nhập dữ
liệu trong nửa sau của chu kỳ bộ nhớ.
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên
chíp và có thể được làm xung nhòp cho các hệ thống. Nếu xung trên 8051 là
12MHZ thì ALE có tần số 2MHZ. Chỉ ngoại trừ khi thi hành lệnh Movx, một
xung ALE bò mất. Chân này cũng được làm ngõ vào cho xung lập trình cho
Eprom trong 8051.
Chân EA: (truy xuất ngoài):Tín hiệu vào EA trên chân 31 thường được
mắc lên mức cao(+5V) hoặc mức thấp(GND). Nếu ở mức cao, 8051 thi hành
chương trình từ Rom nội trong khoảng đòa chỉ thấp(4K). Nếu ở mức thấp
chương trình chi được thi hành từ bộ nhớ mở rộng. Khi dùng 8031, EA luôn
được nối ở mức thấp vì không có bộ nhớ chương trình trên chíp. Nếu EA
được nối ở mức thấp bộ nhớ bên trong chương trình 8051 sẽ bò cấm và thi
hành chương trình Eprom mở rộng. Người ta còn dùng chân EA làm chân
5
6
7
8
9
10
11
14
17
1
18
15
13
IRQ
SQW
VCC
GND
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AS
DS
MOT
RST
R/W
hiện sườn xuống của AS/ALE tại thời điểm mà DS12C887 chốt đòa chỉ từ AD0
tới AD7.
Dữ liệu phải được hiển thò và giữ ổn đònh trong suốt phần sau của DS hoặc
xung WR. Trong chu kỳ đọc của DS12C887 ngõ ra 8 bit của dữ liệu trong suốt
phần sau của DS hoặc xung RD. Chu kỳ đọc được thục hiện xong và Bus trở
GVHD: Trương Năng Toàn 6
Đồ án 1: Đồng hồ báo thức
về trạng thái tổng trở cao cũng như khi DS bắt đầu xuống thấp trong trường
hợp đònh thời Motorola hoặc khi RD lên cao trong trường hợp đònh thời Intel.
AS: xung dương cung cấp xung chốt đòa chỉ trong việc phức hợp Bus.
Sườn xuống của AS/ ALE làm cho đòa chỉ bò chốt lại bên trong của DS12C887.
Sườn lên tiếp theo khi xuất hiện trên Bus AS sẽ bò xoá đòa chỉ bất chấp chân
CS có được chọn hay không. Lệnh truy cập có thể gửi tới bằn cả hai cách.
DS: chân DS/ RD có hai kiểu sử dụng tuỳ thuộc vào mức của chân MOT.
Khi chân MOT được nối lên Vcc, Bus đònh thời Motorola được lựa chọn. Trong
kiểu này DS là xung dương trong suốt phần sau của chu kỳ Bus và được gọi là
Data Strobe. Trong suốt chu kỳ đọc, DS báo hiệu thời gian mà DS12C887
được điều khiển bus đôi. Trong chu kỳ đọc, xung quét của DS là nguyên nhân
làm DS12C87 chốt dữ liệu được ghi. Khi chân MOT được nối xuống GND,
Bus đònh thời Intel được lựa chọn. Trong kiểu này, chân DS được gọi là
Read(RD) xác đònh chu kỳ thời gian khi DS12C887 điều khiển bus đọc dữ
liệu. Tín hiệu RD có cùng đònh nghóa với tín hiệu OE trong bộ nhớ riêng.
R/ W: có hai cách hoặt động. Khi chân MOT được kết nối lên Vcc cho
chế độ đònh thời Motorola, R/ W đang ở chế độ chỉ ra hoặc là chu kỳ hiện tại
là chu kỳ đọc hoặc ghi. Chu ky đòi hỏi chân R/ W phải ở mức cao khi chân
DS ở mức cao. Chu kỳ đòi hỏi chân R/W ở mức thấp trong suốt quá trình chốt
tín hiệu của DS. Khi chân MOT được nối GND cho chế độ đònh thời Intel, tín
hiệu R/ W là tín hiệu hoạt động mức thấp được gọi là WR. Trong chế độ này
chân R /W được đònh nghóa như tín hiệu Write Enable trong Ram chung.
CS: tín hiệu lựa chọn phải đựoc xác đònh ở mức thấp ở chu kỳ bus để
GVHD: Trương Năng Toàn 10
Đồ án 1: Đồng hồ báo thức
lòch, dữ liệu báo giờ và 4 byte được sử dung cho việc điều khiển và thông
báo tình trạng.
Tất cả 128 byte có thể được ghi hoặc đọc trực tiếp từ nhữnh trường hợp
sau:
- Thanh ghi C và D là hai thanh ghi chỉ đọc
- Bit thứ 7 của thanh ghi A là bit chỉ đọc.
- Bit cao của byte thứ hai là bit chỉ đọc
Thời gian và đã có bằng cách đọc các byte bộ nhớ hiện có. Thời gian,
lòch và báo giờ được đặt hoặc gán giá trò bằng cách ghi giá trò byte Ram
thích hợp. Nội dung của 10 byte chứa thời gian lòch và báo giờ đều có thể
hiển thò ở hai dạng nhò phân hoặc BCD. Trước khi ghi lên các thanh ghi
thời gian , lòch và báo giờ bên trong, bit SET ở thanh ghi B phải được đặt ở
mức 1 để ngăn ngừa sự cập nhật có thể xảy ra trong quá trình ghi đè.
Thêm vào nữa là đẻ ghi lên 10 thanh ghi chỉ thời gian, lòch và báo giờ ở
một đònh dạng đã lựa chọn(BCD hay nhò phân), bit chọn kiểu dữ liệu DM
của thanh ghi B phải được đặt ở mức logic thích hợp. Tất cả 10 byte thời
gian lòch và báo giờ phải sử dụng cùng kiểu dữ liệu. Bit được đặt ở thanh
ghi B nên được xoá sau khi bit kiểu dữ liệu đã được ghi để cho phép đồng
hồ thời gian thực cập nhật byte thời gian và lòch. Vào lúc đầu đồng hồ thời
gian cập nhật ở một kiểu đã được lựa chọn. Kiểu dữ liệu không thể thay
đổi mà không khởi động lại 10 byte dữ liệu. Bảng sau trình bày đònh dạng
nhò phân và BCD của thời gian lòch và báo giờ. Bit lựa chọn kiểu hiển thò
24-12 không thể thay đổi mà không khởi động lại thanh ghi giờ. Khi đònh
dạng kiểu 12 giờ được chọn bit cao của byte giờ tương ứng với PM khi nó
được đặt ở mức logic 1. Byte thời gian lòch và byte báo giờ luôn được truy
cập bởi vì chúng được đệm gấp đôi, mỗi giây một lần 11byte được nâng
cấp và được kiểm tra tình trạng báo giờ. Nếu lệnh đọc dữ liệu thời gian và
lòch diễn ra trong quá trình cập nhật, một vấn đề phát sinh là có thể thời
Bảng sau liệt kê chu kỳ ngắt với tần số sóng vuông mà có thể lựa chọn với
bit RS. Cả 4 bit đọc ghi và không bò ảnh hưởng bởi chân reset.
- Thanh ghi B:
Bảng I.2.4.2: Đòa chỉ thanh ghi B của RTC DS12C887
BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
SET PIE AIE UIE SQWE DM 24/12 DSE
- SET: Khi bit SET ở mức 0, thông thường quá trình cập nhật bằng
cách tăng biến đếm 1 lần một giây. Khi bit SET được lên vào mức 1
mọi quá trình cập nhật đều bò cấm, và chương trình có thể bắt đầu
khởi động byte thời gian và lòch mà không có quá trình cập nhật nào
GVHD: Trương Năng Toàn 12
Đồ án 1: Đồng hồ báo thức
xảy ra trong quá trình khởi động, chu kỳ đọc có thể thực thi ở cùng
một kiểu. SET là bit đọc ghi và không chòu ảnh hưởng bởi Reset hoặc
các chức năng bên trong của DS12C887.
- PIE: Bit cho phép ngắt theo chu kỳ, là bit đọc ghi, nó cho phép bit cờ
ngắt theo chu kỳ trong thanh ghi C để điều khiển chân IRQ\ xuống
mức thấp tuỳ thuộc vào tỉ lệ phân bố của RS3 đén RS0 ở thanh ghi A.
- AIE: Bit cho phép ngắt báo giờ, là bit đọc ghi mà khi được đặt lên 1
nó cho phép bit cờ báo giờ(AF) ở thanh ghi C để cho phép ngắt
IRQ\. Tín hiệu ngắt báo giờ diễn ra ở tất cả các giây khi cả 3 byte
báo giờ chứa mã báo giờ được thể hiện ở nhò phân như sau
11XXXXXX. Các chức năng bên trong của DS12C887 không bò ảnh
hưởng bởi chân AIE.
- UIE: Bít cho phép kết thúc quá trình ngắt cập nhật, là bit đọc ghi mà
cho phép bit cờ kết thúc quá trình cập nhật ở thanh ghi C để cho
phép ngắt IRQ\. Chân Reset ở mức 0 hoặc chân SET ở mức 1 sẽ xoá
bit UIE.
- SQWE: là bit cho phép xuất sóng vuông, được đặt lên mức 1, một tín
hiệu sóng vuông có tần số được đặt ở vò trí được lựa chọn của bit RS3
trình đọc hoặc chân reset ở mức thấp.
- Thanh ghi D:
Bảng I.2.4.4: Đòa chỉ thanh ghi D của RTC DS12C887
BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
VRT 0 0 0 0 0 0 0
VRT: Bit thời gian và Ram hợp lệ, biểu thò tình trạng của pin được kết nối
chân VBAT. Bit này không phải là bit ghi được và luôn có giá trò là 1 khi
đọc, nếu hiên thò mức 0, nguồn năng lượng pin bên trong đã cạn và cả hai
mục dữ liệu thời gian thực lẫn dữ liệu Ram đều bò nghi ngờ. Bit này không
bò ảnh hưởng bởi chân reset.
PHẦN II. THIẾT KẾ VÀ THI CÔNG
1.Sơ đồ nguyên lý:
GVHD: Trương Năng Toàn 14
D P
Q 9
C 1 8 1 5
V C C
A D 2
R 2 2
R
0
P 1 . 3
P 2 . 4
3 3 0
R
P 1 . 7
A D 3
A 1 0 1 5
P N P B C E
D
0
A 1 0 1 5
P N P B C E
0
V C C
A D 3
P 1 . 1
P 2 . 7
A L E
M O D E
D W N
M O D E
Q 9
C 1 8 1 5
U 6
D V . P H U T
7
6
4
2
1
9
1 0
5
3
8
A
B
C
D
P N P B C E
R 9 4 K 7
0
V C C
M O D E 1
3 3 P
U P
R 6
3 3 0
C 4
C
P 1 . 6
A D 7
R 3
3 3 0
V C C
A
V C C
V C C
P 1 . 2C
R E S E T
0
A D 4
Q 1 0
C 1 8 1 5
P 3 . 2
P 2 . 7
P 1 . 1
1 2 MC R Y S T A L
R 2 0
2 7
2 8
1 0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
3 9
3 8
3 7
3 6
3 5
3 4
3 3
3 2
R S T
X T A L 2
X T A L 1
G N D
P S E N
A L E / P R O G
E A / V P P
V C C
P 1 . 0
P 1 . 1
P 1 . 2
P 1 . 3
R 1 7
R
A 1 0 1 5
P N P B C E
Q 9
I C N H A C
R 7
3 3 0
R 5
3 3 0
R 9 4 K 7
U 8
D V . G I A Y
7
6
4
2
1
9
1 0
5
3
8
A
B
C
D
E
F
G
U 3
C . G I O
7
6
4
2
1
9
1 0
5
3
8
A
B
C
D
E
F
G
D P
C A
C A
L O A
1
2
B
U 4
D V . G I O
7
6
P 2 . 5
G
R 1 3
3 3 0
R 1 8
R
R 9 4 K 7
P 3 . 7
U 9
D S 1 2 8 8 7
1 9
2 3
2 41 2
4
5
6
7
8
9
1 0
1 1
1 4
1 7
1
1 8
1 5
1 3
I R Q
S Q W
V C CG N D
P 2 . 6
R 2
1 0 0
V C C
P 3 . 0
R 1 9
3 3 0
P 3 . 6
Q 1 1
D 4 6 8
0
P 1 . 4
A D 0
A D 1
A D 6
P 2 . 0
A D 1
P 3 . 7
V C C
P 2 . 4
0
P 1 . 5
P 1 . 5
A D 5
3 3 P
A 1 0 1 5
P N P B C E
P 3 . 6
L O A
1
GVHD: Trửụng Naờng Toaứn 20
ĐỔ CHUÔNG 30s
S
Đ
Đồ án 1: Đồng hồ báo thức
GVHD: Trương Năng Toàn 21
ẹo aựn 1: ẹong ho baựo thửực
GVHD: Trửụng Naờng Toaứn 22
SET ARLAM
P3.1,#02
P3.1,#01
P3.1,#03
P3.1,#04
SET GI
SET PHT
SET GIY
SET TIME
P3.3,#02
P3.3,#01
P3.3,#03
P3.3,#04
SET GI
SET PHT
SET GIY
KIM TRA PHM NHN
HIN TH
SET GI
P3.4=0 TNG GI TR GI
S
S
GVHD: Trửụng Naờng Toaứn 25