新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)系統(tǒng)鍵盤(pán)的設(shè)計(jì)小結(jié)

單片機(jī)系統(tǒng)鍵盤(pán)的設(shè)計(jì)小結(jié)

作者: 時(shí)間:2016-11-22 來(lái)源:網(wǎng)絡(luò) 收藏
一、概述

鍵盤(pán)單片機(jī)應(yīng)用系統(tǒng)中,實(shí)現(xiàn)輸入數(shù)據(jù)、傳送命令的功能,是人工干預(yù)的主要手段。鍵盤(pán)分兩大類(lèi):編碼鍵盤(pán)和非編碼鍵盤(pán)。
編碼鍵盤(pán):由硬件邏輯電路完成必要的鍵識(shí)別工作與可靠性措施。每按一次鍵,鍵盤(pán)自動(dòng)提供被按鍵的讀數(shù),同時(shí)產(chǎn)生一選通脈沖通知微處理器,一般還具有反彈跳和同時(shí)按鍵保護(hù)功能。這種鍵盤(pán)易于使用,但硬件比較復(fù)雜,對(duì)于主機(jī)任務(wù)繁重之情況,采用8279可編程鍵盤(pán)管理接口芯片構(gòu)成編碼式鍵盤(pán)系統(tǒng)是很實(shí)用的方案。
非編碼鍵盤(pán):只簡(jiǎn)單地提供鍵盤(pán)的行列與矩陣,其他操作如鍵的識(shí)別,決定按鍵的讀數(shù)等僅靠軟件完成,故硬件較為簡(jiǎn)單,但占用CPU較多時(shí)間。有:獨(dú)立式按鍵結(jié)構(gòu)、矩陣式按鍵結(jié)構(gòu)。
二、鍵盤(pán)系統(tǒng)設(shè)計(jì)
  首先,確定鍵盤(pán)編碼方案:采用編碼鍵盤(pán)或非編碼鍵盤(pán)。隨后,確定鍵盤(pán)工作方式:采用中斷或查詢(xún)方式輸入鍵操作信息。然后,設(shè)計(jì)硬件電路。非編碼鍵盤(pán)系統(tǒng)中,鍵閉合和鍵釋放的信息的獲取,鍵抖動(dòng)的消除,鍵值查找及一些保護(hù)措施的實(shí)施等任務(wù),均由軟件來(lái)完成。
  (一)非編碼鍵盤(pán)的鍵輸入程序應(yīng)完成的基本任務(wù)
  1.監(jiān)測(cè)有無(wú)鍵按下;鍵的閉合與否,反映在電壓上就是呈現(xiàn)出高電平或低電平,所以通過(guò)電平的高低狀態(tài)的檢測(cè),便可確認(rèn)按鍵按下與否。
2.判斷是哪個(gè)鍵按下。
3.完成鍵處理任務(wù)。
 ?。ǘ碾娐坊蜍浖慕嵌葢?yīng)解決的問(wèn)題
  1.消除抖動(dòng)影響。鍵盤(pán)按鍵所用開(kāi)關(guān)為機(jī)械彈性開(kāi)關(guān),利用了機(jī)械觸點(diǎn)的合、斷作用。由于機(jī)械觸點(diǎn)的的彈性作用,一個(gè)按鍵開(kāi)關(guān)在閉合和斷開(kāi)的瞬間均有一連串的抖動(dòng)

  抖動(dòng)時(shí)間的長(zhǎng)短由按鍵的機(jī)械特性決定,一般為5~10ms,這是一個(gè)很重要的參數(shù)。抖動(dòng)過(guò)程引起電平信號(hào)的波動(dòng),有可能令CPU誤解為多次按鍵操作,從而引起誤處理。
  為了確保CPU對(duì)一次按鍵動(dòng)作只確認(rèn)一次按鍵,必須消除抖動(dòng)的影響。按鍵的消抖,通常有軟件,硬件兩種消除方法。

本文引用地址:http://m.butianyuan.cn/article/201611/319660.htm

