Tải bản đầy đủ (.doc) (31 trang)

Đồ án tốt nghiệp: Đồng hồ thời gian thực

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (423.1 KB, 31 trang )

NHẬN XÉT CỦA GIÁO VIÊN HƯƠNG DẪN
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..


…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..


…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..

…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
…………………………………………………………………………………………………………
………………………………………………………………………………..
ngày

tháng

năm 2008

LỜI NÓI ĐẦU
Lời đầu tiên em xin gủi đến quý thầy cô khoa điện-điện tử,những người đã tận
tình dạy dỗ,chỉ bảo chúng em trong suốt thời gian qua.cảm ơn thầy Trần Nguyên Bảo
Trân đã hết lòng hướng dẫn và giúp đỡ em thực hiện đề tài này.
Đồng hồ thời gian thực là một thiết bị ,vận dụng rất phổ biến,được sử dụng
rộng rãi với nhiều chức năng hiện đại nhỏ gọn…Hiện nay, đã có rất nhiều thiết bị điện
tủu công nghệ cao tích hợp tính năng này.Tuy nhiên để làm được một đồng hồ như thế
đòi hỏi người thiết kế phải có một kiến thức khá tổng quát và áp dụng được nhiều
kiến thức chuyên môn đã học.
Vì kiến thức, sự hiểu biết còn ít ỏi và trìng độ chuyên môn còn hạn chế nên đề

tài chắc chắn còn sự thiếu sót. Rất mong nhận được sự đóng góp chân thành của thầy
cô và các bạn để đề tài này hoàn chỉnh hơn.


Tp.HCM, Tháng 1 năm 2008

MỤC LỤC
-Nhận xét của giáo viên hướng dẫn
-Lời nói đầu
-Mục lục

Phần 1: Lý thuyết thiết kế
I. Giới thiệu khái quát về 89c51
II. Giới thiệu về IC thời gian thực DS12C887
III. Giới thiệu về IC giải mã 74LS247

Phần 2: Thiết kế và thi công


I. Sơ đồ nguyên lý
II. Sơ đồ khối
III. Lưu đồ giải thuật
IV. Chương trình

Phần 3:
I. Tài liệu tham khảo
II. Lời kết

Phần 1: Lý thuyết thiết kế
I.Giới thiệu khái quát về 89C51

1.phần cứng:
Đặ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. cấu trúc bên trong của IC 89C51.


+
Thành phần chính của vi điều khiển 8051 la bộ xử lý trung tâm hay con 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 ma 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 định thời

hoặc cũng có thể là giao diện nối tiếp.
+ 2 bộ định thời 16 bit hoạt động như một bộ đếm.
+ Các cổng port 0, port 1, port 2, port 3 được sử dụng vào mục đích điều khiển, ở
cổng port 3 có thêm các đường dẫn điều khiển dùng để trao đổi với một bộ nhớ
bên ngoài, hoặc để đầu nối giao diện nối tiếp cũng như các đường dẫn ngắt bên
ngoài.


+ Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng bộ làm
việc độc lập với nhau. Tốc độ truyền qua cổng nối tiếp có thể đặt trong dải rộng và
được ấn định bằng một bộ định thời.
+ Trong vi diều khiển 8051 còn có hai thành phần quan trọng khác là bộ nhớ và
các thanh ghi
+Bộ nhớ còn có Ram và Rom dùng để lưu dữ liệu và mã lệnh.
+ Các thanh ghi sử dụng để lưu dữ thông tin trong quá trình xử lý. Khi CPU làm
việc, nó làm thay đôỉ nội dung của các thanh ghi

2. Sơ đồ chân 89c51:

U1
39

40

P0.0/AD0
VCC
38
- port 0: có hai chức năng từ chân 32 đến chân 39 trong
P0.1/AD1
37

21
P0.2/A D2
P2.0/A8
36
22
các thiết kế nhỏ.(không dùng bộ nhớ mở rộng).
P0.3/
A
D3
P2.1/A9
35
23
P0.4/AD4
P2.
2
/A10
34
24
có hai chức năng như các đường I/O. Đối với các thiết kế
P0.5/A D5
P2.3/A11
33
25
P0.6/A D6
P2.4 /A 12
32
26
P0.7/
A
D7

