13.动态数码显示技术四
——利用中断实现数码管动态显示
1. 实验任务<?XML:NAMESPACE PREFIX = O />
数据端与P0口相连(参见原理图),控制端分别与P2.4到P2.7相联接,将需要显示的数字(字母)所对应的8位编码送到P0口,然后通过P2.4到P2.7口开关数码管的控制线,就可以实现对应位的显示.
本程序实现四位数码管上循环动态扫描显示 0,1,2,3,显示的内容可以通过赋给变量,LED1,LED2,LED3,LED4不同的值来实现,不防试试!。
2. 电路原理图
3.
汇编源程序
;=================================================
; 定时中断动态四数码管显示
;=================================================
LED1 EQU 08H
LED2 EQU 09H
LED3 EQU 0AH
LED4 EQU 0BH
LedT0 EQU 0CH
ORG 0000H
LJMP START ;转入主程序
ORG 000BH ;定时器0中断入口
INT_TO:
PUSH ACC
PUSH PSW
CLR TF0 ;清定时0中断标志
MOV TH0,#0F6H ;2MS
MOV TL0,#03DH
MOV A,#11110000B ;关数码管
ORL P2,A
MOV A,LedT0
CJNE A,#0,INT_T0_1
MOV A,LED1
MOVC A,@A+DPTR
MOV P3,A
CLR P2.7
MOV LedT0,#1
LJMP INT_T0_END
INT_T0_1:
MOV A,LedT0
CJNE A,#1,INT_T0_2
MOV A,LED2
MOVC A,@A+DPTR
MOV P3,A
CLR P2.6
MOV LedT0,#2
LJMP INT_T0_END
INT_T0_2:
MOV A,LedT0
CJNE A,#2,INT_T0_3
MOV A,LED3
MOVC A,@A+DPTR
MOV P3,A
CLR P2.5
MOV LedT0,#3
LJMP INT_T0_END
INT_T0_3:
MOV A,LED4
MOVC A,@A+DPTR
MOV P3,A
CLR P2.4
MOV LedT0,#0
LJMP INT_T0_END
INT_T0_END:
POP PSW
POP ACC
RETI
START:
MOV SP,#60H
MOV TMOD,#01H ;设定T0为十六位定时模式。
MOV TH0,#0F6H ;2MS
MOV TL0,#03DH
SETB TR0 ;开定时器0
SETB ET0 ;开定时0中断
CLR TF0 ;清定时0中断标志
SETB EA ;开总中断
MOV LedT0,#00H
MOV DPTR,#TABLE
MAIN:
MOV LED1,#0
MOV LED2,#1
MOV LED3,#2
MOV LED4,#3
SCAN:
LJMP SCAN
TABLE:
DB 10111111B ;0
DB 10000110B ;1
DB 11011011B ;2
DB 11001111B ;3
DB 11100110B ;4
DB 11101101B ;5
DB 11111101B ;6
DB 10000111B ;7
DB 11111111B ;8
DB 11101111B ;9
DB 11110111B ;A
DB 11111111B ;b
DB 10111001B ;C
DB 10111111B ;d
DB 11111001B ;E
DB 11110001B ;F
DB 11000000B ;-
DB 10000000B ;
END
4.仿真文件
用户33759 2007-6-5 12:57
这个博客我喜欢,,,,,