Đây là mạch đồng hồ số, nó có ứng dụng nhiều trong thực tế như: Hẹn giờ, đồng hồ báo tiết học, lịch vạn niên...
Trang 1ĐẠI HỌC SƯ PHẠM KĨ THUẬT TP HỒ CHÍ MINH
KHOA CƠ KHÍ CHẾ TẠO MÁY BỘ MÔN CƠ ĐIỆN TỬ
KKKKJJJJ
Đồ Án Vi Mạch Số :
12 - 2006
Trang 2Phần 1: Giới thiệu
Phần 2: Mạch đồng hồ báo chuông tiết học
Trang 3Phần I: Giới Thiệu
I/ Lời mở đầu
Trong cuộc sống hằng ngày, thời gian luôn trôi qua thật nhanh Nhu cầu biết giờ là một nhu cầu cần thiết với mọi người Đồng hồ báo chuông tiết học là một ứng dụng không thể thiếu ở các trường học
Sau đây em xin giới thiệu về vi mạch đông hồ báo giờ tiết học
II/Giới thiệu linh kiện
-AT 89S52 là chip thông dụng trong việc lập trình
-Chip 89S52 se giúp điều khiển ds12887 xử lý báo giờ như mong muốn
2/ Ds 12887:
-Ds 12887 là 1 vi mạch phổ biến trong việc sử dụng làm đồng hồ thời gian thực -Hình ảnh và cấu trúc bên trong:
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ọn RT C
AS – Chốt địa chỉ
R/W – Ngõ vào đọc/ghi
DS – Chốt dữ liệu RESET\ - Ngõ vàoReset IRQ\ - Ngõ ra yêu cầu ngắt SQW – Ngõ ra sóng vuông VCC – Nguồn cung cấp +5 Volt GND – Mass
Câáu trúc bên trong Real Time Clock DS12C887
Sơ đồ địa chỉ của DS12C887 được trình bày ở hình 1 Sơ đồ địa chỉ bao gồm
113 bytes RAM thông dụng, 11 bytes RAM mà thành phần bao gồm đồng hồ thời
Trang 4gian thực, lịch, dữ liệu báo giờ và 4 bytes được sử dụng cho việc điều khiển và thông báo tình trạng Tất cả 128 bytes có thể được ghi hoặc đọc tực tiếp trừ những trường hợp sau :
* Thanh ghi C and 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ứ 2 là bit chỉ đọc
Hình 1: Sơ đồ địa chỉ của DS12C887
Thời gian và lịch đã có bằng cách đọc các bytes 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ị bytes RAM thích hợp Nội dung của 10 bytes chứa thời gian, lịch và báo giờ đều có thể hiển thị ở cả
2 dạng nhị phân (Binary) hoặc BCD (Binary-Coded Decimal) Trước khi ghi lên các thanh ghi thời gian, lịch, và các thanh ghi báo giờ bên trong, bit SET ở thanh ghi B phải được đặt ở mức logic 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 để ghi lên 10 thanh ghi chỉ thời gian, lịch, và thanh ghi 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 (Data mode (DM)) của thanh ghi B phải được đặt ở mức logic thích hợp Tất cả 10 bytes 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 bytes thời gian và lịch Vào lúc đầu, đồng hồ thời gian thực 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 bytes dữ liệu Bảng 2 trình bày định dạng nhị phân và BCD của cả thời gian , lịch, và báo giờ Bit lựa chọn kiểu hiển thị 24–12 không thiể thay đổi mà không khởi động lại thanh ghi giờ Khi định dạng 12 giờ được lựa chọn, bit cao của bytes giờ tương ứng với PM khi nó được đặt ở mức logic 1 Bytes thời gian, lịch, và bytes 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, 11 bytes đượ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 điễn ra trong quá trình cập nhật, một vấn đề phát sinh là giờ, phút, giây, … có thể không chính xác Xác xuất đọc không chính xác dữ liệu
Trang 5thời gian và lịch là rất thấp Có vài phương pháp tránh một số sai số có thể xảy ra
khi đọc thời gian và lịch được đề cập sau trong bài viết 3 bytes báo giờ có thể sử
dụng bằng 2 cách Cách thứ nhất, khi thời gian báo giờ thược ghi vào vị trí của các
thanh ghi giờ, phút, giây, tác động báo giờ được bắt đầu tại thời gian chính xác
trong ngày khi bit cho phép báo chuông được đặt ở mức cao Cách thứ hai sử dụng
để đặt trạng thái bất chấp vào một hoặc nhiều bytes báo chuông Mã bất chấp là
bất kỳ mã số hex nào nằm trong giá trị từ C0 đến FF Hai bit có trọng số lớn nhất
của những byte trên đặt vào trạng thái bất chấp khi ở mức logic 1 Báo giờ sẽ
được sinh ra mỗi giờ khi bit bất chấp được đặt vào bytes giờ Tương tự, báo giờ sẽ
sinh ra mỗi phút nếu mã bất chấp có ở bytes giờ và bytes phút Nếu mã bất chấp
có ở trong cả 3 bytes báo giờ thì nó sẽ tạo ra tín hiệu ngắt mỗi giây
Bảng 1 : Kiểu dữ liệu thời gian, lịch và báo giờ
Trang 6Hình 2: Giao tiếp bus với IC Intel
Trang 7Phần 2:Đồng Hồ Báo Giờ
I/Sơ đồ nguyên lý
G
P1.4 C
Q7 2N1132A
3
R2
R
U5
4 10
+5V
U8
4 10
R12 R
U2
4 10
P2.2
<Doc> <Rev Code>
<Title>
A
1 1 Thursday , December 07, 2006
Title Size Document Number Rev Date: Sheet of
P1.5 H
U1
4 10
R8 R
R15 R
+5V
R11 R
Q8 2N1132A
3
U4
4 10
R7 R R3
R
P1.1
P2.6
J2
HEADER 8
1 3 5 7
+5V
R10 R
Q2 2N1132A
3
P1.2
P1.0 P2.3
D F
R6 R
P1.6 R14 R
R13 R
B
P2.7
+5V
+5V
R16 R
Q5 2N1132A
3
P2.4
P1.7
P2.5
A
E
R5 R
U6
4 10
J1
HEADER 10
1 3 5 7 9 10
P2.0
R4 R
P1.3
F
R1
R
D
Q6 2N1132A
3
Q3 2N1132A
3
U7
4 10
+5V
P2.1
Q1
2N1132A
3
+5V
U3
4 10
Q4 2N1132A
3
o P2.7
J1
HEADER 6
1 3 5
D2 LED
+5V
P1.3
R1 4K7
1 2 4 6 8
C8 104
WR
P1.0
P1.5
BUZZE
U1 DALLAS 1887
2 4 6 8 10
12 13
14 16 17 18
19 20 22
23 24
2 AD0 AD2 AD4 AD6
GN CS
AS R/W 16 DS RESET IRQ 20 22 SQW VCC
+ C6 220uF C7 104
P2.7
C5 104
+5V
J3
HEADER 8
1 3 5 7
P2.2 P2.5
U3 7805
1 3
VIN VOUT
Y 1 12MHz
+5V
P2.1
DOWN
J4
HEADER 2
1
C2 33pF
WR
INT0
RESET
P1.6
R8 R
C1 10uF
SW SW 1 4
2
3 P2.2
P1.2
Q1
A1015
C3 33pF
RD
P1.5
P1.1
R2 R
P2.5
D1
BRIDGE
1
3
P2.3
+5V
BUZZE
ALE
MODE
P1.7
MODE
P1.4
ALE
P1.6
P1.2
+5V
SW4
SW
1 4
2 3
J2
HEADER 10
1 3 5 7 9 10
P2.0
SW1
SW
1 4
2 3
+ C4 470uF
UP
+5V +5V
P1.0
P1.5 P2.4
P1.7
P1.3
INT0
P1.6
P2.1
R6 10K
<Doc> <Rev Code>
DIGITAL CLOCK - Designed by HOANG DANG KHOA
A4
1 1 Thursday , December 07, 2006
Title Size Document Number Rev Date: Sheet of
RESET
P2.4 DOWN
+5V
SW2
SW
1 4
2 3
R7
10k
BUZZE1
SPEAKER
R4 4K7
1 2 4 6 8
UP
U2
AT89S52
9 18
19
29 31
1 3 5 7
21 23 25 27
10 12 14 16
39 37 35 33
RST XTAL2 XTAL1
PSEN ALE/PROG EA/VPP
P1.0 P1.2 P1.4 P1.5/MOSI P1.7/SCK
P2.0/A8 P2.2/A10 P2.4/A12 P2.6/A14
P3.0/RXD P3.1/TXD P3.2/INT0 P3.4/T0 P3.6/WR P3.7/RD
P0.0/AD0 P0.2/AD2 P0.4/AD4 P0.6/AD6
RESET
P1.4
R3 R
P1.7 P2.0
P2.3
P2.6
P1.1
P2.6 RD
R5 R
Trang 8II/Sơ đồ mạch in
Trang 9III Sơ đồ khối :
Khối Nguồn
Khối Xử Lý Khối Hiển Thị Khối RTC
Khối Giao Tiếp Phím Bấm
Trang 10Bắt Đầu
Kết Thúc
Lấy data từ RTC
Hiển thị lên màn hình
Dò phím Mode = 2?
Dò phím Mode = 3?
Set phút
Set giây
sai
đúng
đúng
Up=1?
Tăng giá trị ơ nhớ
Đặt giá trị cho RTC
Down = 1?
sai
Giảm giá trị ơ nhớ
Đặt giá trị cho RTC
IV/ Chương trình
1/Lưu đồ thuật toán
Trang 112/Chöông trình :
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx org 0h
lcall //doc_gpg
lcall //hex_bcd
lcall //bcd_7doan
lcall //hienthi
lcall //delay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx khoitao:
ret
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
b11: mov 61h,#10h
b13: mov 60h,#0ffh
lcall doc_gpg
lcall hex_bcd
lcall bcd_7doan
ss11:
Trang 12ss12:
tat: mov 60h,#0ffh
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
tang1: lcall hienthi
b26:
b21: movx @r0,a
b23: movx @r0,a
b24: movx @r0,a
b22: mov 62h,#50
lcall doc_gpg
lcall hex_bcd
lcall bcd_7doan
Trang 13jb up,b26
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
giam1: lcall hienthi
b36:
movx a,@r0
b31:
ss31:
b33:
ss32:
b34:
b32:
lcall doc_gpg
lcall hex_bcd
lcall bcd_7doan
b35:
lcall hienthi
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx doc_gpg:
Trang 14mov r0,#00h
ret
hex_bcd:
hb: mov a,@r0
ret
bcd_7doan:
bc1: mov r7,#02h
bc: mov a,@r0
ret
hienthi: mov r0,#30h
ht: mov p2,@r0
lcall delay
Trang 15mov p1,#0ffh
ret
ret
org 500h
db
00010001b,11010111b,00110010b,10010010b,11010100b,10 011000b,00011000b,11010011b,00010000b,10010000b
end