P2.
5
/A13
cỡ lớn( với bộ nhớ mở rộng) nó được kết hợp kênh giữa
27
P2.
6
/A14
1
28
P1.0
P2.
7
/A15
các Bus.
2
P1.1
3
10
P1.2
P3.0/RXD
4
11
- Port 1: là port I/O trên các chân từ chân số 1 đến chân
P1.3
P3.1/TXD
5
12
P1.4
P3.2/INT0

6
13
số 8. có thể dùng các thiết bị ngoài nếu cần. Port 1
P1.5
P3.3/INT1
7
14
P1.6
P3.
4
/
T
0
8
15
không có chức năng khác vì thế chúng ta chỉ được
P1.7
P3.5/T1
16
P3.
6
/WR
19
17
dùng trong các thiết bị ngoài.
XTAL1
P3.
7
/RD
18

XTAL2
30
- Port 2: là port công dụng kép trên các chân 21 đến 28
ALE/PROG
31
29
EA/VPP
PSEN
9
20
RST
GND
được dùng như các đường xuất nhập hoặc byte cao
của bus địa chỉ đối với các thiết kế mở rộng.
AT89C51
- Port 3: là port công dụng kép trên các chân 10 đến
chân 17. Các chân cûa port này có nhiều chức năng, các công dụng chuyển
đổi có liên hệ với các đặc tín đặc biệt của 8051/8031 như ở bảng sau:
Bit
Tên
Chức năng chuyển đổi
P3.0
RXD
Dữ liệu nhận cho port nối tiếp
P3.1
TXD
Dữ liệu phát cho port nối tiếp
P3.2
INTO
Ngắt 0 bên ngoài

P3.3
INT1
Ngắt 1 bên ngoài
P3.4
T0
Ngõ vào của timer/courter 0
P3.5
T1
Ngõ vào của timer/courter 1
P3.6
WR
Xung ghi bộ nhớ dữ liệu ngoài
P3.7
RD
Xung đọc bộ nhớ dữ liệu 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 cấp điện
áp 21V khi lập trình cho Eprom trong 8051.
+ Chân RST(reset): Khi tín hiệu này được đưa lên mức cao(ít nhất phải 2 chu
kỳ máy), các thanh ghi trong 8051 được tải những giá trị thích hợp đẻ khởi
động hệ thống.
+ Các ngõ vào bộ dao động trên chip:
Như đã thấy ở các hình trên,8051 có bộ dao động trên chip. Nó thường được
nối với thạch anh gia hai chân 18 và 19. Các tụ giữa cũng cần thiết như đã vẽ.
Tần số thạch anh thông thường là 12MHZ
+ Các chân nguồn: 8051 vận hành với nguồn đơn +5V(VCC) được nối vào
chân 40 và chân 20 được nối GND
II. Giới thiệu về IC thời gian thực DS12C887:
1. Sơ đồ chân chư sau:
U1
14
17
1
18

15
13
12
DS12887

AS

VCC

DS

AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
SQW
IRQ

MOT
RST
R/W
CS
GND

24
4

5
6
7
8
9
10
11
23
19


AD0-AD7: Bus đa hợp địa chỉ/dữ liệu.
NC: Bỏ trống.
MOT: Lựa chọn loại Bus.
CS: Ngõ vào lựa chọ RTC
AS: chốt địa chỉ.
R/ W: Ngõ vào đọc ghi.
DS: Chốt dữ liệu.
RESET: Ngõ vào reset.
IRQ: Nhõ ra yêu cầu ngắt.
SQW: Ngõ ra sóng vuông.
VCC: Nguồn cung cấp +5V.
GND: Mass
2. Chức năng các chân:
- GND, VCC: nguồn cung cấp cho thiết bị ở những chân trên. Vcc là điện áp
ngõ vào +5v. Khi điện áp 5v được cung cấp đúng chuẩn, thiết bị được truy
cập đầy đủ và dữ liệu có thể đọc và ghi. Khi Vcc thấp hơn 4.25v, quá trình
đọc và ghi bị cấm tuy nhiên chức năng giữ thời gian vẫn được tiếp tục
không bị ảnh hưởng bởi điện áp bị sụt giảm bên ngoài. Khi Vcc rớt xuống
thấp hơn 3v, Ram và bộ nhớ giờ được chuyển sang nguồn năng lượng bên

trong.
- MOT: là chân có tính linh hoạt để lựa chọn giữa hai loại Bus. Khi được nối
lên Vcc, Bus định thời Motorola được lựa chọn. Khi được nối xuống GND
hoặc không nối, Bus định thời Intel được lựa chọn. Chân có điện trở kéo
xuống bên trong có giá trị khoảng 20K.
- SQW: có thể xuất tín hiệu ra từ 1 trong 13 loại được cung cấp từ 15 trạng
thái được chia bên trong của RTC. Tần số của chân SQW có thể thay đổi
bằng cách lập trình thanh ghi A. Tín hiệu SQW có thể mở hoặc tắt khi ta sử
dụng bit SQWE trong thanh ghi B. Tín hiệu SQW không xuất hiện khi khi
Vcc thấp hơn 4.25v
- AD0-AD7: Bus đa hợp tiết kiệm chân bơi vì thông tin địa chỉ và thông tin
dữ liệu được dùng chung đường tín hiệu. Cùng tại nhưng chân, địa chỉ được
suất trong suốt phần thứ 1 của chu kỳ Bus và được dùng cho dữ liệu trong
phần thứ 2 của chu kỳ. Đa hợp địa chỉ/ dữ liệu không làm chậm thời gian
truy cập của DS12C887 khi bus chuyển từ địa chỉ sang dữ liệu xảp ra trong
suốt thời gian truy cập Ram nội. Địa chỉ phải có giá trị trước khi xuất 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ở 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 đựoc đ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 để
DS12C887 được sử dụng. CS phải được giữ trong trạng thái hoạt động rtong
suốt DS và AS của chế độ định thời Motorola và trong suốt RD và WR của

chế độ định thời Intel. Chu kỳ bus khi chọn vị trí mà không chọn CS sẽ chốt
địa chỉ nhưng sẽ không có bất kỳ sự truy cập nào. Khi Vcc thấp hơn
4.25Volts, chức năng bên trong của DS12C887 ngăn chặn sự truy cập bằng
cáchkhông cho phép llựa chọn nhõ vào CS. Hành động này nhằm bảo vệ cả
dữ liệu của đồng hồ thời gian thực bên trong cung như dữ liệu Ram trong
suốt quá trình mất nguồn.
IRQ: là ngõ ra hoạt động mức thấp, có thể sử dụng ngõ vào ngắt tới bộ vi xử
lý.Ngõ ra IRQ\ ở mức thấp khi bit là nguyên nhân làm ngắt và phù hợp với
bit cho phép ngắt được đặt(set). Để xoá chân IRQ\ chương trình của bộ vi
xử lý thông thường được đặt ở thanh ghi C. Chân Reset cũng bị xoá trong
lúc ngắt. Khi không có trạng tgái ngắt nào được sử dụng, trạng thái IRQ\ ở
mức tổng trở cao. Nhiều thiết bị ngắtcó thể nối tới IRQ\ Bus là một ngõ ra
mở và yêu cầu một điện trở kéo lên bên ngoài.


- RESET: không hiệu lực đối với lịch, đồng hồ hoặc Ram. Ở chế độ cấp
nguồn, chân reset có thể bị kéo xuống trong thời gian cho phép đẻ ổn định
nguồn cung cấp.
3. Cấu trúc bên trong của DS12C887.

a.sơ đồ địa chỉ của Real time clock


Sơ đồ địa chỉ của DS12C887 được trình bày bao gồm 113 byte Ram thông dụng,
11 byte Ram mà thành phần bao gồm đồng hồ thời gian 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 co. 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 gian giờ, phút,
giây có thể không chính xác, xác xuất đọc kkhông chính xác dữ liệu thời gian và
lịch là rất thấp.
Sau đây ta tìm hiểu các thanh ghi điều khiển trong DS12C887.
- Thanh ghi A:
MSB
LSB
BIT7
BIT6
BIT5
BIT4
BIT3

BIT2
BIT1
BIT0
UIP
DV2
DV1
DV0
RS3
RS2
RS1
RS0
+ UIP: là bít trạng thái mà có thể theo dõi được, khi bit UIP ở mưc 1, quá trình
cập nhật sẽ sớm xảy ra. Khi bit UIP ở mức 0, quá trình cập nhật sẽ không xảy ra ít


