现在有很多开发板上都用74HC573锁存器来驱动数码管,在动态扫描数码管时,大部分开发板的例程在消影上处理的很不好。下面我来给出一种消影的方法。
我们先看下两个图片
第一张是普通采用的驱动方式(也是大部分开发板采用的方式)
第二张是修改过函数的
可以从图中看出,第二张的显示效果非常好
常规的驱动方式是 送段--消影--送位--延时-----然后下一位显示,这样显示没有解决段拖影的问题
现在改为 送段--消影--送位--延时--打开位选将位的值设为0XFF----下一个数码管。这样既解决了位拖影和段拖影的问题
常规方式代码
DUAN=1; //打开段锁存
DPY_DATA=DPY_CODE[1]; //送段数据
DUAN=0; //关闭段锁存
DPY_DATA=0XFF; //关闭数据,防止位拖影
WEI=1; //打开位锁存
DPY_DATA=0XFE; //送位数据
WEI=0; //关闭位锁存
Delay1ms(); //延时1毫秒
修改后的代码
DUAN=1; //打开段锁存
DPY_DATA=DPY_CODE[1]; //送段数据
DUAN=0; //关闭段锁存
DPY_DATA=0XFF; //关闭数据,防止位拖影
WEI=1; //打开位锁存
DPY_DATA=0XFE; //送位数据
WEI=0; //关闭位锁存
Delay1ms(); //延时1毫秒
WEI=1; //打开位锁存
DPY_DATA=0XFF; //清除段数据,消除段拖影
WEI=0; //关闭位锁存