Tải bản đầy đủ (.ppt) (18 trang)

đồ án đồ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 (380.1 KB, 18 trang )


BỘ 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
LỚP : ĐH ĐT6LTA
SVTH :Tạ Tấn Vàng
Nguyễn Tấn Vinh
Nguyễn Mạnh Tú

PHẦ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.

Bộ nhân / chia 4µs.
Sơ đồ chân của chip 8051

II. IC ĐỒNG HỒ THỜI GIAN THỰC DS12887:
1. Khảo sát sơ đồ chân của
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

2. 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.

b. 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.
MSB LSB
BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
UIP DV2 DV1 DV0 RS3 RS2 RS1 RS0
Thanh ghi B:
MSB LSB
BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
SET PIE AIE UIE SQWE DM 24/12 DSE
MSB LSB
BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
IRQF PF AF UF 0 0 0 0
Thanh ghi A:
Thanh ghi C:
Thanh ghi D:
MSB LSB
BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
VRT 0 0 0 0 0 0 0

III. 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

IV. 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
V C C

V C C
D P
Hình dạng thực tế Led 7 đoạn
Sơ đồ chân Led 7 đoạn

PHẦ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).

Sơ đồ 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 0

3 1
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
V C C
E A
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
2 41 2
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
V C CG N D
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
C 5 R 2 4
R E S I S T O R S I P 9
1 2
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

b. 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
C O N 5

1
2
3
4
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
6
4
2
1
9
1 0
3
8
5
A
B
C
D
E
F

G
V C C
V C C
D P
D 4
R 8
R
C 1 2
C 1 3
C 0
C 8
R 1 3
R
D 6
Q 8
A 1 0 1 5
D 2
D 0
D 5
C 2
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 1 D 1
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
6
4
2
1
9
1 0
3
8
5

A
B
C
D
E
F
G
V C C
V C C
D P
D 3
C 4
U 7
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
V C C
V C C
D P
D 3
D 2
D 6
D 5
D 2
D 1
D 5
D 6
D 4
D 3
D 2
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
V C C
V C C
D P
U 6
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
V C C
V C C
D P
C 2

D 7
C 1 2
D 7
D 4
D 7
U 1 3
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
V C C
V C C
D P
D 2
D 5
D 5

D 1
D 6
D 1
C 1 0
Q 1 4
A 1 0 1 5
U 9
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
V C C
V C C
D P
D 4
C 1 4

D 1
D 1
D 0
D 7
D 6
D 5
C 1
D 3
U 2
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
V C C
V C C
D P

Q 1 3
A 1 0 1 5
D 2
Q 6
A 1 0 1 5
C 1 0
D 7
D 7
D 7
D 4
D 3
D 7
D 2
D 3
D 6
D 1
D 0
D 4
D 5
D 3
U 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
V C C
V C C
D P
D 3
C 7
C 8
C 3
D 4
D 2
D 6
D 2
D 0
D 5
Q 2
A 1 0 1 5
D 0
C 3
D 0
U 8
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
V C C
V C C
D P
D 3
R 3
R
C 1 5
D 0
D 4
D 0
D 1
C 1 3
D 4
Q 1 5

A 1 0 1 5
R 7
R
D 5
C 1
R 9
R
D 1
C 9
D 1
D 4
D 6
C 7
R 1 2
R
Q 5
A 1 0 1 5
R 1 0
R
C 6
D 7
C 6
D 7
D 5
D 4
Q 3
A 1 0 1 5
D 3 D 3
D 6
D 1

D 0
J 2
C O N 8
1
2
3
4
5
6
7
8
C 4
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
2
D 2
D 2
U 1 6
7 4 1 5 4
1

2
3
4
5
6
7
8
9
1 0
1 1
1 3
1 4
1 5
1 6
1 7
2 3
2 2
2 1
2 0
1 8
1 9
Y 0
Y 1
Y 2
Y 3
Y 4
Y 5
Y 6
Y 7
Y 8

Y 9
Y 1 0
Y 1 1
Y 1 2
Y 1 3
Y 1 4
Y 1 5
A
B
C
D
G 1
G 2
D 2
D 4
D 5
R 2
R
U 4
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
V C C
V C C
D P
C 5
D 2
D 6
D 0
D 1
D 7
U 1 1
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
V C C
V C C
D P
D 0
D 6
C 5
V C C _ A R R O W
R 1
R
R 1 1
R
C 9
D 3
C 1 1
D 3
D 0
C 1 1
U 3
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
V C C
V C C
D P
Q 1 0
A 1 0 1 5
V C C _ A R R O W
C 0
D 7
D 3
D 7
D 2
C 1 4
U 1 2
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
V C C
V C C
D P
U 1
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
V C C
V C C
D P
R 4
R

BEGIN
Nạ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

Begin(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

KHỞ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

SWAP 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

Cấ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

Goi 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

GHI_RTC
Cấ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

THE END

×