nhất 244Us. Những thông tin về thời gian lịch và báo giờ ở trong Ram có đầy đủ
cho việc truy cập khi bit UIP ở mức 0. Bit UIP là bit chỉ đọc và không bị ảnh
hưởng bởi chân reset. Khi ghi bit SET ở thanh ghi B lên mức 1 để ngăn chặn quá
trình cập nhật và xoá bit trạng thái UIP.
+ DV2, DV1, DV0: 3bit trên được sử dụng để bật tắt bộ dao động và cài đặt lại
quá trình đếm xuống. Khi được đặt 010 thì đó là sự kết hợp duy nhất để bật bộ dao
động lên và cho phép RTC giữ thời gian. Khi được đặt 11X sẽ cho phép bộ dao
động nhưng giữ quá trình đếm xuống ở mức reset. Quá trình cập nhật tiếp theo sẽ
sớm diễn ra sau 500ms sau khi kiểu 010 đực ghi vào DV1, DV2, DV3.
+ RS3, RS2, RS1,RS0: 4bit loại lựa chọn để lựa chọn 1 trong 13 loại của bộ chia
15 trạng thái hoặc không cho phép xuất tín hiệu chia ra ngoài. Loại được lựa chọn
có thể phát ra sóng vuông(chân SQW) hoặc ngắt theo chu kỳ. Người sử dụng có
thể sử dụng một trong những cách sau:
- Cho phép ngắt với bit PIE
- Cho phép xuất ngõ ra chân SQW với bit SQWE.

- Cho phép cả hai hoạt động cùng một lúc và cùng một loại.
- Không kích hoạt cả hai.
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:
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 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 đến RS0
sẽ điều khiển sóng ra tại chân SQW. Khi bit SQWE được đặt ở mức thấp,
chân SQW sẽ được giữ ở mức thấp. SQWE là bit đọc ghi và được xoá khi
Reset. SQWE được đặt lên 1 khi được cấp Vcc.
- DM: Bit kiểu dữ liệu qui định khi nào là thông tin lịch và thời gian ở định
dạng nhị phân hoặc BCD. Bit DM được đặt bởi chương trình có thể định
dạng thích hợp và có thẻ đọc khi được yêu cầu. Bit này không bị thay đổi
khi Reset. Mức 1 của DM sẽ hiển thị dữ liệu nhị phân, mức 0 hiẻn thị dữ
liệu BCD.
- 24/ 12: Bit xác định kiểu byte giờ. Khi ở mức 1 nó hiển thị kiểu 24 giờ, bit 0
hiển thị 12 giờ. Bit này không ảnh hưởng bởi các chức năng bên trong hoặc
chân reset.
- DSE: Bit cho phép nhớ công khai. Bit này cũng không bị ảnh hưởng bởi
chức năng bên trong hoặc chân reset.
- Thanh ghi C:
MSB
LSB
BIT7
BIT6
BIT5

BIT4
BIT3
BIT2
BIT1
BIT0
IRQF
PF
AF
UF
0
0
0
0
- IRQF: Bit cờ yêu cầu ngắt được đặt lên 1 khi những điều dưới đây đúng:
PF=PIE=1
AF=AIE=1
UF=UIE=1
Đều có nghĩa là IRQF=(PF.PIE)+(AF.AIE)+(UF.UIE).
Bất cứ lúc nào bit IRQF được đặt lên 1, chân IRQ\ được đặt xuống mức
thấp. Bit cờ PF,AF và UF được xoá khi thanh ghi C được chương trình đọc
hoặc chân reset ở mức thấp.
- Thanh ghi D:
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.


III. IC gải mã 74LS247
Là loại IC dùng để giải mã số nhị phân 4 bit (số BCD) sang mã 7 đoạn. IC
gồm 16 chân, hoạt động với nguồn 5V.
A,B,C,D: 4 ngõ vào
RBI, LT, BI/RBO được nối lên nguồn.
a,b,c…g là chân ra led 7 đoạn.
Led

7đoạn ở đây ta dùng loại Anôt chung.


Phần 2: Thiết kế và thi công
I.Sơ đồ nguyên lý và sơ đồ mạch in:


VCC

VCC

VCC

VCC
VCC

1
2
3
4
5
6
7
8

LOA
LED

P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7


19
18
VCC

9

1K
14

READ

17

WRITE

33P

DS

15
13

MOT
RST
R/W

WRITE
READ

DS12887


NGAT

AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7

VCC

TANG

23

SQW

19

IRQ

VCC

ALE

GIAM


VCC
U4

LT
RBI

VCC

