找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1509|回复: 7
收起左侧

单片机松手检测程序有问题吗

[复制链接]
ID:728467 发表于 2020-5-2 17:13 | 显示全部楼层 |阅读模式
问一下松手检测不应该是if(k3!=0)和while(k3!=0)吗,为什么别人这样写Proteus仿真都没问题的
if(K3==0)     //K3按下
{
    while(K3==0);
     bb++;
    point_lcd(0x04,bb);
          if(K3==0)    //松手检测
         {
           while(K3==0);
           delay(20);
          }
}
else if(K4==0)    //k4按下

{
    while(K4==0);
    bb=bb+2;
    point_lcd(0x04,bb);
           if(K4==0)     //松手检测
          {
          while(K4==0);
          delay(20);
           }
}
回复

使用道具 举报

ID:332444 发表于 2020-5-2 18:53 | 显示全部楼层
按键按下值为0就写==0若电路按键按下为1就写==1进行判断是否释放。
回复

使用道具 举报

ID:452950 发表于 2020-5-2 19:31 | 显示全部楼层
看电路接法吧,有按键按下低电平也有按键按下高电平的。
回复

使用道具 举报

ID:420836 发表于 2020-5-2 21:14 | 显示全部楼层
用于检查开或关状态的值取决于按键的连接类型,例如 按下以接地(k == 0或k!= 1)或按下以连接电源(k == 1或k!= 0)。
回复

使用道具 举报

ID:728467 发表于 2020-5-2 23:24 来自手机 | 显示全部楼层
xianfajushi 发表于 2020-5-2 18:53
按键按下值为0就写==0若电路按键按下为1就写==1进行判断是否释放。

他这个是按下为0,我是不理解释放不就是1了吗,为什么是==0判断呢,松手不应该检测是不是为1吗
回复

使用道具 举报

ID:462827 发表于 2020-5-3 01:07 | 显示全部楼层
你的代码错了,应该是下面这样子:

if(K3==0)     //K3按下
{
    //while(K3==0);  // (这里是错的,不能要)
    //(这里还缺了个延时消抖,你得加上)
     bb++;                   //(这行最好是移到下个if的花括号里面)
    point_lcd(0x04,bb); //(还有这行也是)
          if(K3==0)    //松手检测 (这里可不是松手检测,这是确认按键是否真的按下了)
         {
           while(K3==0);  // (这里才是松手检测!)
           delay(20);
          }
}
回复

使用道具 举报

ID:743122 发表于 2020-5-3 02:45 | 显示全部楼层
有一些问题
回复

使用道具 举报

ID:743131 发表于 2020-5-3 08:27 | 显示全部楼层
键按下值为0就写==0若电路按键按下为1就写==1进行判断是否释放。看电路接法吧,有按键按下低电平也有按键按下高电平的。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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