新闻中心

EEPW首页>嵌入式系统>设计应用> 第7课 数码管动态显示

第7课 数码管动态显示

作者: 时间:2016-12-01 来源:网络 收藏
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
main函数内的意思num从1开始,一直加到6,然后不断的循环 (程序为for(num=1;num<7;num++),当num=1时,先打开第一位数码管,再让第一位数码管显示1(程序P0=table[num],即P0=table[1]),然后进行1s的延时(程序为delay(1000);)。紧接着当num=2时,打开第二位数码管,并让其显示2,延时1s……,一直到num=6时,打开第六位数码管,并让其显示6,延时1s,再重复前的的程序。这个我们就可以在实验板上看到数码管从第一位开始依次以1s的时间间隔依次显示123456.
下面的程序下载到实验板现象如图4所示。
图4数码管依次显示123456
现在我们把延时程序缩短(注意上面是延时1s,依次100ms 10ms 1ms ….一直到10us,然后把每次改后的程序下载到实验板,.当短到10us时,可看到如下现象:
也就是此时我们看到的现象是6个数码管在同一时刻按位依次显示123456,可能大家马上要提出疑问了,在上面不是说过利用静态的写法不是实现不了这种效果吗?这里就是数码管的动态显示。
所谓动态显示,就是依次向每位位数码管同时送出字形码和相应的位选,位与位之间利用延时程序进行延时,当延时程序非常短时,由于发光管的余辉和人眼视觉暂留作用,此时我们的人眼就分辨不出位与位之间有延时存在,此时就感觉各位数码管同时都在显示,这样我们实现在静态不能实现的功能。
上一页 1 2 3 下一页

评论


技术专区

关闭