BCD1
BCD2
BCD3
BCD4

7
1
2
6

D0
D1
D2
D3

A
B
C
D
E
F
G


A
B
C
D
E
F
G

13
12
1
10
9
15
14

VCC
1K

1K

SPEAKER

Q2
NPN

10K

CHUYEN


GND

100

LS1

VCC
VCC

VCC

VCC
10UF

4
5
6
7
8
9
10
1

AD0
AD1
AD2
AD3
AD4
AD5

AD6
AD7

CS

CHUYEN

30
29

PSEN

AS

1

NGAT
TANG
GIAM

24

U1

ALE

VCC

BCD1
BCD2

BCD3
BCD4
LED1
LED2
LED3
LED4

18
10
1
12
13
14
15
16
17

ALE/PROG

EA/VPP
RS T

20

33P

31

21
22

23
24
25
26
27
28

P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD

XTAL1
XTAL2

12M

AT89C51
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15


BI/RBO

1K

P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7

GND

LED5
LED6

RES ISTO R S IP9

VCC

39
38
37
36
35
34
33

32

12

AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7

D3

16
3
5
4

AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7

2

3
4
5
6
7
8
9

VCC

1

1K

LED

GND

VCC

U3

40

R2

74LS 47

VCC


VCC

VCC

VCC

LOA

VCC

2

IN

OUT
GND

VCC

8

LED
8K2

5

A
B
C
D

E
F
G
DP

10

7
6
4
2
1
9
5

A
B
C
D
E
F
G
DP

10

7
6
4
2

1
9
5

A
B
C
D
E
F
G
DP

10

7
6
4
2
1
9
5

A
B
C
D
E
F
G

DP

10

7
6
4
2
1
9
5

A
B
C
D
E
F
G
DP

3

3

A
B
C
D
E

F
G

A
B
C
D
E
F
G

10

7
6
4
2
1
9
5

A
B
C
D
E
F
G
DP


3

A1015
U2

3

A
B
C
D
E
F
G

3.3V

U2

3

A
B
C
D
E
F
G

150


A1015

U2

3

A
B
C
D
E
F
G

A1015

U2

3
10

7
6
4
2
1
9

CA


A
B
C
D
E
F
G

A1015

U2

LED6

150

CA

A1015

U2

LED5

150

CA

A1015


LED4

150

CA

LED3

150

CA

LED2

150

CA

LED1

1




đồ mạch
hiển thị



Sơ đồ mạch xử lý

II. Lưu đồ giải thuật.
BEGIN

MAIN
BẬT BIẾN
HỆN GIỜ

BEGIN

LCALL
ENABLE_RTC

LCALL
DOC_DATA

LCALL
HEX_BCD

DOC_DATA

ENABLE_RTC

CHỌN THANH GHI
TRONG RTC
CHỌN GIÁ TRỊ THÍCH
HỢP GHI VÀO THANH
GHI TRONG VXL


LCALL
HIEN_THI

CHỌN Ô NHỚ CHỨA
GIÁ TRỊ GIỜ PHÚT
GIÂY TRONG VXL
LẤY GIÁ TRỊ GIỜ
PHÚT GIÂY TỪ RTC
ĐƯA VÀO VXL


CHUYỂN VÀO RTC QUA
THANH GHI R0 CỦA VXL
HEX_BCD

HIỂN THỊ

CHUYỂN TỪNG Ô NHỚ
CHỨA GIỜ,PHÚT,GIÂY
VÀO THANH GHI A

CHỌN LED 1
ORL VỚI GIÁ TRỊ
THÍCH HỢP ĐỂ BẬT
LED

CHUYỂN 10 VÀO
THANH GHI B

LED KẾ TIẾP

LẤY A CHIA B
BYTE CAO LÀ GIÁ TRỊ
HÀNG CHỤC

NGẮT
HIỂN THỊ 1

BYTE THẤP LÀ GIÁ
TRỊ HÀNG ĐƠN VỊ

S

Đ
P3.2=0

LOOP1
HIỂN THỊ 1
Đ
P3.2=0
S

THOÁT NGẮT
Đ

S
P3.3=0

S

S

P3.4=0

P3.5=0

TĂNG GIÁ TRỊ PHÚT

Đ
Đ

TĂNG GIÁ TRỊ PHÚT

GIẢM GIÁ TRỊ PHÚT

CHUYỂN 1

