《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 一種頻率編碼鍵盤的設(shè)計(jì)與實(shí)現(xiàn)

一種頻率編碼鍵盤的設(shè)計(jì)與實(shí)現(xiàn)

2009-03-09
作者:徐元軍 陶 然 王衛(wèi)江

  摘? 要: 基于頻率編碼的思想,設(shè)計(jì)了一種頻率編碼鍵盤,分析了電路的工作機(jī)理,并給出了有關(guān)的匯編程序,從而達(dá)到了僅用一條I/O線識(shí)別多個(gè)按鍵的目的,簡(jiǎn)化了單片機(jī)應(yīng)用系統(tǒng)中的鍵盤接口,節(jié)約了單片機(jī)有限的I/O引腳資源。

  關(guān)鍵詞: 頻率編碼? 單片機(jī)? I/O設(shè)備

?

  單片機(jī)在消費(fèi)電子、自動(dòng)化儀表、工業(yè)控制等領(lǐng)域已得到廣泛的應(yīng)用,它以靈活的設(shè)計(jì)、低廉的成本、微小的功耗在電子器件市場(chǎng)中占有十分重要的地位。今天越來越多的芯片廠商在不遺余力地競(jìng)爭(zhēng)這個(gè)應(yīng)用空間,如INTEL、NEC、MICROCHIP等公司都已形成了自己強(qiáng)大的產(chǎn)品線,給產(chǎn)品的設(shè)計(jì)帶來了越來越多的選擇。

  幾乎在每一個(gè)單片機(jī)應(yīng)用系統(tǒng)中,鍵盤都是必備的人機(jī)交互的主要輸入設(shè)備。傳統(tǒng)的按鍵識(shí)別方法是采用編碼式鍵盤芯片,如8279;或采用軟件控制多條I/O線掃描的方法。這種方法用到的I/O引腳數(shù)常常在4條以上。然而單片機(jī)I/O引腳資源有限,特別是在引腳數(shù)少、功耗低、系統(tǒng)成本敏感的場(chǎng)合,成本和功耗決定了設(shè)計(jì)人員不可能另外擴(kuò)充I/O空間,如采用ATMEL公司的AT89C1051/AT89C2051及AT90SXX系列、MICROCHIP公司的PIC16CXX系列的單片機(jī)時(shí)就是這樣。如何利用有限的I/O資源實(shí)現(xiàn)多個(gè)按鍵的識(shí)別是經(jīng)常遇到的問題。作者根據(jù)實(shí)際的開發(fā)經(jīng)驗(yàn),結(jié)合單片機(jī)自身的特點(diǎn),提出一種利用單片機(jī)的定時(shí)器/計(jì)數(shù)器和測(cè)頻原理、用一個(gè)I/O引腳實(shí)現(xiàn)多個(gè)按鍵識(shí)別的方法,并給出了 MCS-51單片機(jī)的匯編源程序。由于在各種型號(hào)的單片機(jī)中,定時(shí)器/計(jì)數(shù)器幾乎是一種必備的配置資源,因此其原理很容易移植到其它型號(hào)的單片機(jī)應(yīng)用系統(tǒng)中。

1 硬件電路的分析

  頻率編碼式鍵盤的硬件電路如圖1所示。由NE555定時(shí)器組成的多諧振蕩器產(chǎn)生一定頻率的方波[1],單片機(jī)利用其定時(shí)器/計(jì)數(shù)器對(duì)這個(gè)方波的頻率進(jìn)行測(cè)量。NE555定時(shí)器組成的多諧振蕩器的放電時(shí)間常數(shù)為:τ=RS·C1,而充電時(shí)間常數(shù)為:τ=(Ri+RS)C1,(i=1,2,···,n),n為按鍵的數(shù)目。

?

?

??? 當(dāng)不同的按鍵按下時(shí),NE555定時(shí)器組成的多諧振蕩器的充電時(shí)間常數(shù)不同,放電時(shí)間常數(shù)不變,因而輸出方波的頻率也不同,使得不同的鍵按下時(shí)對(duì)應(yīng)不同的輸出頻率。只要準(zhǔn)確地測(cè)量出NE555定時(shí)器的輸出頻率,就可以精確地識(shí)別出被按下的按鍵號(hào),這就是頻率編碼式鍵盤設(shè)計(jì)的理論依據(jù)。

  在實(shí)際應(yīng)用中,考慮到電阻阻值和電容容量的分散性以及電路的時(shí)間穩(wěn)定性和溫度穩(wěn)定性,在滿足單片機(jī)測(cè)量頻率的分辨率和量程的基礎(chǔ)上,應(yīng)盡量將各個(gè)鍵之間的頻率間隔拉大。這樣即使每一按鍵輸出的頻率有一定的誤差,但只要保證輸出的各個(gè)頻率互不相同,就可以通過軟件去判斷被測(cè)的頻率究竟落在了哪一個(gè)范圍,而不是判斷落在了哪一個(gè)頻點(diǎn)上。這樣使設(shè)計(jì)的軟件對(duì)電路產(chǎn)生的誤差具有一定的適應(yīng)性,從而擺脫了本電路對(duì)元器件參數(shù)的高度敏感性,大大加快了電路調(diào)試和批量生產(chǎn)的速度。

2 匯編程序的設(shè)計(jì)

  在作者設(shè)計(jì)的系統(tǒng)中,采用AT89C2051單片機(jī),外接晶振頻率為12MHz。單片機(jī)僅具有15個(gè)I/O線,由于系統(tǒng)采用電池供電,需要進(jìn)行低功耗設(shè)計(jì)。而采用本電路后,簡(jiǎn)化了系統(tǒng)的硬件,滿足了低功耗的要求,另外的14 個(gè)I/O線能滿足一般的便攜式應(yīng)用。本系統(tǒng)用到8個(gè)按鍵,鍵盤電路的中C1=C2=0.01μF,RS=150Ω,其余的阻容值和設(shè)計(jì)的中心頻率如表1所示。其中,中心頻率是指在電路參數(shù)誤差為零時(shí)對(duì)應(yīng)的頻率。由于實(shí)際電路中誤差總是存在的,所以頻率就落在此中心頻率附近。??

?

?

  在軟件設(shè)計(jì)上要實(shí)現(xiàn)以下三個(gè)功能:(1)判斷有無鍵按下;(2)有鍵按下時(shí),進(jìn)行按鍵消抖;(3)正確識(shí)別被按下的按鍵編號(hào)。首先設(shè)置單片機(jī)定時(shí)器/計(jì)數(shù)器的工作方式,讓定時(shí)器/計(jì)數(shù)器T0設(shè)為外部計(jì)數(shù)方式,允許T0中斷;并給TL0、TH0賦初值FFH,一旦有鍵按下時(shí),T0便產(chǎn)生中斷,由此可以判斷是否有鍵按下;然后延時(shí)8ms實(shí)現(xiàn)按鍵抖動(dòng)的消除;接著將T1設(shè)為內(nèi)部定時(shí)方式,定時(shí)時(shí)間為50ms,T0在這50ms的時(shí)間里對(duì)NE555輸出頻率信號(hào)進(jìn)行計(jì)數(shù),通過對(duì)計(jì)數(shù)值的大小范圍的判斷就可以識(shí)別按鍵的編號(hào)。有關(guān)延時(shí)和測(cè)頻的程序很常見,讀者可以參考有關(guān)資料。按鍵識(shí)別這部分的匯編程序如下文?眼2?演。程序入口參數(shù)FRQH、FRQL分別是50ms定時(shí)時(shí)間內(nèi)對(duì)外部頻率計(jì)數(shù)的高位和低位,判斷結(jié)果放在KEYCODE中。

  KEYCODE ??? EQU 30H? ??? ;存放鍵值(1-8 )有效;

???????????????????????????? ;0FFH無鍵按下,0EEH出錯(cuò)

  FRQH??????? EQU 32H? ??? ;頻率測(cè)量值高位

  FRQL ?????? EQU 31H? ??? ;頻率測(cè)量值低位

  ORG 0000H

  MOV DPTR,#TABLE

  MOV R0,#0

  MOV KEYCODE,#0

NEXT:MOV A,R0

  MOVC A,@A+DPTR?

  INC R0?

  CJNE A,F(xiàn)RQH,J1?

  MOV A,R0?

  INC R0?

  MOVC A,@A+DPTR?

  CJNE A,F(xiàn)RQL,J2?

  MOV KEYCODE,#0EEH   ;頻率在邊界上出錯(cuò)?

  LJMP WAIT?

J1:JNC? WAIT?

  INC R0?

  NNT:INC KEYCODE?

  LJMP NEXT

J2:JNC WAIT

????JMP NNT

WAIT:MOV A,KEYCODE

??。? ...

???;? ...????? 添加用戶應(yīng)用程序

???; 判斷頻率區(qū)間上下限的數(shù)據(jù)表:

TABLE:?DB 00H,0FAH,01H,5EH,01H,0C2H

????????DB 02H,26H,02H,8AH,02H,0EEH

????????DB 03H,52H,03H,0B6H,04H,1AH

????????DB 04H,7EH,0FFH,0FFH

3 特點(diǎn)及注意事項(xiàng)

  采用頻率編碼具有抗干擾力強(qiáng)、接口簡(jiǎn)單的優(yōu)點(diǎn),并且易于實(shí)現(xiàn)光電隔離。在鍵盤與主機(jī)分離的場(chǎng)合,還可以大大簡(jiǎn)化二者互連的電纜。另外,若將此信號(hào)去調(diào)制紅外發(fā)射組件,也可以實(shí)現(xiàn)遙控鍵盤而無需額外的編碼邏輯。但是它對(duì)多鍵的同時(shí)按下和單鍵的連擊檢測(cè)能力較差,在與實(shí)際應(yīng)用結(jié)合的時(shí)候,應(yīng)盡量避免這兩種情況的出現(xiàn)并恰當(dāng)?shù)剡M(jìn)行處理。同時(shí)NE555的上限工作頻率是500kHz,采用傳統(tǒng)的MCS-51單片機(jī)測(cè)量外部頻率時(shí),最高可測(cè)的頻率為晶振頻率的24分頻,設(shè)計(jì)中應(yīng)考慮可用的頻率范圍。采用其它型號(hào)的單片機(jī)時(shí),也應(yīng)注意這一點(diǎn)。

?

參考文獻(xiàn)

1 陳永甫.555集成電路應(yīng)用800例.北京:電子工業(yè)出版社,1992

2 涂時(shí)亮.單片微機(jī)MCS-51用戶手冊(cè). 上海:復(fù)旦大學(xué)出版社,1990

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。