用AT89C2051設計的PC/AT鍵盤(pán)
在工業(yè)控制、測量?jì)x器等領(lǐng)域,已大量使用嵌入式PC,如 ADVANTECH公司的PC/104、AMD公司的E86嵌入式PC等。它們除具有 PC的功能外,還提供了功能強大的各種標準接口,如:平板 /VGA顯示器控制接口、光驅接口、以太網(wǎng)接口、RS-232/422/485 接口、PC/AT鍵盤(pán)接口等 。這就為新產(chǎn)品開(kāi)發(fā)的標準化、模塊化提供了方便,可大大縮小研發(fā)周期,降 低研制成本,快速進(jìn)入市場(chǎng)。由于嵌入式PC具有標準PC/AT 鍵盤(pán)接口,也就是說(shuō),可以用標準的PC/AT鍵盤(pán)來(lái)對嵌入式 PC進(jìn)行操作與控制。但是,在很多實(shí)際應用中,由于一般只用到某幾個(gè)固定的鍵,并希望鍵盤(pán) 具有體積小巧、便于布放等特點(diǎn),為此,希望能夠設計一種小巧、靈活的 PC/AT鍵盤(pán),來(lái)滿(mǎn)足各種需求。本文介紹一種由AT89C2051設計實(shí)現的 PC/AT鍵盤(pán)。
1 PC/AT鍵盤(pán)的特點(diǎn)
PC/AT鍵盤(pán)由單片微控制器、鍵盤(pán)矩陣和支持邏輯三部分組成。鍵盤(pán)微控制器的主要功能是掃描 鍵盤(pán),以得到有效的閉合鍵,一旦鍵被按下或放開(kāi),就為系統板產(chǎn)生鍵代碼,將鍵代碼以串行格式 傳遞到系統板,同時(shí)產(chǎn)生將鍵代碼轉換為供系統板使用的并行數據所需的時(shí)鐘信號。 AT鍵盤(pán)使用接通鍵碼,其值在00~7F之間,以串行數據格式傳遞 到系統板;每發(fā)送一個(gè)鍵碼包含11個(gè)數據位,即1個(gè)起始位、 8個(gè)數據位(低位在前,高位在后)、1個(gè)奇偶校驗位、1個(gè)停止位。在鍵碼傳送的同時(shí), 微控制器還傳送1個(gè)鍵碼時(shí)鐘同步信號,用于同步鍵碼數據的接收。鍵碼中每個(gè)數據位的傳送發(fā)生在 鍵盤(pán)時(shí)鐘的下降沿,時(shí)鐘的波特率為16 Kb/s。圖1為接通鍵碼是2C,即按下t鍵時(shí),鍵碼的傳送格式。
對于PC/AT鍵盤(pán),如果按下鍵0.5 s之前放開(kāi)該鍵,則鍵盤(pán)電路產(chǎn)生一個(gè)斷開(kāi)鍵碼,將這個(gè)鍵碼也 以串行數據的格式傳送出去。AT鍵盤(pán)的斷開(kāi)鍵碼為F0,在斷開(kāi)鍵碼之后再跟接通鍵碼。其中斷開(kāi)鍵 碼通知BIOS鍵盤(pán)例程,按下的鍵序列功能已結束,鍵已被放開(kāi)。如果在鍵按下 0.5 s之后仍未放開(kāi)該鍵,則鍵盤(pán)電路產(chǎn)生一個(gè)接通鍵代碼(與接通鍵碼 相同),并以每秒6個(gè)鍵碼的速率(每166.7 ms一個(gè)鍵碼)進(jìn)行傳送,此過(guò)程直到鍵盤(pán)電路檢測到斷開(kāi)代碼為止。常用鍵的鍵碼如表 1所列。
2 硬件設計
鍵盤(pán)電路如圖2所示,由ATMEL公司的微控制器AT89C2051 、MAXIM 公司的看門(mén)狗自動(dòng)復位電路MAX813L及鍵盤(pán)矩陣組成。由于A(yíng)T 89C2051的可用端口為16個(gè),除復位端RES、看門(mén)狗信號輸出 端WDI、鍵碼數據輸出端TXD和時(shí)鐘輸出端CLK外,還剩12個(gè)可用端口,這樣,其最大可獨立響 應6×6=36個(gè)鍵的輸入,可滿(mǎn)足工控機常用控制鍵的要求。 MAX813L為看門(mén)狗電路,它實(shí)時(shí)接收來(lái)自AT89C2051的WDI信號,并自動(dòng)判斷兩次 WDI信號的間隔時(shí)間。當時(shí)間間隔小于1.6 s時(shí),其RST輸出端保持低電平;當時(shí)間間隔大于1.6 s時(shí),其RST輸出端輸出高電平,AT89C2051被復位。AT89C2051 具有如下特點(diǎn):
◇ 具有2K字節可編程閃存;
◇ 128×8bit 內部RAM;
◇ 15根可編程I/O線(xiàn);
◇ 2個(gè)16位定時(shí)/計數器;
◇ 6個(gè)中斷源;
◇ 可編程串行UART。
3 軟件設計
軟件包括定時(shí)0中斷子程序、定時(shí)1中斷子程序、主程序等。其中,定時(shí)器0定時(shí)中斷子程序用于定時(shí)檢測有無(wú)鍵被按下、判斷哪個(gè)鍵被按下并確定對應的鍵碼。定時(shí)器 1定時(shí)中斷子程序用于確定輸出鍵碼和時(shí)鐘信號的波特率,并定時(shí)輸出看門(mén)狗 信號,用于防止軟件出現死機現象。主程序根據有無(wú)鍵被按下標志,確定是否輸出鍵碼和同步時(shí)鐘信號。如有鍵被按下,則調入由定時(shí)中斷子程序所確定的鍵碼,輸出相應的鍵碼并同時(shí)輸出同步時(shí)鐘信號。主程序流程如圖3所示。
4 設計實(shí)例
本文介紹的PC/AT鍵盤(pán)具有結構簡(jiǎn)單、設計靈活性強、易于編程、體積小、成本低的特點(diǎn),并可 根據用戶(hù)需要隨意設計和布放,對使用工控機的各種測試與控制儀器具有通用性。
參考文獻
1 ATMEL公司. AT89C2051 Data Sheet
2 MAXIM公司. MAX813L Data Sheet
3 馬忠梅. 單片機的C語(yǔ)言應用程序設計. 北京:北京航空航天大學(xué)出版社,1999
評論