S
P3.3=0

CHUYỂN VÀO RTC
A=59TRỊ
A=0 PHÚT GIẢM
GIẢM P3.4=0
GIÁ
TĂNG
PHÚT
PHÚT
QUA THANH GHI R0

A=0
A=60

HEX_TO_BCD
LOOP
HEX_TO_BCD
DEC
LOOP
INC
1A A1


Đ
Đ
S

S
Đ
Đ
S

TĂNG GIÁ TRỊ GIỜ
S
P3.3=0
Đ
Đ
A=0

TĂNG GIỜ

S
A=24


INC A
A=23
GIẢMP3.4=0
GIÁ TRỊ GIỜ

GIẢM GIỜ

A=0
HEX_TO_BCD
LOOP
HEX_TO_BCD
DEC
LOOP
2A 2


S
Đ
Đ
S

CHUYỂN 1
LOOP 2

P3.5=0
S
A=0
Đ

RETURN1

R2=0
LOOP 2
HIỂN THỊ 2
Đ
P3.2=0

THOÁT NGẮT


S
Đ
P3.3=0
S

TĂNG GIÁ TRỊ GIỜ

Đ

GIẢM GIÁ TRỊ GIỜ

P3.4=0
S
S

P3.5=0

Đ

CHUYỂN2


CHUYỂN 2
P3.5=0

LOOP 1
S

A=0

RETURN2

III. Chương trình.
R2=0

$MOD51
ORG
00H
LJMP MAIN
ORG
03H
LJMP NGAT
ORG
30H
MAIN:
MOV
R3,#1
;BIEN HEN GIO CHAN LE
BEGIN:
LCALL ENABLE_RTC
LED5 BIT
P1.1

LED6 BIT
P1.0
MOV
IE,#81H
MOV
R2,#0
MOV
20H,#0
;O NHO CHUA GIAY
MOV
21H,#0
;O NO CHUA PHUT
MOV
22H,#0
;O NHO CHUA GIO
MOV
23H,#0
;O NHO DON VI CUA GIAY
MOV
24H,#0
;O NHO CHUC CUA GIAY
MOV
25H,#0
;O NHO DON VI CUA PHUT
MOV
26H,#0
;O NHO CHUC CUA PHUT
MOV
27H,#0
;O NHO DON VI CUA GIO

MOV
28H,#0
;O NHO CHUC CUA GIO
LCALL DOC_DATA
;LCALL
CHOPTAT
;2 LED DON CHOP TAT THEO NHIP GIAY
LCALL HEX_BCD
LCALL HIEN_THI
SJMP BEGIN
;******************************************
DOC_DATA:


MOV
MOV

R0,#0
R1,#20H

X12:
MOVX A,@R0
MOV
@R1,A
MOV
R7,#0
MOV
R7,20H
;******************************************
;DOAN CHUONG TRINH DE HEN GIO

;******************************************
CJNE R3,#00,GIO_CHAN
LJMP GIO_LE
GIO_CHAN:
CJNE R7,#00,THOAT_1
MOV
R7,#00
MOV
R7,21H
CJNE R7,#00,THOAT_1
MOV
R7,#00
MOV
R7,22H
CJNE R7,#22,AA
LJMP CHUONG_CHAN
AA:
CJNE R7,#20,BB
LJMP CHUONG_CHAN
BB:
CJNE R7,#18,CC
LJMP CHUONG_CHAN
CC:
CJNE R7,#16,DD
LJMP CHUONG_CHAN
DD:
CJNE R7,#14,EE
LJMP CHUONG_CHAN
EE:
CJNE R7,#12,FF

LJMP CHUONG_CHAN
FF:
CJNE R7,#10,GG
LJMP CHUONG_CHAN
GG:
CJNE R7,#8,HH
LJMP CHUONG_CHAN
HH:
CJNE R7,#6,THOAT
LJMP CHUONG_CHAN
X11:
LJMP X12
THOAT_1:
LJMP THOAT
GIO_LE:
MOV
R7,#00
MOV
R7,22H
CJNE R7,#21,II
LJMP CHUONG_LE
II:
CJNE R7,#19,JJ
LJMP CHUONG_LE
JJ:
CJNE R7,#17,KK
LJMP CHUONG_LE
KK:
CJNE R7,#15,LL
LJMP CHUONG_LE

LL:
CJNE R7,#13,MM
LJMP CHUONG_LE


