
不过如果你执意把共阳极的数码管改成共阴极的,那么就请进行以下工作:
1.共阳极的数码管改成共阴极的数码管;
2.共阳极的驱动器改为共阴极的驱动器;
3.数码管公共端接电源改为接地。
动作及投资都大了!
你的仿真图中的两位数码的阴极同时接地了,就会同时显示11,22,33,44........
必须要采用两位动态扫描的方式来显示才行的。
所以,你的仿真图和程序都要修改。
仿真图如下:
程序如下:
DAT0 EQU 30H30H地址命名为DAT0
ORG 0000H
LJMP MAIN 主程序入口
ORG 0003H
LJMP EXINT0 中断0子程序
MAIN:
MOV SP,#6FH设定堆栈地址
SETB IT0T0采用负缘触发信号
SETB EX0开中断0
SETB EA开中断总开关
MOV DAT0,#0DAT0地址赋初始值0
LOOP:
CALL SEG7
SJMP LOOP循环等待
EXINT0:
MOV A,DAT0
ADD A,#1按十进制数加1
DA A
MOV DAT0,A
RETI
SEG7: 显示子程序
MOV DPTR,#DISPLAYTAB
MOV A,DAT0
ANL A,#0F0H取十位数
SWAP A
MOVC A,@A+DPTR
MOV P0,#0FEH
MOV P2,A 显示十位
ACALL DELAY 显示一位要延时
MOV A,DAT0
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,#0FDH
MOV P2,A 显示个位
ACALL DELAY 显示一位要延时
RET
DELAY: 延时子程序
MOV R7,#50
DER7:
MOV R6,#100
DJNZ R6,$
DJNZ R7,DER7
RET
DISPLAYTAB:
DB 3FH0 共阴
DB 06H 1
DB 5BH 2
DB 4FH 3
DB 66H 4
DB 6DH 5
DB 7DH 6
DB 07H 7
DB 7FH 8
DB 6FH 9
END
要么将table[] 中的所有代码按位取反,如0x3f改为0xc0或在在显示程序中将其取反,如原来的P0=table[a1];
改成P0=~table[a1];
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)