<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 一種嵌入式PC非標準鍵盤(pán)的設計

一種嵌入式PC非標準鍵盤(pán)的設計

作者: 時(shí)間:2007-05-28 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:隨著(zhù)系統的飛速發(fā)展,得到了廣泛應用。由于體積大,按鍵多等原因在多數情況下不能滿(mǎn)足要求。本文在介紹PS/2通信協(xié)議的基礎上,利用AT89C52實(shí)現了一種。給出了其完整的硬件實(shí)現電路圖和主要的軟件開(kāi)發(fā)方法。該具有結構簡(jiǎn)單、工作穩定、便于擴展等特點(diǎn),并已在某型航空圖像回傳系統中得到具體應用。
關(guān)鍵詞
:鍵盤(pán),PS/2協(xié)議,單片機,系統

隨著(zhù)嵌入式系統的飛速發(fā)展,嵌入式PC在工業(yè)控制、測量?jì)x器等領(lǐng)域得到了廣泛應用,如ADVANTECH公司的PC/104、 AMD公司的E86等。它們除了具有PC的功能外,還提供了功能強大的各種接口,如:平板/VGA顯示器控制接口、光驅接口、以太網(wǎng)接口、RS-232/422/485接口、PC/AT鍵盤(pán)接口等。這就為新產(chǎn)品開(kāi)發(fā)的標準化、模塊化提供了方便,可大大縮小研發(fā)周期,降低研制成本。由于嵌入式PC具有標準PC鍵盤(pán)接口,也就是說(shuō),可以用標準的PC/AT鍵盤(pán)來(lái)對嵌入式PC進(jìn)行操作與控制。然而,在很多實(shí)際應用中,需要用到鍵的數量和類(lèi)型有很大的差異,并希望鍵盤(pán)具有體積小巧、便于布放等特點(diǎn)。因此,希望能夠一種小巧、靈活的PC非標準鍵盤(pán),來(lái)滿(mǎn)足用戶(hù)需求。

本文根據課題要求,了一種由AT89C52實(shí)現的PC非標準鍵盤(pán)。下面對其硬件設計、軟件實(shí)現及PS/2鍵盤(pán)通信協(xié)議分別進(jìn)行介紹。

1硬件設計

圖1為該鍵盤(pán)電路原理圖,由ATMEL公司的微控制器AT89C52、邏輯系統(包括看門(mén)狗復位電路X25045和晶體振蕩電路)、矩陣鍵盤(pán)三部分組成。AT89C52單片機主要完成鍵盤(pán)掃描,確定鍵盤(pán)閉合斷開(kāi)的信息,并發(fā)送鍵碼和同步時(shí)鐘到工控機;邏輯系統提供起振信號及看門(mén)狗定時(shí)復位功能,防止出現死機;矩陣鍵盤(pán)為44的行列式鍵盤(pán),當有鍵按下時(shí)產(chǎn)生低電平觸發(fā)信號,便于單片機檢測有效的按鍵操作。該鍵盤(pán)由44=16個(gè)按鍵組成,其中行線(xiàn)為P0.4~P0.7,列線(xiàn)為P0.3~P0.0。P3.0為鍵碼數據輸出,P3.1為同步時(shí)鐘,分別輸出到嵌入式PC的PS/2端口;+5V電源由主機提供。

由于A(yíng)T89C52的IO端口為32個(gè),除看門(mén)狗電路的輸入輸出端CS、SI、SO、SCK、以及鍵碼數據輸出端Data和時(shí)鐘輸出端Clock外,還剩26個(gè)可用端口,這樣,其最大可獨立響應13 13=169個(gè)鍵的輸入,不僅可滿(mǎn)足標準鍵盤(pán)的多鍵需求,也可滿(mǎn)足工控機常用控制鍵的要求。X25045為看門(mén)狗電路,它實(shí)時(shí)接收來(lái)自AT89C52的CS信號,并自動(dòng)判斷兩次信號的間隔時(shí)間。當時(shí)間間隔到達設定時(shí)間時(shí),其RST輸出端保持低電平;反之,其RST輸出端輸出高電平,AT89C52被復位。此外增加了發(fā)光二極管LED,用來(lái)指示鍵盤(pán)的工作狀態(tài)。


圖1鍵盤(pán)電路原理圖


AT89C52微控制器具有如下特點(diǎn)[1]

(1)具有8K字節可編程閃存;

(2)2568字節內部RAM;

(3)32根可編程I/O線(xiàn);

(4)3個(gè)16位定時(shí)計數器;

(5)8個(gè)中斷源;

(6)可編程串行UART通道

2 PS/2協(xié)議

標準鍵盤(pán)和工控機或者嵌入式PC之間是按照PS/2協(xié)議進(jìn)行通信的,因此設計的非標準鍵盤(pán)也必須嚴格按照該協(xié)議,這樣才能為系統正確識別和作出響應。PS/2鍵盤(pán)接口標準由IBM公司于1987年推出,該標準采用了6腳mini―DIN連接器(見(jiàn)圖2)。該連接器在封裝上更加小巧,仍然用雙向串行通信協(xié)議,并且提供有可選擇的第三套鍵盤(pán)掃描碼集,同時(shí)支持l7個(gè)主機到鍵盤(pán)的命令。

圖2 PS/2端口示意圖