MM:

CJNE R7,#11,NN
LJMP CHUONG_LE
NN:
CJNE R7,#9,OO
LJMP CHUONG_LE
OO:
CJNE R7,#7,THOAT
CHUONG_LE:
;GIO LE THI BAO CHUONG LE
CLR
P1.3
LCALL DELAY_CHUONG
;THOI GIAN CHUONG REO
SETB P1.3
MOV
R3,#1
LJMP THOAT
CHUONG_CHAN:
;GIO CHAN THI BAO CHUONG CHAN
CLR
P1.4
LCALL DELAY_CHUONG
;THOI GIAN CHUONG REO

SETB P1.4
MOV
R3,#00
;*************************************************
THOAT:
INC
R0
INC
R0
INC
R1
CJNE R0,#06,X11
RET
;********************************************
ENABLE_RTC:
MOV
R0,#0AH
MOV
A,#0AFH
MOVX @R0,A
MOV
R0,#0BH
MOV
A,#0EH
MOVX @R0,A
RET
;********************************************
;DOAN CHUONG TRINH DOC TU RTC VAO VXL
;********************************************
DOC:

MOV
R0,#0
MOV
R1,#20H
X1:
MOVX A,@R0
MOV
@R1,A
INC
R0
INC
R0
INC
R1
CJNE R0,#06,X1
RET
;*********************************************
;*********************************************
;CHUYEN TU SO HEX SANG BCD
;*********************************************
HEX_BCD:
MOV
A,20H
MOV
B,#10
DIV
AB


MOV

23H,B
MOV
24H,A
MOV
A,21H
MOV
B,#10
DIV
AB
MOV
25H,B
MOV
26H,A
MOV
A,22H
MOV
B,#10
DIV
AB
MOV
27H,B
MOV
28H,A
RET
;*********************************************
;*********************************************
;DOAN CHUONG TRINH QUET LED
;*********************************************
HIEN_THI:
MOV

A,23H
ORL
A,#0F0H
MOV
P2,A
CLR
LED6
SETB LED5
LCALL DELAY
MOV
A,24H
ORL
A,#0F0H
MOV
P2,A
CLR
LED5
SETB LED6
LCALL DELAY
MOV
A,25H
ORL
A,#70H
MOV
P2,A
SETB LED6
SETB LED5
LCALL DELAY
MOV
A,26H

ORL
A,#0B0H
MOV
P2,A
SETB LED6
SETB LED5
LCALL DELAY
MOV
A,27H
ORL
A,#0D0H
MOV
P2,A
SETB LED6
SETB LED5
LCALL DELAY
MOV
A,28H
ORL
A,#0E0H
MOV
P2,A
SETB LED6
SETB LED5
LCALL DELAY


RET
;***************************************************
;***************************************************

;DOAN CHUONG TRINH NGAT DE CHINH GIO PHUT
;CO LONG VAO CHUONG TRINH CHON LED DE LED NHAP NHAY
;***************************************************
NGAT:
MOV
R0,#0BH
MOV
A,#80H
MOVX @R0,A
LCALL HIEN_THI1
JNB
P3.2,NGAT
LOOP1:
LCALL HIEN_THI1
JNB
P3.2,THOAT_NGAT
JNB
P3.3,TANG_GIATRI_PHUT
JNB
P3.4,GIAM_GIATRI_PHUT
JNB
P3.5,CHUYEN1
LJMP LOOP1
THOAT_NGAT:
LCALL HIEN_THI
JNB
P3.2,THOAT_NGAT
MOV
R0,#0
MOV

A,20H
MOVX @R0,A
LCALL HEX_BCD
LCALL HIEN_THI
MOV
R0,#0AH
MOV
A,#0AFH
MOVX @R0,A
MOV
R0,#0BH
MOV
A,#0EH
MOVX @R0,A
RETI
CHUYEN1:
LCALL HIEN_THI
JNB
P3.5,CHUYEN1
INC
R2
MOV
A,R2
CJNE A,#2,RETURN
MOV
R2,#0
RETURN:
LJMP LOOP2
TANG_GIATRI_PHUT:
LCALL HIEN_THI

MOV
A,21H
INC
A
CJNE A,#60,CONT_1
MOV
A,#0
CONT_1:
MOV
21H,A
MOV
R0,#2
MOVX @R0,A
LCALL HEX_BCD


×