Tải bản đầy đủ (.pdf) (15 trang)

Báo cáo đồ án vi mạch số pptx

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 (296.79 KB, 15 trang )

ĐẠ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










Phần 1: Giới thiệu
o Lời giới thiệu
o Linh kiện
Phần 2: Mạch đồng hồ báo chuông tiết học
o Sơ đồ nguyên lý
o Sơ đồ mạch in
o Lưu đồ giải thuật




























Phầ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
1/ AT89S52:
-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
-Hinh dáng

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
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 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
thờ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ờ



Hình 2: Giao tieáp bus vôùi IC Intel

Phần 2:Đồng Hồ Báo Giờ
I/Sơ đồ nguyên lý
G
G
P1.4
C
+5V +5V
Q7
2N1132A

2 1
3
B
F
D
R2
R
P1.7
D
F
U5
7SEGMENT LED
1
2
3
4
5
10
9
8
7
6
E
D
ANODE1
C
H
G
F
ANODE 2

A
B
+5V
C
U8
7SEGMENT LED
1
2
3
4
5
10
9
8
7
6
E
D
ANODE1
C
H
G
F
ANODE 2
A
B
A
R12 R
U2
7SEGMENT LED

1
2
3
4
5
10
9
8
7
6
E
D
ANODE1
C
H
G
F
ANODE 2
A
B
A
F
P2.2
H
<Doc> <Rev Code>
<Title>
A
11Thursday , December 07, 2006
Title
Size Document Number Rev

Date: Sheet
of
P1.0
P1.5
H
C
U1
7SEGMENT LED
1
2
3
4
5
10
9
8
7
6
E
D
ANODE1
C
H
G
F
ANODE 2
A
B
R8
R

R15 R
D
P1.1
G
+5V
C
R11 R
R9 R
Q8
2N1132A
2 1
3
G
P1.5
E
F
U4
7SEGMENT LED
1
2
3
4
5
10
9
8
7
6
E
D

ANODE1
C
H
G
F
ANODE 2
A
B
R7
R
R3
R
H
P1.1
P2.6
J2
HEADER 8
1
2
3
4
5
6
7
8
+5V
F
B
R10 R
Q2

2N1132A
2 1
3
P1.2
C
P1.0
P2.3
D
F
H
R6
R
P1.6
R14 R
F
H
R13 R
A
B
A
P2.7
E
+5V
+5V
H
R16 R
G
A
Q5
2N1132A

2 1
3
P2.4
D
D
P1.7
E
H
P1.3
G
B
P2.5
B
F
A
C
E
R5
R
P1.4
A
U6
7SEGMENT LED
1
2
3
4
5
10
9

8
7
6
E
D
ANODE1
C
H
G
F
ANODE 2
A
B
E
J1
HEADER 10
1
2
3
4
5
6
7
8
9
10
P1.6
E
E
E

P2.0
G
R4
R
P1.3
A
A
H
D
F
G
R1
R
D
G
B
Q6
2N1132A
2 1
3
C
P1.2
B
Q3
2N1132A
2 1
3
H
U7
7SEGMENT LED

1
2
3
4
5
10
9
8
7
6
E
D
ANODE1
C
H
G
F
ANODE 2
A
B
E
+5V
P2.1
C
Q1
2N1132A
2 1
3
+5V
D

U3
7SEGMENT LED
1
2
3
4
5
10
9
8
7
6
E
D
ANODE1
C
H
G
F
ANODE 2
A
B
Q4
2N1132A
2 1
3
C
B
B


o
P2.7
J1
HEADER 6
1
2
3
4
5
6
D2
LED
+5V
P1.3
R1
4K7
1 2
3
4
5
6
7
8
9
C8
104
WR
P1.0
P1.5
BUZZE

U1
DALLAS 1887
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
MOT
2
3
AD0

AD1
AD2
AD3
AD4
AD5
AD6
AD7
GND
CS
AS
R/W
16
DS
RESET
IRQ
20
21
22
SQW
VCC
+
C6
220uF
C7
104
P2.7
C5
104
+5V
J3

HEADER 8
1
2
3
4
5
6
7
8
P2.2
P2.5
U3 7805
1 3
2
VIN VOUT
GND
Y1
12MHz
+5V
P2.1
DOWN
J4
HEADER 2
1
2
C2
33pF
WR
INT0
RESET

P1.6
R8
R
C1
10uF
SW3
SW
1
4
2
3
P2.2
P1.2
Q1
A1015
C3
33pF
RD
P1.5
P1.1
R2
R
P2.5
-
+
D1
BRIDGE
2
1
4

3
P2.3
+5V
BUZZE
ALE
MODE
P1.7
MOD E
P1.4
ALE
P1.6
P1.2
+5V
SW4
SW
1 4
2 3
J2
HEADER 10
1
2
3
4
5
6
7
8
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
11Thursday , December 07, 2006
Tit le
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
3
4
5
6
7
8
9
UP
U2
AT89S52
918
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
RSTXTA L 2
XTA L 1
GND
PSEN
ALE/PROG
EA/VPP
VCC
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5/MOSI
P1.6/MISO
P1.7/SCK
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/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0

P3.5/T1
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
RESET
P1.4
R3
R
P1.7
P2.0
P2.3
P2.6
P1.1
P2.6
RD
R5
R

II/Sô ñoà maïch in

















III. 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
Bắt Đầu
Kết Thúc
Lấy data từ RTC
Hiển thò lên màn hình
Dò phím Mode = 1?
đúng
Set giờ
Dò phím Mode = 2?
Dò phím Mode = 3?

Set phút
Set giây
sai
đúng
đúng
U
p
=1?
Tăng giá trị ơ nhớ
thích h
ợp
lên 1
Đặt giá trị cho RTC
Down = 1?
sai
Giảm giá trị ơ nhớ
thích h
ợp
đi 1
Đặt giá trị cho RTC
IV/ Chương trình
1/Lưu đồ thuật toán

2/Chöông trình :
bmode equ r2
mode bit p3.5
up bit p3.4
dwn bit p3.3
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
org 0h

td: lcall //khoitao
lcall //doc_gpg
lcall //hex_bcd
lcall //bcd_7doan
lcall //hienthi
lcall //delay
jb mode,adj
sjmp td
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
khoitao:

mov r0,#0ah
mov a,#20h
movx @r0,a
mov r0,#0bh
mov a,#06h
ret

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
adj: lcall hienthi; chong nhay man hinh
jb mode,adj
inc bmode
cjne bmode,#04h,b11
mov bmode,#0h
ljmp td
b11: mov 61h,#10h
b13: mov 60h,#0ffh
lcall doc_gpg
lcall hex_bcd
lcall bcd_7doan

b12: lcall hienthi
jb mode,adj
jb up,tang
jb dwn,giama
djnz 60h,b12
cjne bmode,#01,ss11
mov 36h,#0ffh; tat don vi gio
mov 37h,#0ffh; tat hang chuc gio
sjmp tat
ss11:
cjne bmode,#2,ss12
mov 34h,#0ffh; tat don vi phut
mov 33h,#0ffh; tat hang chuc phut
sjmp tat
ss12:
mov 30h,#0ffh; tat don vi giay
mov 31h,#0ffh; tat hang chuc giay

tat: mov 60h,#0ffh
tat1: lcall hienthi
jb mode,adj
jb up,tang
jb dwn,giam
djnz 60h,tat1
djnz 61h,b13
mov bmode,#0
ljmp td
giama: sjmp giam
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
tang: mov 62h,#200; chong doi

tang1: lcall hienthi
djnz 62h,tang1

b26:
cjne bmode,#1,ss21
mov r0,#04h
movx a,@r0
inc a
cjne a,#24,b21
mov a,#0h
b21: movx @r0,a
sjmp b22

ss21: cjne bmode,#2,ss22
mov r0,#02h
movx a,@r0
inc a
cjne a,#60,b23
mov a,#0h
b23: movx @r0,a
sjmp b22

ss22: mov r0,#00h
movx a,@r0
inc a
cjne a,#60,b24
mov a,#0h
b24: movx @r0,a

b22: mov 62h,#50

lcall doc_gpg
lcall hex_bcd
lcall bcd_7doan
b25: lcall hienthi
djnz 62h,b25
jb up,b26
ljmp b11

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
giam: mov 62h,#200; chong doi
giam1: lcall hienthi
djnz 62h,giam1

b36:
cjne bmode,#1,ss31
mov r0,#04h
movx a,@r0
dec a
cjne a,#0ffh,b31
mov a,#23h
b31:
movx @r0,a
sjmp b32

ss31:
cjne bmode,#2,ss32
mov r0,#02h
movx a,@r0
dec a
cjne a,#0ffh,b33

mov a,#59
b33:
movx @r0,a
sjmp b32

ss32:
mov r0,#00h
movx a,@r0
dec a
cjne a,#0ffh,b34
mov a,#59
b34:
movx @r0,a

b32:
mov 62h,#200
lcall doc_gpg
lcall hex_bcd
lcall bcd_7doan
b35:
lcall hienthi
djnz 62h,b35
jb dwn,b36
ljmp b11
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
doc_gpg:
mov r0,#00h
movx a,@r0
mov 10h,a


mov r0,#02h
movx a,@r0
mov 11h,a

mov r0,#04h
movx a,@r0
mov 12h,a
ret

hex_bcd:
mov r0,#10h
mov r1,#20h
hb: mov a,@r0
mov b,#10
div ab
mov @r1,b
inc r1
mov @r1,a
inc r0
inc r1
cjne r0,#13h,hb
ret


bcd_7doan:
mov dptr,#500h
mov r0,#20h
mov r1,#30h
bc1: mov r7,#02h
bc: mov a,@r0

movc a,@a+dptr
mov @r1,a
inc r0
inc r1
djnz r7,bc
mov @r1,#0bfh
inc r1
cjne r0,#26h,bc1
ret



hienthi: mov r0,#30h
mov a,#0feh
ht: mov p2,@r0
mov p1,a
lcall delay
mov p1,#0ffh
inc r0
rl a
cjne a,#0feh,ht
ret

delay: mov 7fh,#50
djnz 7fh,$
ret

org 500h
db
00010001b,11010111b,00110010b,10010010b,11010100b,10

011000b,00011000b,11010011b,00010000b,10010000b

end

×