一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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

一、原理簡(jiǎn)介

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

1. 按鍵的分類(lèi)

一般來(lái)說(shuō),按鍵按照結(jié)構(gòu)原理可分為兩類(lèi),一類(lèi)是觸點(diǎn)式開(kāi)關(guān)按鍵,如機(jī)械式開(kāi)關(guān)、導(dǎo)電橡膠式開(kāi)關(guān)等;另一類(lèi)是無(wú)觸點(diǎn)式開(kāi)關(guān)按鍵,如電氣式按鍵,磁感應(yīng)按鍵等。前者造價(jià)低,后者壽命長(zhǎng)。目前,微機(jī)系統(tǒng)中最常見(jiàn)的是觸點(diǎn)式開(kāi)關(guān)按鍵(如本學(xué)習(xí)板上所采用按鍵)。

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

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

2. 按鍵的輸入原理

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

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

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

圖1

從按鍵的去抖流程圖我們可以知道,檢測(cè)到有鍵按下時(shí),應(yīng)延時(shí)等待一段時(shí)間(可調(diào)用一個(gè)5ms~10ms的延遲子程序),然后再次判斷按鍵是否被按下,若此時(shí)判斷按鍵仍被按下,則認(rèn)為按鍵有效,若此時(shí)判斷按鍵沒(méi)有被按下,說(shuō)明為按鍵抖動(dòng)或干擾,應(yīng)返回重新判斷。鍵盤(pán)真正被按下才可進(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)沒(méi)有按鍵按下的時(shí)候,I/O 輸入的電平是高電平,當(dāng)有按鍵按下的時(shí)候,I/O 輸入的電平是低電平。

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

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

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

三、程序設(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)

}

}

程序說(shuō)明:

(1)定義按鍵管腳。

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

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

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

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

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

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

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

……

#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)

}

}

}

}

程序說(shuō)明:

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

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

(3)按鍵掃描程序。

(4)定義兩個(gè)臨時(shí)變量key,i。

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

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

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

(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)象

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

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

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

五、總結(jié)

本文介紹了單片機(jī)外接鍵盤(pán)的工作原理并給出了實(shí)例,通過(guò)該文,我們可以知道一個(gè)完善的鍵盤(pán)控制程序應(yīng)具備以下功能:

(1) 檢測(cè)有無(wú)按鍵按下,并采取硬件或軟件措施,消除鍵盤(pán)按鍵機(jī)械觸點(diǎn)抖動(dòng)的影響。

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

(3) 準(zhǔn)確輸出按鍵值(或鍵號(hào)),以滿足按鍵功能要求。對(duì)于矩陣鍵盤(pán)而言,必須將行線、列線信號(hào)配合起來(lái)作適當(dāng)處理,才能確定閉合鍵的位置。

此外,按鍵的掃描方式有多種,本文中所述的是程序掃描方式,另外常見(jiàn)的還有定時(shí)掃描方式和中斷掃描方式,這些方式均可以在本學(xué)習(xí)板上實(shí)現(xiàn),因此希望讀者結(jié)合前幾講的知識(shí),自行進(jìn)行程序的編寫(xiě)與調(diào)試。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 電路
    +關(guān)注

    關(guān)注

    173

    文章

    6011

    瀏覽量

    174143
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6058

    文章

    44821

    瀏覽量

    644704

