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