① 51单片机数码管显示不停闪烁
动态显示,显示程序的调用,不能有条件。
必须不停的调用。
你的显示程序,是满足了什么什么条件,才调用一次?
这就耽误事了。
你显示的时候,先显示分,仅仅显示几个毫秒,之后,就显示秒。
秒,显示几个毫秒,之后,没有消隐,一直显示到下次调用显示程序。
所以,秒,显示稳定,分,一闪就没了。
② 单片机数码管小数点闪烁
可以用定时器或者延时程序来设置。
其实数码管的小数点就是一个LED灯。
因为数码管是共阳极的,所以只要在数码管H引脚(即对应小数点的那个引脚)用单片机给它一个低电平,就能让小数点亮了。
首先让小数点亮起来,然后可以用延时1秒的程序或者定时器定时1秒后,让小数点灭,之后再延时1秒,或者定时1秒,让小数点亮,这样循环起来,就OK了
③ 51单片机如何让一个数码管闪烁而其他数码管一直保持亮的状态不受影响
假如有6 个数码管,每个亮5ms,30ms是一轮,用一个变量a计数,40轮为一周期,如果a小于20,需闪烁的哪一位数码管不亮,a大于20,该位正常显示。就形成了亮0.6s灭0.6S的效果。
下面是4位数码管闪烁程序:
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};//七段码表
modtable={ {0,0,0,0},{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1} ,{1,1,1,1} }
//5种模式4个数码管,所以表格为5*4
//4个0表示4个数码管都可以正常亮
void display(uint m,uchar mode )//4位显示子程序 带某位闪烁功能
//mode=0,都不闪烁 mode=1 千位闪烁 mode=2 百位闪烁 mode=3 十位闪烁 mode=4 个位闪烁
//mode=5 全部闪烁
{
uchar a1,a2,a3,a4;
staic ia;
uchar modeaa;
a1=m/1000;
a2=m/100%10;
a3=m/10%10;
a4=m%10;
if(ia<20)
{
modeaa=mode;//前20次与闪烁模式有关
}
else
{
modeaa=0;//后20次只管正常扫描
}
dataport=~(table[a1]);
sm1=modtable[modeaa][0]; Delay1ms(2);sm1=1;//sm1=0,一号数码管亮
//但它是否为0,由modeaa决定,modeaa又受ia控制,可以等于mode,也可以为0
dataport=~(table[a2]);
sm2=modtable[modeaa][1]; Delay1ms(2);sm2=1;
dataport=~(table[a3]);
sm3=modtable[modeaa][2]; Delay1ms(2);sm3=1;
dataport=~(table[a4]);
sm4=modtable[modeaa][3]; Delay1ms(2);sm4=1;
ia++;
if(ia==40) ia=0;
}
④ 51单片机按键时,数码管会闪烁一下.原因是什么
原因很简单,这是代码和数码管驱动的问题
按键会影响数码管显示,这是单片机直接驱动数码管会出现的问题,而数码管则是工作在动态扫描方式的,若是采用带有锁存器件的数码管驱动,则不会出现此类现象,因为单片机是周期性的扫描工作方式,单片机直接驱动数码管的电路,当单片机扫描到按键的时候,数码管部分就停止了(一般的代码都这样,除非数码管是工作在静态扫描方式)
直接驱动数码管,按键的代码一般都会写一些延时,用来软件消除按键的抖动,若延时的时间太长,就会影响数码管的显示效果,另外有些还会增加等待按键松开的语句,这种语句一般都是一个死循环,除非按键被松开
解决办法是,减少按键消抖动延时的时间,在等待按键松开的死循环语句中调用数码管显示函数,这样基本上就可以解决此类问题
⑤ 单片机数码管小数点闪烁
假设4个数码管,每个亮2ms,一轮扫描共亮8ms,我们可以让其以120次为周期(0.96s),扫描前60次小数点亮,后60次小数点不亮,这样小数点就 以大约1HZ的速度闪烁。
例如,小数点在第二位,数码管七段码table[]中不含小数点
显示部分如下
if(a<60)
{dataport=(table[a1]);
sm1=0; Delay1ms(2);sm1=1;
dataport=(table[a2])|0x80;//第二位多个小数点
sm2=0; Delay1ms(2);sm2=1;
dataport=(table[a3]);
sm3=0; Delay1ms(2);sm3=1;
dataport=(table[a4]);
sm4=0; Delay1ms(2);sm4=1;
ia++;
}
else {dataport=(table[a1]);
sm1=0; Delay1ms(2);sm1=1;
dataport=(table[a2]); //第二位无小数点
sm2=0; Delay1ms(2);sm2=1;
dataport=(table[a3]);
sm3=0; Delay1ms(2);sm3=1;
dataport=(table[a4]);
sm4=0; Delay1ms(2);sm4=1;
ia++;
}
if(a==120) a=0;//120次后重新归零
⑥ 51单片机 关于按键控制数码管闪烁
因为按了K1只是选择调时分秒,如果写了时分秒位闪烁程序,才有反应,对应的时分秒闪烁了。
可是,你没有写闪烁程序,当然就没有什么反应了,只有再按K2,K3,才能调时分秒,才有改变。只按K1后,不按K2,K3就看不出反应了。
⑦ stm3274hc245数码管闪烁
按键引脚被设置成了输出。
被按键控制的数码管,8个led无规律高频闪烁,手靠近会闪。其状况为按键按下为电平上拉,引脚初始化为下拉电平。原因是按键引脚被设置成了输出,解决方案为修改按键引脚为输入。
数码管闪烁在单片机执行一个任务时,显示正常。如果再加上一个发送串口数据的功能,则发送数据的时候会出现闪烁的情况。
⑧ 单片机:如何让数码管闪烁
其它照常
一段时间输出与0xff做与运算
一段时间输出与0x00做与运算
⑨ 51单片机按键时,数码管会闪烁一下.原因是什么
原因很简单,这是代码和数码管驱动的问题
按键会影响数码管显示,这是单片机直接驱动数码管会出现的问题,而数码管则是工作在动态扫描方式的,若是采用带有锁存器件的数码管驱动,则不会出现此类现象,因为单片机是周期性的扫描工作方式,单片机直接驱动数码管的电路,当单片机扫描到按键的时候,数码管部分就停止了(一般的代码都这样,除非数码管是工作在静态扫描方式)
直接驱动数码管,按键的代码一般都会写一些延时,用来软件消除按键的抖动,若延时的时间太长,就会影响数码管的显示效果,另外有些还会增加等待按键松开的语句,这种语句一般都是一个死循环,除非按键被松开
解决办法是,减少按键消抖动延时的时间,在等待按键松开的死循环语句中调用数码管显示函数,这样基本上就可以解决此类问题