标题:
MCU C语言程序检测按键的几种用法
[打印本页]
作者:
chris_yang
时间:
2023-6-12 10:06
标题:
MCU C语言程序检测按键的几种用法
按键,有多种用法,
1. 独立按键:按一个,对应一个动作,可以用扫描,也可用 中断方式;2. 矩阵按键:常用的 4*4 = 16, 3*8 = 24,... 主要在于将小数按键进行组合,达到 以少生多 的控制效果,节约 IO 控制端口;
3. 长按 短按:这个,是目前较为常用的一种思路,一个按键形成 多个 用途:给出MCU C语言代码框架,方便大家使用;
void Key()
{
uchar count_x; // 定义 临时 变量,用于统计按键的 计时长度;
if( !K1 ) // 按键 按下;
{
Delay_Nms(30); // 防抖;
if(!K1) // 确定 按键 真实 按下;
{
count_x = 0; // 记数清 0;
do{
count_x ++; // 记录 长按 短按;
Delay_Nms(10);
if( count_x >= 20) break; // 记到 20就封顶;
} while(!K1); // 设计到 1000ms ,就松手,就退出 计数;
// 长按 短按 的 时间分界点:(0----20---30)
if(count_x <= 20) // 短按;
{
; //短按对应 程序体1;
}
else // 长按;
{
; //长按对应 程序体2;
}
}
}
}
4. 计数按键:这个,通常会结合定时器使用,按下去后,在一个指时时间类,计下按下按键的次数,当时间停止后,对应按键次数,进入对应的 指定模块运行;
不知,大家还有什么 常用的 按键 知识,可以一起分享;
作者:
Q__Q
时间:
2023-6-16 11:16
谢谢楼主分享 已收藏!这样长短安键 确实方便灵活
作者:
大麦豆
时间:
2023-6-16 12:00
不能用中断计时来吗?
作者:
lids
时间:
2023-6-16 13:44
按键消抖不要用延时,这种程序在开发板上玩玩可以,不要用在实际项目中
作者:
joyb
时间:
2023-6-16 14:26
设计到1000ms ,就松手,就退出 计数,1000ms如何计算的?
作者:
bobo电子爱好者
时间:
2023-10-20 16:21
不用说delay 30ms了,就是10ms 实际产品中都不能使用,你还有while等按键松开。 不实用的代码。 时基和无阻塞 是最基本的入门技能,用delay这么长时间的,入门都还没入门
作者:
zenghl
时间:
2023-10-21 19:55
6楼说得对,建议楼主不要展示这种示例
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1