這種方法只適用于鍵的數(shù)目較少的情況。
  軟件消抖:如果按鍵較多,硬件消抖將無(wú)法勝任,常采用軟件消抖。通常采用軟件延時(shí)的方法:在第一次檢測(cè)到有鍵按下時(shí),執(zhí)行一段延時(shí)10ms的子程序后,再確認(rèn)電平是否仍保持閉合狀態(tài)電平,如果保持閉合狀態(tài)電平,則確認(rèn)真正有鍵按下,進(jìn)行相應(yīng)處理工作,消除了抖動(dòng)的影響。(這種消除抖動(dòng)影響的軟件措施是切實(shí)可行的。)
  2.采取串鍵保護(hù)措施。串鍵:是指同時(shí)有一個(gè)以上的鍵按下,串鍵會(huì)引起CPU錯(cuò)誤響應(yīng)。
  通常采取的策略:?jiǎn)捂I按下有效,多鍵同時(shí)按下無(wú)效。
3.處理連擊。連擊:是一次按鍵產(chǎn)生多次擊鍵的效果。要有對(duì)按鍵釋放的處理,為了消除連擊,使得一次按鍵只產(chǎn)生一次鍵功能的執(zhí)行(不管一次按鍵持續(xù)的時(shí)間多長(zhǎng),僅采樣一個(gè)數(shù)據(jù))。否則的話(huà),鍵功能程序的執(zhí)行次數(shù)將是不可預(yù)知,由按鍵時(shí)間決定。連擊是可以利用的。連擊對(duì)于用計(jì)數(shù)法設(shè)計(jì)的多功能鍵特別有效。
三、鍵盤(pán)工作方式
單片及應(yīng)用系統(tǒng)中,鍵盤(pán)掃描只是CPU的工作內(nèi)容之一。CPU忙于各項(xiàng)任務(wù)時(shí),如何兼顧鍵盤(pán)的輸入,取決于鍵盤(pán)的工作方式??紤]儀表系統(tǒng)中CPU任務(wù)的份量,來(lái)確定鍵盤(pán)的工作方式。
鍵盤(pán)的工作方式選取的原則是:既要保證能及時(shí)響應(yīng)按鍵的操作,又不過(guò)多的占用CPU的工作時(shí)間。
鍵盤(pán)的工作方式有:查詢(xún)方式(編程掃描,定時(shí)掃描方式)、中斷掃描方式。
  四、鍵盤(pán)電路結(jié)構(gòu)
(一)獨(dú)立式按鍵接口設(shè)計(jì)
獨(dú)立式按鍵就是各按鍵相互獨(dú)立,每個(gè)按鍵單獨(dú)占用一根I/O口線(xiàn),每根I/O口線(xiàn)的按鍵工作狀態(tài)不會(huì)影響其他I/O口線(xiàn)上的工作狀態(tài)。因此,通過(guò)檢測(cè)輸入線(xiàn)的電平狀態(tài)可以很容易判斷哪個(gè)按鍵被按下了。
優(yōu)點(diǎn):電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單。
缺點(diǎn):每個(gè)按鍵需占用一根I/O口線(xiàn),在按鍵數(shù)量較多時(shí),I/O口浪費(fèi)大,電路結(jié)構(gòu)顯得復(fù)雜。
因此,此鍵盤(pán)是用于按鍵較少或操作速度較高的場(chǎng)合。

中斷方式 查詢(xún)方式
也可以用擴(kuò)展I/O口搭接獨(dú)立式按鍵接口電路,可采用8255擴(kuò)展I/O口,用三態(tài)緩沖器擴(kuò)展。這兩種配接方式,都是把按鍵當(dāng)作外部RAM某一工作單元的位來(lái)對(duì)待,通過(guò)讀片外RAM 的方法,識(shí)別按鍵的工作狀態(tài)。
上電路中獨(dú)立式按鍵電路,各按鍵開(kāi)關(guān)均采用了上拉電阻,是為了保證在按鍵斷開(kāi)時(shí),各I/O有確定的高電平。如輸入口線(xiàn)內(nèi)部已有上拉電阻,則外電路的上拉電阻可省去。
(二)矩陣式鍵盤(pán)接口設(shè)計(jì)
矩陣式鍵盤(pán)適用于按鍵數(shù)量較多的場(chǎng)合,由行線(xiàn)和列線(xiàn)組成,按鍵位于行列的交叉點(diǎn)上。節(jié)省I/O口。
  矩陣鍵盤(pán)工作原理:行線(xiàn)通過(guò)上拉電阻接到+5V上。無(wú)按鍵,行線(xiàn)處于高電平狀態(tài),有鍵按下,行線(xiàn)電平狀態(tài)將由與此行線(xiàn)相連的列線(xiàn)電平?jīng)Q定。列線(xiàn)電平為低,則行線(xiàn)電平為低;列線(xiàn)電平為高,則行線(xiàn)電平為高。
  五、雙功能及多功能鍵設(shè)計(jì)
  在單片機(jī)應(yīng)用系統(tǒng)中,為簡(jiǎn)化硬件線(xiàn)路,縮小整個(gè)系統(tǒng)的規(guī)模,總希望設(shè)置最少的按鍵,獲得最多的控制功能。
  矩陣鍵盤(pán)與獨(dú)立式按鍵鍵盤(pán)相比,硬件電路大大節(jié)省??赏ㄟ^(guò)軟件的方法讓一鍵具有多功能。方法:選擇一個(gè)RAM工作單元,對(duì)某一個(gè)按鍵進(jìn)行按鍵計(jì)數(shù),根據(jù)不同計(jì)數(shù)值,轉(zhuǎn)到子程序。這種計(jì)數(shù)多功能鍵最好與顯示器結(jié)合用,以便知道當(dāng)前計(jì)數(shù)值,同時(shí)配合一個(gè)啟動(dòng)鍵。
  復(fù)合鍵是使用軟件實(shí)現(xiàn)一鍵多功能的另一個(gè)途徑。所謂復(fù)合鍵,就是兩個(gè)或兩個(gè)以上的鍵的聯(lián)合,當(dāng)這些鍵同時(shí)按下時(shí),才能執(zhí)行相應(yīng)的功能程序。實(shí)際情況做不到“同時(shí)按下”,他們的時(shí)間差別可以長(zhǎng)到50ms,解決策略是:定義一個(gè)或兩個(gè)引導(dǎo)鍵,這些引導(dǎo)鍵按下時(shí)沒(méi)什么意義,執(zhí)行空操作。引導(dǎo)鍵的例子:微機(jī)鍵盤(pán)上的CTRL、SHIFT、ALT。
缺點(diǎn):一是操作變得復(fù)雜,二是操作時(shí)間變長(zhǎng)。
  多功能鍵的利用,應(yīng)具體情況具體分析。要求速度的場(chǎng)合最好做一鍵一功能。如果系統(tǒng)功能很多,一鍵一功能不現(xiàn)實(shí),可采取一鍵多功能。
  六、功能開(kāi)關(guān)及撥碼盤(pán)接口設(shè)計(jì)
設(shè)計(jì)原因:鍵盤(pán)輸入靈活性大,操縱方便。但某些重要功能或數(shù)據(jù)由鍵盤(pán)輸入,誤操作將產(chǎn)生一些不良后果。因此常設(shè)定靜態(tài)開(kāi)關(guān)的方法來(lái)執(zhí)行這些功能或輸入數(shù)據(jù)。靜態(tài)開(kāi)關(guān)一經(jīng)設(shè)定,將不再改變,一直維持設(shè)定的開(kāi)關(guān)狀態(tài)。通常這些開(kāi)關(guān)狀態(tài)是在單片機(jī)系統(tǒng)加電時(shí)由CPU讀入內(nèi)存RAM的,以后CPU將不再關(guān)注這些開(kāi)關(guān)的狀態(tài),因此,即使加電后,這些開(kāi)關(guān)的狀態(tài)發(fā)生變化,也不會(huì)影響CPU的正常工作,只有在下一次加電時(shí),這些新?tīng)顟B(tài)才能生效。
  第一,功能開(kāi)關(guān):主要是根據(jù)開(kāi)關(guān)的狀態(tài)執(zhí)行一些重要的功能。
  第二,撥碼盤(pán):?jiǎn)纹瑱C(jī)應(yīng)用系統(tǒng)中,有時(shí)要輸入一些控制參數(shù),這些參數(shù)一經(jīng)設(shè)定,將維持不變,除非給系統(tǒng)斷電后重新設(shè)定。這時(shí)使用數(shù)字撥碼盤(pán)既簡(jiǎn)單直觀,又方便可靠。
  七、按鍵介紹
