g
BỘ GIAO THÔNG VẬN TẢI
ĐẠI HỌC HÀNG HẢI VIỆT NAM
KHOA ĐIỆN – ĐIỆN TỬ
MÔN ĐIỆN TỰ ĐỘNG CÔNG NGHIỆP
BÀI TẬP LỚN
MÔN : KỸ THUẬT VI XỬ LÝ
ĐỀ 5: Thiết kế mạch đo khoảng thời gian giữa hai sự kiện có hiển thị trên
LED 7 đoạn
GV HƯỚNG DẪN : PHẠM TUẤN ANH
SINH VIÊN : BÙI THẾ CƯỜNG
LỚP : ĐTĐ52 – ĐH2
MÃ SINH VIÊN : 42217
Hải phòng,ngày 20 tháng 4 năm 2014
1
LỜI NÓI ĐẦU
Bộ vi xử lý là hạt nhân của hệ VXL.Nó thực hiện các phép tính logic hoặc số học
để điều khiển toàn bộ hoạt động của hệ .
- Đọc các lệnh từ ô nhớ ,giải mã lệnh và thực hiện lệnh .
- Trao đổi số liệu với bộ nhớ và các thiết bị vào ra .
- Có thể được điều khiển từ số tín hiệu bên ngoài để thực hiện một số chức
năng đặc biệt như thâm nhập bộ nhớ ,ngắt và treo .
Một hệ VXL bao gồm 2 phần :
- Phần cứng
- Phần mềm
Phần cứng là toàn bộ các kết cấu vật lý cấu thành nên hệ như ROM, RAM ….
Phần mềm là phần logic bao gồm hệ điều hành và chương trình ứng dụng (do người viết
).Chương trình được lưu trữ trong bộ nhớ bằng mã nhị phân của máy tính .Một chương
trình viết bằng ngôn ngữ máy là 1 chuỗi các byte nhị phân biểu diễn các lệnh mã máy
tính thực hiện được .Hợp ngữ thay thế các mã nhị phân của ngôn ngữ máy bằng các mã
gợi nhớ giúp chúng ta dễ nhớ hơn và dễ lập trình hơn .
* Sơ đồ chân AT89C51:
Hình 2.3. Sơ đồ chân AT89C51
- Bộ phận dao động của vi xử lý được kết nối như hình dưới: IC 89C51 với tần số
làm việc là 12 MHz. Chân 18, 19 của 89C51 được nối với thạch anh (cũng có thể
thay thế thạch anh bằng tín hiệu xung clock). 1 chu kỳ máy của 89C51 là 1µs.
ssT
µ
110
1012
12
6
6
==
×
=
−
- Bộ phận Reset được kết nối như hình dưới: khi cấp nguồn, áp trên R2 (chân 9 của
89C51) lên mức cao 5V ( = VCC ) sau đó sẽ xuống 0V do tụ C nạp.
4
1.2. Kết nối Vi điều khiển với LED 7 đoạn :
-Ngõ nhận tín hiệu điều khiển của led 7 đoạn có 8 đường, vì vậy có thể dùng 1
port nào đó của Vi điều khiển để điểu khiển led 7 đoạn .Như vậy led 7 đoạn nhận
một dữ liệu 8 bit từ VĐK led 7 đoạn thường gọi là “ Mã hiển thị led 7 đoạn ”.Có 2
kiểu mã hiển thị led 7 đoạn :
+ Mã hiện thị cho led 7 đoạn có Anode (cực +) chung .
+ Mã hiện thị cho led 7 đoạn có Cathode(cực -)chung .
Chẳng hạn :để hiện thị số 1 cần làm cho các led ở vị trí b cà c sáng ,nếu sử dụng led
7 đoạn có Anode chung thì phải đặt vào 2 chân b và c điện áp là 0V (mức 0),các
chân còn lại thì đặt điện áp là 5V (mức 1).Nếu sử dụng led 7 đoạn có Cathode
chung thì điện áp hoàn toàn ngược lại,tức là phải đặt vào chân b và c điện áp là 5V
Số hiển thị Mã hiển thị (nhị phân ) Mã hiện thị (thập lục phân )
h g f e d c b a
0 0 0 1 1 1 1 1 1 3F
1 0 0 0 0 0 1 1 0 06
2 0 1 0 1 1 0 1 1 5B
3 0 1 0 0 1 1 1 1 4F
4 0 1 1 0 0 1 1 0 66
5 0 1 1 0 1 1 0 1 6D
6 0 1 1 1 1 1 0 1 7D
7 0 0 0 0 0 1 1 1 07
8 0 1 1 1 1 1 1 1 7F
9 0 1 1 0 1 1 1 1 6F
A 0 1 1 1 0 1 1 1 77
B 0 1 1 1 1 1 0 0 7C
C 0 0 1 1 1 0 0 1 39
D 0 1 0 1 1 1 1 0 5E
E 0 1 1 1 1 0 0 1 79
F 0 1 1 1 0 0 0 1 71
- 0 1 0 0 0 0 0 0 40
1.3. Giao tiếp Vi điều khiển với nhiều led 7 đoạn .
-Nếu kết nối mỗi Port của Vi điều khiển với 1 led 7 đoạn thì tối đa kết nối được 4
led 7 đoạn. Mặt khác nếu kết nối như trên sẽ hạn chế khả năng thực hiện các công việc
khác nhau của VĐK .Cho nên cần phải kết nối,điều khiển nhiều led 7 đoạn với số
lượng chân điều khiển từ VĐK càng ít càng tốt. Có 2 giải pháp : - 1 là sử dụng các IC
6
chuyên dụng cho công việc hiện thị led 7 đoạn 2 là kết nối nhiều led 7 đoạn vào cùng
1 đường xuất tín hiệu hiển thị. Nội dụng này sẽ được đề cập cách kết nối nhiều led 7
đoạn theo giải pháp thứ 2 .
-Mắt người có đặc điểm sinh lý là chỉ thu nhaanh 24 hình/giây để tổng hợp các
hình ảnh về thế giới xung quanh. Nếu một tín hiệu ánh sáng có chu kỳ sáng tắt hơn 24
OFF led 7 đoạn thứ nhất và đồng thời ON led 7 đoạn thứ 2, lúc này chỉ có led 7
đoạn thứ hai hiển thị và hiển thị số 5. Tiếp theo xuất mã hiển thị led 7 đoạn hiện thị
số 4, OFF led 7 đoạn thứ hai và ON led 7 thứ ba, lúc này chỉ duy nhất led 7 đoạn
thứ ba hiển thị số 4. Cứ thế lặp lại quá trình trên liên tục. Thời gian ON/OFF chỉ
trong khoảng vài chục µs, và tại mỗi thời điểm chỉ có mỗi một led 7 đoạn hiện thị
số của chính nó, vì vậy mắt người thấy 3 led 7 đoạn không sáng đứt quãng, mà
sáng liên tục, mỗi led hiển thị 1 số riêng của nó. Thực hiện tương tự để mở rộng số
lượng led 7 đoạn cần sử dụng.
1.4. Mô hình mô phỏng :
8
CHƯƠNG 2: LƯU ĐỒ THUẬT TOÁN VÀ CHƯƠNG TRÌNH HỢP NGỮ
2.1. Lưu đồ thuật toán:
9
2.2. Chương trình hợp ngữ:
#include <sfr51.inc>
ORG 0000H
SJMP MAIN
TOCDO EQU 40H
SAVE1 EQU 41H
SAVE2 EQU 42H
LED1 BIT P3.0
10
LED2 BIT P3.1
ORG 003H
SJMP NGAT_INT0
ORG 013H
SJMP NGAT_INT1
;=========================================
MAIN:
MOV R1,#1
INC R3 ; sau khi hiển thị xong thì tăng biến đếm lên 1 đơn vị
CJNE R3,R1,HERE1 ;so sánh R3 với R1
JMP TRUYEN ;
;===============================================
DECODE: ;chương trình giải mã
MOV A,R3
MOV B,#10 ; gán B=10
DIV AB ; lấy A chia B, phần nguyên lưu ở A, phần dư lưu ở B
MOVC A,@A+DPTR ; gán A= mã led tại vị trí A chỉ đến trong DPTR
MOV SAVE1,A ; lưu A vào một ô nhớ SAVER1
MOV A,B ; đưa B vào A (A=B)
MOVC A,@A+DPTR ; gán A= mã led tại vị trí A chỉ đến trong DPTR
MOV SAVE2,A ; ưu A vào một ô nhớ SAVER2
RET
;==============================================
DISPLAY: ; hiển thị
MOV TOCDO,#50; tần số 50Hz thì quét 50 hình trong 1S, như vậy 1 giây sẻ
tăng số đếm lên 1 đơn vị
LAP: CLR LED1; tắt Led 1
12
CLR LED2; tắt led2
MOV P2,SAVE1; đưa saver1 vào P2
SETB LED1; bật led hiển thị
CALL DELAY; gọi chương trình trể 10uS
CLR LED1
CLR LED2
MOV P2,SAVE2; đưa data lưu trong saver2 vào P2
SETB LED2; bật led2
CALL DELAY
DJNZ TOCDO,LAP; giảm biến tốc độ nếu chưa=0 thì cho hiển thị và giảm