單片機(jī)外接鍵盤電路

一碌尔、原理簡介

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

1. 按鍵的分類

一般來說,按鍵按照結(jié)構(gòu)原理可分為兩類,一類是觸點(diǎn)式開關(guān)按鍵种远,如機(jī)械式開關(guān)妙同、導(dǎo)電橡膠式開關(guān)等限次;另一類是無觸點(diǎn)式開關(guān)按鍵,如電氣式按鍵,磁感應(yīng)按鍵等柏卤。前者造價(jià)低钧唐,后者壽命長酸舍。目前,微機(jī)系統(tǒng)中最常見的是觸點(diǎn)式開關(guān)按鍵(如本學(xué)習(xí)板上所采用按鍵)。
  按鍵按照接口原理又可分為編碼鍵盤與非編碼鍵盤兩類,這兩類鍵盤的主要區(qū)別是識(shí)別鍵符及給出相應(yīng)鍵碼的方法。編碼鍵盤主要是用硬件來實(shí)現(xiàn)對(duì)鍵的識(shí)別,非編碼鍵盤主要是由軟件來實(shí)現(xiàn)鍵盤的識(shí)別柒桑。
  全編碼鍵盤由專門的芯片實(shí)現(xiàn)識(shí)鍵及輸出相應(yīng)的編碼,一般還具有去抖動(dòng)和多鍵、竄鍵等保護(hù)電路,這種鍵盤使用方便该溯,硬件開銷大氯庆,一般的小型嵌入式應(yīng)用系統(tǒng)較少采用。非編碼鍵盤按連接方式可分為獨(dú)立式和矩陣式兩種洞豁,其它工作都主要由軟件完成志电。由于其經(jīng)濟(jì)實(shí)用,較多地應(yīng)用于單片機(jī)系統(tǒng)中(本學(xué)習(xí)板也采用非編碼鍵盤)咧叭。

2. 按鍵的輸入原理

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

3. 按鍵的特點(diǎn)與去抖

機(jī)械式按鍵再按下或釋放時(shí)蔫敲,由于機(jī)械彈性作用的影響尽狠,通常伴隨有一定時(shí)間的觸點(diǎn)機(jī)械抖動(dòng),然后其觸點(diǎn)才穩(wěn)定下來接癌。其抖動(dòng)過程如圖1(a) 所示,抖動(dòng)時(shí)間的長短與開關(guān)的機(jī)械特性有關(guān)座享,一般為5 ~ 10 ms。從圖中可以看出缀雳,在觸點(diǎn)抖動(dòng)期間檢測按鍵的通與斷狀態(tài),可能導(dǎo)致判斷出錯(cuò)。即按鍵一次按下或釋放被錯(cuò)誤地認(rèn)為是多次操作刊侯,這種情況是不允許出現(xiàn)的辜羊。為了克服按鍵觸點(diǎn)機(jī)械抖動(dòng)所致的檢測誤判,必須采取去抖動(dòng)措施它抱,可從硬件、軟件兩方面予以考慮克锣。一般來說巾乳,在鍵數(shù)較少時(shí)肢础,可采用硬件去抖,而當(dāng)鍵數(shù)較多時(shí)迹冤,采用軟件去抖泡徙。( 本學(xué)習(xí)板采用軟件去抖方式)。軟件去抖的流程圖如圖1(b) 所示苏章。


圖1

從按鍵的去抖流程圖我們可以知道,檢測到有鍵按下時(shí)兔毙,應(yīng)延時(shí)等待一段時(shí)間(可調(diào)用一個(gè)5ms~10ms的延遲子程序)叙量,然后再次判斷按鍵是否被按下酸些,若此時(shí)判斷按鍵仍被按下,則認(rèn)為按鍵有效檐蚜,若此時(shí)判斷按鍵沒有被按下魄懂,說明為按鍵抖動(dòng)或干擾,應(yīng)返回重新判斷闯第。鍵盤真正被按下才可進(jìn)行相應(yīng)的處理程序市栗,此時(shí)基本就算實(shí)現(xiàn)了按鍵輸入,進(jìn)一步的話可以判斷按鍵是否釋放咳短。

二填帽、電路詳解

電路圖如圖2 所示。


圖2