常用的按鍵有三種:機(jī)械觸點(diǎn)式按鍵、導(dǎo)電橡膠式和柔性按鍵(又稱(chēng)觸摸式鍵盤(pán))。
機(jī)械觸點(diǎn)式按鍵是利用彈性使鍵復(fù)位,手感明顯,連線(xiàn)清晰,工藝簡(jiǎn)單,適合單件制造。但是觸點(diǎn)處易侵入灰塵而導(dǎo)致接觸不良,體積相對(duì)較大。
導(dǎo)電橡膠按鍵是利用橡膠的彈性來(lái)復(fù)位,通過(guò)壓制的方法把面板上所有的按鍵制成一塊,體積小,裝配方便,適合批量生產(chǎn)。但是時(shí)間長(zhǎng)了,橡膠老化而使彈力下降,同時(shí)易侵入灰塵。
柔性按鍵是近年來(lái)迅速發(fā)展的一種新型按鍵,可以分為凸球型和平面型兩種。凸球型動(dòng)作幅度觸感明顯,富有立體感,但制造工藝相對(duì)復(fù)雜;平面型幅度微小,觸感較弱,但工藝簡(jiǎn)單,壽命長(zhǎng)。柔性按鍵最大特點(diǎn)是防塵、防潮、耐蝕,外形美觀,裝嵌方便。而且外形和面板的布局、色彩、鍵距可按照整機(jī)的要求來(lái)設(shè)計(jì)。
  八、盤(pán)設(shè)計(jì)實(shí)例
  本次設(shè)計(jì)中,鍵盤(pán)結(jié)構(gòu)采用非編碼鍵盤(pán)系統(tǒng)中的獨(dú)立式按鍵結(jié)構(gòu)。用三態(tài)緩沖器573擴(kuò)展I/O口搭接獨(dú)立式按鍵接口電路,按鍵狀態(tài)由573鎖存。
  鍵盤(pán)工作方式采用定時(shí)掃描方式。采用定時(shí)器T0定時(shí),CPU每隔200ms掃描鍵盤(pán)一次,即通過(guò)讀取573的輸出數(shù)據(jù),識(shí)別按鍵的工作狀態(tài)。
  設(shè)計(jì)中對(duì)于重鍵和連擊的處理:對(duì)于重鍵(串鍵:指同時(shí)有一個(gè)以上的鍵按下),采用軟件提供保護(hù),當(dāng)判斷為一個(gè)以上的鍵按下,則不處理,返回重新進(jìn)行監(jiān)測(cè)。只有監(jiān)測(cè)到一個(gè)鍵按下時(shí),才判斷鍵值,執(zhí)行相應(yīng)鍵處理工作。
  鍵盤(pán)對(duì)液晶顯示的控制是通過(guò)顯示畫(huà)面的頁(yè)碼作為接口參數(shù)來(lái)完成的。在每一頁(yè)中,鍵盤(pán)對(duì)數(shù)據(jù)的修改是通過(guò)對(duì)按鍵次數(shù)的計(jì)算作為接口參數(shù)來(lái)實(shí)現(xiàn)的。
  具體例程如下:
void keyscan()
{ucher data newz ,temp,pat;
if(time_out)
{ACC=MJP;
temp=ACC&0x0f,
if(temp!=0x0f)
{msec(10);
ACC=MJP;
temp=ACC&0x0f
if(temp=0x0f)
{newz=temp;
pat=newz^old;
if(pat)>0)
{old=newz;
keymana();
}

else;
}
else;
}
elsr;
old=temp;
time_out=0
}
esel;
}
  九、結(jié)語(yǔ)
  鍵盤(pán)是單片機(jī)系統(tǒng)設(shè)計(jì)中一種主要的信息輸入接口,合理的設(shè)計(jì),不僅可以節(jié)省系統(tǒng)的設(shè)計(jì)成本,更可使儀器設(shè)備的操作變得更為簡(jiǎn)單、方便,很大程度上提高系統(tǒng)綜合性能。



關(guān)鍵詞: 單片機(jī)系統(tǒng)鍵

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