Tải bản đầy đủ (.docx) (29 trang)

Đồ án đồng hồ báo 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 (628.64 KB, 29 trang )

Page 1

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. Cấu trúc bên trong của IC 89C51 :


Page 2



Hình I.1.1: Sơ đồ khối của chip 8051
- 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 đị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



Page 3

- 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 đổi nội dung của các thanh ghi.
2. Sơ đồ chân 89C51 :
Port 0:
- Port 0 (P0.0 – P0.7) có số chân từ 32 – 39.
- Port 0 có hai chức năng:
 Port xuất nhập dữ liệu (P0.0 - P0.7) → không sử dụng bộ nhớ ngoài.
 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:
- Port 2 (P2.0 – P2.7) có số chân từ 21 – 28.
- Port 2 có hai chức năng:



Page 4

 • Port xuất nhập dữ liệu (P2.0 – P2.7) → không sử dụng bộ
nhớ ngoài.
 •Bus địa chỉ byte cao (A8 – A15) → có sử dụng bộ nhớ
ngoài.
- Khi lập trình cho ROM trong chip thì Port 2 đóng vai trò là ngõ
vào của địa chỉ byte cao (A8 – A11) và các tín hiệu điều khiển
Port 3:
- Port 3 (P3.0 – P3.7) có số chân từ 10 – 17.
- Port 0 có hai chức năng:
 Port xuất nhập dữ liệu (P3.0 – P3.7) → không sử dụng bộ
nhớ ngoài hoặc các chức năng đặc biệt.
 Các tín hiệu điều khiển → có sử dụng bộ nhớ ngoài hoặc
các chức năng đặc biệt.
- Khi lập trình cho ROM trong chip thì Port 3 đóng vai trò là ngõ
vào của các tín hiệu điều khiển.
Bảng I.1.2: Chức năng của các chân Port 3:
Bit Tên Địa chỉ bit
Chức năng
P3.0 RxD
B0H
Chân nhận dữ liệu của port nối tiếp
P3.1 TxD
B1H
Chân phát dữ liệu của port nối tiếp
P3.2 INT0
B2H

Ngõ vào nhát ngoài 0
\
P3.3 INT1
B3H
Ngõ vào nhát ngoài 1
\
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


Page 5

đó 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

Chương 2. Giới thiệu về IC thời gian thực DS12C887


Page 6

2.1. Sơ đồ chân:
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 cho 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
Hình I.2.1: Sơ đồ chân của
DS12C887
2.2. Chức năng các chân:


Page 7

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 được điều khiển bus đôi. Trong chu kỳ đọc, xung


Page 8

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.
2.3. Cấu trúc bên trong của DS12C887:


Page 9


Page 10

Hình I.2.3: Cấu trúc bên trong DS12C887
2.4. Sơ đồ địa chỉ của RTC DS12C887


Page 11

Hình I.2.4: Sơ đồ địa chỉ DS12C887


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 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 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:


Page 12

Bảng I.2.4.1: Địa chỉ thanh ghi A của RTC DS12C887
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:
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/1 DSE
2
 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


Page 13

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:
Bảng I.2.4.3: Địa chỉ thanh ghi C của RTC DS12C887
MSB
LSB
BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
IRQ PF
AF
UF
0
0
0
0
F


Page 14

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:
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ý:


Page 15


Page 16

Hình II.1: Sơ đồ nguyên lý

2. Sơ đồ mạch in và bố trí linh kiện:


Page 17



Page 18

Hình II.2.4: Sơ đồ bố trí linh kiện khối hiển thị


Page 19

3. Lưu đồ giải thuật:


Page 20

4. Chương trình:
$MOD51
MODE1
MODE
UP
DWN

BIT
BIT
BIT
BIT 

P3.1
P3.3
P3.4
P3.5


BIEN_MODE
BIEN_TG
GIAY_TAM
BUZZER BIT
CHUONG BIT

EQU
EQU
EQU
P2.7
P3.0

R2
R3
55H

;*****************************************************

MAIN:

ORG
SJMP

000H
MAIN

ORG
JMP

03H

NGAT_N1

ORG
JMP

