首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

按键 数码管闪动 有关问题

2012-04-27 
按键 数码管闪动 问题各位大侠我的问题是板上 5 个按键 5 个数码管由于电路中没法加电容 我在按键时 采用

按键 数码管闪动 问题
各位大侠 
  我的问题是 板上 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左右。这样不会应为主程序停留导致数码管闪烁。

热点排行