单片机数码管显示,为什么我的数码管上的数字一闪而过不会停留在上面?
if(key1==0){delay10ms();if(key1==0){for(cnt=7;cnt>3;cnt--){P2=disbitcode[cnt];P0=tabl...
if(key1==0)
{
delay10ms();
if(key1==0)
{ for(cnt=7;cnt>3;cnt--)
{
P2=disbitcode[cnt];
P0=table_1[cnt] ;
delay10ms();
}
while(!key1);
}
} 展开
{
delay10ms();
if(key1==0)
{ for(cnt=7;cnt>3;cnt--)
{
P2=disbitcode[cnt];
P0=table_1[cnt] ;
delay10ms();
}
while(!key1);
}
} 展开
展开全部
不能把显示程序放在按键程序中,这样,只有按一下K1才显示一遍,所以一闪而过。而应该放在主循环中,不停的循环显示才行。改成下面的程序。
void main()
{
...........
while(1)
{
for(cnt=7;cnt>3;cnt--)
{ P2=disbitcode[cnt]; P0=table_1[cnt] ;
delay10ms();
}
if(k1==0)
{
........
}
}
}
void main()
{
...........
while(1)
{
for(cnt=7;cnt>3;cnt--)
{ P2=disbitcode[cnt]; P0=table_1[cnt] ;
delay10ms();
}
if(k1==0)
{
........
}
}
}
更多追问追答
追问
请问这样对了吗?
for(cnt=7;cnt>3;cnt--)
{
P2=disbitcode[cnt];
P0=table_1[cnt] ;
}
if(key1==0)
{
delay10ms();
if(key1==0)
{
while(!key1);
}
}
但是这样的话,显示数字就不受按键控制了
我把延时去掉了,因为数字有点闪,我就索性把延时去掉了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询