標(biāo)題:
利用單片機(jī)AD轉(zhuǎn)換做按鍵掃描,識(shí)別按鍵單鍵,雙鍵長(zhǎng)按短按。(兩個(gè)按鍵同時(shí)按下)
[打印本頁(yè)]
作者:
742624689
時(shí)間:
2019-5-29 15:25
標(biāo)題:
利用單片機(jī)AD轉(zhuǎn)換做按鍵掃描,識(shí)別按鍵單鍵,雙鍵長(zhǎng)按短按。(兩個(gè)按鍵同時(shí)按下)
用一個(gè)IO口就可以識(shí)別多個(gè)按鍵,這里以兩個(gè)按鍵為例。
1.可以識(shí)別S1和S2單擊
2.識(shí)別S1和S2同時(shí)按下
3.S1和S2同時(shí)長(zhǎng)按
電路圖:
P2外接串聯(lián)led燈,用來調(diào)試按鍵效果
電路圖.png
(192.09 KB, 下載次數(shù): 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) //雙鍵按下。完成長(zhǎng)按操作視為判斷結(jié)束
{
key_lock=1; //當(dāng)按下雙鍵時(shí),不再判斷單鍵是否按下
pre_kvalue=3; //保存雙鍵按下鍵值
if(key_count>150) //長(zhǎng)按1.5秒
{
pre_kvalue=4; //保存雙鍵長(zhǎng)按鍵值
key_count=0; //長(zhǎng)按計(jì)數(shù)清零
}
}
}
else if(AD_value<100) //等待全部按鍵彈起,執(zhí)行相關(guān)按鍵指令
{
mode_choice(); //執(zhí)行對(duì)應(yīng)按鍵的指令
key_lock=0; //雙鍵標(biāo)志位清零
key_count=0; //長(zhǎng)按計(jì)數(shù)清零
}
}
完整程序代碼和電路圖已經(jīng)打包好。大家一起學(xué)習(xí)交流
全部資料51hei下載地址:
AD按鍵掃描.zip
(221.62 KB, 下載次數(shù): 109)
2019-5-29 15:24 上傳
點(diǎn)擊文件名下載附件
一個(gè)IO口,理論可以識(shí)別幾百個(gè)按鍵
下載積分: 黑幣 -5
作者:
hz532
時(shí)間:
2019-11-27 09:21
好好學(xué)習(xí)
作者:
a461624201
時(shí)間:
2021-12-4 03:05
試試看,AD電壓采集需要的IO少.
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1