基于89C52的計(jì)算機(jī)專用鍵盤設(shè)計(jì)
0 引言
AT89C52是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能,片內(nèi)含8 k可反復(fù)檫寫的單片機(jī),具有外圍硬件電路簡(jiǎn)單,體積小,可靠性高,選用其完成鍵盤的監(jiān)控任務(wù),在實(shí)際應(yīng)用中,有時(shí)侯可能不小心按下鍵盤的按鍵,改變了設(shè)備或儀器的參數(shù)和狀態(tài),使系統(tǒng)運(yùn)行不正常。為計(jì)算機(jī)安全和防止誤觸發(fā),需要將鍵盤鎖定,還要對(duì)某些鍵采取屏蔽措施,但是PC標(biāo)準(zhǔn)鍵盤不能滿足這些要求。本文介紹一種用89C52設(shè)計(jì)實(shí)現(xiàn)的可鎖定加密PC/AT鍵盤。另外,本鍵盤固定于主機(jī)操控臺(tái),因此,又具有一定的抗振性和密封性。
1 鍵盤功能及工作原理
PC鍵盤功能主要有按鍵識(shí)別、去抖、重鍵處理、發(fā)送掃描碼、自動(dòng)重發(fā)、接收鍵盤命令、處理命令等。鍵盤有編碼鍵盤和非編碼鍵盤。編碼鍵盤程序設(shè)計(jì)簡(jiǎn)單,但硬件電路復(fù)雜,價(jià)格較高;非編碼鍵盤用軟件來(lái)實(shí)現(xiàn)識(shí)別鍵、編碼轉(zhuǎn)換、去抖等功能,硬件電路簡(jiǎn)單,價(jià)格便宜。本鍵盤采用非編碼鍵盤,14行×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 鍵盤到PC鍵盤接口的通信
當(dāng)時(shí)鐘線和數(shù)據(jù)線均為高電平時(shí),允許鍵盤發(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.1.1 PC系統(tǒng)到鍵盤的通信協(xié)議
若時(shí)鐘線出現(xiàn)高電平,數(shù)據(jù)線出現(xiàn)低電平,表明系統(tǒng)請(qǐng)求發(fā)送,鍵盤準(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.1.2 鍵盤命令及執(zhí)行過(guò)程
(1)FFH:復(fù)位鍵盤。系統(tǒng)通過(guò)此軟件復(fù)位命令使鍵盤進(jìn)入程序復(fù)位和內(nèi)部自測(cè)試,稱為基本保證測(cè)試(BAT)。復(fù)位鍵盤的過(guò)程如下:
①鍵盤收到FFH后立即回送ACK(FAH)作答;
②鍵盤接口收到ACK后,將鍵盤時(shí)鐘和數(shù)據(jù)線置為高電平;
③鍵盤檢測(cè)到此狀態(tài)后開(kāi)始BAT操作;
④如果BAT正確完成,鍵盤發(fā)送AAH以表示結(jié)束,否則以FDH(或其它任何值)表示診斷有誤。
(2)FEH:重新發(fā)送。當(dāng)系統(tǒng)檢測(cè)到從鍵盤送來(lái)的任何傳輸錯(cuò)誤時(shí),它便向鍵盤發(fā)送FEH命令。鍵盤接收到此命令后,將重新送出原來(lái)的內(nèi)容。
(3)FDH~F7H:空操作(保留未用)。
(4)F6H:設(shè)置缺省值。此命令使鍵盤所有條件復(fù)位到電源接通時(shí)的缺省狀態(tài),鍵盤繼續(xù)掃描。
(5)F5H:設(shè)置缺省值和停止鍵盤。此命令使鍵盤所有條件復(fù)位到電源接通時(shí)的缺省狀態(tài),并停止鍵盤掃描,等待下一個(gè)鍵盤命令。
(6)F4H:?jiǎn)?dòng)鍵盤。鍵盤接收到此命令后,用ACK(FAH)作答,清除輸出緩沖器,并啟動(dòng)鍵盤開(kāi)始掃描。
(7)F3H:設(shè)置拍發(fā)速率和延時(shí)參數(shù)。每當(dāng)按下任一鍵時(shí),鍵盤以拍發(fā)速率連續(xù)送出鍵的接通碼,直到鍵被釋放為止。延時(shí)參數(shù)是指按下一鍵后,鍵盤輸出的響應(yīng)時(shí)間。
系統(tǒng)缺省設(shè)置:拍發(fā)速率=10個(gè)/s±20%,延時(shí)=500ms±20%。
當(dāng)要改變?cè)O(shè)置時(shí)可以使用F3H命令,并后跟一個(gè)字節(jié)的參數(shù)。
計(jì)算拍發(fā)速率和響應(yīng)延時(shí)的公式如下:
拍發(fā)速率=1/[8+A]×2B×0.004 17](1/s)
響應(yīng)延時(shí)=(1+C)×250(ms)
注:缺省的延時(shí)參數(shù)值為2CH。
此命令的執(zhí)行過(guò)程如下:
①鍵盤收到F3H命令后,用FAH予以響應(yīng),并停止掃描和等待隨后的參數(shù);
②鍵盤若收到隨后的設(shè)置參數(shù),用另一個(gè)ACK響應(yīng),并按其參數(shù)設(shè)置新的拍發(fā)速率和響應(yīng)延時(shí),之后重新開(kāi)始掃描(若鍵盤原來(lái)是開(kāi)放的);
③鍵盤若收到FAH命令,但無(wú)隨后的設(shè)置參數(shù),則鍵盤結(jié)束命令設(shè)置,并保持原來(lái)的拍發(fā)速率和響應(yīng)延時(shí),停止掃描。
電磁爐相關(guān)文章:電磁爐原理
評(píng)論