找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2544|回复: 6
收起左侧

单片机检测按键问题???求大神指教,急急急,在线等

[复制链接]
ID:61977 发表于 2015-6-9 18:50 | 显示全部楼层 |阅读模式
同时按下两个按键气缸下压,key1和key2是两个按键按下所置的标志,同时按下key1和key2气缸下压,任意按下一个气缸复位,但是实际调试时同时按下两个开关,气缸没有反应,有时要连续按下几次气缸才会下压。求大神指导一下是什么问题,谢谢。sbit Wac=P1^0;
sbit key1=p0^0;
sbit key1=p0^1;
unsigned char step=0;

if((key1==1)&&(key2==1))
{
key1=0;
key2=0;
if(step==0)
{
step=1;
Wac=0;
}
}


if((key1==1)||(key2==1))
{
key1=0;
key2=0;

if(step==1)
{
Wac=1;
step=0;
}
}
回复

使用道具 举报

ID:80992 发表于 2015-6-9 21:54 | 显示全部楼层
逻辑太混乱。表示看不懂

评分

参与人数 1黑币 +15 收起 理由
admin + 15 淡定

查看全部评分

回复

使用道具 举报

ID:76227 发表于 2015-6-9 23:31 | 显示全部楼层
本帖最后由 905377346 于 2015-6-9 23:33 编辑

你这里没有做按键检查和松手检测。正因为你没有这样做  所以你的程序可能多次进入你的if()里面  所以你当然看不到正确结果
一般案件检测的步骤:
if(按键按下)
{
          delay();
          if(按键按下)//这时候认为是有按键按下,之前有可能是按键抖动产生的。并不是真的按下
          {
              .......
            
            while(等待按键松开);//松手检测

           }   
}


这是按键检查的子程序
把其中的汉字部分  换成你的相应按键判断

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:79908 发表于 2015-6-10 08:13 | 显示全部楼层
不知道你的电路怎么的!单片机复位后P0-P3都是0xff,要想用判断有高电平表示按下,那么你必须的在每次按键检测前把P0^0和P0^1设置为0,这样检测1才是有效的,否则一直在检测!

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:77707 发表于 2015-6-10 20:01 | 显示全部楼层
本帖最后由 dpj555 于 2015-6-10 20:02 编辑

给你一段程序做参考:
/******************************************************************
函数功能:键盘扫描
********************************************************************/
void key_scan(void)
{
     P1=0xf0;                                    //将P1口高4位置高电平"1"
        if((P1&0xf0)!=0xf0)                //有键按下
          {
                delay100ms();                  //延时100ms再检测
           if((P1&0xf0)!=0xf0)            //确实有键按下
          {
              if( key_add==0)             //如果是key_add键按下
                        gewei++;             //个位加1
                        count++;                 
                  if(key_dec==0)           //如果是key_dec键按下
                        shiwei--;              //十位减1
                        count--;
                }
       }
}

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:84147 发表于 2015-7-4 10:57 | 显示全部楼层
没看懂
回复

使用道具 举报

ID:69319 发表于 2015-7-7 14:53 | 显示全部楼层
你这两个if语句一样的有什么区别吗

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表