從圖2 中可知獨(dú)立式按鍵采用每個(gè)按鍵單獨(dú)占用一根I/O 口線結(jié)構(gòu)咙好。當(dāng)按下和釋放按鍵時(shí)篡腌,輸入到單片機(jī)I/O 端口的電平是不一樣的,因此可以根據(jù)不同端口電平的變化判斷是否有按鍵按下以及是哪一個(gè)按鍵按下勾效。從圖2(a) 中可以看出嘹悼,按鍵和單片機(jī)引腳連接并加了上拉電阻,這樣當(dāng)沒有按鍵按下的時(shí)候葵第,I/O 輸入的電平是高電平绘迁,當(dāng)有按鍵按下的時(shí)候,I/O 輸入的電平是低電平卒密。
  雖然獨(dú)立式按鍵電路配置靈活缀台,軟件結(jié)構(gòu)簡單,但每個(gè)按鍵必須占用一根I/O 口線哮奇,因此膛腐,在按鍵較多時(shí),I/O 口線浪費(fèi)較大鼎俘。對(duì)于比較復(fù)雜的系統(tǒng)或按鍵比較多的場合哲身,可以用到矩陣鍵盤,圖2(b) 中所示的為4×4的矩陣式鍵盤贸伐,其他矩陣式鍵盤的設(shè)計(jì)方法類似勘天。
  4×4 的矩陣式鍵盤由4 根行線和4 根列線交叉構(gòu)成,按鍵位于行列的交叉點(diǎn)上,這樣就構(gòu)成了16 個(gè)按鍵脯丝。其中交叉點(diǎn)的行列線是不連接的商膊,當(dāng)按鍵按下的時(shí)候,此交叉點(diǎn)處的行線和列線導(dǎo)通宠进。圖2(b) 行線通過上拉電阻接到VCC 上晕拆。當(dāng)無鍵按下時(shí),行線處于高電平狀態(tài)材蹬;當(dāng)有鍵按下時(shí)实幕,行、列線在交點(diǎn)導(dǎo)通堤器,此時(shí)昆庇,行線電平將由與此行線相連的列線電平?jīng)Q定。這是識(shí)別按鍵是否按下的關(guān)鍵闸溃。然而凰锡,矩陣鍵盤中的每條行線與4 條列線相交,交點(diǎn)的按鍵按下與否均影響該鍵所在行線和列線的電平圈暗,各按鍵間將相互影響掂为,鍵分析時(shí)必須將行線、列線信號(hào)配合起來作適當(dāng)處理员串,才能確定閉合鍵的位置勇哗。
  值得注意的是本文介紹的矩陣鍵盤,在傳統(tǒng)的矩陣鍵盤的輸出端加了一個(gè)四輸入與門芯片74HC21寸齐。當(dāng)四路輸入有一個(gè)為低電平的時(shí)候欲诺,輸出為低電平。將74HC21 的輸出端接到單片機(jī)的外部中斷0(P32 管腳)上渺鹦,這樣在實(shí)時(shí)性要求較高的情況下扰法,設(shè)P00~P03 為全低等待按鍵觸發(fā),當(dāng)任何一個(gè)按鍵按下的情況下毅厚,系統(tǒng)都會(huì)進(jìn)入中斷服務(wù)程序塞颁,提高了鍵盤響應(yīng)時(shí)間,在系統(tǒng)實(shí)時(shí)性要求較高的情況下非常實(shí)用吸耿。

三祠锣、程序設(shè)計(jì)

本文設(shè)計(jì)實(shí)例關(guān)鍵程序如下。
  獨(dú)立按鍵程序

  ……
  #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)如果此時(shí)管腳所連接按鍵被按下边臼。
(5)延時(shí)一段時(shí)間磷斧,去抖作業(yè)动分。
(6)如果此時(shí)按鍵仍然被按下馋评,此時(shí)按鍵有效。
(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]) //不等于ox( 11)
  {
  delaykey(10)糊渊; ( 12)
  key=KEYIO; ( 13)
  while(KEYIO==key); ( 14)
  return(key)慧脱; ( 15)
  }
  }
  }
  }

程序說明:

(1)定義矩陣鍵盤管腳渺绒。
(2)將掃描時(shí)用到的管腳四種輸出電平狀態(tài)定義成一個(gè)數(shù)組。//確定第幾列數(shù)
(3)按鍵掃描程序菱鸥。
(4)定義兩個(gè)臨時(shí)變量key,i宗兼。
(5)讓鍵盤管腳的高四位輸出高電平,低四位為低電平氮采,為掃描按鍵準(zhǔn)備殷绍。
(6)如果此時(shí)管腳狀態(tài)電平發(fā)生變化。
(7)將之前定義的數(shù)組中的值賦予管腳鹊漠,開始逐次掃描主到。
(8)延時(shí)一段時(shí)間,去抖躯概。
(9)輸出掃描按鍵的電平登钥。
(10)再延時(shí)一段時(shí)間。
(11)如果此時(shí)按鍵管腳電平依舊不是輸出的默認(rèn)電平娶靡,表示有鍵按下牧牢。
(12)延時(shí)一段時(shí)間,讓電平穩(wěn)定姿锭。
(13)讀取當(dāng)前按鍵管腳電平结执,即鍵值。
(14)等待按鍵抬起艾凯,死循環(huán)献幔,如果按鍵一直按下則一直等待。
(15)返回鍵值趾诗。

四蜡感、調(diào)試要點(diǎn)與實(shí)驗(yàn)現(xiàn)象

