标题:
单片机松手检测程序有问题吗
[打印本页]
作者:
我是caiji
时间:
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);
}
}
作者:
xianfajushi
时间:
2020-5-2 18:53
按键按下值为0就写==0若电路按键按下为1就写==1进行判断是否释放。
作者:
xxpp2011
时间:
2020-5-2 19:31
看电路接法吧,有按键按下低电平也有按键按下高电平的。
作者:
TTQ001
时间:
2020-5-2 21:14
用于检查开或关状态的值取决于按键的连接类型,例如 按下以接地(k == 0或k!= 1)或按下以连接电源(k == 1或k!= 0)。
作者:
我是caiji
时间:
2020-5-2 23:24
xianfajushi 发表于 2020-5-2 18:53
按键按下值为0就写==0若电路按键按下为1就写==1进行判断是否释放。
他这个是按下为0,我是不理解释放不就是1了吗,为什么是==0判断呢,松手不应该检测是不是为1吗
作者:
hantu
时间:
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);
}
}
作者:
newsunnet
时间:
2020-5-3 02:45
有一些问题
作者:
xingningjie
时间:
2020-5-3 08:27
键按下值为0就写==0若电路按键按下为1就写==1进行判断是否释放。看电路接法吧,有按键按下低电平也有按键按下高电平的。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1