标题:
利用单片机AD转换做按键扫描,识别按键单键,双键长按短按。(两个按键同时按下)
[打印本页]
作者:
742624689
时间:
2019-5-29 15:25
标题:
利用单片机AD转换做按键扫描,识别按键单键,双键长按短按。(两个按键同时按下)
用一个IO口就可以识别多个按键,这里以两个按键为例。
1.可以识别S1和S2单击
2.识别S1和S2同时按下
3.S1和S2同时长按
电路图:
P2外接串联led灯,用来调试按键效果
电路图.png
(192.09 KB, 下载次数: 68)
下载附件
2019-5-29 15:22 上传
按键程序代码如下:
void keyscan()
{
if(AD_value>100) //如果有任意按下
{
if(key1&&!key_lock)
{
pre_kvalue=1; //保存键值
}
else if(key2&&!key_lock)
{
pre_kvalue=2; //保存键值
}
if(key12&&pre_kvalue!=4) //双键按下。完成长按操作视为判断结束
{
key_lock=1; //当按下双键时,不再判断单键是否按下
pre_kvalue=3; //保存双键按下键值
if(key_count>150) //长按1.5秒
{
pre_kvalue=4; //保存双键长按键值
key_count=0; //长按计数清零
}
}
}
else if(AD_value<100) //等待全部按键弹起,执行相关按键指令
{
mode_choice(); //执行对应按键的指令
key_lock=0; //双键标志位清零
key_count=0; //长按计数清零
}
}
完整程序代码和电路图已经打包好。大家一起学习交流
全部资料51hei下载地址:
AD按键扫描.zip
(221.62 KB, 下载次数: 109)
2019-5-29 15:24 上传
点击文件名下载附件
一个IO口,理论可以识别几百个按键
下载积分: 黑币 -5
作者:
hz532
时间:
2019-11-27 09:21
好好学习
作者:
a461624201
时间:
2021-12-4 03:05
试试看,AD电压采集需要的IO少.
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1