《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 89C51的計(jì)算機(jī)可鎖定加密鍵盤(pán)開(kāi)發(fā)
89C51的計(jì)算機(jī)可鎖定加密鍵盤(pán)開(kāi)發(fā)
互聯(lián)網(wǎng)
摘要: 介紹PC鍵盤(pán)和鍵盤(pán)接口的PS/2通信協(xié)議,,以及用89C51實(shí)現(xiàn)可鎖定鍵盤(pán)的軟件和硬件設(shè)計(jì)方法,。具有安全可靠,、...
關(guān)鍵詞: PS2 89C51 C51 鍵盤(pán)
Abstract:
Key words :

引 言

    在智能儀器,、自動(dòng)控制等領(lǐng)域,,已大量使用嵌入式PC,,如Advantech公司的PC/104,、AMD公司的DIMM-PC等,。為適應(yīng)開(kāi)放式,、模塊化的要求,,嵌入式PC具有標(biāo)準(zhǔn)的PC接口,如VGA顯示器控制接口,、以太網(wǎng)接口,、RS232接口,、PC/AT鍵盤(pán)" title="鍵盤(pán)">鍵盤(pán)接口等。所以,,可以用標(biāo)準(zhǔn)的PC鍵盤(pán)對(duì)嵌入式PC進(jìn)行操作與控制,。鍵盤(pán)在輸入指令之后,可能很長(zhǎng)一段時(shí)間不用,。為計(jì)算機(jī)安全和防止誤觸發(fā),,需要將鍵盤(pán)鎖定,還要對(duì)某些鍵采取屏蔽措施,,但是PC標(biāo)準(zhǔn)鍵盤(pán)不能滿足這些要求,。本文介紹一種用C51" title="C51">C51" title="89C51" title="89C51">89C51">89C51設(shè)計(jì)實(shí)現(xiàn)的可鎖定加密PC/AT鍵盤(pán)。

1 鍵盤(pán)功能及工作原理

    PC鍵盤(pán)功能主要有按鍵識(shí)別,、去抖,、重鍵處理、發(fā)送掃描碼,、自動(dòng)重發(fā),、接收鍵盤(pán)命令、處理命令等,。鍵盤(pán)有編碼鍵盤(pán)和非編碼鍵盤(pán),。編碼鍵盤(pán)程序設(shè)計(jì)簡(jiǎn)單,但硬件電路復(fù)雜,,價(jià)格較高,;非編碼鍵盤(pán)用軟件來(lái)實(shí)現(xiàn)識(shí)別鍵、編碼轉(zhuǎn)換,、去抖等功能,,硬件電路簡(jiǎn)單,價(jià)格便宜?,F(xiàn)代微機(jī)系統(tǒng)中廣泛采用非編碼鍵盤(pán),。PC鍵盤(pán)多采用18行×8列的二維矩陣行列結(jié)構(gòu)。采用行掃描法識(shí)別按下的按鍵,。

