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