鍵盤接口在單片機系統(tǒng)與PC機通信中的應(yīng)用
摘要:提出一種全新的利用鍵盤接口實現(xiàn)單片機系統(tǒng)和PC機通信的方案,介紹了鍵盤與PC機通信的原理,并成功地應(yīng)用于實際系統(tǒng)。該方案為外部單片機系統(tǒng)與PC機通信提供了一條有效的途徑。
本文引用地址:http://www.ex-cimer.com/article/244633.htm關(guān)鍵詞:鍵盤接口 單片機系統(tǒng) 時序 命令字
在工控系統(tǒng)中,單片機應(yīng)用系統(tǒng)與PC機之間的通信主要是采用異步串行通信方式,通過RS-232C、RS-422、RS-423或RS-499標準接口實現(xiàn)。這引起通信方式都各自規(guī)定了自己的電氣標準,都不能直接滿足 TTL電平的傳送要求。為了通過這些標準接口通信,必須在單片機應(yīng)用系統(tǒng)中加入電平轉(zhuǎn)換芯片,以實現(xiàn)TTL電平向標準接口電平的轉(zhuǎn)換[1]。
鍵盤接口是PC機的固有接口。在很式工控系統(tǒng)中,工控PC機的鍵盤由于受到高溫、灰塵的侵襲,容易損壞,故僅采用鼠標作為人機對話的工具,鍵盤接口處于空閑狀態(tài)[2]。以鍵盤接口作為單片機應(yīng)用系統(tǒng)與PC機的通信接口,具有以下優(yōu)點:①鍵盤接口的電氣標準能滿足TTL電平的傳送要求,不需電平轉(zhuǎn)換;②PC機的操作系統(tǒng)內(nèi)核能夠解釋單片機應(yīng)用系統(tǒng)通過鍵盤接口傳送來的數(shù)據(jù),免除了編寫串行數(shù)據(jù)接收程序的工作;③PC機能夠提供+5V電源。
1 鍵盤與PC機通信原理
1.1 鍵盤接口結(jié)構(gòu)
PC機鍵盤分為PC/XT、PC/AT和PS/2這三種類型。PC/XT和PC/AT鍵盤通過一個6針DIN插頭與PC機相連。3種鍵盤接口結(jié)構(gòu)類似,在其應(yīng)用于外部單片機應(yīng)用系統(tǒng)與PC機通信的場合,有效的接口引腳都為4個,它們在接口上的編號與定義分別為:1、鍵盤時鐘,2、鍵盤數(shù)據(jù);4、地;5、+5V。
1.2 鍵盤與PC機通信時序
當首次給鍵盤上電時,鍵盤邏輯電路產(chǎn)生上電復(fù)位信號,鍵盤開始自檢。在自檢期間,數(shù)據(jù)線和時鐘線上的任何信號都無效。如果自檢無誤,鍵盤發(fā)送0AAH給PC機,然后開始鍵盤掃描。
在鍵盤與CP機通信中,存在兩種傳輸協(xié)議:XT傳輸協(xié)議和AT傳輸協(xié)議。在采用XT協(xié)議的傳輸模式下,鍵盤只能接收來自PC機的復(fù)位指令和向PC發(fā)送數(shù)據(jù),沒有大的應(yīng)用價值。只有在采用AT協(xié)議的傳輸模式下,鍵盤能接收來自AT-PS/2兼容PC機的指令和向PC機發(fā)送數(shù)據(jù)。其數(shù)據(jù)幀長度為11位,由起始位(低電平)、8位數(shù)據(jù)(低位在前,高位在后)、奇偶校驗位(奇校驗)和停止位(高電平)組成。圖1為采用AT傳輸協(xié)議的鍵盤與PC機通信時序圖。
當無數(shù)據(jù)傳輸時,鍵盤接口數(shù)據(jù)線和時鐘線均為高電平。接口時鐘信號由鍵盤提供,其頻率至少應(yīng)為733.33Hz,才能保證數(shù)據(jù)的準確發(fā)送與接收。在鍵盤發(fā)送數(shù)據(jù)之前,鍵盤檢測接口時鐘線和數(shù)據(jù)線上電平。如果時鐘線為低電平,則主機禁止鍵盤發(fā)送數(shù)據(jù)。鍵盤上的鍵擊代碼送到緩存器中緩存。只有當數(shù)據(jù)線和時鐘線上電平均為高時,才允許鍵盤發(fā)送數(shù)據(jù)。此時鍵盤向主機發(fā)送數(shù)據(jù)和時鐘信號。鍵盤發(fā)送數(shù)據(jù)時,先拉低數(shù)據(jù)線以發(fā)送起始位,再依次送出8位數(shù)據(jù),最后發(fā)送奇偶校驗位和停止位。每位數(shù)據(jù)在時鐘脈沖下降沿有效,在時鐘脈沖高電平期間變化。如果在第10位(奇偶校驗位)發(fā)送之前,計算機下拉時鐘線至少有60μs,則鍵盤停止發(fā)送,并將故障數(shù)據(jù)存儲在輸出緩存器中。數(shù)據(jù)發(fā)送完畢后,保持數(shù)據(jù)線和時鐘線為高電平。PC機接收到數(shù)據(jù)后,若有誤,則要求鍵盤重發(fā)。當PC機請求發(fā)送數(shù)據(jù)時,PC機將數(shù)據(jù)線拉低,鍵盤進入接收數(shù)據(jù)狀態(tài)并發(fā)送時鐘信號。每位數(shù)據(jù)均為時鐘脈沖上升沿有效,在時鐘脈沖低電平期間變化。鍵盤接收完11位數(shù)據(jù)后,將停止位拉低作為應(yīng)答信號,表示數(shù)據(jù)接收完畢。鍵盤對接收到的數(shù)據(jù)進行判斷,若有誤,則要求PC機重發(fā)。
1.3 鍵盤與PC機通信命令字
鍵盤與PC機通信命令字很多,下面僅介紹與單片機系統(tǒng)和PC機通信有關(guān)的命令字。表1為PC機和鍵盤發(fā)送的命令字及其對應(yīng)的16進制值。
表1 PC機和鍵盤發(fā)送的命令字及其16進制值
PC機發(fā)送的命令字 | 16進制值 | 鍵盤發(fā)送的命令字 | 16進制值 |
置位/復(fù)位方式指示 ECHO 允許 重新發(fā)送 復(fù)位 | ED EE F4 FE FE | 自檢完成碼 自檢錯誤碼 ECHO 確認 重新發(fā)送 | AA FC EE FA FE |
在任何時候PC機都可對鍵盤發(fā)送命令字。除了以下兩種情況外,鍵盤一般必須在20ms內(nèi)應(yīng)答確認命令字0FAH:(1)當PC機發(fā)送ECHO指令(0EEH),鍵盤回應(yīng)以ECHO(0EEH),表示通信正常;(2)當PC機要求重發(fā)數(shù)據(jù)時,鍵盤重發(fā)上次發(fā)送的數(shù)據(jù)。
2 單片機應(yīng)用系統(tǒng)通過鍵盤接口與PC機通信構(gòu)思及實例
2.1 單片機應(yīng)用系統(tǒng)通過鍵盤接口與PC機通信的構(gòu)思
單片機應(yīng)用系統(tǒng)通過鍵盤接口與PC機通信必須嚴格按照鍵盤與PC機通信的時序要求并且按照命令字進行應(yīng)答。當系統(tǒng)上電復(fù)位時,單片機應(yīng)用系統(tǒng)通過鍵盤接口發(fā)送0AAH,模擬鍵盤自檢完成信息。之后,單片機應(yīng)用系統(tǒng)檢測鍵盤接口數(shù)據(jù)線上電平,若數(shù)據(jù)線電平被PC機拉低,單片機系統(tǒng)進入接收數(shù)據(jù)狀態(tài),按照圖1時序接收命令信息或數(shù)據(jù)信息,單片機系統(tǒng)根據(jù)表1對接收信息予以解釋。當單片機系統(tǒng)要發(fā)送數(shù)據(jù)或命令時,按照圖1時序發(fā)送信息,命令字則按表1的定久發(fā)送,PC機操作系統(tǒng)能識別這些鍵盤命令并進行相應(yīng)的操作。而發(fā)送的數(shù)據(jù)則模擬鍵盤上各鍵的編碼,PC機操作系統(tǒng)可將編碼解釋為對應(yīng)的鍵盤字符。在PC機端通信程序中,根據(jù)接收到的字符串執(zhí)行相應(yīng)的操作,這樣就省去了編寫將PC機端接收到的二進制流解釋為相應(yīng)字符的程序。
2.2 實例
在一個溫度測量單片機應(yīng)用系統(tǒng)中,要求定時將測得的溫度信息顯示在PC機上。系統(tǒng)由3部分組成:溫度檢測部分、信號轉(zhuǎn)換部分、信號處理部分。外界溫度的測量通過集成化測溫元件AD590實現(xiàn)。AD590是一種電流型元件,其測溫范圍為-55℃~100℃,其分辨率為1μA/℃。經(jīng)過信號轉(zhuǎn)換部分(由標準運放電路和A/D元件組成)將電流信號轉(zhuǎn)變?yōu)閿?shù)字信號。輸出結(jié)果送入89C51的I/O口,經(jīng)程序處理后,將溫度信息轉(zhuǎn)換為字符串信息,經(jīng)鍵盤接口送入PC機。鍵盤接口的數(shù)據(jù)線和時鐘線分別與89C51的P0口第7、8腳(P0.6、P0.7)相連。測量系統(tǒng)的供電直接取自鍵盤接口。
溫測系統(tǒng)通過鍵盤接口與PC機通信程序包括兩部分:PC機通信程序和單片機應(yīng)用系統(tǒng)通信程序。PC機通信程序很簡單:在C語言條件下,使用getchar函數(shù)接收數(shù)據(jù),接收到的是經(jīng)過操作系統(tǒng)解釋的字符。使用outport函數(shù)往鍵盤端口(60H)寫數(shù)據(jù)。相比之下,單片機應(yīng)用系統(tǒng)通信程序更為復(fù)雜,圖2為單片機應(yīng)用系統(tǒng)通信程序部分流程圖。
評論