单片机数码管消隐问题,求大神帮忙解决一下, P0=0xff;
WE=1;
P0=0XFE;
WE=0;
?为什么不加,不会造成乱码吗。
DU=1;
P0=0X0F;
DU=0;
delay(5)
当数码管动态显示时,需要加入延迟函数还要清除断码,否则会因为循环时打开位选寄存器,P0值赋给位选,导致其他数码管亮。但为什么不在位选和段选中间不加延迟函数?清除断码的原理是什么,
,你好,你的提问非常的读不同,我理解的意思是两端代码加了延迟和不加延迟数码管所显示我的位置不同。
这个原因是没有上一段代码中没有清除位选,直接带入下一个循环导致,以共阴数码管,段/位共用P0为例,只传消隐码不锁存,起不到消隐作用。
//显示第一位
P0=0x00;//消隐段码
DU=1; //送段码到锁存器
DU=0; //锁存
//在段码消隐期间更改位码
P0=0XFE;//位码
WE=1; //送位码到锁存器
WE=0; //锁存
//此时显示位已改变
P0=0x06;//要显示的段码,例’1′
DU=1; //送段码到锁存器
DU=0; //锁存
delay(5)//延时(保持一小段时间显示内容)
//显示第二位
P0=0x00;//消隐段码
DU=1; //送段码到锁存器
DU=0; //锁存
//在段码消隐期间更改位码
P0=0XFD;//位码
WE=1; //送位码到锁存器
WE=0; //锁存
//此时显示位已改变
P0=0x5b;//要显示的段码,例’2′
DU=1; //送段码到锁存器
DU=0; //锁存
delay(5)//延时(保持一小段时间显示内容)
//显示第N位,以此类推
……, WE=1;
P0=0XFE;
WE=0;
?为什么不加,不会造成乱码吗。
//上面是送位选,下面是送段选,不会出现乱码(但会有轻微串光现象),
这个位加延时后数码管会出现串光(也就是大家说的要消隐问题)//
DU=1;
P0=0X0F;
DU=0;
delay(5)
你可以试程序改成这样,就完全不会出现串光问题。
P0=0xff; //消隐(解决串光)
DU=1;
DU=0;
P0=0XFE; //送位选
WE=1;
WE=0;
P0=0X0F; //送段选
DU=1;
DU=0;
delay(5) //延时