2 PS/2協(xié)議

    PS/2協(xié)議是外設(shè)與主機(jī)之間通信的一種同步雙向串行協(xié)議,。在該協(xié)議中主機(jī)擁有較高的優(yōu)先級(jí),在一定條件下可以終止外設(shè)正在進(jìn)行的發(fā)送過(guò)程,。PS/2協(xié)議采用的傳送數(shù)據(jù)幀的格式為:1位起始位(0),、8位數(shù)據(jù)位、1位奇偶校驗(yàn)位,、1位停止位(1),。數(shù)據(jù)發(fā)送時(shí)低位在前,高位在后,。外設(shè)每收到主機(jī)發(fā)來(lái)的1幀數(shù)據(jù),,都要緊隨該幀的停止位發(fā)送一個(gè)握手位ACK(0)應(yīng)答主機(jī),。然后,外設(shè)還要發(fā)1幀應(yīng)答數(shù)據(jù)(0xF0),,表示外設(shè)已經(jīng)完整地接收到了主機(jī)的命令,;而主機(jī)則不需發(fā)送握手位,也不需要發(fā)送應(yīng)答幀,。

    2.1 鍵盤(pán)到PC鍵盤(pán)接口的通信

    當(dāng)時(shí)鐘線和數(shù)據(jù)線均為高電平時(shí),,允許鍵盤(pán)發(fā)送數(shù)據(jù),系統(tǒng)將接收數(shù)據(jù),;當(dāng)時(shí)鐘線被拉為低電平時(shí),,表明系統(tǒng)禁止數(shù)據(jù)傳輸。圖1給出了發(fā)送時(shí)序,,包含1個(gè)低電平觸發(fā)的起始位、8位數(shù)據(jù)位,、1個(gè)奇校驗(yàn)位和1個(gè)高電平的結(jié)束位,。

    2.2 PC系統(tǒng)到鍵盤(pán)的通信協(xié)議

    若時(shí)鐘線出現(xiàn)高電平,數(shù)據(jù)線出現(xiàn)低電平,,表明系統(tǒng)請(qǐng)求發(fā)送,,鍵盤(pán)準(zhǔn)備產(chǎn)生同步時(shí)鐘脈沖串,并接收數(shù)據(jù),。包含了1個(gè)低電平觸發(fā)的起始位,、8位數(shù)據(jù)位、1個(gè)奇校驗(yàn)位,、1個(gè)應(yīng)答位,、1個(gè)高電平的結(jié)束位。圖2為時(shí)序圖,。

    (1)鍵盤(pán)命令及執(zhí)行過(guò)程

    ① FFH:復(fù)位鍵盤(pán),。系統(tǒng)通過(guò)此軟件復(fù)位命令使鍵盤(pán)進(jìn)入程序復(fù)位和內(nèi)部自測(cè)試,稱(chēng)為基本保證測(cè)試(BAT),。復(fù)位鍵盤(pán)的過(guò)程如下:

    a. 鍵盤(pán)收到FFH后立即回送ACK(FAH)作答,;

    b. 鍵盤(pán)接口收到ACK后,將鍵盤(pán)時(shí)鐘和數(shù)據(jù)線置為高電平,;

    c. 鍵盤(pán)檢測(cè)到此狀態(tài)后開(kāi)始BAT操作,;

    d. 如果BAT正確完成,鍵盤(pán)發(fā)送AAH以表示結(jié)束,,



    否則以FDH(或其它任何值)表示診斷有誤,。

    ② FEH:重新發(fā)送。當(dāng)系統(tǒng)檢測(cè)到從鍵盤(pán)送來(lái)的任何傳輸錯(cuò)誤時(shí),,它便向鍵盤(pán)發(fā)送FEH命令,。鍵盤(pán)接收到此命令后,,將重新送出原來(lái)的內(nèi)容。

    ③ FDH~F7H:空操作(保留未用),。

    ④ F6H:設(shè)置缺省值,。此命令使鍵盤(pán)所有條件復(fù)位到電源接通時(shí)的缺省狀態(tài),鍵盤(pán)繼續(xù)掃描,。

    ⑤ F5H:設(shè)置缺省值和停止鍵盤(pán),。此命令使鍵盤(pán)所有條件復(fù)位到電源接通時(shí)的缺省狀態(tài),并停止鍵盤(pán)掃描,,等待下一個(gè)鍵盤(pán)命令,。

    ⑥ F4H:?jiǎn)?dòng)鍵盤(pán)。鍵盤(pán)接收到此命令后,,用ACK(FAH)作答,,清除輸出緩沖器,并啟動(dòng)鍵盤(pán)開(kāi)始掃描,。

    ⑦ F3H:設(shè)置拍發(fā)速率和延時(shí)參數(shù),。每當(dāng)按下任一鍵時(shí),鍵盤(pán)以拍發(fā)速率連續(xù)送出鍵的接通碼,,直到鍵被釋放為止,。延時(shí)參數(shù)是指按下一鍵后,鍵盤(pán)輸出的響應(yīng)時(shí)間,。

    系統(tǒng)缺省設(shè)置:拍發(fā)速率=10個(gè)/s±20%,,延時(shí)=500ms±20%。

    當(dāng)要改變?cè)O(shè)置時(shí)可以使用F3H命令,,并后跟一個(gè)字節(jié)的參數(shù),。參數(shù)定義如表1所列。

    表1 

