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

Đồng hồ hẹn giờ và đếm giờ thông minh

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 (312.3 KB, 34 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM
KHOA CÔNG NGHỆ ĐIỆN TỬ
` ĐỒ ÁN 2
ĐỀ TÀI :
GVHD: TRẦN NGUYÊN BẢO TRÂN
SVTH: NGUYỄN THẾ PHƯỚC
NGUYỄN MINH THIỆN
LỚP: CĐĐT 7A
TP.HCM, THÁNG 1 NĂM 2008
NHẬN XÉT CỦA GIÁO VIÊN HƯƠNG DẪN
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………


…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………
CHỮ KÝ 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 cảm ơn thầy cô giáo chuyên ngành điện tử, cảm ơn
thầy Trần Nguyên Bảo Trân đã hướng dẫn tận tình chúng em trong quá trình thực
hiện đồ án này.
Thực tế ngày nay, tất cả các thiết bò điện tử điều được tích hợp, được đơn
giản hoá đi nhờ vào chip vi điều khiển. Đồng hồ là một thiết bò tối cần thiết trong
một xã hội công nghiệp. ng dụng vi điều khiển để làm một đồng hồ thời gian
thực là một đề tài rất hấp dẫn đối với chúng em. Đồ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. .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.
Do kiến thức còn hạn hẹp và trình độ về chuyên môn còn hạn chế nên sẽ
khó tránh khỏi những thiếu xót,khiết điểm.rất mong được sự đóng góp ý kiến và
chỉ bảo nhiệt tình từ phía các thầy cô để đề tài được hoàn thiện 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
Phần 2: Thiết kế và thi công
I. Sơ đồ nguyên lý
II. Sơ đồ bố trí linh kiện và sơ đồ mạch in
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. 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 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 đò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.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
3. Sơ đồ chân 89c51:
- port 0: có hai chức năng từ chân 32 đến chân 39 trong các thiết kế nhỏ.
(không dùng bộ nhớ mở rộng).
có hai chức năng như các đường I/O. Đối với các thiết kế cỡ lớn( với bộ nhớ
mở rộng) nó được kết hợp kênh giữa các Bus.
U 1
AT 8 9 C51
9

18
19
20
29
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
36
35
34
33
32
RS T
XT AL2
XT AL1
GND
P S EN
ALE/PROG
EA/VP P
VCC
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0 /A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12

P2.5/A13
P2.6 /A14
P2.7/A15
P3.0 /RXD
P3.1/T XD
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
- Port 1: là port I/O trên các chân từ chân số 1 đến chân số 8. có thể dùng
các thiết bò ngoài nếu cần. Port 1 không có chức năng khác vì thế chúng
ta chỉ được dùng trong các thiết bò ngoài.
- Port 2: là port công dụng kép trên các chân 21 đến 28 đượ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.
- 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
DS128 8 7
19
23
24
12
4
5
6
7
8
9
10
11
14

17
1
18
15
13
IRQ
SQW
VCC
GND
A D0
A D1
A D2
A D3
A D4
A D5
A D6
A D7
AS
DS
MOT
RST
R/W
CS
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.
- 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.
Phần 2: Thiết kế và thi công
I.Sơ đồ nguyên lý:
Sụ ủo boỏ trớ linh kieọn
Sụ ủo maùch in
II. Löu ñoà giaûi thuaät.

CHUYEN VAỉO RTC
QUA THANH GHI R0
HEX_TO_BCDLOOP 1GIAM GIA TRề PHUT
P3.4=0A=59
GIAM PHUT
A=0
DEC AHEX_TO_BCDLOOP 1
III. Chöông trình.

;
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx
; p2 dieu khien 8 led va p3.0, p3.1, p3.2, p3.4, p3.5
;
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx

dwn bit p3.5
up bit p3.4
mode bit p3.3
mode1 bit p3.1
bien_mode equ r2
bien_tg equ r3
giay_tam equ 55h
buzzer bit p2.7
chuong bit p3.0
;
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx
org 000h
sjmp main
org 03h
jmp ngat_n1 ; nhay ve dia chi cua N0
org 00bh
jmp ngat_t0
main: mov bien_mode,#0
lcall khoitaodallass
mov ie,#83h ; cho phep N0 ngat
setb it0
mov bien_tg,#0
tu_dau: lcall doc_data
cjne bien_tg,#0,xuly_chuong ; kiem tra bien giay tam co
=0 khong? neu = 0 thi chua do chuong
mov a,12h
cjne a,#13,kt_c
kt_c: jnc giuagio
mov a,10h

cjne a,#0,giaima
mov a,11h
cjne a,#0,giuagio
jmp bip
giuagio: mov a,10h
cjne a,#0,giaima
mov a,11h
cjne a,#30,giaima
jmp bao_giuagio
giaima: lcall hex_bcd
lcall bcd_7doan
lcall hien_thi
jnb mode,adj
jnb mode1,adj1
jmp tu_dau
;
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx
; doan chuong trinh xu ly chuong
xuly_chuong: mov a,10h
cjne a,giay_tam,xuly_chuong1
sjmp giaima
xuly_chuong1: mov giay_tam,10h
djnz bien_tg,giaima ; giam thoi gian do chuong di 1
giay, neu thoi gian do chuong chua bang 0 thi giai ma
; hien thi thoi gian, neu =0 thi thoi
gian do chuong du 2 giay
mov r0,#0ch ; gan cho r0 =0ch ( 0ch la dia
chi cua thanh ghi c cua dallas)
movx a,@r0 ; doc noi dung thanh ghi c de

xoa co ngat cua dallas
setb chuong ; tat chuong
jmp giaima
;
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx
bip: clr buzzer
mov r5,#0
mov tmod,#01
mov th0,#high(-50000)
mov tl0,#low(-50000)
clr tf0
setb tr0
mov a,12h
mov b,#2
mul ab
mov 78h,a
jmp giaima
bao_giuagio: clr buzzer
lcall hex_bcd
lcall bcd_7doan
mov 7ch,#2
xxx2: mov 7dh,#0ffh
xxx1: lcall hien_thi
djnz 7dh,xxx1
djnz 7ch,xxx2
setb buzzer
jmp giaima
;
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxx
adj: lcall hien_thi
jnb mode,adj
setb buzzer
setb chuong
inc bien_mode
cjne bien_mode,#04,loop
mov bien_mode,#0
jmp tu_dau
adj1: ljmp caigio_baothuc
;
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxx
loop: mov 67h,#08
loop3: mov 66h,#0bfh
loop1: lcall doc_data
lcall hex_bcd
lcall bcd_7doan
lcall hien_thi
jnb up,tang
jnb dwn,giam1
jnb mode,adj
djnz 66h,loop1
cjne bien_mode,#1,tatphut
mov 34h,#0ffh
mov 35h,#0ffh
sjmp tat
tatphut: cjne bien_mode,#02,tatgio
mov 32h,#0ffh
mov 33h,#0ffh

sjmp tat
tatgio: mov 30h,#0ffh
mov 31h,#0ffh
tat: mov 66h,#0ffh
loop2: lcall hien_thi
jnb up,tang
jnb dwn,giam1
jnb mode,adj2
djnz 66h,loop2
djnz 67h,loop3
mov bien_mode,#0
ljmp tu_dau
adj2: ljmp adj
;
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx
giam1: ljmp giam
;
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx
tang: mov 78h,#200
tang1: lcall hien_thi
djnz 78h,tang1
loopx3: cjne bien_mode,#01h,ss1
mov r0,#04h
movx a,@r0
inc a
cjne a,#24,z1
mov a,#0
z1: movx @r0,a

sjmp loop
;
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx
ss1: cjne bien_mode,#02h,ss2
mov r0,#02h
movx a,@r0
inc a
cjne a,#60,z2
mov a,#0
z2: movx @r0,a

×