接好硬件蹬蚁,通過冷啟動(dòng)方式將程序所生成的。hex文件下載到單片機(jī)運(yùn)行后郑兴,打開串口調(diào)試助手軟件犀斋,設(shè)置好波特率9600,復(fù)位單片機(jī)情连,然后按下板上的4×4按鍵中的任意一個(gè)叽粹,并注意觀串口調(diào)試助手上的顯示。(見圖3)却舀,可以觀察到在接收窗口有按鍵的數(shù)據(jù)顯示虫几。


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

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

五、總結(jié)

本文介紹了單片機(jī)外接鍵盤的工作原理并給出了實(shí)例术裸,通過該文倘是,我們可以知道一個(gè)完善的鍵盤控制程序應(yīng)具備以下功能:
  (1) 檢測有無按鍵按下袭艺,并采取硬件或軟件措施辨绊,消除鍵盤按鍵機(jī)械觸點(diǎn)抖動(dòng)的影響。
 ∑ケ怼(2) 有可靠的邏輯處理辦法门坷。每次只處理一個(gè)按鍵,其間對(duì)任何按鍵的操作對(duì)系統(tǒng)不產(chǎn)生影響袍镀,且無論一次按鍵時(shí)間有多長默蚌,系統(tǒng)僅執(zhí)行一次按鍵功能程序。
 ∥邸(3) 準(zhǔn)確輸出按鍵值(或鍵號(hào))绸吸,以滿足按鍵功能要求。對(duì)于矩陣鍵盤而言设江,必須將行線锦茁、列線信號(hào)配合起來作適當(dāng)處理,才能確定閉合鍵的位置叉存。
  此外码俩,按鍵的掃描方式有多種,本文中所述的是程序掃描方式歼捏,另外常見的還有定時(shí)掃描方式和中斷掃描方式稿存,這些方式均可以在本學(xué)習(xí)板上實(shí)現(xiàn)笨篷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瓣履,隨后出現(xiàn)的幾起案子率翅,更是在濱河造成了極大的恐慌,老刑警劉巖袖迎,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冕臭,死亡現(xiàn)場離奇詭異,居然都是意外死亡燕锥,警方通過查閱死者的電腦和手機(jī)辜贵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脯宿,“玉大人,你說我怎么就攤上這事泉粉×梗” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵嗡靡,是天一觀的道長跺撼。 經(jīng)常有香客問我,道長讨彼,這世上最難降的妖魔是什么歉井? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮哈误,結(jié)果婚禮上哩至,老公的妹妹穿的比我還像新娘。我一直安慰自己蜜自,他們只是感情好菩貌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著重荠,像睡著了一般箭阶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上戈鲁,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天仇参,我揣著相機(jī)與錄音,去河邊找鬼婆殿。 笑死诈乒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的婆芦。 我是一名探鬼主播抓谴,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼暮蹂,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了癌压?” 一聲冷哼從身側(cè)響起仰泻,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎滩届,沒想到半個(gè)月后集侯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡帜消,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年棠枉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泡挺。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辈讶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出娄猫,到底是詐尸還是另有隱情贱除,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布媳溺,位于F島的核電站月幌,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏悬蔽。R本人自食惡果不足惜扯躺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蝎困。 院中可真熱鬧录语,春花似錦、人聲如沸禾乘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盖袭。三九已至失暂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鳄虱,已是汗流浹背弟塞。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拙已,地道東北人决记。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像倍踪,于是被迫代替她去往敵國和親系宫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子索昂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一椒惨、基本知識(shí) 1. 按鍵分類與輸入原理 按鍵按照結(jié)構(gòu)原理科分為兩類,一類是觸點(diǎn)式開關(guān)按鍵潮罪,如機(jī)械式開關(guān)康谆、導(dǎo)電橡膠式...
    Murrey_Xiao閱讀 14,100評(píng)論 1 8
  • 前言 拋開工作,以電子愛好者的身份嫉到,單片機(jī)玩多了都會(huì)想著在單片機(jī)的外圍設(shè)備玩出一些花樣來沃暗。這其中首先想到的就是“升...
    淡定的H羊閱讀 66,433評(píng)論 16 57
  • (兩年前的文章)原作者沒有署名,在此標(biāo)明轉(zhuǎn)載文章何恶,源自QQ空間日志孽锥,侵刪 1:主板故障 2:顯卡故障 3:聲卡故障...
    aclihui閱讀 2,171評(píng)論 0 10
  • 1、嵌入式系統(tǒng)的定義 (1)定義:以應(yīng)用為中心细层,以計(jì)算機(jī)技術(shù)為基礎(chǔ)惜辑,軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能今艺、可靠性韵丑、成本...
    榮卓然閱讀 1,820評(píng)論 0 5
  • 楚靈王在州來狩獵閱兵爵卒,駐扎在穎尾虚缎。派了一波人包圍了徐國來威脅吳國。楚靈王自己則作為后援部隊(duì)駐扎在乾谿钓株。天下大雪实牡,靈...
    耑意兒閱讀 799評(píng)論 0 0