D7
0
D6  D5 D4  D3 D2  D1  D0
C B A

    計(jì)算拍發(fā)速率和響應(yīng)延時(shí)的公式如下:

    拍發(fā)速率=1/[(8+A)×2B×0.00417] (1/s)

    響應(yīng)延時(shí)=(1+C)×250 (ms)

    注:缺省的延時(shí)參數(shù)值為2CH,。

    此命令的執(zhí)行過(guò)程如下:

    a. 鍵盤(pán)收到F3H命令后,,用FAH予以響應(yīng),并停止掃描和等待隨后的參數(shù),;

    b. 鍵盤(pán)若收到隨后的設(shè)置參數(shù),,用另一個(gè)ACK響應(yīng),并按其參數(shù)設(shè)置新的拍發(fā)速率和響應(yīng)延時(shí),,

之后重新開(kāi)始掃描(若鍵盤(pán)原來(lái)是開(kāi)放的),;

c. 鍵盤(pán)若收到FAH命令,但無(wú)隨后的設(shè)置參數(shù),,則鍵盤(pán)結(jié)束命令設(shè)置,,并保持原來(lái)的拍發(fā)速率和響

應(yīng)延時(shí),停止掃描。

    ⑧F2H,,F(xiàn)1,,EFH:保留未用。

    ⑨F0H:設(shè)置鍵盤(pán)掃描碼命令,。此命令用于設(shè)置鍵盤(pán)的掃描碼,,后跟參數(shù)指定三種掃描碼的哪一種。鍵盤(pán)復(fù)位時(shí),,默認(rèn)掃描碼是第二種,。

    ⑩EEH:回送命令。此命令用于輔助診斷,,要求鍵盤(pán)接收到EEH時(shí)也要回送EEH予以響應(yīng),。若鍵盤(pán)原來(lái)是開(kāi)放的,則繼續(xù)掃描,。

    EDH:置位/復(fù)位LED指示器,。鍵盤(pán)右上角有三個(gè)LED指示器,分別反映Caps,、Num和Scroll三個(gè)鍵的鎖定情況,。參數(shù)字節(jié)如表2所列。

保 留 1=激勵(lì)Caps LED 1=激勵(lì)Num LED 1=激勵(lì)Scroll LED

此命令執(zhí)行過(guò)程與F3H相似,。若命令后跟參數(shù),則按參數(shù)設(shè)定LED狀態(tài)并繼續(xù)掃描,。若僅有命令無(wú)參數(shù),,則不改變LED原狀態(tài),并停止掃描,。

    (2)鍵盤(pán)響應(yīng)

    鍵盤(pán)在下列四種情況下都會(huì)向鍵盤(pán)接口發(fā)送數(shù)據(jù),。

    ① 按下任一鍵,鍵盤(pán)以拍發(fā)速率向接口發(fā)送鍵盤(pán)接通掃描碼,。

    ② 釋放所按下的鍵,,鍵盤(pán)發(fā)送斷開(kāi)掃描碼。

    ③ 系統(tǒng)向鍵盤(pán)發(fā)送鍵盤(pán)命令后,,鍵盤(pán)回送應(yīng)答,。

    ④ 當(dāng)用戶按鍵速度超出鍵盤(pán)所能容納的最大鍵個(gè)數(shù)時(shí),鍵盤(pán)做出響應(yīng),。

    后三種情況稱(chēng)為鍵盤(pán)響應(yīng),。響應(yīng)字節(jié)有7個(gè),定義如下,。



    ① FEH:重新發(fā)送響應(yīng),。當(dāng)鍵盤(pán)收到一個(gè)無(wú)效的鍵盤(pán)命令,或者檢測(cè)到奇偶錯(cuò)的鍵盤(pán)命令時(shí),鍵盤(pán)回送響應(yīng)字節(jié)為FEH,,要求系統(tǒng)重發(fā)鍵盤(pán)命令,。

    ② FAH:正常應(yīng)答。對(duì)任何一個(gè)有效的鍵盤(pán)命令,,鍵盤(pán)回送FAH予以響應(yīng),。

    ③ 00H:超限應(yīng)答。當(dāng)用戶按鍵速度超出鍵盤(pán)所能容納的最大鍵符個(gè)數(shù)時(shí)(16個(gè)字節(jié)的緩沖器),,鍵盤(pán)發(fā)送00H,。

    ④ FDH:診斷故障應(yīng)答。鍵盤(pán)接受軟件復(fù)位命令,,執(zhí)行自測(cè)試過(guò)程中,。若檢測(cè)到故障,則以FDH應(yīng)答,。此時(shí),,鍵盤(pán)停止掃描并等待下一個(gè)鍵盤(pán)命令。

    ⑤ AAH:診斷正常應(yīng)答,。鍵盤(pán)在軟件復(fù)位過(guò)程中,,正常完成BAT測(cè)試,以AAH應(yīng)答,。

    ⑥ FEH:回響命令的應(yīng)答,,對(duì)鍵盤(pán)FEH命令的應(yīng)答。

    ⑦ F0H:斷開(kāi)掃描碼前綴,,鍵盤(pán)對(duì)鍵符按下后釋放的應(yīng)答,,第一個(gè)字節(jié)為F0H,第二個(gè)字節(jié)為接通掃描碼(有幾個(gè)鍵例外),。

