第12講 矩陣按鍵 知識點:
1、 單片機程序的一般結構
2、 keil 基本使用
3、 單片機識別按鍵的注意點
4、 識別矩陣按鍵的一種方法
一、單片機程序的一般結構
1、前后臺結構 前后臺結構是最常用的結構。所謂前后臺結構就是主循環+中斷的方式,主
循環稱為后臺,前臺就是中斷程序。主循環用 while(1)或其它死循環結構輪詢
任務,而前臺負責處理實時性要求較高的任務,或者外部中斷任務,一般把按鍵 掃描、顯示掃描放在定時中斷里。
2、占用式程序與非占用式程序
凡是用 while、for 等循環語句實現的程序都稱為占用式程序。占用式程序的特 點是 CPU 必須執行完所有的循環任務才能退出,除非有中斷發生,比如我們做的 獨立按鍵處理程序就是占用式程序。在單片機程序設計中要盡量避免設計占用式 程序。與其相對應的是非占用式程序,非占用式程序能提高 CPU 的使用效率,讓 所有的任務都能及時得到響應。
二、keil 基本使用
1、點擊工程文件圖標,進入源代碼編輯區。
2、保存、編譯、生成 hex 文件
3、下載、運行
三、單片機識別按鍵的注意點
識別哪個鍵被按下(通過讀取鍵碼的方式)、識別按鍵所處的狀態(有效方 式),常用的有效方式:抬起有效、按下有效、組合有效、長按有效等
四、識別矩陣按鍵的一種方法
矩陣式按鍵接法,是利用單片機的IO 口組成行與列,在行與列的每一個 交點處連接按鍵。故也稱為矩陣式按鍵。電路結構如下所示:
0.png (64.48 KB, 下載次數: 159)
下載附件
2017-11-19 02:41 上傳
file:///Z:/TEMP/msohtmlclip1/01/clip_image002.jpg
這種按鍵的識別方法,我們會在第 5 個知識點上詳細講解。
五、單片機識別按鍵的一般思路:
一般情況下,單片機識別按鍵的目的是識別當前按鍵的狀態,意 思就是說,一要識別是哪個鍵動作了(鍵碼),還要識別當前按鍵 是何狀態,也稱為有效方式,當然了這里的狀態大多是與時間有關的,并執行相應的動作。比如,開發板上獨立式按鍵實驗,當按鍵 按下并抬起時,LED 被點亮。這是最簡單的識別。因為是一支按鍵,所以不用識別是哪個鍵被按下,只需識別按鍵的狀態。一般的按鍵 狀態有以下幾種:按下,抬起,長按,組合,長按多長時間等等。
一個完整的按鍵動作必須包含下面四個階段: 按鍵按下-à按下消抖-à按鍵抬起-à抬起消抖 在單片機與按鍵接口程序中,往往先進行按下消抖,而對按鍵狀態的 判斷就是指按鍵處理了。這里的按鍵處理不是執行相應的動作,而是 區分按鍵此刻處于何種狀態,并改變相應狀態變量的值,以便程序其 它地方通過檢測相應的按鍵狀態變量去執行相應的動作。比如,我們可以把按下并抬起的短按點亮 LED,改成長按一段時間點亮 LED。總的來講,單片機識別按鍵就分為三個階段:按鍵消抖---按鍵處理---
按鍵執行。這個思路適用于所有形式的按鍵。至于為什么要消抖?是 因為我們在操作按鍵時,不可能立即按下或抬起,機械式按鍵接觸面 不是立刻就接觸或斷開的,而單片機的檢測速度特別快,這樣往往會 發生誤判,因此,我們要等待電平穩定了,再去處理按鍵。消抖的方 式很簡單,就是利用延時,等待一個穩定電平的到來。
H:表示行;L:表示列;
| L0 P13
| L1 P12
| L2 P11
| L3 P10
|
| H0 P17
| 0
| 1
| 2
| 3
|
| H1 P16
| 4
| 5
| 6
| 7
| |
H2 P15
| 8
| 9
| 10
| 11
|
| H3 P14
| 12
| 13
| 14
| 15
|
|
|
|
|
|
|
| 我們先測試列,測試列時,把行控 IO 設置為 0,列空IO 設置為 1
即:P1 = 0X0F;此時若有按鍵被按下,我們可以得到 4 組編碼:
0X07,0X0B,0X0D,0X0E;每一組又對應列的四個按鍵。然后我們再測試行:P1 = 0XF0;又可以得出四個按鍵編碼,這樣就可以判斷是哪個鍵被按下了。這里依然是抬起有效。

這是以前給小學生培訓單片機做的一套講義,盡可能的做到了通俗易懂,現分享給大家,絕對的純原創資料.
全部資料下載地址(共15章,pdf格式):http://www.zg4o1577.cn/bbs/dpj-98524-1.html
|