1 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 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
Trang 1giải đa hợp bên ngoài))
Bài 3: Chương trình điều khiển hiển thị số 12 trên hai LED (LED7, LED6 được nối với Port0; tín hiệu SEL7 và
SEL6 lần lượt được nối với P1.0 và P1.1)
POP 01H
POP 00H
RET
;***************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (1 SO BCD NEN)
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD2TO7SEG
;INPUT: R7 = SO BCD NEN (CHUC - DON VI)
;OUTPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI)
;***************************************************
BCD2TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
MOV A,R7 ;LAY SO BCD CAN GIAI MA
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 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:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)
Trang 2giải đa hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL7 và SEL6 lần lượt được nối với P1.0 và P1.1)
1 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 Vẽ lưu đồ giải thuật và viết chương trình điều khiển
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 00 -> 99 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
MAIN:
MP1:
LCALL BCD2TO7SEG ;GIAI MA BCD SANG MA 7 DOAN
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
MOV A,R7 ;TANG GIA TRI
ADD A,#1
MOV R7,A
CJNE A,#00,MP1 ;KIEM TRA GIA TRI HIEN THI > 99
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (2 LED 7 DOAN)
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM
;***************************************************
;NAME: DISP7SEGMUL2
;INPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI)
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB)
; P1 = CHON LED - LEFT (MSD) -> RIGHT (LSD)
;***************************************************
DISP7SEGMUL2:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV R0,#61H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#05FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
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
;****************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
Trang 3giải đa hợp bên ngoài))
Bài 4: Chương trình điều khiển hiển thị đếm số BCD từ 00 lên 99 trên hai LED (LED7, LED6 được nối với
Port0; tín hiệu SEL7 và SEL6 lần lượt được nối với P1.0 và P1.1)
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL2 ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;****************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (1 SO BCD NEN)
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD2TO7SEG
;INPUT: R7 = SO BCD NEN (CHUC - DON VI)
;OUTPUT: 61H,60H = MA 7 DOAN (CHUC - DON VI)
;***************************************************
BCD2TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
MOV A,R7 ;LAY SO BCD CAN GIAI MA
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 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ố 34 trên hai LED
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 59 trên hai LED
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 59 xuống 00 trên hai LED
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 00 lên 23 trên hai LED
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00 lên FF trên hai LED
• Bài 6: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ FF xuống 00 trên hai LED
• Bài 7: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 00 lên AB trên hai LED
• Bài 8: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại sao? Tiến hành mô phỏng thử xem sao?
• Bài 9: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình
Trang 4giải đa hợp bên ngoài))
Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED (LED7, LED6, LED5 và LED4 được nối với
Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2 và P1.3)
1 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 Vẽ lưu đồ giải thuật và viết chương trình điều khiển
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 1234 TREN LED 7 DOAN
;***************************************************
;KET NOI: 4 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
MAIN:
MOV P1,#0FEH ;CHO PHEP LED 7 SANG
MOV P0,#99H ;HIEN THI SO 4
LCALL DELAYLED
MOV P1,#0FDH ;CHO PHEP LED 6 SANG
MOV P0,#0B0H ;HIEN THI SO 3
LCALL DELAYLED
MOV P1,#0FBH ;CHO PHEP LED 5 SANG
MOV P0,#0A4H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#0F7H ;CHO PHEP LED 4 SANG
MOV P0,#0F9H ;HIEN THI SO 1
LCALL DELAYLED
;****************************************************
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
1.3 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:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 6)
Trang 5giải đa hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2
và P1.3)
1 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 Vẽ lưu đồ giải thuật và viết chương trình điều khiển
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0000 -> 9999 TREN LED 7 DOAN
;***************************************************
;KET NOI: 4 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, 7SEG IN (DP -> A), MULTI INT, CA, ACTIVE = 0
;***************************************************
MAIN:
MOV R7,#00H ;SO HIEN THI BAN DAU
MOV R6,#00H
MP1:
LCALL BCD4TO7SEG ;GIAI MA BCD SANG MA 7 DOAN
LCALL DELAY_SCAN ;DELAY VA QUET HIEN THI
MOV A,R6 ;TANG GIA TRI (CHUC - DON VI)
ADD A,#1
MOV R6,A
CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (CHUC - DON VI)
MOV A,R7 ;TANG GIA TRI (NGAN - TRAM)
ADD A,#1
MOV R7,A
CJNE A,#0,MP1 ;KIEM TRA GIA TRI HIEN THI > 99 (NGAN - TRAM)
;***************************************************
;CTC QUET HIEN THI LED 7 DOAN (4 LED 7 DOAN)
;***************************************************
;LED: ANODE CHUNG, KICH HOAT MUC 0, 7 DOAN: DP (MSB) -> A (LSB)
;DU LIEU HIEN THI CHUA TRONG O NHO CUA RAM
;***************************************************
;NAME: DISP7SEGMUL4
;INPUT: 63H,62H = MA 7 DOAN (NGAN - TRAM)
; 61H,60H = MA 7 DOAN (CHUC - DON VI)
;OUTPUT: P0 = 7 DOAN LED - DP (MSB) -> A (LSB)
; P2 = CHON LED - LEFT (MSD) -> RIGHT (LSD)
;***************************************************
DISP7SEGMUL4:
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV R0,#63H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LAM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;****************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL: MOV R0,#250
Trang 6giải đa hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2
và P1.3)
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
;****************************************************
DELAY_SCAN: ;CHUONG TRINH CON TAO THOI GIAN TRE 250MS CO GOI CTC QUET HIEN THI
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
LOOP2:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
SCAN: ;LIEN TUC GOI CTC QUET HIEN THI TRONG LUC TIMER DANG CHAY
LCALL DISP7SEGMUL4 ;GOI CTC QUET HIEN THI
JNB TF0,SCAN
CLR TR0
CLR TF0
DJNZ R0,LOOP2
POP 00H
RET
;***************************************************
;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (2 SO BCD NEN)
;***************************************************
;LED: ANODE CHUNG, 7 DOAN: DP (MSB) -> A (LSB)
;GIA TRI GIAI MA: 0 -> 9
;***************************************************
;NAME: BCD4TO7SEG
;INPUT: R7 = SO BCD NEN (NGAN - TRAM)
; R6 = SO BCD NEN (CHUC - DON VI)
;OUTPUT: 63H,62H = MA 7 DOAN (NGAN - TRAM)
; 61H,60H = MA 7 DOAN (CHUC - DON VI)
;***************************************************
BCD4TO7SEG:
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
MOV A,R6 ;LAY SO BCD CAN GIAI MA
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO
MOV A,R6 ;LAY SO BCD CAN GIAI MA
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
Trang 7giải đa hợp bên ngoài))
Bài 6: Chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED7, LED6, LED5 và
LED4 được nối với Port0; tín hiệu SEL7, SEL6, SEL5 và SEL4 lần lượt được nối với P1.0, P1.1, P1.2
và P1.3)
POP DPH
RET
;***************************************************
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
1.3 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ố 5678 trên bốn LED (LED4, LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với P1.0, P1.1, P1.2 và P1.3)
• Bài 2: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 9999 trên bốn LED (LED4, LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với P1.0, P1.1, P1.2 và P1.3)
• Bài 3: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 9999 xuống 0000 trên bốn LED (LED4, LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với P1.0, P1.1, P1.2 và P1.3)
• Bài 4: Hãy viết chương trình điều khiển hiển thị đếm số BCD từ 0000 lên 1234 trên bốn LED (LED4, LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với P1.0, P1.1, P1.2 và P1.3)
• Bài 5: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0000 lên FFFF trên bốn LED (LED4, LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với P1.0, P1.1, P1.2 và P1.3)
• Bài 6: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ FFFF xuống 0000 trên bốn LED (LED4, LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với P1.0, P1.1, P1.2 và P1.3)
• Bài 7: Hãy viết chương trình điều khiển hiển thị đếm số HEX từ 0000 lên ABCD trên bốn LED (LED4, LED5, LED6 và LED7 được nối với Port0; tín hiệu SEL4, SEL5, SEL6 và SEL7 lần lượt được nối với P1.0, P1.1, P1.2 và P1.3)
• Bài 8: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay đổi như thế nào? Tại sao? Tiến hành mô phỏng thử xem sao?
• Bài 9: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình
Trang 8giải đa hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7)
1 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 J63 (PORT0 / DATA) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối giải mã
• Dùng bốn dây bus 8 nối J5 (7SEG7 IN), J6 (7SEG6 IN), J7 (7SEG5 IN) và J8 (7SEG4 IN) ở khối LED 7 đoạn với J4 (7SEG IN MUL) ở khối LED 7 đoạn (ta nối chung các bus này lại với nhau thông qua khối
mở rộng)
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J2 (SEL LED IN) ở khối LED 7 đoạn
• Dùng dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn
1.2 Vẽ lưu đồ giải thuật và viết chương trình điều khiển
;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 12345678 TREN LED 7 DOAN
;***************************************************
;KET NOI: 8 LED -> PORT0
; SEL LED -> PORT1
;CHE DO: MULTI, BCD IN, MULTI INT, CA, ACTIVE = 0
;***************************************************
MAIN:
MOV P1,#0FEH ;CHO PHEP LED 7 SANG
MOV P0,#80H ;HIEN THI SO 8
LCALL DELAYLED
MOV P1,#0FDH ;CHO PHEP LED 6 SANG
MOV P0,#0F8H ;HIEN THI SO 7
LCALL DELAYLED
MOV P1,#0FBH ;CHO PHEP LED 5 SANG
MOV P0,#82H ;HIEN THI SO 6
LCALL DELAYLED
MOV P1,#0F7H ;CHO PHEP LED 4 SANG
MOV P0,#92H ;HIEN THI SO 5
LCALL DELAYLED
MOV P1,#0EFH ;CHO PHEP LED 3 SANG
MOV P0,#99H ;HIEN THI SO 4
LCALL DELAYLED
MOV P1,#0DFH ;CHO PHEP LED 2 SANG
MOV P0,#0B0H ;HIEN THI SO 3
LCALL DELAYLED
MOV P1,#0BFH ;CHO PHEP LED 1 SANG
MOV P0,#0A4H ;HIEN THI SO 2
LCALL DELAYLED
MOV P1,#07FH ;CHO PHEP LED 0 SANG
MOV P0,#0F9H ;HIEN THI SO 1
LCALL DELAYLED
;****************************************************
Trang 9giải đa hợp bên ngoài))
Bài 7: Chương trình điều khiển hiển thị số 12345678 trên tám LED (LED0 đến LED7 được nối với Port0; tín
hiệu SEL0 đến SEL7 lần lượt được nối với P1.0 đến P1.7)
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
1.3 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:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 8)