Các đặc điểm của hệ Vi Xử Lý 89C51 :
- Là IC có tích hợp trên đó hệ vi xử lý
- Có 40 chân.
- 4KB ROM trong , có thể ghi xoá được 1000 lần
- Dải tần số hoạt động từ 0MHz đến 24Mhz
- 128x8 bit RAM trong .
- 4 cổng vào ra 8 bit
- 2 bộ định thời 16 bit
- Có 6 nguyên nhân ngắt
- Có thể lập trình được qua cổng nối tiếp
- 210 bit được địa chỉ hoá
- Giao Tiếp nối tiếp
19 trang |
Chia sẻ: diunt88 | Lượt xem: 2502 | Lượt tải: 5
Bạn đang xem nội dung tài liệu Bài tập lớn Vi xử lý Thiết kế bảng quảng cáo, hiển thị một dòng chữ chạy, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Trường đại học bách khoa hà nội
Khoa Điện Tử Viễn Thông
----- ( -----
Báo cáo
BÀI TẬP VXL
GV Hướng Dẫn: Thầy Phạm Ngọc Nam
Nhóm Sinh viên: Trần Văn Thông
Nguyễn Thị Thanh Thuý
Nguyễn Công Chiến
Đào Xuân Vũ
Nguyễn Vũ
Lớp : ĐT09-K47
Hà Nội 11/2005
Chủ đề:
Thiết kế bảng quảng cáo, hiển thị một dòng chữ chạy
Phần I:Giới Thiệu Linh Kiện Sử Dụng
Vi Xử Lí AT89C51
1. Các đặc điểm của hệ Vi Xử Lý 89C51 :
- Là IC có tích hợp trên đó hệ vi xử lý
- Có 40 chân.
- 4KB ROM trong , có thể ghi xoá được 1000 lần
- Dải tần số hoạt động từ 0MHz đến 24Mhz
- 128x8 bit RAM trong .
- 4 cổng vào ra 8 bit
- 2 bộ định thời 16 bit
- Có 6 nguyên nhân ngắt
- Có thể lập trình được qua cổng nối tiếp
- 210 bit được địa chỉ hoá
- Giao Tiếp nối tiếp
2. Cơ bản về cấu tạo của AT89C51:
Hình : Sơ đồ chân của 89C51
Hình2 : Sơ đồ khối của 89C51
Cấu Tạo Chân của AT89C51 :
GND(chân 20)
Chân nối với 0v
potr 0(chân 32 – chân 29)
port 0 là port xuất nhập 8 bit hai chiều. Port 0 còn được cấu hình làm bus địa
chỉ( byte thấp) và bus dữ liệu đa hợp trong khi truy xuất bộ nhớ dữ liệu ngoài và
bộ nhớ chương trình ngoài. Port cũng nhận các byte mã trong khi lập trình cho
Flash và xuất các byte mã trong khi kiểm tra chương trình ( các điện trở kéo lên
bên ngoài được cần đến trong khi kiểm tra chương trình).
Port 1( chân 1- 8)
port 1 là port xuất nhập 8 bit hai chiều. Port1 cũng nhận byte địa chỉ thấp trong
thời gian lập trình cho Flash.
Port 2 ( chân 21 – 28)
Port 2 là port xuất nhập 8 bit hai chiều. Port 2 tạo ra các byte cao của bus địa
chỉ trong thời gian tìm nạp lệnh từ bộ nhớ chương trình ngoài và trong thời gian
truy xuất bộ nhớ dữ liệu ngoài, sử dụng các địa chỉ 16 bit. Trong thời gian truy
xuất bộ nhớ dữ liệu ngoài sử dụng các địa chỉ 8 bit, port 2 phát các nội dung
của các thanh ghi đặc biệt, port 2 cũng nhận các bits địa chỉ cao và vài tín hiệu
điều khiển trong thời gian lập trình cho Flash và kiểm tra chương trình.
Port 3 ( chân 10- 17)
Port 3 là port xuất nhập 8 bit hai chiều, port 3 cũng còn làm các chức năng
khác của AT89C51. các chức năng này được nêu như sau:
Chân
Tên
Chức năng
P3.0
RxD
Ngõ vào port nối tiếp
P3.1
TxD
Ngõ ra port nối tiếp
P3.2
INT0
Ngõ vào ngắt ngoài 0
P3.3
INT1
Ngõ vào ngắt ngoài 1
P3.4
T0
Ngõ vào bên ngoài của bộ định thời 1
P3.5
T1
Ngõ vào bên ngoài của bộ định thời 0
P3.6
WR
Điều khiển ghi bộ nhớ dữ liệu ngoài
P3.7
RD
Điều khiển đọc bộ nhớ dữ liệu ngoài
Port 3 cũng nhận một vài tín hiêu điều khiển cho việc lập trình Flash và kiểm tra
chương trình.
RST ( chân 9)
Ngõ vào reset. Mức cao trên chân này trong hai chu kỳ máy trong khi bộ dao động
đang hoạt động sẽ reset AT89C51
.
ALE/PROG( chân 30)
ALE là một xung ngõ ra để chốt byte thấp của địa chỉ trong khi xuất bộ nhớ ngoài.
Chân này cũng làm ngõ vào chân lập trình (PROG) trong thời gian lạp trình cho
Flash.
Khi hoạt động bình thường xung ngõ ra luôn có tần số không đổi là 1/6 tần số của
mạch dao động, có thể được dùng cho các mục đích định thời bên ngoài.
Khi cần, hoạt động chân ALE có thể được vô hiệu hoá bằng cách set bit 0 của
thanh ghi chức năng đặc biệt có địa chỉ 8Eh. Khi bit này được set, ALE chỉ tích
cực trong thời gian thực hiện lệnh MOVX hoặc MOVC. Ngược lại chân này sẽ
được kéo lên cao. Việc set bit không cho phép hoạt động chôt byte thấp của địa chỉ
sẽ không có tác dụng nếu bộ vi điều khiển đang ở chế độ thực thi chương trình
ngoài.
PSEN(chân 29)
PSEN (program Store Enable) là xung điều khiển truy xuất chương trình ngoài. Khi
AT89C51 đang thực thi chương trình từ bộ nhớ chương trình ngoài, PSEN được kích
hoạt hai lần mỗi chu kỳ máy, nhưng hai hoạt động PSEN sẽ bị bỏ qua mỗi khi truy
cập bộ nhớ dữ liệu ngoài.
EA vpp(chân 31)
Là chân cho phép truy xuất bộ nhớ chương trình ngoài ( địa chỉ từ 0000h tới ffffh)
EA = 0 cho phép truy xuát bộ nhớ chương trình ngoài, ngược lại EA = 1 sẽ thực thi
chương trình bên trong chip
Tuy nhiên, lưu ý rằng nếu bít khoá 1 được lập trình EA được chốt bên trong khi reset
XTAL1& XTAL2
Là hai ngõ vào ra của hai bộ khuyếch đại đảo của mạch dao động, được cấu hình để
dùng như một bộ tạo dao động trên chip
3. Tổ chức bộ nhớ của 89C51:
7F
RAM ẹA DUẽNG
30
2F
7F
7E
7D
7C
7B
7A
79
78
2E
77
76
75
74
73
72
71
70
2D
6F
6E
6D
6C
6B
6A
69
68
2C
67
66
65
64
63
62
61
60
2B
5F
5E
5D
5C
5B
5A
59
58
2A
57
56
55
54
53
52
51
50
29
4F
4E
4D
4C
4B
4A
49
48
28
47
46
45
44
43
42
41
40
27
3F
3E
3D
3C
3B
3A
39
38
26
37
36
35
34
33
32
31
30
25
2F
2E
2D
2C
2B
2A
29
28
24
27
26
25
24
23
22
21
20
23
1F
1E
1D
1C
1B
1A
19
18
22
17
16
15
14
13
12
11
10
21
0F
0E
0D
0C
0B
0A
09
08
20
07
06
05
04
03
02
01
00
1F
BANK 3
18
17
BANK 2
10
0F
BANK 1
08
07
Bank thanh ghi 0 ( maởc ủũnh cho R0-R7)
00
CAÁU TRUÙC RAM NOÄI
F0
F7
F6
F5
F4
F3
F2
F1
F0
E0
E7
E6
E5
E4
E3
E2
E1
E0
D0
D7
D6
6D
6C
6B
6A
69
68
B8
-
-
-
BC
BB
BA
B9
B8
B0
B7
B6
B5
B4
B3
B2
B1
B0
A8
AF
AE
AD
AC
AB
AA
A9
A8
A0
A7
A6
A5
A4
A3
A2
A1
A0
99
Khoõng coự ủũa chổ hoựa tửứng bit
98
9F
9E
9D
9C
9B
9A
99
98
90
97
96
95
94
93
92
91
90
8D
Khoõng ủửụùc ủũa chổ hoựa tửứng bit
8C
Khoõng ủửụùc ủũa chổ hoựa tửứng bit
8B
Khoõng ủửụùc ủũa chổ hoựa tửứng bit
8A
Khoõng ủửụùc ủũa chổ hoựa tửứng bit
89
Khoõng ủửụùc ủũa chổ hoựa tửứng bit
88
8F
8E
8D
8C
8B
8A
89
88
87
Khoõng ủửụùc ủũa chổ hoựa tửứng bit
83
Khoõng ủửụùc ủũa chổ hoựa tửứng bit
82
Khoõng ủửụùc ủũa chổ hoựa tửứng bit
81
Khoõng ủửụùc ủũa chổ hoựa tửứng bit
80
87
86
85
84
83
82
81
80
THANH GHI CHệÙC NAấNG ẹAậC BIEÄT
Bộ phân kênh 74LS154
Là một bộ giải mã phân kênh tích cực mức thấp,
với bốn ngõ vào và 16 ngõ ra, sơ đồ sắp xếp chân
như trên hình top view
Dựa vào bốn bit đầu vào A,B,C,D đưa ra đầu ra
16 bit ở mức thấp
Mỗi khi có một đầu ra trong 16 đầu ra được
chọn thì chỉ có đầu ra được chọn ở mức thấp còn
các đầu ra khác đều đặt ở mức cao.
Dựa vào bảng chân lý dưới đây ta có thể xác định được trạng thái đầu ra tại từng thời
điểm, cụ thể ta có thể xem qua sơ đồ logic
III. Giải mã địa chỉ 74LS139 :
Là vi mạch giải mã 16 chân , gồm hai khối giải mã riêng rẽ ,dùng 74139 sẽ có ít
đầu vào hơn so với 74138 dưới đây la sơ đồ chân linh kiện
Bảng sự thật :
IV. Ma trận LED 1588AB :
Sử dụng ma trận led 8x8 với các hàng cột được kết nối với nhau ,trong trừong hợp
bài làm ,có bốn ma trận led được kết nối để tạo thành 8 hàng và 32 cột . ma trận
1588AB là ma trận loại catot
Phần ii. Sơ đồ khối và chức năng các khối
Nguồn
Hiển thị
VDK 89C51
Khuếch đại
dòng
Chọn chip
GiảI mã địa chỉ
1.Khối nguồn :sử dụng nguồn máy tính để đảm bảo khả năng ổn định cao
2.Khối VDK 89C51 :bao gồm các linh kiện kèm với VDK như dao động TA ,tụ
,reset
3.Khối chọn chip :do 74LS139 đảm nhận ,nó sẽ nhận tín hiệu từ VDK để chọn 1
trong hai IC 74154 phục vụ cho giảI mã
4. Khối giải mã : gồm 2 IC 74154 giải nã địa chỉ 16 đầu ra sẽ chọn 1 tron 32 cột của
khối hiển thị để VDK xuất dữ liệu ra (hiên thị )
5 Khối hiển thi :gồm 4 ma trận 8*8 mức thành 8 hàng và 32 cột sẽ hiển thị chữ mà
ta muốn
6 .Khối khuếch đại : để đảm bảo cho đền sáng bình thường ,phải cung đủ dòng
cho nó ,dòng ra từ các chân của các IC ,VDK nói chung đều nhỏ vi vạy phải
khuếch đại chúng trước khi đưa qua đèn việc này đảm nhận bởi các Transitor
PHầN 3:
Sơ đồ nguyên lí và nguyên lí hoạt động :
I.Sơ đồ nguyên lí :
thực hiện bằng phần mềm Proteus :
II. Mô tả nguyên lí hoạt động :
Tín hiệu chọn chip từ VDK đến 74139 được giảI mã sẽ chọn 1 trong hai Ic 74154
sau đó tín hiệu chọn cột được VDK đưa vào bốn đầu vào của 74154 , sẽ giảI mã để
chọn một cột trong 32 cột
Khi một cột đã được chọn ,dữ liệu từ cổng P0 đén các Bazơ của các đèn khuếch đại
ở đó dòn gđược khuch đại và ra ở Emitơ của đèn ,chảy qua đèn về đất (cột được chọn
Hiển thị động : như đã biết , khi có dòng chảy qua led sẽ sáng ,tùy theo vi trí các led
sáng phối hợp với nhau tạo thành hình ảnh chữ . Nhưng một htời điểm ta không thể
cho bao nhiêu led sáng cũng được vì :
+ Dòng cung rất tốn kém :mỗi led 10 mA có tất cả 32*8=256 led
thì cực đại cần 2,56 A
+Dòng quá lớn sẽ gây hỏng IC do mỗi IC chỉ cho phép dòng vào giới hạn
+phải dùng nhiều VDK phối hợp với nhau rất phức tạp
Mặt khác do đặc điểm thi giác của con người không thể phân biệt sự đứt đoạn của
hình ảnh nếu nó dược quét >= 24 lần /giây .Chính vì vậy việc hiển thị đồng loạt là đIề
không cần thiết ,thay vào đó các cột đèn sẽ luân phiên nhau nhận dữ liệu hiển thi ,và
như vậy việc sử dụng các chân của VDK và việc lập trình sẽ đon giản hơn
*Quá trình truy xuất dữ liệu ở 89C51 :
III. Mã chương trình :
*Mô tả chương trình :chương trình được thực hiện bằng phần mềm Reads51 các chữ
mã hóa dựa trên bảng sau
cổng p2 quản lí việc chọn chip và dữ liệu đầu vào của 74154 ,cổng p0 quản lí việc xuất
dữ liệu ,dữ liệu trước khi đua ra được đẩy vào các thanh ram của bank 0
Code:
#include
org 0h
MOV tmod,#01
MOV p2,#10100000B;dia chi bat dau cua chuoi tu ngoai cung ben phai
lap1:
MOV R7,#24;so lan quet chuoi
lap:
ACALL chuoi
MOV A,p2
SUBB A,#64
MOV p2,A
DJNZ R7,lap
DEC p2
CLR p2.7
LJMP lap1
delay2:
MOV tl0,#09Bh ;nap gia tri can tre
MOV th0,#0ffh
SETB tr0
here2:
JNB tf0,here2
CLR tr0
CLR tf0
RET
goi: ;dua du lieu tu ram ra cong P0
INC p2
MOV p0,R0
acall delay2
INC p2
MOV p0,R1
acall delay2
INC p2
MOV p0,R2
acall delay2
INC p2
MOV p0,R3
acall delay2
INC p2
MOV p0,R4
acall delay2
INC p2
MOV p0,R5
acall delay2
INC p2
MOV p0,R6
acall delay2
RET
napd:
MOV R0,#01001001B
MOV R1,#01111111B
MOV R2,#01111111B
MOV R3,#01001001B
MOV R4,#01100011B
MOV R5,#00111110B
MOV R6,#00011100B
RET
napi:
MOV R0,#01000100B
MOV R1,#01111101B
MOV R2,#01111101B
MOV R3,#01000000B
MOV R4,#00111000B
MOV R5,#01111110B
MOV R6,#11010101B
RET
nape:
MOV R0,#11010101B
MOV R1,#01011110B
MOV R2,#00011000B
MOV R3,#00000000B
MOV R4,#01111100B
MOV R5,#01111100B
MOV R6,#00000100B
RET
napn:
MOV R0,#00000100B
MOV R1,#01111100B
MOV R2,#01111000B
MOV R3,#00000011B
MOV R4,#01000001B
MOV R5,#01111111B
MOV R6,#01111111B
RET
napt:
MOV R0,#01000001B
MOV R1,#00000011B
MOV R2,#00111100B
MOV R3,#01111100B
MOV R4,#01000101B
MOV R5,#01000011B
MOV R6,#01111100B
RET
napu:
MOV R0,#01111100B
MOV R1,#00000110B
MOV R2,#00000000B
MOV R3,#00000110B
MOV R4,#01001111B
MOV R5,#01001001B
MOV R6,#00101001B
RET
nap9:
MOV R0,#00111111B
MOV R1,#00011110B
MOV R2,#01000001B
MOV R3,#01111111B
MOV R4,#01111111B
MOV R5,#00001000B
MOV R6,#00011100B
RET
napk:
MOV R0,#01110111B
MOV R1,#01100011B
MOV R2,#00011000B
MOV R3,#00011100B
MOV R4,#01010110B
MOV R5,#01111111B
MOV R6,#01111111B
RET
nap4:
MOV R0,#01010000B
MOV R1,#00000011B
MOV R2,#00000011B
MOV R3,#01110001B
MOV R4,#01111001B
MOV R5,#00001111B
MOV R6,#00000111B
RET
chuoi: ;dua cac chu ra P0
ACALL napd
ACALL goi
ACALL napi
ACALL goi
ACALL nape
ACALL goi
ACALL napn
ACALL goi
ACALL napt
ACALL goi
ACALL napu
ACALL goi
ACALL nap9
ACALL goi
ACALL napk
ACALL goi
ACALL nap4
ACALL goi
inc p2
mov p0,#0B
RET
END
Thời gian trễ của delay2:
0ffffh-0ff37h=200d
khoảng trễ sẽ là 0. 2ms
Để tạo chữ chạy ta chọn cỏc bộ định thời để tạo trễ sao cho 1 chuỗi ( 50 cột: 10 kớ tự ) được quột ớt nhất 24 lần trong 1s sau đú trễ 1 rồi dịch sang vị trớ tiếp (đặt thời gian quột 1 lần chuỗi là T1=1/ 24
Trong một lần quột chuỗi mỗi cột sẽ được quột trong T1/ ( 50x2 ) do giữa mỗi lần quột cú một khoảng nghỉ
(Như vậy khoảng trễ của một lần quột cột là 1/2400 khoảng 0. 4ms ( 370 chu kỡ mỏy )
Một lần quột chuỗi khoảng 40ms ( 38000 chu kỡ mỏy )
Tuy nhiờn khi tớnh đến trễ gõy ra bởi bản thõn cỏc lệnh thỡ ta được kết quả như phần mó