今天在学习数码管的被一个小细节困扰了一下,在此分享
如上面的题目,要求最后两位显示月份,并且这个月份要隔一段时间就要变化,一般而言,隔一段时间需要用执行空语句延时,像这样
void Delay(unsigned int t)
{
while(t--);
}
然而动态数码管显示正是利用视觉残留,空语句延时的话动态数码管效果就不能如意了,为了实现这种延时可以这样做
void DELAY1(unsigned int t)
{
while(t--)
{
xianshi();//数码管动态显示的程序
}
}
即在对 月份++ 的延时里嵌入动态显示的过程,使数码管正常显示。
我对这段代码有几点体会,一是这里的t每次减减 都要把动态显示的过程执行一遍,所以这个t不必取得太大即可完成对月份延时;二是延时函数的t注意选取合适类型,普通的空语句延时往往会把t设的很大,所以t不能设为char型;三是函数取名区分大小写。
而我的错误是惯性的在这个while(t--)后面加了分号,致使显示异常。
完整代码如下
#include"reg52.h"
unsigned char code SMG_duanma[18]={
0xc0,0xf9,0xa4,0xb0,
0x99,