原文標(biāo)題:跟我學(xué)51單片機(jī)(四):獨(dú)立-矩陣鍵盤(pán)應(yīng)用與設(shè)計(jì)

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何實(shí)現(xiàn)基于單片機(jī)鍵盤(pán)檢測(cè)

    鍵盤(pán)單片機(jī)與用戶交互設(shè)備之一,用戶通過(guò)鍵盤(pán)輸入數(shù)據(jù)或命令到單片機(jī)。最簡(jiǎn)單的鍵盤(pán)僅有一個(gè)按鍵,復(fù)雜一些的
    的頭像 發(fā)表于 10-31 14:39 ?2401次閱讀
    如何實(shí)現(xiàn)基于<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>鍵盤(pán)</b>檢測(cè)

    單片機(jī)鍵盤(pán)電路的優(yōu)化

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

    單片機(jī)鍵盤(pán)掃描之狀態(tài)機(jī)實(shí)現(xiàn)

    單片機(jī)鍵盤(pán)掃描之狀態(tài)機(jī)實(shí)現(xiàn):在編寫(xiě)單片機(jī)程序的過(guò)程中,鍵盤(pán)作為一種人機(jī)接口的實(shí)現(xiàn)方式,是很常用的。而一般的實(shí)現(xiàn)方法大概有:1、
    發(fā)表于 09-26 10:37 ?205次下載

    單片機(jī)鍵盤(pán)上的應(yīng)用

    單片機(jī)鍵盤(pán)上的應(yīng)用 鍵盤(pán)擔(dān)負(fù)著向系統(tǒng)發(fā)出命令和查詢(xún)系統(tǒng)工作狀態(tài)的重任。由于各種單片機(jī)所提供的片內(nèi)外資源不同,所以在進(jìn)行鍵盤(pán)擴(kuò)展時(shí)其硬件
    發(fā)表于 03-29 14:34 ?39次下載

    51單片機(jī)鍵盤(pán)接口電路(含源程序)

    鍵盤(pán)是由若干按鈕組成的開(kāi)關(guān)矩陣,它是單片機(jī)系統(tǒng)中最常用的輸入設(shè)備,用戶能通過(guò)鍵盤(pán)向計(jì)算機(jī)輸入指令、地址和數(shù)據(jù)。一般單片機(jī)系統(tǒng)中采和非編碼鍵盤(pán)
    發(fā)表于 08-24 14:21 ?8711次閱讀
    51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>鍵盤(pán)</b>接口<b class='flag-5'>電路</b>(含源程序)

    PIC單片機(jī)鍵盤(pán)電路四例源程序

    PIC單片機(jī)鍵盤(pán)電路四例源程序,需要的看看,免積分
    發(fā)表于 11-02 10:46 ?22次下載

    基于單片機(jī)鍵盤(pán)接口的設(shè)計(jì)與實(shí)現(xiàn)

    文章詳細(xì)介紹了基于單片機(jī)鍵盤(pán)接口的設(shè)計(jì)與實(shí)現(xiàn)。實(shí)際使用結(jié)果表明,該鍵盤(pán)接口電路設(shè)計(jì)簡(jiǎn)單,鍵盤(pán)處理程序運(yùn)行穩(wěn)定可靠,具有推廣價(jià)值。
    發(fā)表于 03-28 17:35 ?9次下載

    節(jié)約單片機(jī)端口資源的鍵盤(pán)電路

    I/0 端 口是單片機(jī)實(shí)現(xiàn)對(duì)目標(biāo)控制的端口,一般小型單片機(jī)的 I/0 端口都十分寶貴。文中介紹了一種可節(jié)省單片機(jī)I/O端口的鍵盤(pán)電路,分析了
    發(fā)表于 03-29 10:21 ?13次下載

    一種新的單片機(jī)和AT機(jī)通用鍵盤(pán)的接口

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

    單片機(jī)鍵盤(pán)掃描小實(shí)驗(yàn)

    單片機(jī)鍵盤(pán)掃描小實(shí)驗(yàn)
    發(fā)表于 01-04 11:30 ?0次下載

    單片機(jī)控制系統(tǒng)鍵盤(pán)顯示電路設(shè)計(jì)

    單片機(jī)控制系統(tǒng)鍵盤(pán)顯示電路設(shè)計(jì)
    發(fā)表于 01-23 20:48 ?24次下載

    單片機(jī)匯編鍵盤(pán)掃描程序

    單片機(jī)匯編鍵盤(pán)掃描程序
    發(fā)表于 10-16 09:34 ?0次下載

    單片機(jī)8x8矩陣鍵盤(pán)原理說(shuō)明

    本文主要介紹了介紹基于51單片機(jī)接矩陣鍵盤(pán)原理以及單片機(jī)8x8矩陣鍵盤(pán)原理說(shuō)明,另外還詳細(xì)的附上了單片機(jī)8x8矩陣
    的頭像 發(fā)表于 02-24 16:14 ?2.7w次閱讀
    <b class='flag-5'>單片機(jī)</b>8x8矩陣<b class='flag-5'>鍵盤(pán)</b>原理說(shuō)明

    如何設(shè)計(jì)一個(gè)節(jié)約單片機(jī)端口資源的鍵盤(pán)電路

    鍵盤(pán)電路單片機(jī)應(yīng)用系統(tǒng)最常用的人機(jī)接口,往往要占用較多的I/O端口,利用本文介紹的電路,可以最大限度地減少鍵盤(pán)
    的頭像 發(fā)表于 05-05 12:08 ?4503次閱讀
    如何設(shè)計(jì)一個(gè)節(jié)約<b class='flag-5'>單片機(jī)</b>端口資源的<b class='flag-5'>鍵盤(pán)</b><b class='flag-5'>電路</b>

    單片機(jī)鍵盤(pán)檢測(cè)與應(yīng)用

    非編碼鍵盤(pán)通常又分為獨(dú)立鍵盤(pán)和矩陣鍵盤(pán)兩大類(lèi)。所謂獨(dú)立鍵盤(pán)是指按鍵在與單片機(jī)相連時(shí),每一個(gè)按鍵都與一個(gè)
    的頭像 發(fā)表于 09-18 16:34 ?5555次閱讀