日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

跟我學51單片機(四):獨立-矩陣鍵盤應用與設(shè)計

出處:lhkjg 發(fā)布于:2011-07-29 15:28:29

  上講介紹并應用了單片機的串口通信,并給出了實例。從這一講開始將介紹單片機的外圍電路。這講向大家介紹單片機外接鍵盤電路,通過該講,讀者可以掌握單片機外接鍵盤的工作原理從而實現(xiàn)電路與程序設(shè)計。

  一、原理簡介

  鍵盤接口電路是單片機系統(tǒng)設(shè)計非常重要的一環(huán),作為人機交互界面里常用的輸入設(shè)備。我們可以通過鍵盤輸入數(shù)據(jù)或命令來實現(xiàn)簡單的人機通信。在設(shè)計鍵盤電路與程序前,我們需要了解鍵盤和組成鍵盤的按鍵的一些知識。

  1. 按鍵的分類

  一般來說,按鍵按照結(jié)構(gòu)原理可分為兩類,一類是觸點開關(guān)按鍵,如機械式開關(guān)、導電橡膠式開關(guān)等;另一類是無觸點式開關(guān)按鍵,如電氣式按鍵,磁感應按鍵等。前者造價低,后者壽命長。目前,微機系統(tǒng)中常見的是觸點式開關(guān)按鍵(如本學習板上所采用按鍵)。

  按鍵按照接口原理又可分為編碼鍵盤與非編碼鍵盤兩類,這兩類鍵盤的主要區(qū)別是識別鍵符及給出相應鍵碼的方法。編碼鍵盤主要是用硬件來實現(xiàn)對鍵的識別,非編碼鍵盤主要是由軟件來實現(xiàn)鍵盤的識別。

  全編碼鍵盤由專門的芯片實現(xiàn)識鍵及輸出相應的編碼,一般還具有去抖動和多鍵、竄鍵等保護電路,這種鍵盤使用方便,硬件開銷大,一般的小型嵌入式應用系統(tǒng)較少采用。非編碼鍵盤按連接方式可分為獨立式和矩陣式兩種,其它工作都主要由軟件完成。由于其經(jīng)濟實用,較多地應用于單片機系統(tǒng)中(本學習板也采用非編碼鍵盤)。

  2. 按鍵的輸入原理

  在單片機應用系統(tǒng)中,通常使用機械觸點式按鍵開關(guān),其主要功能是把機械上的通斷轉(zhuǎn)換成為電氣上的邏輯關(guān)系。也就是說,它能提供標準的TTL 邏輯電平,以便與通用數(shù)字系統(tǒng)的邏輯電平相容。此外,除了復位按鍵有專門的復位電路及專一的復位功能外,其它按鍵都是以開關(guān)狀態(tài)來設(shè)置控制功能或輸入數(shù)據(jù)。當所設(shè)置的功能鍵或數(shù)字鍵按下時,計算機應用系統(tǒng)應完成該按鍵所設(shè)定的功能。因此,鍵信息輸入是與軟件結(jié)構(gòu)密切相關(guān)的過程。 對于一組鍵或一個鍵盤,通過接口電路與單片機相連。單片機可以采用查詢或中斷方式了解有無按鍵輸入并檢查是哪一個按鍵按下,若有鍵按下則跳至相應的鍵盤處理程序處去執(zhí)行,若無鍵按下則繼續(xù)執(zhí)行其他程序。

  3. 按鍵的特點與去抖

  機械式按鍵再按下或釋放時,由于機械彈性作用的影響,通常伴隨有一定時間的觸點機械抖動,然后其觸點才穩(wěn)定下來。其抖動過程如圖1(a) 所示,抖動時間的長短與開關(guān)的機械特性有關(guān),一般為5 ~ 10 ms。從圖中可以看出,在觸點抖動期間檢測按鍵的通與斷狀態(tài),可能導致判斷出錯。即按鍵按下或釋放被錯誤地認為是多次操作,這種情況是不允許出現(xiàn)的。為了克服按鍵觸點機械抖動所致的檢測誤判,必須采取去抖動措施,可從硬件、軟件兩方面予以考慮。一般來說,在鍵數(shù)較少時,可采用硬件去抖,而當鍵數(shù)較多時,采用軟件去抖。( 本學習板采用軟件去抖方式)。軟件去抖的流程圖如圖1(b) 所示。

  從按鍵的去抖流程圖我們可以知道,檢測到有鍵按下時,應延時等待一段時間(可調(diào)用一個5ms~10ms的延遲子程序),然后再次判斷按鍵是否被按下,若此時判斷按鍵仍被按下,則認為按鍵有效,若此時判斷按鍵沒有被按下,說明為按鍵抖動或干擾,應返回重新判斷。鍵盤真正被按下才可進行相應的處理程序,此時基本就算實現(xiàn)了按鍵輸入,進一步的話可以判斷按鍵是否釋放。

  二、電路詳解

  電路圖如圖2 所示。

  從圖2 中可知獨立式按鍵采用每個按鍵單獨占用一根I/O 口線結(jié)構(gòu)。當按下和釋放按鍵時,輸入到單片機I/O 端口的電平是不一樣的,因此可以根據(jù)不同端口電平的變化判斷是否有按鍵按下以及是哪一個按鍵按下。從圖2(a) 中可以看出,按鍵和單片機引腳連接并加了上拉電阻,這樣當沒有按鍵按下的時候,I/O 輸入的電平是高電平,當有按鍵按下的時候,I/O 輸入的電平是低電平。

  雖然獨立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單,但每個按鍵必須占用一根I/O 口線,因此,在按鍵較多時,I/O 口線浪費較大。對于比較復雜的系統(tǒng)或按鍵比較多的場合,可以用到矩陣鍵盤,圖2(b) 中所示的為4×4的矩陣式鍵盤,其他矩陣式鍵盤的設(shè)計方法類似。

  4×4 的矩陣式鍵盤由4 根行線和4 根列線交叉構(gòu)成,按鍵位于行列的交叉點上,這樣就構(gòu)成了16 個按鍵。其中交叉點的行列線是不連接的,當按鍵按下的時候,此交叉點處的行線和列線導通。圖2(b) 行線通過上拉電阻接到VCC 上。當無鍵按下時,行線處于高電平狀態(tài);當有鍵按下時,行、列線在交點導通,此時,行線電平將由與此行線相連的列線電平?jīng)Q定。這是識別按鍵是否按下的關(guān)鍵。然而,矩陣鍵盤中的每條行線與4 條列線相交,交點的按鍵按下與否均影響該鍵所在行線和列線的電平,各按鍵間將相互影響,鍵分析時必須將行線、列線信號配合起來作適當處理,才能確定閉合鍵的位置。

  值得注意的是本文介紹的矩陣鍵盤,在傳統(tǒng)的矩陣鍵盤的輸出端加了一個四輸入與門芯片74HC21。當四路輸入有一個為低電平的時候,輸出為低電平。將74HC21 的輸出端接到單片機的外部中斷0(P32 管腳)上,這樣在實時性要求較高的情況下,設(shè)P00~P03 為全低等待按鍵觸發(fā),當任何一個按鍵按下的情況下,系統(tǒng)都會進入中斷服務程序,提高了鍵盤響應時間,在系統(tǒng)實時性要求較高的情況下非常實用。本文的全部源程序見www.ele169.com。

  三、程序設(shè)計

  本文設(shè)計實例關(guān)鍵程序如下。

  獨立按鍵程序

  ……

  #define keyio P0 ( 1)

  #define key1 P0_3 ( 2)

  ……

  keyio|=0X0F; ( 3)

  if(key1==0) ( 4)

  {

  delay_nms(20); ( 5)

  if(key1==0) ( 6)

  {

  while(key1==0); ( 7)

  return 1; ( 8)

  }

  }

  程序說明:

  (1)定義按鍵管腳。

  (2)定義按鍵連接管腳。

  (3)將按鍵連接管腳輸出高電平,從而接收輸入。

  (4)如果此時管腳所連接按鍵被按下。

  (5)延時一段時間,去抖作業(yè)。

  (6)如果此時按鍵仍然被按下,此時按鍵有效。

  (7)等待按鍵抬起,死循環(huán),如果按鍵一直按下則一直等待。

  (8)返回鍵值。矩陣鍵盤程序

  ……

  #define KEYIO P0 ( 1)

  ……

  code ksp[4]={0x7F,0xBF,0xDF,0xEF}; ( 2)

  unsigned char keypad_scan() ( 3)

  {

  char key,i; ( 4)

  KEYIO=0xF0; ( 5)

  if (KEYIO!=0xF0) ( 6)

  {

  for(i=0;i<=3;i++) ( 7)

  {

  delaykey(10); ( 8)

  KEYIO=ksp[i]; ( 9)

  delaykey(10); ( 10)

  if(KEYIO!=ksp[i]) ( 11)

  {

  delaykey(10); ( 12)

  key=KEYIO; ( 13)

  while(KEYIO==key); ( 14)

  return(key); ( 15)

  }

  }

  }

  }

  程序說明:

  (1)定義矩陣鍵盤管腳。

  (2)將掃描時用到的管腳四種輸出電平狀態(tài)定義成一個數(shù)組。

  (3)按鍵掃描程序。

  (4)定義兩個臨時變量key,i。

  (5)讓鍵盤管腳的高四位輸出高電平,第四位為低電平,為掃描按鍵準備。

  (6)如果此時管腳狀態(tài)電平發(fā)生變化。

  (7)將之前定義的數(shù)組中的值賦予管腳,開始逐次掃描。

  (8)延時一段時間,去抖。

  (9)輸出掃描按鍵的電平。

  (10)再延時一段時間。

  (11)如果此時按鍵管腳電平依舊不是輸出的默認電平,表示有鍵按下。

  (12)延時一段時間,讓電平穩(wěn)定。

  (13)讀取當前按鍵管腳電平,即鍵值。

  (14)等待按鍵抬起,死循環(huán),如果按鍵一直按下則一直等待。

  (15)返回鍵值。

  四、調(diào)試要點與實驗現(xiàn)象

  接好硬件,通過冷啟動方式將程序所生成的。hex文件到單片機運行后,打開串口調(diào)試助手軟件,設(shè)置好波特率9600,復位單片機,然后按下板上的4×4按鍵中的任意一個,并注意觀串口調(diào)試助手上的顯示。(見圖3),可以觀察到在接收窗口有按鍵的數(shù)據(jù)顯示。