3 硬件設(shè)計(jì)

    PC系列鍵盤(pán)采用18行×8列的矩陣行列結(jié)構(gòu),。89C51單片機(jī)有4個(gè)8位I/O端口,因此可以采用P0,、P2口再加上P3口的2個(gè)(P3.6和P3.7)作為行掃描線,。P1口作為列輸入線(如果用P0口作列輸入線,必須加上拉電阻),。采用P3.0,、P3.1作為數(shù)據(jù)線和時(shí)鐘線與PC系統(tǒng)進(jìn)行通信,用P3.2,、P3.4,、P3.5控制鍵盤(pán)上的3個(gè)指示燈。硬件原理如圖3所示,。

    鍵盤(pán)與計(jì)算機(jī)通過(guò)一個(gè)五芯(PS/2接口為六芯)插座相接,,4個(gè)有效引腳的定義分別是電源(VCC),、地(GND)、串行時(shí)鐘線(SCK),、串行數(shù)據(jù)線(SIO),。

4 軟件設(shè)計(jì)

    ① 消抖及重鍵處理:通過(guò)軟件上延時(shí)程序來(lái)消除抖動(dòng);采用后按鍵優(yōu)先處理,,即多鍵同時(shí)按下時(shí),,只重復(fù)發(fā)送最后按下鍵的掃描碼。

    ② 程序包括鍵盤(pán)掃描子程序,、發(fā)送鍵碼子程序,、發(fā)送數(shù)據(jù)子程序、接收命令子程序,、定時(shí)器1中斷服務(wù)程序,、主程序等。鍵盤(pán)掃描子程序用于掃描鍵狀態(tài),,將被按鍵的位置號(hào)存入緩沖器中,;發(fā)送鍵碼子程序用于將緩沖區(qū)鍵的接通碼或斷開(kāi)碼發(fā)送給計(jì)算機(jī)鍵盤(pán)接口或者存在鍵盤(pán)密碼緩沖區(qū)中;發(fā)送數(shù)據(jù)子程序用于將數(shù)據(jù)發(fā)給計(jì)算機(jī)鍵盤(pán)接口,;接收命令子程序用于接收計(jì)算機(jī)鍵盤(pán)接口發(fā)來(lái)的鍵盤(pán)命令,;定時(shí)器1中斷服務(wù)子程序用于給程序中的延時(shí)提供標(biāo)準(zhǔn)時(shí)鐘,并具有軟件看門(mén)狗功能,,防止軟件出現(xiàn)死機(jī)現(xiàn)象,;主程序用于系統(tǒng)初始化,子程序調(diào)度,,鎖定狀態(tài)的顯示等,。

5 結(jié) 論

    本文介紹的PC/AT鍵盤(pán)具有結(jié)構(gòu)簡(jiǎn)單、設(shè)計(jì)靈活,、安全可靠的特點(diǎn),可用于標(biāo)準(zhǔn)PC和嵌入式PC,。本鍵盤(pán)可以在標(biāo)準(zhǔn)的鍵盤(pán)基礎(chǔ)上進(jìn)行改造,,只需換掉原來(lái)的控制芯片即可,可節(jié)省設(shè)計(jì)成本,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。