• 64k byte không gian bộ nhớ chương trình mở rộng.. Sơ đồ địa chỉ của Real Time Clock: • 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ờ
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM
KHOA CÔNG NGHỆ ĐIỆN TỬ
ĐỒ ÁN MÔN HỌC
MÔN: VI XỬ LÝ
Đề tài: ĐỒNG HỒ THỜI GIAN THỰC
GVHD : Nguyễn Tất Bảo Thiện
SVTH :Tạ Tấn Vàng
Nguyễn Tấn Vinh Nguyễn Mạnh Tú
Trang 2PHẦN MỘT: GIỚI THIỆU VỀ 8051, DS12887,
74154 VÀ LED 7 ĐOẠN
I VÀI ĐIỂM CƠ BẢN VỀ 8051:
• 8051 là IC vi điều khiển (Microcontroller) do
hãng Intel sản xuất IC này có đặc điểm như
sau:
• 4k byte ROM,128 byte RAM
• 4 Port I/O 8 bit.
• 2 bộ đếm/ định thời 16 bit.
• Giao tiếp nối tiếp.
• 64k byte không gian bộ nhớ chương trình mở
rộng.
• 64k byte không gian bộ nhớ dữ liệu mở rộng.
• Một bộ xử lý luận lý (thao tác trên các bít đơn).
• 210 bit được địa chỉ hóa.
Trang 3II IC ĐỒNG HỒ THỜI GIAN THỰC DS12887:
DS12887:
•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
Hình dạng thực tế DS12887
Trang 42 Cấu trúc bên trong Real Time Clock DS12C887:
a Sơ đồ địa chỉ của Real Time Clock:
• 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 gian
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 trực tiếp trừ
những trường hợp sau :
• 1 Thanh ghi C and D là hai thanh ghi
chỉ đọc.
• 2 Bit thứ 7 của thanh ghi A là bit chỉ
đọc.
• 3 Bit cao của byte thứ 2 là bit chỉ đọc.
Trang 5b Các thanh ghi điều:
DS12C887 có 4 thanh ghi điều khiển được sử dụng vào mọi lúc kể cả trong quá trình cập nhật.
Thanh ghi A:
Thanh ghi C:
Trang 6III IC 74154:
• Đây là IC có chức năng phân kênh, nó gồm có 22 ngõ vào, cho
ra 24 ngõ ra Chúng ta dùng nó để mở rộng port xuất cho vi xử
lý Căn bản gồm có chân ngõ vào A(23),B(22),C(21),D(20) là
các chân để chọn ngõ ra tương ứng với các ngõ ra tích cực mức
thấp là các chân Y0(1), Y1(2), Y2(3), Y3(4), Y4(5), Y5(6),
Y6(7), Y7(8), Y8(9), Y9(10),Y10(11), Y11(13),
Y12(14),Y13(15), Y14(16), Y15(17) Cho phép IC hoạt động
G1(18), G2(19)
Sơ đồ chân của IC 74154 Bảng chức năng
Hình dạng thực tế 74154
Trang 7IV LED 7 ĐOẠN:
Led 7 đoạn là loại đèn tiết kiệm năng lượng, tuổi thọ cao, được sử dụng rộng rãi trong đời sống Ở đây, led 7 đoạn được dùng để hiện thị các giá trị của thời gian và lịch rất tiện lợi và hiệu quả cao.
U 1 5
l e d 7 d o a n
7 6 4 2 1 9
1 0
3 8
5
A B C D E F G
D P
Hình dạng thực tế Led 7 đoạn Sơ đồ chân Led 7 đoạn
Trang 8PHẦN HAI: THIẾT KẾ VÀ THI CÔNG
I Thiết kế phần cứng:
1 Sơ đồ khối:
KHỐI
VI XỬ LÝ
KHỐI MỞ RỘNG VÀ HIỆN THỊ
LED 7 ĐOẠN
2 Nhiệm vụ của các khối:
a Khối vi xử lý:
Khối vi xử lý bao gồm IC vi xử lý 89C51 có công dụng để chạy chương trình giao tiếp xuất nhập qua các port, IC thời gian DS12887 để tạo thời gian thực.
Khối vi xử lý được kết nối 3 port để điều khiển quét các led 7 đoạn và
để giao tiếp với RTC(DS12887)
Trang 9Sơ đồ nguyên lý mạch:
S W 4
D 1
L E D
C 3
U 1 7
8 0 5 1
2 9
3 0
4 3
1 9
1 8
9
3 9
3 8
3 7
3 6
3 5
3 4
3 3
3 2
1 2 3 4 5 6 7 8
2 1
2 2
2 3
2 4
2 5
2 6
2 7
2 8
1 0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
P S E N
A L E
C EA
X 1
X 2
R S T
P 0 0 / A D 0
P 0 1 / A D 1
P 0 2 / A D 2
P 0 3 / A D 3
P 0 4 / A D 4
P 0 5 / A D 5
P 0 6 / A D 6
P 0 7 / A D 7
P 1 0
P 1 1
P 1 2
P 1 3
P 1 4
P 1 5
P 1 6
P 1 7
P 2 0 / A 8
P 2 1 / A 9
P 2 2 / A 1 0
P 2 3 / A 1 1
P 2 4 / A 1 2
P 2 5 / A 1 3
P 2 6 / A 1 4
P 2 7 / A 1 5
P 3 0 / R X D
P 3 1 / T X D
P 3 2 / I N T 0
P 3 3 / I N T 1
P 3 4 / T 0
P 3 5 / T 1
P 3 6 / W R
P 3 7 / R D
S W 3
R 2 3
U 1 8
D S 1 2 8 8 7
1 9
2 3
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
A D 0
A D 1
A D 2
A D 3
A D 4
A D 5
A D 6
A D 7
A S
D S
M O T
R S T
R / W
C S
S W 2
J 8
C O N 8
1 2 3 4 5 6 7 8
S W 6
R E S I S T O R S I P 9
3 4 5 6 7 8 9
R 1 9
R R 2 0 R
Y 1
1 2 0 0 0 K H z
C 4
R 1 7 R
C 1 C
C 2
R 1 8 R
J 7
C O N 8
1 2 3 4 5 6 7 8
V C C
R 2 1 R
R 1 6
R
S W 1
R 2 2 R
Trang 10b Khối mở rộng và hiện thị:
• Khối này gồm IC 74154 được sử dụng để phân kênh và led 7 đoạn để cho hiện thị lịch và thời gian.
• Sơ đồ nguyên lý mạch:
R 1 5 R
D 4
D 0
D 4
J 5
D 6
D 4
D 5
D 7
D 7
Q 1
A 1 0 1 5
U 1 4
l e d 7 d o a n
7 4 1
1 0
3 8
5
A C E G
D P
D 4
R 8 R
R 1 3 R
D 6
Q 8
A 1 0 1 5
D 2
D 0
D 5
D 5
D 1
Q 1 1
A 1 0 1 5
D 7
D 2
D 2
D 6
Q 9
A 1 0 1 5
D 1
R 5 R
Q 1 2
A 1 0 1 5
D 5
D 0
D 4
D 5
R 6 R
D 3
D 5
D 1
D 3
D 6
D 6
U 1 0
l e d 7 d o a n
7 4 1
1 0
3 8
5
A C E G
D P
D 3
U 7
l e d 7 d o a n
7 4 1
1 0
3 8
5
A C E G
D P
D 3
D 2
D 6
D 5
D 5
D 6
D
D 3
D 2
U 1 5
l e d 7 d o a n
7 4 1
1 0
3 8
5
A C E G
D P
U 6
l e d 7 d o a n
7 4 1
1 0
3 8
5
A C E G
D P
D 7
D 7
D 4
D 7
U 1 3
l e d 7 d o a n
7 4 1
1 0
3 8
5
A C E G
D P
D 2
D 5
D
D 1
D
D 1
Q 1 4
A 1 0 1 5
U 9
l e d 7 d o a n
7
4
1
1 0
3 8
5
A C E G
D P
D 4
D 1
D
D 0
D 5
D 3
U 2
l e d 7 d o a n
7 4 1
1 0
3 8
5
A C E G
D P
Q 1 3
A 1 0 1 5
D 2
Q 6
A 1 0 1 5
D 7
D
D 7
D 4
D 3
D 7
D 2
D 3
D 6
D 1
D
D 4
D 5
D 3
U 5
l e d 7 d o a n
7 4 1
1 0
3 8
5
A C E G
D P
D 3
D 4
D 2
D 6
D 2
D 0
D 5
Q 2
A 1 0 1 5
D 0
l e d 7 d o a n
7 4 1
1 0
3 8
5
A C E G
D P
D
R 3 R
D 0
D 4
D 0
D 1
D 4
Q 1 5
A 1 0 1 5
R 7 R
D 5
R 9 R
D 1
D 1
D 4
D 6
R 1 2 R
Q 5
A 1 0 1 5
R 1 0 R
D 7
D 7
D 5
D 4
Q 3
A 1 0 1 5
D 6
D 1
D 0
J 2
C O N 8
1
3
5
7
D 6
Q 7
A 1 0 1 5
Q 4
A 1 0 1 5
R 1 4 R
D 0
D 0
J 6
C O N 2
1
D 2
D 2
U 1 6
7 4 1 5 4
1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 17
23 22 21 20 18 19
D 2
D 4
D 5
R 2 R
U 4
l e d 7 d o a n
7 4 1
1 0
3 8
5
A C E G
D P
D 2
D 6
D 0
D 1
D 7
U 1 1
l e d 7 d o a n
7 4 1
1 0
3 8
5
A C E G
D P
D 0
D 6
V C C _ A R R O W
R 1
R R 1 1R
D 3
D 3
D 0
U 3
l e d 7 d o a n
7 4 1
1 0
3 8
5
A C E G
D P
Q 1 0
A 1 0 1 5
V C C _ A R R O W
D 7
D 3
D 7
D
U 1 2
l e d 7 d o a n
7 4 1
1 0
3 8
5
A C E G
D P
U 1
l e d 7 d o a n
7
4
1
1 0
3 8
5
A C E G
D P
R 4 R
Trang 11Nạp các giá trị khởi tạo cho các ô nhớ thời gian và lịch.40H=59(giây),41H=59(phút),42H=23(giờ),43H=(thứ), 44H=01(ngày),45H=01(tháng),46H=09(năm)
Goi ctc kdrtc( chuong trình khởi động RTC DS1287) Gọi ctc drtc( chương trình đọc các giá trị thời gian, lịch và dữ liệu từ RTC)
Mov A,48H( chuyển nội dung ô nhớ mặc định là RTC đang hoạt động bình thường), tại địa chì 0EH của SRAM, ta nạp một giá trị mặc định cho nó trong
lần khởi động RTC trước đó Mặc định giá trị = 5
A= 5, kiểm tra xem RTC đã được khởi động các giá trị măc định chưa
Gọi chương trình GRTC( chương trình con ghi dữ liệu vào RTC)
Gọi CTC DRTC ( chương trình con đọc dữ liệu từ RTC) Gọi CTC QUETLED(chương trình con hiển thị các giá trị thời gian và lịch)
P3.4=0, kiểm tra có phím chỉnh cài đặt giờ không?
Gọi CTC SETUPTIME (gọi chương trình con cài đặt lại giờ cho RTC)
Yes
No
No
Yes
II Thiết kế phần mềm:
• Giải thích về chương
trình:
• Sơ lượt về lưu đồ:
END
Trang 12Begin(chương trình con cài đặt thời gian và lịch)
Gọi CTC SETPHUT (chương trình con cài đặt giá trị phút)
Gọi CTC SETGIO (chương trình con cài đặt giá trị phút)
Gọi CTC SETTHU (chương trình con cài đặt giá trị phút)
Gọi CTC SETNGAY (chương trình con cài đặt giá trị phút)
Nhảy tại chỗ, chờ cho đến khi nào nhả phím nhấn thì
thôi
Nhảy tại chỗ, chờ cho đến khi nào nhả phím nhấn thì
thôi
Nhảy tại chỗ, chờ cho đến khi nào nhả phím nhấn thì
thôi
Nhảy tại chỗ, chờ cho đến khi nào nhả phím nhấn thì
thôi
Nhảy tại chỗ, chờ cho đến khi nào nhả phím nhấn thì
thôi Gọi CTC SETTHANG (chương trình con cài đặt giá trị phút)
P3.4=0
P3.4=1
P3.4=0
P3.4=0
P3.4=1
P3.4=1
P3.4=0 P3.4=1
P3.4=0
P3.4=1
Trang 13KHỞI ĐỘNG_RTC Mov A,#0AFH, chọn chế độ cho RTC
Mov R0,#0AH, chọn thanh ghi A trong RTC
Movx @R0,A, Ghi vào RTC
Mov R0,#0BH, chọn thanh ghi A trong RTC
Mov A,#0EH, chọn chế độ cho RTC
Movx @R0,A, Ghi vào RTC
RET
ĐỌC_RTC
Cất nội dung các thanh ghi 00h, 01h, ACC
R0=00H,R1=40H,
Movx A,@R0, lấy nội dung từ RAM ngoai
INC R0, tăng gián tiếp địa chỉ RAM ngoài
INC R1, tăng gián tiếp địa chỉ ô nhớ chứa dữ liệu Mov @R1,A, chuyển nội dung A vào ô nhớ dữ liệu
R0=09H, kiểm tra đã lấy
đủ dữ liệu chưa
RET Trả lại nội dung cho 00H, 01H, ACC
No Yes
Trang 14SWAP A
ORL A,B
Mov B,#10
DIV AB
RET
BIN2BCD BCD2MA7THANH
Movc A,@A+DPTR, lấy dữ liệu
Mov DPTR,# TABLE, nạp địa chỉ dữ
liệu.
ANL A, #0FH
RET
Trang 15Cất 00H,01H,ACC vào stack
Mov R0,#40H
Mov R1,#00H
Mov A,@R0
Goi CTC BIN2BCD
SWAP A ( đảo nội dung thanh ghi A)
Gọi CTC BCD2MA7THANH
Mov P1,A (xuất dữ liệu ra )
Mov P2,R1 (xuất dữ liệu ra cột)
Gọi CTC DELAY
Tăng dữ liệu quét cột
Mov A,@R0
Goi CTC BIN2BCD
Gọi CTC BCD2MA7THANH
Mov P1,A (xuất dữ liệu ra )
Mov P2,R1 (xuất dữ liệu ra cột)
Gọi CTC DELAY
Tăng dữ liệu quét cột
R0 = 47H
RET
QUÉT LED
No
Yes
Tăng R0
Trang 16Goi CTC QUETPHUT
Kiểm tra co phim SETUP hay không?
Kiểm tra xem có phím DOWN không?
Goi CTC DELAY( chống nảy phím)
Mov A,41H
Giảm giá trị nội dung thanh ghi A
Mov 41H,A
Kiểm tra A=0FFH Mov 41H,#59
Chương trình con SETPHUT
Goi CTC GRTC Goi CTC DRTC Mov R7,#100
Gọi CTC QUETPHUT
R7=0
DOWN=0
UP=0
SETUP=0
Kiểm tra xem có phím UP không?
Goi CTC DELAY( chống nảy phím)
Mov A,41H
Tăng giá trị nội dung thanh ghi A
Mov 41H,A
Kiểm tra A=59
Mov 41H,#00
RET
No
No
Yes
No
No
No
No
No
No
Yes RET
Yes No
Yes Yes
Yes
Yes Yes
Yes
Trang 17Cất nội dung các thanh ghi 00h, 01h, ACC
R0=00H,R1=40H,
MovA,@R1, chuyển gián tiếp nội dung ô nhớ dữ liệu
vào A Movx @R0,A, ghi nội dung dữ liệu vào RAM ngoài
INC R0, tăng gián tiếp địa chỉ RAM ngoài
INC R1, tăng gián tiếp địa chỉ ô nhớ chứa dữ liệu
R0=09H, kiểm tra đã lấy đủ dữ liệu chưa
Trả lại nội dung cho 00H, 01H,
ACC
RET
No
Yes
Trang 18THE END