单片机数码管显示,为什么我的数码管上的数字一闪而过不会停留在上面?

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);
}
}
展开
 我来答
lycdl
高粉答主

2019-06-19 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4891万
展开全部
不能把显示程序放在按键程序中,这样,只有按一下K1才显示一遍,所以一闪而过。而应该放在主循环中,不停的循环显示才行。改成下面的程序。
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);
}
}
但是这样的话,显示数字就不受按键控制了
我把延时去掉了,因为数字有点闪,我就索性把延时去掉了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式