用一個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
|