00BH
NGAT_T0

; NHAY VE DIA CHI CUA N0

MOV
BIEN_MODE,#0
LCALL KHOITAODALLASS
MOV
SETB
MOV

IE,#83H
IT0
BIEN_TG,#0

; CHO PHEP N0 NGAT

TU_DAU:
LCALL DOC_DATA
CJNE
BIEN_TG,#0,XULY_CHUONG
NEU = 0 THI CHUA DO CHUONG
MOV
A,12H

CJNE
A,#13,KT_C
KT_C:

GIUAGIO:

JNC

GIUAGIO

MOV
CJNE
MOV
CJNE
JMP

A,10H
A,#0,GIAIMA
A,11H
A,#0,GIUAGIO
BIP

MOV
CJNE
MOV
CJNE
JMP

A,10H
A,#0,GIAIMA

A,11H
A,#30,GIAIMA
BAO_GIUAGIO

; KIEM TRA BIEN GIAY TAM CO =0 KHONG? 


Page 21

GIAIMA:
LCALL
LCALL
LCALL
JNB
JNB
JMP

HEX_BCD
BCD_7DOAN
HIEN_THI
MODE,ADJ
MODE1,ADJ1
TU_DAU

;*******DOAN CHUONG TRINH XU LY CHUONG****
XULY_CHUONG:
MOV
CJNE
SJMP


A,10H
A,GIAY_TAM,XULY_CHUONG1
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
;********************************************
BIP:

CLR

MOV

BUZZER
R5,#0

MOV
MOV
MOV
CLR
SETB
MOV
MOV
MUL
MOV
JMP

TMOD,#01
TH0,#HIGH(­50000)
TL0,#LOW(­50000)
TF0
TR0
A,12H
B,#2
AB
78H,A
GIAIMA

BAO_GIUAGIO:
CLR
BUZZER

LCALL HEX_BCD
LCALL BCD_7DOAN

XXX2:
XXX1:

MOV
MOV
LCALL
DJNZ
DJNZ

7CH,#2
7DH,#0FFH
HIEN_THI
7DH,XXX1
7CH,XXX2


Page 22

SETB
JMP

BUZZER
GIAIMA

;***********************************************
ADJ:


LCALL
JNB
SETB
SETB

HIEN_THI
MODE,ADJ
BUZZER
CHUONG

INC
CJNE
MOV
JMP

BIEN_MODE
BIEN_MODE,#04,LOOP
BIEN_MODE,#0
TU_DAU

LJMP

CAIGIO_BAOTHUC

ADJ1:

;***********************************************
LOOP:

MOV


67H,#08

MOV

66H,#0BFH

LCALL
LCALL
LCALL
LCALL

DOC_DATA
HEX_BCD
BCD_7DOAN
HIEN_THI

JNB
JNB
JNB
DJNZ

UP,TANG
DWN,GIAM1
MODE,ADJ
66H,LOOP1

CJNE
MOV
MOV

SJMP

BIEN_MODE,#1,TATPHUT
34H,#0FFH
35H,#0FFH
TAT

CJNE
MOV
MOV
SJMP

BIEN_MODE,#02,TATGIO
32H,#0FFH
33H,#0FFH
TAT

MOV
MOV

30H,#0FFH
31H,#0FFH

MOV

66H,#0FFH

LOOP3:
LOOP1:


TATPHUT:

TATGIO:

TAT:
LOOP2:
LCALL HIEN_THI
JNB
UP,TANG


Page 23
JNB
JNB
DJNZ
DJNZ
MOV
LJMP

DWN,GIAM1
MODE,ADJ2
66H,LOOP2
67H,LOOP3
BIEN_MODE,#0
TU_DAU

LJMP

ADJ


ADJ2:

GIAM1:
LJMP
GIAM
;*******************************************************
TANG:
MOV

78H,#200

TANG1:
LCALL HIEN_THI
DJNZ
78H,TANG1
LOOPX3:

Z1:

CJNE
MOV
MOVX
INC
CJNE
MOV
MOVX
SJMP

BIEN_MODE,#01H,SS1
R0,#04H

A,@R0
A
A,#24,Z1
A,#0
@R0,A
LOOP