PS/2接口的6個(gè)引腳只有4個(gè)有定義,它們分別是1腳Data(數據腳)、5腳Clock(時(shí)鐘腳)、3腳Ground(電源地)、4腳Vcc(+5V電源);2腳和6腳為未定義保留端口。PS/2鍵盤(pán)與PC機的物理連接,只要保證這4根線(xiàn)一一對應就可以了。鍵盤(pán)靠PC的PS/2端口提供+5V電源,因此不需要專(zhuān)門(mén)電源。另外時(shí)鐘腳Clock和數據腳Data都是集電極開(kāi)路的,需外接上拉電阻,上拉電阻的阻值一般可取1K~10K,這和51系列單片機IO口的特性是一致的。

PS/2通信協(xié)議是一種雙向同步串行通信協(xié)議。通信的兩端通過(guò)Clock(時(shí)鐘腳)同步,并通過(guò)Data(數據腳)交換數據。PS/2的數據是按幀進(jìn)行傳輸的,每一數據幀包含l1~12個(gè)位,其中鍵盤(pán)發(fā)送的數據幀為11位。1個(gè)起始位(低電平)、8個(gè)數據位(低位在前,高位在后)、1個(gè)奇偶校驗位(采用奇校驗)、1個(gè)停止位(高電平)。在鍵碼傳送的同時(shí),微控制器還傳送1個(gè)鍵碼時(shí)鐘同步信號,用于同步鍵碼數據的接收,鍵碼中每個(gè)數據位的傳送發(fā)生在鍵盤(pán)時(shí)鐘的下降沿。最大的時(shí)鐘頻率是33kHz 而且大多數設備工作在10~20kHz,推薦頻率在15kHz左右[2]。

當有鍵按下時(shí),鍵盤(pán)發(fā)送一個(gè)接通碼給主機,接通碼值在00~7F之間。當按鍵松開(kāi)后,鍵盤(pán)首先發(fā)送斷開(kāi)碼標志F0H,然后再發(fā)送該鍵的接通碼。如果按鍵按下0.5秒仍沒(méi)斷開(kāi),則以每秒6個(gè)鍵碼的速率發(fā)送到主機。Clock和Data必須為高電平時(shí),才能傳送鍵碼數據。鍵碼的每一位傳送發(fā)生在時(shí)鐘的下降沿,在時(shí)鐘高電平期間發(fā)生變化。

圖3為接通鍵碼為2C,即按下t鍵時(shí),鍵碼和時(shí)鐘的傳送時(shí)序。

圖3 鍵碼2C傳輸時(shí)的通信時(shí)序


3軟件實(shí)現

軟件包括定時(shí)0中斷子程序、定時(shí)1中斷子程序、主程序等。其中,定時(shí)器0中斷子程序用于定時(shí)(如50ms)檢測單片機工作狀態(tài),實(shí)現看門(mén)狗功能,完成單片機的自動(dòng)復位,防止軟件出現死機現象。定時(shí)器1中斷子程序用于設定時(shí)鐘高低電平的持續時(shí)間,即確定時(shí)鐘的頻率,這里采用的時(shí)鐘頻率為16 kHz。主程序循環(huán)檢測有無(wú)鍵被按下、判斷哪個(gè)鍵被按下并確定對應的鍵碼,然后確定是否輸出鍵碼和同步時(shí)鐘信號。如有鍵被按下,則輸出相應的鍵碼同時(shí)并輸出同步時(shí)鐘信號。然后再掃描按鍵是否斷開(kāi),若斷開(kāi)則發(fā)送斷開(kāi)掃描碼和時(shí)鐘信號。主程序流程如圖4所示。


圖4 主程序流程圖


這里值得注意的是:一是鍵盤(pán)斷開(kāi)標志碼0F0H和接通碼之間應該有一定的延時(shí)(幾十毫秒即可);二是鍵盤(pán)數據位應該在時(shí)鐘下降沿到來(lái)之前就應該準備好,即應該有十幾微秒的提前量。

4結束語(yǔ)

經(jīng)過(guò)實(shí)際測試,該鍵盤(pán)工作穩定,能夠對嵌入式PC進(jìn)行正確的操作和輸入控制,并且已在某型航空圖像回傳系統中得到具體應用。本文設計的非標準鍵盤(pán)具有結構簡(jiǎn)單、靈活性強、易于編程、體積小、成本低的特點(diǎn),并可根據用戶(hù)需要隨意設計和布放,對使用工控機的各種測試與控制儀器具有通用性,只要稍加改動(dòng)就可應用于其它嵌入式應用的場(chǎng)合。

本文作者的創(chuàng )新點(diǎn):根據課題任務(wù)要求,用單片機AT89C52實(shí)現了對嵌入式工控PC的非標準鍵盤(pán)輸入,進(jìn)而控制整個(gè)系統的運行。該鍵盤(pán)實(shí)現簡(jiǎn)單、工作穩定,較傳統的標準鍵盤(pán)具有體積小、靈活性強的特點(diǎn),同時(shí)對于其它嵌入式工控PC應用系統具有通用性。因此,該設計具有良好的市場(chǎng)前景和推廣應用價(jià)值。

參考文獻:
[1] ATMEL公司,AT89C52中文數據手冊.
[2]Roy Show.PS/2鍵盤(pán)鼠標協(xié)議,2002.
[3] 張開(kāi)生,李霞,王金廣,工業(yè)控制計算機紅外線(xiàn)遙控鍵盤(pán)的設計,微計算機信息,2005.16:122-124

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


關(guān)鍵詞: 設計 鍵盤(pán) 標準 PC 嵌入式

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>