按键 数码管闪动 问题
各位大侠
我的问题是 板上 5 个按键 5 个数码管 由于电路中没法加电容 我在按键时 采用延时防抖 可是 这样出现了 程序以为是连续按键 这样产生了 程序 连续运行 和 延时时 数码管黑掉了 放开按键 数码管才正常亮
请给个高招
不胜感激
[解决办法]
如果允许连续按键,例如一直按着会不停的(一般每秒效应个3~4次像电脑键盘一样)响应
说个思路,这个版块有个键盘防抖的讨论可以看下
sbit key1=P1^0;
....
void timer0 interruput 1
{
if(key1==0)
{
delayms(10);
if(key1==0)//如果10毫秒后还是按着的说明按键有效
{
//按键响应
}
}
}
[解决办法]
楼上说的对。你是不是按下键后,不松手时数码管是黑的,不显示呢?你应该按下键时,继续送数。
while(1)
{
..................//送数据
}
if(!k){
delay() //延时等待按键稳定
if(!k)
{
。。。。。。。。//向数码管送数据
}
while(!k); //如果按键没放就让它停住,不执行下面的程序,直到你的按键释放。
一直闪的原因应该是延时时间的控制。一般10MS吧
[解决办法]
你的数码管显示程序应该用计时器中断来实现,定时器溢出设为10MS左右。这样不会应为主程序停留导致数码管闪烁。