2 Bài tập: • Bài 1: Hãy viết chương trình ñiều khiển hiển thị chữ M màu ñỏ trên LED ma trận COL-RED ñược nối với Port1, ROW ñược nối với Port2.. • Bài 2: Hãy viết chương trình ñiều khiển
Trang 1BỘ MÔN ðIỆN TỬ CÔNG NGHIỆP TÀI LIỆU HƯỚNG DẪN
THÍ NGHIỆM - THỰC HÀNH
Trang 2A MỤC ðÍCH:
• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi ñiều khiển và sử dụng mô hình thí nghiệm ñể kiểm chứng
• ðiều khiển thiết bị ngoại vi bằng các port của vi ñiều khiển
• ðiều khiển việc hiển thị bằng cách sử dụng LED ma trận
• Ứng dụng thực hiện việc hiển thị các thông tin tĩnh và ñộng trên LED ma trận dạng quang báo)
B YÊU CẦU:
• Nắm vững tập lệnh của vi ñiều khiển MCS-51
• Biết cách viết các chương trình ñiều khiển LED ma trận ở các chế ñộ khác nhau
• Nắm ñược sơ ñồ và nguyên lý hoạt ñộng của khối LED ma trận trên mô hình thí nghiệm
• Nắm ñược nguyên lý ñiều khiển LED ma trận ở các chế ñộ khác nhau
• Biết cách viết các chương trình quang báo ñể hiển thị các thông tin ñược yêu cầu (thông tin dạng tĩnh và dạng ñộng)
Trang 31 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm
• Tắt nguồn cấp cho mơ hình thí nghiệm
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J95 (INPUT 1) ở khối đệm dữ liệu
• Dùng dây bus 8 nối J96 (OUTPUT 1) ở khối đệm dữ liệu với J9 (COLUMN RED MATRIX) ở khối LED
ma trận
• Dùng dây bus 8 nối J65 (PORT2 / A8 A15) ở khối vi điều khiển với J13 (ROW MATRIX) ở khối LED
ma trận
• Dùng hai dây bus 3 nối J116 (POWER) ở khối LED ma trận và J109 (POWER) ở khối đệm dữ liệu với nguồn +5V ở khối nguồn
ĐỆM - ĐẢO
DỮ LIỆU
LED MA TRẬN
POWER ROW MAT.
VI ĐIỀU KHIỂN
A0 A7
SELECT CHIP CLOCK OUT
POWER SW
NGUỒN +5V
8
8
8
3
1.2 Sơ đồ nguyên lý của hệ thống:
AD7
AD0
AD0 AD2 AD4 AD6
AD7 AD5 AD3 AD1
Q8 Q6 Q4 Q2
P1.1
P1.3
P1.5
COL5 COL3 COL1 P1.1
P1.3 P1.5 P1.7
COL0 COL2 COL4 COL6
COL0
ROW7 ROW5 ROW3 ROW1 COL1
COL3 COL5 COL7
XTAL2 18
XTAL1 19
ALE 30
EA 31
PSEN 29
RST 9
P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32
P1.0 1
P1.1 2
P1.2 3
P1.3 4
P1.4 5
P1.5 6
P1.6 7
P1.7 8
P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14
P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28
P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
2 4 6 8
1
RP1
10K
MẠCH ĐIỀ U KHIỂ N LED MA TRẬ N
Q1
A1015 +5V
Q2
A1015 +5V
R2
1K
R3
1K
Q3
A1015 +5V
Q4
A1015 +5V
R11
1K
R12
1K
Q5
A1015 +5V
Q6
A1015 +5V
R13
1K
R14
1K
Q7
A1015 +5V
Q8
A1015 +5V
R15
1K
R16
1K
1B 1 2B 2 3B 3 4B 4 5B 5 6B 6 7B 7 8B 8
1C 18 2C 17 3C 16 4C 15 5C 14 6C 13 7C 12 8C 11
COM 10
U2
ULN2803
ROW COLUMN
+5V
2 4 6 8
1
RP2
10K
+5V
C3
10uF
R1
10k
+5V
Các điện trở này chỉ sử dụng khi ta chạy mô phỏng
Trang 41.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển
• Cách 1:
Trang 5;CHUONG TRINH HIEN THI KY TU A TREN MA TRAN LED
;***************************************************
;PHUONG PHAP: QUET COT (ACT = 1) - HIEN THI HANG (ACT = 0)
;***************************************************
MAIN:
MOV P2 ,#07H ;XUAT MA HIEN THI RA HANG
MOV P1 ,#01H ;XUAT MA QUET RA COT 1
LCALL DELAYLED
MOV P1 ,#00H ;CHONG LEM
MOV P2 ,#0DBH ;XUAT MA HIEN THI RA HANG
MOV P1 ,#02H ;XUAT MA QUET RA COT 2
LCALL DELAYLED
MOV P1 ,#00H ;CHONG LEM
MOV P2 ,#0DDH ;XUAT MA HIEN THI RA HANG
MOV P1 ,#04H ;XUAT MA QUET RA COT 3
LCALL DELAYLED
MOV P1 ,#00H ;CHONG LEM
MOV P2 ,#0DBH ;XUAT MA HIEN THI RA HANG
MOV P1 ,#08H ;XUAT MA QUET RA COT 4
LCALL DELAYLED
MOV P1 ,#00H ;CHONG LEM
MOV P2 ,#07H ;XUAT MA HIEN THI RA HANG
MOV P1 ,#10H ;XUAT MA QUET RA COT 5
LCALL DELAYLED
MOV P1 ,#00H ;CHONG LEM
MOV P2 ,#0FFH ;XUAT MA HIEN THI RA HANG
MOV P1 ,#20H ;XUAT MA QUET RA COT 6
LCALL DELAYLED
MOV P1 ,#00H ;CHONG LEM
MOV P2 ,#0FFH ;XUAT MA HIEN THI RA HANG
MOV P1 ,#40H ;XUAT MA QUET RA COT 7
LCALL DELAYLED
MOV P1 ,#00H ;CHONG LEM
MOV P2 ,#0FFH ;XUAT MA HIEN THI RA HANG
MOV P1 ,#80H ;XUAT MA QUET RA COT 8
LCALL DELAYLED
MOV P1 ,#00H ;CHONG LEM
LJMP MAIN
;***************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1 ,#5
DEL:
MOV R0 ,#250
DJNZ R0 ,$
DJNZ R1 ,DEL
POP 01H
POP 00H
RET
END
Trang 6• Cách 2:
CẤT TẠM GIÁ TRỊ CỦA ACC, R0,
R1 VÀO STACK
SCANMATRIXSTA NAME: SCANMATRIXSTA - QUÉT HIỂN THỊ LED MA TRẬN INPUT: DPTR = VÙNG NHỚ CHỨA DỮ LIỆU HIỂN THỊ.
OUTPUT: P1 = CỘT MA TRẬN (CÓ SỬ DỤNG BỘ ðẢO).
P2 = HÀNG MA TRẬN.
MODE: HIỂN THỊ HÌNH ẢNH TĨNH 8 x 8, QUÉT CỘT (TÍCH
CỰC MỨC 1), HIỂN THỊ HÀNG (TÍCH CỰC MỨC 0).
SCANMATRIXSTA:
LẤY LẠI GIÁ TRỊ CHO ACC, R0,
R1 TỪ STACK
NẠP VỊ TRÍ CỦA DỮ LIỆU HÀNG CHO CỘT ðẦU TIÊN TRONG VÙNG MÃ (OFFSET CỦA DỮ LIỆU ðẦU TIÊN)
(R0) = 00H NẠP MÃ QUÉT CHO CỘT ðẦU TIÊN (R1) = 00000001B = 01H SCAN:
XUẤT MÃ QUÉT RA CỘT (P1) = (R1) GỌI CTC TẠO TRỄ CHO 1 LED
DELAYLED
LẤY VỊ TRÍ CỦA DỮ LIỆU HÀNG CHO CỘT KẾ TIẾP TRONG VÙNG MÃ (OFFSET CỦA DỮ LIỆU KẾ TIẾP)
(R0) = (R0) + 1
CHỐNG LEM - BỎ CHỌN CỘT (P1) = 00000000B = 00H
DỊCH MÃ QUÉT CỘT
RL A - QUÉT CỘT KẾ TIẾP
QUÉT LED ? (CHƯA QUÉT XONG)
ð
S
RET
DELAYLED (XEM CTC NÀY TẠI VÍ DỤ B3.1 MBI)
NẠP ðỊA CHỈ VÙNG MÃ (DPTR) = CODEDISP
BEGIN
GỌI CTC QUÉT LED MA TRẬN
SCANMATRIXSTA
MAIN:
C1.2
LẤY DỮ LIỆU HIỂN THỊ HÀNG TRONG VÙNG Mà THEO VỊ TRÍ ðà XÁC ðỊNH
(A) = (R0) (A) = (@A+DPTR) XUẤT DỮ LIỆU HIỂN THỊ RA HÀNG
(P2) = (A)
VÙNG DỮ LIỆU HIỂN THỊ CODEDISP
07H,DBH,DDH,DBH,07H,FFH,FFH,FFH
;***************************************************
;CHUONG TRINH HIEN THI KY TU A TREN MA TRAN LED
;***************************************************
;PHUONG PHAP: QUET COT (ACT = 1) - HIEN THI HANG (ACT = 0)
;***************************************************
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
LCALL SCANMATRIXSTA ;HIEN THI DU LIEU
LJMP MAIN
Trang 7;***************************************************
;CTC QUET MA TRAN 8 X 8
;***************************************************
;***************************************************
SCANMATRIXSTA:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
PUSH 01H
MOV R0 ,#00H ;VI TRI CUA DU LIEU COT DAU TIEN TRONG VUNG MA
MOV R1 ,#01H ;MA QUET COT DAU TIEN
SCAN:
MOV A , R0
MOVC A , @A+DPTR ;LAY MA HIEN THI TRONG VUNG MA THEO VI TRI
LCALL DELAYLED
MOV P1 ,#00H ;CHONG LEM
RL A
MOV R1 , A
CJNE R0 ,#08H,SCAN ;KIEM TRA QUET CAC COT (MA TRAN GOM 8 COT)
POP 00H
POP ACC
RET
;***************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1 ,#5
DEL:
MOV R0 ,#250
DJNZ R0 ,$
DJNZ R1 ,DEL
POP 01H
POP 00H
RET
;***************************************************
CODEDISP:
DB 07H,0DBH,0DDH,0DBH,07H,0FFH,0FFH,0FFH ;CHU A
END
1.4 Lưu chương trình và biên dịch chương trình
1.5 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có
1.6 Gắn chip vi ñiều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip hoạt ñộng
1.7 Nạp chương trình vào vi ñiều khiển
1.8 Sử dụng vi ñiều khiển vừa nạp gắn vào socket tương ứng trên khối vi ñiều khiển
1.9 Bật nguồn cho mô hình thí nghiệm Quan sát kết quả hoạt ñộng, nếu kết quả hoạt ñộng không ñúng yêu cầu của ñề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ bước 3 ñến bước 9
2 Bài tập:
• Bài 1: Hãy viết chương trình ñiều khiển hiển thị chữ M màu ñỏ trên LED ma trận (COL-RED ñược nối với Port1, ROW ñược nối với Port2)
• Bài 2: Hãy viết chương trình ñiều khiển hiển thị số 8 màu xanh trên LED ma trận (COL-GRE ñược nối với Port1, ROW ñược nối với Port2)
Trang 8• Bài 3: Hãy viết chương trình ñiều khiển hiển thị chữ A màu vàng trên LED ma trận (COL-RED ñược nối với Port 1, COL-GRE ñược nối với Port2, ROW ñược nối với Port3)
• Bài 4: Hãy lập bảng mã cho tất cả các ký tự chữ, ký tự số và ký tự ñặc biệt có trên bàn phím máy tính Và thử ñưa các mã ñã lập này vào chương trình ñiều khiển hiển thị ở trên ñể xem hình ảnh chúng như thế nào?
• Bài 5: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình
Trang 91 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1
1.2 Sơ ñồ nguyên lý của hệ thống:
• Sơ ñồ nguyên lý của hệ thống tương tự như Bài 1
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển
DELAYLED (XEM CTC NÀY TẠI VÍ DỤ B3.1 MBI)
VÙNG DỮ LIỆU HIỂN THỊ CODEDISP
07H,DBH,DDH,DBH,07H,FFH,FFH,FFH
NẠP ðỊA CHỈ VÙNG MÃ (DPTR) = CODEDISP
BEGIN
GỌI CTC QUÉT LED MA TRẬN SCANMATRIXSTA
MAIN:
C2
NẠP THỜI GIAN HIỂN THỊ (R0) = 50 - SỐ LẦN QUÉT
MP1:
ð
S
GIÃM SỐ LẦN QUÉT - HIỂN THỊ
SỐ LẦN QUÉT ≠ 0 (CHƯA QUÉT XONG)
GỌI CTC TẮT HIỂN THỊ LED
TATLED
SCANMATRIXSTA (XEM CTC NÀY TẠI VÍ DỤ C1.2)
TATLED CHƯƠNG TRÌNH TẠO TRỄ 1S
CẤT TẠM GIÁ TRỊ CỦA R0 VÀO
STACK NẠP GIÁ TRỊ VÒNG LẶP
(R0) = 100
DEL:
GIÃM SỐ LẦN LẶP
SỐ LẦN LẶP ≠ 0 (CHƯA LẶP XONG)
ð
S LẤY LẠI GIÁ TRỊ CHO R0 TỪ
STACK
RET
KHỞI ðỘNG TIMER (TIMER 0, MODE 1) (TMOD) = 01H
NẠP GIÁ TRỊ CHO TIMER (TDELAY= 10000.TMÁY) (TH0/TL0) = -10000 = D8F0H
CHƯA ðỦ THỜI GIAN (TF0) = 0
ð
S
CHO TIMER HOẠT ðỘNG
(TR0) = 1
DỪNG TIMER (TR0) = 0 XÓA CỜ TRÀN TIMER (TF0) = 0 TATLED:
;***************************************************
;CHUONG TRINH HIEN THI KY TU A CHOP TAT TREN MA TRAN LED
;***************************************************
;PHUONG PHAP: QUET COT (ACT = 1) - HIEN THI HANG (ACT = 0)
;***************************************************
Trang 10MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
MOV R0 ,#50 ;BIEN LAP - THOI GIAN CUA 1 TRANG THAI MAN HINH LED
MP1:
LCALL SCANMATRIXSTA ;HIEN THI DU LIEU
DJNZ R0 ,MP1
LCALL TATLED ;TAT MA TRAN LED
LJMP MAIN
;***************************************************
;CTC QUET MA TRAN 8 X 8
;***************************************************
;***************************************************
SCANMATRIXSTA:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
PUSH 01H
MOV R0 ,#00H ;VI TRI CUA DU LIEU COT DAU TIEN TRONG VUNG MA
MOV R1 ,#01H ;MA QUET COT DAU TIEN
SCAN:
MOV A , R0
MOVC A , @A+DPTR ;LAY MA HIEN THI TRONG VUNG MA THEO VI TRI
LCALL DELAYLED
MOV P1 ,#00H ;CHONG LEM
RL A
MOV R1 , A
CJNE R0 ,#08H,SCAN ;KIEM TRA QUET CAC COT (MA TRAN GOM 8 COT)
POP 00H
POP ACC
RET
;***************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1 ,#5
DEL:
MOV R0 ,#250
DJNZ R0 ,$
DJNZ R1 ,DEL
POP 01H
POP 00H
RET
;***************************************************
TATLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 1S
PUSH 00H
MOV R0 ,#100
MOV TMOD ,#01H
TAT:
MOV TH0 ,#0D8H
MOV TL0 ,#0F0H
SETB TR0
JNB TF0 ,$
CLR TR0
CLR TF0
DJNZ R0 ,TAT
POP 00H
RET
;***************************************************
CODEDISP:
DB 07H,0DBH,0DDH,0DBH,07H,0FFH,0FFH,0FFH ;CHU A
END
Trang 111.4 Thực hiện lần lượt các bước từ 1.3 ñến 1.8 tương tự như bài trên
2 Bài tập:
• Bài 1: Hãy viết chương trình ñiều khiển hiển thị chữ W màu ñỏ sáng tắt trên LED ma trận (COL-RED ñược nối với Port1, ROW ñược nối với Port2)
• Bài 2: Hãy viết chương trình ñiều khiển hiển thị số 0 màu xanh sáng tắt trên LED ma trận (COL-GRE ñược nối với Port1, ROW ñược nối với Port2)
• Bài 3: Hãy viết chương trình ñiều khiển hiển thị chữ H màu vàng sáng tắt trên sáng tắt LED ma trận (COL-RED ñược nối với Port 1, COL-GRE ñược nối với Port2, ROW ñược nối với Port3)
• Bài 4: Hãy viết chương trình ñiều khiển hiển thị liên tục chữ A sáng màu ñỏ, sau ñó là màu xanh và cuối cùng là màu vàng trên LED ma trận (COL-RED ñược nối với Port 1, COL-GRE ñược nối với Port2, ROW ñược nối với Port3)
• Bài 5: Hãy lập bảng mã cho tất cả các ký tự chữ, ký tự số và ký tự ñặc biệt có trên bàn phím máy tính Và thử ñưa các mã ñã lập này vào chương trình ñiều khiển hiển thị ở trên ñể xem hình ảnh chúng như thế nào?
• Bài 6: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình
Trang 121 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1
1.2 Sơ ñồ nguyên lý của hệ thống:
• Sơ ñồ nguyên lý của hệ thống tương tự như Bài 1
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển
;***************************************************
;CHUONG TRINH HIEN THI CHUOI KY TU A,B,C,a,b,c LAN LUOT TREN MA TRAN LED
;***************************************************
;PHUONG PHAP: QUET COT (ACT = 1) - HIEN THI HANG (ACT = 0)
;***************************************************
MAIN:
MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
MP1:
MOV R0 ,#50 ;BIEN LAP - THOI GIAN CUA 1 TRANG THAI MAN HINH LED
MP2:
LCALL SCANMATRIXSTA ;HIEN THI DU LIEU
DJNZ R0 ,MP2
MOV DPL , A
CJNE A ,#LOW(CODEDISP+48),MP1 ;KIEM TRA HIEN THI XONG TAT CA CAC CHUOI
LJMP MAIN
;***************************************************
;CTC QUET MA TRAN 8 X 8
;***************************************************
;***************************************************
SCANMATRIXSTA:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
PUSH 01H
MOV R0 ,#00H ;VI TRI CUA DU LIEU COT DAU TIEN TRONG VUNG MA
MOV R1 ,#01H ;MA QUET COT DAU TIEN
SCAN:
MOV A , R0
Trang 13MOVC A , @A+DPTR ;LAY MA HIEN THI TRONG VUNG MA THEO VI TRI
LCALL DELAYLED
MOV P1 ,#00H ;CHONG LEM
RL A
MOV R1 , A
CJNE R0 ,#08H,SCAN ;KIEM TRA QUET XONG CAC COT (MA TRAN GOM 8 COT)
POP 00H
POP ACC
RET
;***************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1 ,#5
DEL:
MOV R0 ,#250
DJNZ R0 ,$
DJNZ R1 ,DEL
POP 01H
POP 00H
RET
;***************************************************
CODEDISP:
DB 07H,0DBH,0DDH,0DBH,07H,0FFH,0FFH,0FFH ;CHU A
DB 01H,6DH,6DH,6DH,93H,0FFH,0FFH,0FFH ;CHU B
DB 83H,7DH,7DH,7DH,0BBH,0FFH,0FFH,0FFH ;CHU C
DB 0BFH,57H,57H,57H,0FH,0FFH,0FFH,0FFH ;CHU a
DB 01H,6FH,77H,77H,8FH,0FFH,0FFH,0FFH ;CHU b
DB 8FH,77H,77H,77H,0BFH,0FFH,0FFH,0FFH ;CHU c
END
1.4 Thực hiện lần lượt các bước từ 1.3 ñến 1.8 tương tự như bài trên
2 Bài tập:
• Bài 1: Hãy viết chương trình ñiều khiển hiển thị số ñếm BCD từ 0 lên 9 màu ñỏ trên LED ma trận (COL-RED ñược nối với Port1, ROW ñược nối với Port2)
• Bài 2: Hãy viết chương trình ñiều khiển hiển thị số ñếm BCD từ 9 xuống 0 màu xanh trên LED ma trận (COL-GRE ñược nối với Port1, ROW ñược nối với Port2)
• Bài 3: Hãy viết chương trình ñiều khiển hiển thị các ký tự từ A ñến Z màu ñỏ trên LED ma trận (COL-RED ñược nối với Port1, ROW ñược nối với Port2)
• Bài 4: Hãy viết chương trình ñiều khiển hiển thị các ký tự từ Z ñến A màu xanh trên LED ma trận (COL-GRE ñược nối với Port1, ROW ñược nối với Port2)
• Bài 5: Hãy viết chương trình ñiều khiển hiển thị số ñếm BCD từ 0 ñến 9 trên LED ma trận (COL-GRE ñược nối với Port1, ROW ñược nối với Port2) Với ñiều kiện màu của các số sẽ thay ñổi liên tục ðỎ – XANH – VÀNG mỗi khi con số trên LED ma trận thay ñổi
• Bài 6: Hãy viết chương trình ñiều khiển hiển thị các ký tự từ A ñến Z trên LED ma trận (COL-GRE ñược nối với Port1, ROW ñược nối với Port2) Với ñiều kiện màu của các ký tự sẽ thay ñổi liên tục ðỎ – XANH – VÀNG sau mỗi một giây ñồng hồ
• Bài 7: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình