新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機鍵盤輸入編程

單片機鍵盤輸入編程

作者: 時間:2012-09-29 來源:網(wǎng)絡(luò) 收藏
  學(xué)習(xí)過技術(shù)的人都知道,的按鍵輸入一般可分為簡單的獨立式按鍵輸入及行列式鍵盤輸入兩種。圖1為簡單的獨立式鍵盤輸入示意圖,獨立式鍵盤輸入適合于按鍵輸入不多的情況(5個按鍵),具有占用口線較少、軟件編寫簡單容易等特點。
單片機鍵盤輸入編程

  圖2為行列式鍵盤輸入示意圖,列線接P1.0~P1.3,行線接P1.4~P1.7。行列式鍵盤輸入適合于按鍵輸入多的情況,如有16個按鍵輸入,用簡單按鍵輸入用要占用2個輸入口(共16位),而使用行列式鍵盤輸入只需占用一個輸入口(8位)。但行列式鍵盤輸入軟件編寫較復(fù)雜,對初學(xué)者而言有一定的難度。
單片機鍵盤輸入編程

  以上略談了一下按鍵輸入的情況。在很多狀態(tài)下,按鍵輸入的值要同時要在LED數(shù)碼管上顯示出來。如一個按鍵設(shè)計為輸入遞增(加法)鍵,可以設(shè)計成每點按一下,數(shù)值遞增加1,同時在LED數(shù)碼管上顯示出來;也可設(shè)計成持續(xù)按下時,數(shù)值以一定時間間隔(如0.3秒)累加。但是當(dāng)欲輸入值較大時(如三位LED數(shù)碼管作輸入顯示時的輸入值最大為999),則可能按下鍵的時間太長(最長達(dá)300秒),看來這種方式只適用于一位或至多兩位數(shù)值(最大99)的輸入。當(dāng)然你也可多設(shè)幾個鍵,每個鍵只負(fù)責(zé)一位數(shù)值的輸入,但這樣會占用較多的口線,浪費寶貴的硬件資源。

  大家可能見到過,一些進(jìn)口的溫度控制器(如日本RKC INSTRUMENT INC. 生產(chǎn)的REX_C700溫控器)的面板設(shè)計為:溫度測量值用4位LED數(shù)碼管顯示,輸入設(shè)定值顯示也用4位LED數(shù)碼管,輸入按鍵只有4個,一個為“模式設(shè)定鍵”,一個為“左移鍵”,另兩個為“加法鍵”、“減法鍵”。欲輸入設(shè)定值(溫控值)時,按一下“模式設(shè)定鍵”,程序進(jìn)入設(shè)定狀態(tài),此時輸入設(shè)定值顯示的4位LED數(shù)碼管中,個位顯示最亮(穩(wěn)定顯示),而十、百、千位顯示較暗(有閃爍感),說明可對個位進(jìn)行輸入。按下“加法鍵”或“減法鍵”,即可輸入個位數(shù)的值;點按一下“左移鍵”,變?yōu)槭伙@示最亮,而個、百、千位顯示較暗,說明可對十位進(jìn)行輸入。按下“加法鍵”或“減法鍵”,即可輸入十位數(shù)的值;……這樣可完成4位數(shù)的輸入。完成輸入后,再按一下“模式設(shè)定鍵”,程序即退出設(shè)定狀態(tài),進(jìn)入工作運行。用這種輸入方法,不僅輸入4位數(shù)用4個鍵即可,再多位(5位至24位)的輸入也用這4個鍵就夠了。

大家了解了這種新穎的按鍵輸入方式后,一定很感興趣,也想掌握設(shè)計方法。為了便于大家理解,這里結(jié)合筆者設(shè)計的一款“節(jié)能時控器”,詳細(xì)進(jìn)行講解?!肮?jié)能時控器”用于定時控制大功率電器工作,因現(xiàn)采用分時計費方法,可起到節(jié)約開支的作用,對工業(yè)生產(chǎn)成效顯著。

圖3為“節(jié)能時控器”硬件構(gòu)成原理圖?!肮?jié)能時控器”共有4個輸入按鍵:set--模式設(shè)定鍵,left--左移鍵,up—加法鍵,on/off--定時1、2啟動/關(guān)閉鍵。IC1(AT89C2051)只有15條I/O線,由于受I/O線數(shù)量限制,因此P1口中的P1.0~P1.3既作為驅(qū)動4位LED數(shù)碼管的數(shù)據(jù)輸出一部分,同時也用作按鍵的輸入。無疑,這種方式大大節(jié)約了硬件的I/O線,但也給編程者提出了更高的技術(shù)要求。限于篇幅,我們只對要詳解的按鍵輸入程序進(jìn)行分析,其它部分只略作介紹。如讀者需“節(jié)能時控器”詳細(xì)的源程序,可以Email:xuyuandz@163.com與作者聯(lián)系。
單片機鍵盤輸入編程

  圖4為主程序狀態(tài)流程圖??梢娭鞒绦蛑回?fù)責(zé)進(jìn)行走時或調(diào)整時間的運算及顯示,而判斷按鍵輸入則放在T1定時中斷(10mS)服務(wù)子程序中。T0作為走時的基準(zhǔn)被設(shè)置為100mS定時中斷。這種設(shè)計的優(yōu)點是大大簡化了主程序設(shè)計,并且CPU會定時關(guān)心鍵盤,只要定時中斷時間足夠短(如為幾十mS),就不會漏掉每一次的按鍵輸入。


上一頁 1 2 3 下一頁

關(guān)鍵詞: 單片機 輸入編程

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