本帖最后由 mr_liu 于 2017-9-26 00:28 编辑
bg1.png
四、数码管的动态显示
1.介绍
实现数码管的动态显示,6位数码管分别显示数字1-6
2.原理
数码管的动态显示又叫数码管的动态扫描显示,原理是轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人感觉好像各位数码管同时都在显示,而实际是多位数码管一位一位轮流显示的,只是速度快的人眼无法分辨。
3.软件部分
在上一篇数码管静态显示工程的基础上加以修改,然后逐步验证
3.1 首先让前两位数码管分别显示1和2
通过原理知道了当扫描速度足够快时可以实现,但是这个频率是多少呢?这个问题我在问答区问过,得到的答案是20Hz,也就是50ms,然后实际测试下。部分代码如下
说明下,用的延时函数是STC烧写软件的延时计算器生成的,软件延时的精确度可能不够准确
测试代码如下:
while(1)
{
dula = 1;
P0 = 0x06;
dula = 0;
wela = 1;
P0 = 0xfe;
wela = 0;
Delay50ms();
dula = 1;
P0 = 0x5b;
dula = 0;
wela = 1;
P0= 0xfd;
wela =0;
Delay50ms();
}
下载验证:可以看到是可以看出再闪的,然后逐步把时间缩短,在
10ms时还是会有晃动,直至缩短至
1ms,才可以看到稳定的显示1和2
3.2 “消影”处理
但是这时会发现后面4个未点亮的数码管会有亮的阴影出现,是由于送完段选数据后如果立即打开位选这时P0口的段选数据会立即通过位选锁存器直接加在数码管上,所以处会先显示混乱的现象。这里要做“消影”处理,也就是每次开位选前给P0口送0xff。
重新下载验证,可以看到此时没有了刚才的现象
3.3 显示1-6
同理可以实现后4位数码管的显示
最后效果为:
本帖最后由 mr_liu 于 2017-9-26 00:28 编辑
bg1.png
四、数码管的动态显示
1.介绍
实现数码管的动态显示,6位数码管分别显示数字1-6
2.原理
数码管的动态显示又叫数码管的动态扫描显示,原理是轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人感觉好像各位数码管同时都在显示,而实际是多位数码管一位一位轮流显示的,只是速度快的人眼无法分辨。
3.软件部分
在上一篇数码管静态显示工程的基础上加以修改,然后逐步验证
3.1 首先让前两位数码管分别显示1和2
通过原理知道了当扫描速度足够快时可以实现,但是这个频率是多少呢?这个问题我在问答区问过,得到的答案是20Hz,也就是50ms,然后实际测试下。部分代码如下
说明下,用的延时函数是STC烧写软件的延时计算器生成的,软件延时的精确度可能不够准确
测试代码如下:
while(1)
{
dula = 1;
P0 = 0x06;
dula = 0;
wela = 1;
P0 = 0xfe;
wela = 0;
Delay50ms();
dula = 1;
P0 = 0x5b;
dula = 0;
wela = 1;
P0= 0xfd;
wela =0;
Delay50ms();
}
下载验证:可以看到是可以看出再闪的,然后逐步把时间缩短,在
10ms时还是会有晃动,直至缩短至
1ms,才可以看到稳定的显示1和2
3.2 “消影”处理
但是这时会发现后面4个未点亮的数码管会有亮的阴影出现,是由于送完段选数据后如果立即打开位选这时P0口的段选数据会立即通过位选锁存器直接加在数码管上,所以处会先显示混乱的现象。这里要做“消影”处理,也就是每次开位选前给P0口送0xff。
重新下载验证,可以看到此时没有了刚才的现象
3.3 显示1-6
同理可以实现后4位数码管的显示
最后效果为: