III. Các chương trình mẫu:
CHƯƠNG TRÌNH ĐIỀU KHIỂN LED7 ĐOẠN SÁNG
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chuong trinh dieu khien led 7 doan sang so 9 o 1 led ben phai
;ket noi port 0 den pinhd dieu khien cac doan a,b,c,d,e,f,g,dp ;ket noi port 2 dem pinhd dieu khien quet hang
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx org 0000h
mov p2,#01111111b ;cho phep D1 sang mov p0,#10010000b ;ma cua so 9 sjmp $ ;ngung lai NGÀY : SỐ TIẾT : LỚP : MSSV : THỰC HÀNH VI ĐIỀU KHIỂN BÀI SỐ : 3-1
CHƯƠNG TRÌNH ĐIỀU KHIỂN LED 7 ĐOẠN SÁNG
Begin Gởi mã hiển thị ra led 1 Gởi mã quét chọn led 1 sáng
End Gởi mã hiển thị ra led 2 Gởi mã quét chọn led 2 sáng
Gởi mã hiển thị ra led 8 Gởi mã quét chọn led 8 sáng
end
Chương trình trên chỉ có tác dụng thử cho một led sáng. Để có thể sáng 8 led từ số 0 đến số 7 ta hãy viết chương trình sau:
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ; chuong trinh thu 8 led 7 doan sang cac so 0 den so 7 tren 8 led
;ket noi port 0 den pinhd dieu khien cac doan a,b,c,d,e,f,g,dp ;ket noi port 2 dem pinhd dieu khien quet hang
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx org 0000h
b11: mov p2,#01111111b ; cho phep D1 sang mov p0,#11000000b ; ma cua so 0 lcall delay
mov p2,#10111111b ; cho phep D2 sang mov p0,#11111001b ; ma cua so 1 lcall delay
mov p2,#11011111b ; cho phep D3 sang mov p0,#10100100b ; ma cua so 2 lcall delay
mov p2,#11101111b ; cho phep D4 sang mov p0,#10110000b ; ma cua so 3 lcall delay
mov p2,#11110111b ; cho phep D5 sang mov p0,#10011001b ; ma cua so 4 lcall delay
mov p2,#11111011b ; cho phep D6 sang mov p0,#10010010b ; ma cua so 5 lcall delay
mov p2,#11111101b ; cho phep D7 sang mov p0,#10000010b ; ma cua so 6 lcall delay
mov p2,#11111110b ; cho phep D8 sang mov p0,#11111000b ; ma cua so 7 lcall delay sjmp b11 delay: mov r7,#01h del2 : mov r6,#0ffh djnz r6,$ djnz r7,del2 ret end
4. Thực hiện các bước giống như bài chuẩn.
Chú ý: Nếu khi chạy mà kết quả hiển thị không đúng thì hãy xem lại chương trình, nếu chương trình
hoàn toàn đúng thì hãy xem kết nối 2 port điều khiển với led có đúng [ trên bo mạch có ghi tên và thứ tự các pinhhd.
Ở ví dụ 2, để sáng cùng 1 lúc 8 led ta sử dụng phương pháp quét led tức là tại một thời điểm chỉ có 1 led sáng và khi giảm thời gian delay vừa với thời gian lưu ảnh của mắt. Lúc này, chúng ta sẽ thấy 8 led sáng cùng một lúc.
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chuong trinh hien thi 8 so tu 0 den 7 tren 8 led theo cach viet so 2
;ket noi port 0 den pinhd dieu khien cac doan a,b,c,d,e,f,g,dp ;ket noi port 2 dem pinhd dieu khien quet hang
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx quet equ p2
led7 equ p0
org 0000h ;bat dau chuong trinh b213: mov dptr,#datahthi ;nap dia chi vung ma vao dptr
mov r4,#08h ;bien dem 8 lan goi
mov r3,#07fh ;ma quet 01111111h ; b212: clr a
movc a,@a+dptr ;lay ma 7 doan mov led7,a
mov quet,r3 lcall delay
mov quet,#0ffh ;tat het de chong lem mov a,r3
rr a mov r3,a inc dptr
djnz r4,b212
sjmp b213 ;quay lai lam lai tu dau
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chuong trinh con delay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx delay: mov r7,#01h del2 : mov r6,#0ffh djnz r6,$ djnz r7,del2 ret ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;vung du lieu ma cac so tu 0 den 7
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx datahthi: db 0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h
end
IV. Bài tập:
1. Ở ví dụ 1, muốn sáng số 2 ở led D3 thì phải thay đổi gì trong chương trình? 2. Trong trường hợp nào thì nhiều led sáng cùng một lúc và cùng một dữ liệu? 3. Ở chương trình mẫu thứ 2, hãy cho biết led sáng như thế nào:
a. Từng led sáng các led còn lại tắt. b. Tất cả các led sáng .
4. Hãy thử trên máy, khi thay đổi thời gian delay:
a. Muốn thời gian delay lớn nhất thì thông số đó là bao nhiêu? b. Muốn thời gian delay nhỏ nhất thì thông số đó là bao nhiêu?
c. Trong từng trường hợp hãy cho biết cường độ sáng của led có thay đổi hay không và cho biết trong trường hợp nào thì led sáng rõ?
d. Hãy tính thông số cho chương trình delay là bao nhiêu để 8 led sáng đều và rõ nhất.
I. Mục đích yêu cầu:
Làm quen với cách viết chương trình đếm và sau khi thực hành xong sinh viên có thể viết các chương trình đếm với số đếm tùy ý.