圖3 按鍵通過串口調(diào)試助手顯示界面

圖3 按鍵通過串口調(diào)試助手顯示界面

  此外,在本文所附的實驗程序中,其中與串口通信中調(diào)用了發(fā)送字符函數(shù)與發(fā)送字符串函數(shù)。在沒有仿真器和遇到需要顯示一些提示信息的時候,可以采用串口打印的方式,這樣不僅直觀方便而且不增加其他成本。

  五、總結(jié)

  本文介紹了單片機外接鍵盤的工作原理并給出了實例,通過該文,我們可以知道一個完善的鍵盤控制程序應具備以下功能:

  (1) 檢測有無按鍵按下,并采取硬件或軟件措施,消除鍵盤按鍵機械觸點抖動的影響。

  (2) 有可靠的邏輯處理辦法。每次只處理一個按鍵,其間對任何按鍵的操作對系統(tǒng)不產(chǎn)生影響,且無論按鍵時間有多長,系統(tǒng)僅執(zhí)行按鍵功能程序。

  (3) 準確輸出按鍵值(或鍵號),以滿足按鍵功能要求。對于矩陣鍵盤而言,必須將行線、列線信號配合起來作適當處理,才能確定閉合鍵的位置。

  此外,按鍵的掃描方式有多種,本文中所述的是程序掃描方式,另外常見的還有定時掃描方式和中斷掃描方式,這些方式均可以在本學習板上實現(xiàn),因此希望讀者結(jié)合前幾講的知識,自行進行程序的編寫與調(diào)試。下講將講述單片機動態(tài)驅(qū)動數(shù)碼管原理與實例,敬請期待。

關(guān)鍵詞:跟我學51單片機(四):獨立-矩陣鍵盤應用與設(shè)計

版權(quán)與免責聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務:
賣家服務:
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時間周一至周五
9:00-17:30

關(guān)注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!