導航:首頁 > 操作系統 > 單片機掃描按鍵

單片機掃描按鍵

發布時間:2024-11-30 06:04:53

單片機4*4鍵盤掃描程序

//你要看得懂代碼首先你要了解按鍵掃描的原理
//k_input是Px8個IO(x=0/1/2/3)
ucharkeys()
{
uchari,j,k_in,k_out=0xfe,jm;
k_input=0x0f//步驟1:Px7~Px4為低,Px3~Px0為高
if(k_input!=0x0f)//步驟2:是否有按鍵按下,如果有,Px的值將發生變化
yanshi(10);//軟體消除抖動
else
return16;//如果沒有,返回空鍵值

for(jm=0;jm<4;jm++)//掃描是哪個按鍵按下
{
k_input=k_out;//步驟3:從Px0這一列開始掃描
k_int=k_input;//這里應該是k_in
j=0x01;
for(i=0;i<4;i++)//步驟4:逐個掃描這一列上面的4個按鍵
{
if(~(k_in>>4)&j)//如果有按鍵按下,返回被按下的按鍵值
return(jm*4+i);
j=_crol_(j,1);//如果沒有按鍵按下,依次掃描這一列的其他按鍵
}
k_out=crol_(k_out,1);//步驟5:移位,依次掃描另一列,直到檢測到按鍵按下
}
return16;//如果沒有掃描到按鍵,認為是誤觸發,返回空鍵值
}

② 單片機什麼是用鍵值的方式解決按鍵掃描問題,簡單解說下 單解說下

左邊的圖,每個按鍵對應於一個IO口,按下按鍵時相應的IO口被拉到低電平,其IO寄存器位回讀為「0」。因此根據回讀到的哪個寄存器位為0就能知道哪個鍵被按下。這種方式適用於規模較小的鍵盤。
右邊的圖是常見的行列掃描接法。當單個行掃描管腳拉低後,回讀列掃描管腳的狀態,即可知道該行有哪幾個按鍵被按下。逐一拉低各個行掃描管腳並回讀列管腳狀態,即可獲得整個矩陣鍵盤的按鍵狀態。這種方式適用於規模較大的鍵盤,有效節省珍貴的IO口。

③ 單片機行列式鍵盤掃描原理

單片機行列式鍵盤掃描原理如下:

1、行線P10~P13為輸出線,列線P14~P17為輸入線。一開始單片機將行線(P10~P13)全部輸出低電平,此時讀入列線數據,若列線全為高電平則沒有鍵按下,當列線有出現低電平時調用延時程序以此來去除按鍵抖動。

2、延時完成後再判斷是否有低電平,如果此時讀入列線數據還是有低電平,則說明確實有鍵按下。最後一步確定鍵值。當判斷確實有鍵按下之後,行線輪流輸出低電平,根據讀入列線的數據可以確定鍵值。

3、單片機將P10輸出為低電平,其它P11~P13輸出高電平,此時讀取列線的數據全為高電平,說明沒有在第一行有鍵按下;其次,單片機將P11輸出低電平,其它P10、P12、P13仍為高電平。

4、此時再來讀取列線數據,發現列線讀到的數據有低電平,數值為1011(0x0B),如果我們的鍵盤布局已經確定,那麼0x0B就代表S5的值了。轉到S5鍵功能處理子程序就可以達到目的。

(3)單片機掃描按鍵擴展閱讀

單片機學習方法

1、基礎理論知識學習

基礎理論知識包括模擬電路、數字電路和C語言知識。。在學習單片機之前,覺得模擬電路和數字電路基礎不好的話,不要急著學習單片機,應該先回顧所學過的模擬電路和數字電路知識,為學習單片機加強基礎。

2、單片機實踐

准備一台電腦、一塊單片機開發板、一套視頻教程、一本單片機教材和一本C語言教材。電腦是用來編寫和編譯程序,並將程序代碼下載到單片機上;開發板來運行單片機程序,驗證實際效果。

④ 單片機匯編矩陣鍵盤實驗(掃描法)

關於掃描按鍵的原理,可以看下面這篇文章。

本文以循序漸進的思路,引導大家思考如何用最少的IO驅動更多的按鍵,並依次給出5種方案原理圖提供參考。在實際項目中我們經常會遇到有按鍵輸入的需求,但有的時候為了節省資源成本,我們都會選擇在不增加硬體的情況下使用最少的控制器IO驅動更多的按鍵,那麼具體是怎麼做的呢,下面我們就以用5個IO引腳為例,講下怎麼設計可以實現更多的按鍵?共有5種設計思路,下面依次介紹。

思路一

首先通常想到的可能是下面這樣的設計:

這樣我們可以先識別K01、K02、K03、K04、K05,若沒有按鍵按下然後再和思路四的設計一樣去識別其他按鍵。但這樣存在一個問題,如果IO1配置為0,IO5讀到0,那麼怎麼知道是K51按下還是K05按下呢,這里只需要在程序里做下判斷,先判斷下是不是K05按下,若不是就是K51,因為按鍵K01、K02、K03、K04、K05在5個IO口都為讀取的情況下,就可以識別,不需要掃描識別處理,相當於這5個按鍵優先順序高與其他按鍵。

總結

綜合上述,5個IO口最多可以識別25個按鍵,思路五程序上處理比較麻煩,若實際中只按思路四設計,也可識別20個按鍵,那麼如果有N個IO口可識別多少按鍵呢?這里給出如下公式:

假設有N個IO口按照思路三可以識別N*(N-1)/2個;

按照思路四可識別N*(N-1)個;

按照思路5可以識別N*(N-1)+N個。

最後再說下,如果實際設計時,還是按思路四設計好,軟體也沒那麼麻煩。如果是你的話你會選擇哪種方法呢?你還有沒有其他的設計方法呢?

閱讀全文

與單片機掃描按鍵相關的資料

熱點內容
java結束函數 瀏覽:622
打開遠程桌面的命令 瀏覽:836
樹莓派如何搭建mqtt伺服器 瀏覽:587
怎麼加密w8文件 瀏覽:609
linuxprogram 瀏覽:708
php介面編程思想 瀏覽:92
如何下載電話軟體app 瀏覽:906
java命令行解析 瀏覽:572
雲伺服器白嫖 瀏覽:917
程序員小清新 瀏覽:989
編譯器地址8位元組對齊 瀏覽:464
三菱plc編程win1064 瀏覽:258
高中英語單詞pdf 瀏覽:425
編譯原理詞法分析常見問題 瀏覽:197
車小藝app怎麼更新 瀏覽:77
手機app被管控如何移除 瀏覽:753
51單片機溫濕度檢測 瀏覽:575
安卓抖音顯示沒網路是怎麼回事 瀏覽:818
2d我的世界源碼 瀏覽:620
怎樣製作貼天花板的解壓球 瀏覽:337