单片机编程 汇编语言 就是简单的一个定时一个计数,为什么数码管一直显示不正常?求大神指教

GEWEI EQU R4 ;单片机初始化 SHIWEI EQU R5 ;个位显示缓冲区 BAIWEI EQU R6 ;十位显示缓冲区 TIME EQU R7 ;定时单位累加值 MIAO EQU R1 ;秒数累加值 FEN BIT 20H.0 ;60 秒标志值 KEY1 BIT P3.6 KEY2 BIT P1.6DENG BIT P1.7 ;指示状态 XINHAO BIT P1.3 ;信号 CLR FEN ;定时标志初始化全置零 MOV TIME, #00H MOV MIAO, #00H ORG 0H JMP MAIN ORG 000BH LJMP BRT0 ORG 001BH LJMP BRT1 MAIN: MOV TMOD, #10H ;T1 工作方式为 1,T0 工作方式为 0 MOV TH1, #3CH ;T1 100ms 中断 MOV TH0, #10H ;T0 3ms 中断 MOV TL1, #0B0H MOV TL0, #60H MOV IE, #10001010B ;开放中断 T0 和 T1 MOV IP, #08H ;T1 中断优先 MOV SP, #70H SETB TR0 XUEHAO: JNB KEY2, QINGLING ;KEY2 置于右端显示学号 MOV GEWEI, #1 ;显示学号 MOV SHIWEI, #0 MOV BAIWEI, #0QINGLING: ;清零 JB KEY2, XUEHAO ;KEY2 置于左端清零 CLR DENG MOV GEWEI, #0 MOV SHIWEI, #0 MOV BAIWEI, #0 LOOP2: JB KEY1, XUEHAO ;判断是否开始测试,否者继续等待始指示灯灭 LCALL DELAY2 ;开关延时判断 JB KEY1, LOOP2 SETB DENG CLR FEN SETB TR1 CESHI: JNB XINHAO, $ LCALL DELAY2 ;信号延时判断 LCALL DELAY2 ;信号延时判断

第1个回答  2016-12-20

你用的是共阳的数码管,你用三极管做位控,对于仿真电路,这样控制电路,在显示时容易出现这种乱码的现象。

就是仿真吗,也不是实物,不用考虑驱动的问题,也不用串联限流电阻,都简化。所以,不必用三极管,直接控制数码的公共端就行。见下图这样接。这个电路,共阳,共阴数码管都适用。

追问

这种公阴译码要怎么写呢?

其他的程序没问题也不用改吧?

本回答被提问者和网友采纳
第2个回答  2016-12-20

参考一下这个仿真实例,仿真试试。

相似回答