衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

單片機外接鍵盤電路

GReq_mcu168 ? 來源:未知 ? 作者:胡薇 ? 2018-05-22 11:21 ? 次閱讀

一、原理簡介

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

1. 按鍵的分類

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

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

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

2. 按鍵的輸入原理

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

3. 按鍵的特點與去抖

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

圖1

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

二、電路詳解

電路圖如圖2 所示。

圖2

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

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

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

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

三、程序設計

本文設計實例關鍵程序如下。

獨立按鍵程序

……

#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)延時一段時間,去抖作業。

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

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

(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)將掃描時用到的管腳四種輸出電平狀態定義成一個數組。

(3)按鍵掃描程序。

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

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

(6)如果此時管腳狀態電平發生變化。

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

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

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

(10)再延時一段時間。

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

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

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

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

(15)返回鍵值。

四、調試要點與實驗現象

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

圖3 按鍵通過串口調試助手顯示界面

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

五、總結

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

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

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

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

此外,按鍵的掃描方式有多種,本文中所述的是程序掃描方式,另外常見的還有定時掃描方式和中斷掃描方式,這些方式均可以在本學習板上實現,因此希望讀者結合前幾講的知識,自行進行程序的編寫與調試。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 電路
    +關注

    關注

    172

    文章

    5966

    瀏覽量

    172947
  • 單片機
    +關注

    關注

    6043

    文章

    44622

    瀏覽量

    638518

原文標題:跟我學51單片機(四):獨立-矩陣鍵盤應用與設計

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何實現基于單片機鍵盤檢測

    鍵盤單片機與用戶交互設備之一,用戶通過鍵盤輸入數據或命令到單片機。最簡單的鍵盤僅有一個按鍵,復雜一些的
    的頭像 發表于 10-31 14:39 ?2033次閱讀
    如何實現基于<b class='flag-5'>單片機</b>的<b class='flag-5'>鍵盤</b>檢測

    單片機鍵盤電路的優化

    單片機的I/O口一般是雙向的,既可以做輸入,也可以做輸出。以51 系列為例, 其P0、P1、P2、P3 均為雙向口,且可位操作。單片機鍵盤電路主要有矩陣掃描和單鍵
    發表于 05-16 13:19 ?69次下載

    單片機鍵盤掃描之狀態實現

    單片機鍵盤掃描之狀態實現:在編寫單片機程序的過程中,鍵盤作為一種人機接口的實現方式,是很常用的。而一般的實現方法大概有:1、
    發表于 09-26 10:37 ?205次下載

    單片機鍵盤上的應用

    單片機鍵盤上的應用 鍵盤擔負著向系統發出命令和查詢系統工作狀態的重任。由于各種單片機所提供的片內外資源不同,所以在進行鍵盤擴展時其硬件
    發表于 03-29 14:34 ?39次下載

    單片機教程二十四:單片機鍵盤接口程序設計

    單片機教程二十四:單片機鍵盤接口程序設計 鍵盤是由若干按鈕組成的開關矩陣,它是單片機系統中最常用的輸入設備,用戶能通過鍵
    發表于 05-15 23:19 ?1334次閱讀
    <b class='flag-5'>單片機</b>教程二十四:<b class='flag-5'>單片機</b><b class='flag-5'>鍵盤</b>接口程序設計

    PIC單片機鍵盤電路四例源程序

    PIC單片機鍵盤電路四例源程序,需要的看看,免積分
    發表于 11-02 10:46 ?22次下載

    基于單片機鍵盤接口的設計與實現

    文章詳細介紹了基于單片機鍵盤接口的設計與實現。實際使用結果表明,該鍵盤接口電路設計簡單,鍵盤處理程序運行穩定可靠,具有推廣價值。
    發表于 03-28 17:35 ?9次下載

    節約單片機端口資源的鍵盤電路

    I/0 端 口是單片機實現對目標控制的端口,一般小型單片機的 I/0 端口都十分寶貴。文中介紹了一種可節省單片機I/O端口的鍵盤電路,分析了
    發表于 03-29 10:21 ?13次下載

    一種新的單片機和AT通用鍵盤的接口

    本文介紹一種C505CA單片機與AT通用鍵盤的新的接口電路,該接口電路既能接收AT
    發表于 03-30 17:02 ?9次下載

    單片機實驗--鍵盤掃描

    單片機實驗--鍵盤掃描
    發表于 12-23 02:00 ?0次下載

    單片機控制系統鍵盤顯示電路設計

    單片機控制系統鍵盤顯示電路設計
    發表于 01-23 20:48 ?24次下載

    單片機匯編鍵盤掃描程序

    單片機匯編鍵盤掃描程序
    發表于 10-16 09:34 ?0次下載

    單片機8x8矩陣鍵盤原理說明

    本文主要介紹了介紹基于51單片機接矩陣鍵盤原理以及單片機8x8矩陣鍵盤原理說明,另外還詳細的附上了單片機8x8矩陣
    的頭像 發表于 02-24 16:14 ?2.6w次閱讀
    <b class='flag-5'>單片機</b>8x8矩陣<b class='flag-5'>鍵盤</b>原理說明

    如何設計一個節約單片機端口資源的鍵盤電路

    鍵盤電路單片機應用系統最常用的人機接口,往往要占用較多的I/O端口,利用本文介紹的電路,可以最大限度地減少鍵盤
    的頭像 發表于 05-05 12:08 ?4370次閱讀
    如何設計一個節約<b class='flag-5'>單片機</b>端口資源的<b class='flag-5'>鍵盤</b><b class='flag-5'>電路</b>

    單片機鍵盤檢測與應用

    非編碼鍵盤通常又分為獨立鍵盤和矩陣鍵盤兩大類。所謂獨立鍵盤是指按鍵在與單片機相連時,每一個按鍵都與一個
    的頭像 發表于 09-18 16:34 ?5411次閱讀
    金地太阳城二手房| 百家乐桌布专业| 百家乐官网投注平台信誉排名| 大发888真人网| 缅甸百家乐官网博彩真假| 大发扑克下载| 二八杠麻将做记号| 百家乐赌博现金网| 百家乐中的概率| 百家乐官网娱乐网会员注册| 百家乐官网视频无法显示| 金赞娱乐| 棋牌游戏中心| 威尼斯人娱乐平台博彩投注平| 百家乐是怎样算牌| 百家乐在发牌技巧| 赌场百家乐官网信誉| 真钱赌博网站| 大发888体育竞技| 澳门赌百家乐的玩法技巧和规则| 百家乐翻天粤语| 百家乐永利赌场娱乐网规则| 百家乐小钱赢钱| 玩百家乐有几种公式| 百家乐黄金城游戏大厅| 百家乐信息| 网上百家乐骗钱| 百家乐智能系统| 赌神网百家乐的玩法技巧和规则 | 百家乐官网专打单跳投注法| 缅甸百家乐官网博彩| 百家乐官网赢率| 百家乐官网说明| 百家乐官网专业术语| 东莞百家乐官网的玩法技巧和规则| 百家乐官网博彩安全吗| 赌博百家乐官网趋势把握| 永利百家乐官网娱乐网| 免费百家乐官网的玩法技巧和规则 | 百家乐桌14人| 百家乐视频交友|