;******************************************************
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
JMP
LOOP
SS2:

Z3:


MOV
MOVX
INC
CJNE
MOV
MOVX
LJMP

R0,#0H
A,@R0
A
A,#060,Z3
A,#00
@R0,A
LOOP

MOV

78H,#200

GIAM:
GIAM11:
LCALL HIEN_THI
DJNZ
78H,GIAM11
LOOPY3:


Page 24


ZZ1:

CJNE
MOV
MOVX
DEC
CJNE
MOV
MOVX
JMP

BIEN_MODE,#01H,SSS1
R0,#04
A,@R0
A
A,#0FFH,ZZ1
A,#23
@R0,A
LOOP

SSS1:

CJNE
BIEN_MODE,#02H,SSS2
MOV
R0,#02H
MOVX
A,@R0
DEC
A

CJNE
A,#0FFH,ZZ2
MOV
A,#59
ZZ2:
MOVX
@R0,A
JMP
LOOP
;**********************************************************
SSS2:

MOV
MOVX
DEC
CJNE
MOV

R0,#0H
A,@R0
A
A,#0FFH,ZZ3
A,#59

ZZ3:

MOVX
JMP

@R0,A

LOOP

; ***********DOAN CHUONG TRINH CHINH GIO BAO THUC***********
CAIGIO_BAOTHUC:
LCALL HIEN_THI
JNB
MODE1,CAIGIO_BAOTHUC

LOOP_BT:
LOOP3_BT:
LOOP1_BT:

INC
CJNE
MOV
LJMP

BIEN_MODE
BIEN_MODE,#04,LOOP_BT
BIEN_MODE,#0
TU_DAU

MOV
MOV
LCALL
LCALL
LCALL
LCALL

67H,#08

66H,#00BFH
DOC_DATA_BT
HEX_BCD
BCD_7DOAN
HIEN_THI

JNB
JNB
JNB
DJNZ

UP,TANG_BT
DWN,GIAM_BT1
MODE1,CAIGIO_BAOTHUC
66H,LOOP1_BT

CJNE
MOV
MOV
SJMP

BIEN_MODE,#1,TATPHUT_BT
34H,#0FFH
35H,#0FFH
TAT_BT


Page 25

TATPHUT_BT:


CJNE
MOV
MOV
SJMP

BIEN_MODE,#02,TATGIO_BT
33H,#0FFH
32H,#0FFH
TAT_BT

TATGIO_BT:

MOV
MOV

30H,#0FFH
31H,#0FFH

TAT_BT:
LOOP2_BT:

MOV
66H,#0FFH
LCALL HIEN_THI
JNB
JNB
JNB
DJNZ
DJNZ

MOV
LJMP

UP,TANG_BT
DWN,GIAM_BT1
MODE1,CAIGIO_BAOTHUC
66H,LOOP2_BT
67H,LOOP3_BT
BIEN_MODE,#0
TU_DAU

GIAM_BT1:
LJMP
GIAM_BT
; ***********DOAN CHUONG TRINH CON CAI DAT GIO BAO THUC***************
TANG_BT:
TANG1_BT:

MOV
78H,#200
LCALL HIEN_THI
DJNZ
78H,TANG1_BT

LOOPX3_BT:

CJNE
MOV
MOVX
INC

CJNE
MOV
MOVX
JMP

BIEN_MODE,#01H,SS1_BT
R0,#05H
A,@R0
A
A,#24,Z1_BT
A,#0
@R0,A
LOOP_BT

MOV
MOVX
INC
CJNE
MOV
MOVX
JMP

CJNE
BIEN_MODE,#02H,SS2_BT
R0,#03H
A,@R0
A
A,#60,Z2_BT
A,#0
@R0,A

LOOP_BT

MOVX
INC
CJNE
MOV

MOV
R0,#1H
A,@R0
A
A,#060,Z3_BT
A,#00

Z1_BT:

SS1_BT:

Z2_BT:

SS2_BT:

Z3_BT: MOVX

@R0,A
LJMP  LOOP_BT
;*****************************************************
GIAM_BT:

MOV


78H,#200


×