版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、摘要摘要分析PS2協(xié)議介紹PS2標(biāo)準(zhǔn)鍵盤的第二套掃描碼和命令集并給出在單片機(jī)系統(tǒng)中支持PS2鍵盤的硬件連接方式和利用KeilC51語(yǔ)言實(shí)現(xiàn)的驅(qū)動(dòng)程序設(shè)計(jì)及部分代碼。該驅(qū)動(dòng)程序可以方便地移植到其他單片機(jī)或嵌入式系統(tǒng)中。關(guān)鍵詞關(guān)鍵詞PS2協(xié)議PS2鍵盤單片機(jī)驅(qū)動(dòng)程序在單片機(jī)系統(tǒng)中經(jīng)常使用的鍵盤都是專用鍵盤。這類鍵盤都是單獨(dú)設(shè)計(jì)制作的成本高連線多且可靠性不高。這些問題在那些要求鍵盤按鍵較多的應(yīng)用系統(tǒng)中顯得更加突出。與此相比在PC系統(tǒng)中廣泛使用
2、的PS2鍵盤具有價(jià)格低、通用可靠且使用的連線少(僅使用2根信號(hào)線)的特點(diǎn)并可滿足多數(shù)系統(tǒng)的要求。因此在單片機(jī)系統(tǒng)中應(yīng)用PS2鍵盤是一種很好的選擇。本文在分析PS2協(xié)議和PS2鍵盤工作原理與特點(diǎn)的基礎(chǔ)上給出在AT89C51單片機(jī)上實(shí)現(xiàn)對(duì)PS2鍵盤支持的硬件連接方法以及驅(qū)動(dòng)程序的設(shè)計(jì)實(shí)現(xiàn)。1PS2協(xié)議現(xiàn)在PC機(jī)廣泛采用的PS2接口為miniDIN6引腳的連接器。其引腳如圖1所示。1—數(shù)據(jù)線(DATA)2—未用3—電源地(GND)4—電源(5
3、V)5—時(shí)鐘(CLK)6—未用。圖1PS2連接器PS2設(shè)備有主從之分主設(shè)備采用female插座從設(shè)備采用male插座?,F(xiàn)在廣泛使用的PS2鍵盤鼠標(biāo)均工作在從設(shè)備方式下。PS2接口的時(shí)鐘與數(shù)據(jù)線都是集電極開路結(jié)構(gòu)的必須外接上拉電阻。一般上拉電阻設(shè)置在主設(shè)備中。主從設(shè)備之間數(shù)據(jù)通信采用雙向同步串行方式傳輸時(shí)鐘信號(hào)由從設(shè)備產(chǎn)生。(1)從設(shè)備到主設(shè)備的通信當(dāng)從設(shè)備向主設(shè)備發(fā)送數(shù)據(jù)時(shí)首先會(huì)檢查時(shí)鐘線以確認(rèn)時(shí)鐘線是否是高電平。如果是高電平從設(shè)備就可
4、以開始傳輸數(shù)據(jù)否則從設(shè)備要等待獲得總線的控制權(quán)才能開始傳輸數(shù)據(jù)。傳輸?shù)拿恳粠?1位組成發(fā)送時(shí)序及每一位的含義如圖2所示。圖2從設(shè)備到主設(shè)備的通信每一幀數(shù)據(jù)中開始位總是為0數(shù)據(jù)校驗(yàn)采用奇校驗(yàn)方式停止位始終為1。從設(shè)備到主設(shè)備通信時(shí)從設(shè)備總是在時(shí)鐘線為高時(shí)改變數(shù)據(jù)線狀態(tài)主設(shè)備在時(shí)鐘下降沿讀入數(shù)據(jù)線狀態(tài)。(2)主設(shè)備到從設(shè)備的通信主設(shè)備與從設(shè)備進(jìn)行通信時(shí)主設(shè)備首先會(huì)把時(shí)鐘線和數(shù)據(jù)線設(shè)置為“請(qǐng)求發(fā)送”狀態(tài)。具體方式為:首先下拉時(shí)鐘線至少100
5、μs來(lái)抑制通信然后下拉數(shù)據(jù)線“請(qǐng)求發(fā)送”最后釋放時(shí)鐘線。在此過程中從設(shè)備在不超過10μs的間隔內(nèi)就要檢查這個(gè)狀態(tài)。當(dāng)設(shè)備檢測(cè)到這個(gè)狀態(tài)時(shí)將開始產(chǎn)生時(shí)鐘信號(hào)。此時(shí)數(shù)據(jù)傳輸?shù)拿恳粠?2位構(gòu)成其時(shí)序和每一位含義如圖3所示。圖3主設(shè)備到從設(shè)備的通信與從設(shè)備到主設(shè)備通信相比其每幀數(shù)據(jù)多了一個(gè)ACK位。這是從設(shè)備應(yīng)答接收到的字節(jié)的應(yīng)答位由從設(shè)備通過拉低數(shù)據(jù)線產(chǎn)生應(yīng)答位ACK總是為0。主設(shè)備到從設(shè)備通信過程中主設(shè)備總是在時(shí)鐘為低電平時(shí)改變數(shù)據(jù)線的狀
6、態(tài)從設(shè)備在時(shí)鐘的上升沿讀入數(shù)據(jù)線狀態(tài)。2PS2鍵盤的編碼與命令集(1)PS2鍵盤的編碼現(xiàn)在PC機(jī)使用的PS2鍵盤都默認(rèn)采用第二套掃描碼集。該掃描碼集可參考文獻(xiàn)[1]。掃描碼有兩種不同的類型:通碼(makecode)和斷碼(breakcode)。當(dāng)一個(gè)鍵被按下或持續(xù)按住時(shí)鍵盤會(huì)將該鍵的通碼發(fā)送給主機(jī)而當(dāng)一個(gè)鍵被釋放時(shí)鍵盤會(huì)將該鍵的斷碼發(fā)送給主機(jī)。根據(jù)鍵盤按鍵掃描碼的不同在此可將按鍵分為如下幾類:代碼實(shí)例:kb_plain_map[NR_K
7、EYS]=……NULL_KEY0x2C0x6B0x690x6F0x300x39NULL_KEY掃描碼0x40~0x47file:對(duì)應(yīng)按鍵空逗號(hào)KIO09空file:對(duì)應(yīng)鍵值0x00’’’k’’i’’o’’0’’9’0x00……圖4硬件連接電路如此設(shè)計(jì)鍵盤轉(zhuǎn)換表的另一個(gè)好處在于以后如需擴(kuò)展支持有ACPI、Windows多媒體按鍵鍵盤時(shí)只需要將鍵表中相應(yīng)處修改即可。如ACPIpower按鍵通碼為0xE00x37修改kbe0_plain_ma
8、p[0x37]=KB_ACPI_PWR即可。特殊按鍵PAUSE使用單獨(dú)程序處理如果接收到0xE1就轉(zhuǎn)入這段程序而printscreen鍵則將其看作是兩個(gè)通碼分別為0xE00x12和0xE00x7C的“虛鍵”的組合鍵來(lái)處理。在驅(qū)動(dòng)程序中聲明如下全局變量:led_status其bit0-scrolllockled關(guān)0、開1bit1-numlockled關(guān)為0開為1bit2-capslockled關(guān)為0開為1bit3~bit7總是0agcs_
9、status記錄左右shiftctrlguialt狀態(tài)bit0-左shift鍵bit1-左ctrl鍵bit2-左gui鍵bit3-左alt鍵bit4-右shift鍵bit5-右ctrl鍵bit6-右gui鍵bit7-右alt鍵相應(yīng)鍵按下則對(duì)應(yīng)位為1釋放為0。E0_FLAG接到0xE0置1E1_FLAG接收到0xE1置1F0_FLAG接收到0xF0置1。按鍵鍵值通過KeyVal提供給上層使用。PS2鍵盤掃描碼鍵值轉(zhuǎn)換程序ps2_codet
10、rans()流程如圖5所示。圖5掃描碼鍵值轉(zhuǎn)換程序流程第一類按鍵的掃描碼鍵值轉(zhuǎn)換程序代碼:if(F0_FLAG)接收掃描碼為斷碼switch(mcu_rev)處理控制鍵case0x11:agcs_statusbreak左alt釋放case0x12:agcs_statusbreak左shift釋放case0x14:agcs_statusbreak左ctrl釋放case0x58:if(led_statuscapslock鍵elseled_s
11、tatus=0x04ps2_ledchange()breakcase0x59:agcs_statusbreak右shift釋放case0x77:if(led_statusnumlock鍵elseled_status=0x02ps2_ledchange()breakcase0x7E:if(led_statusscrolllock鍵elseled_status=0x01ps2_ledchange()breakdefault:breakF0_
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)----基于單片機(jī)的ps2鍵盤設(shè)計(jì)
- 51單片機(jī)
- ps2鼠標(biāo)鍵盤協(xié)議 外文翻譯
- 《51單片機(jī)》教案
- 51單片機(jī)教程
- 《51單片機(jī)》教案
- 51單片機(jī)模擬pwm輸出占空比可調(diào)
- 51單片機(jī)教程
- 單片機(jī)外文翻譯--51單片機(jī)在編程電路中的應(yīng)用 (2)
- 51單片機(jī)管腳說明
- 51單片機(jī)自學(xué)筆記
- 51單片機(jī)引腳說明
- 單片機(jī)51測(cè)速程序
- 單片機(jī)外文翻譯 ----at89c51單片機(jī)介紹
- 基于51單片機(jī)的模擬電梯控制系統(tǒng)
- 初學(xué)51單片機(jī)的分享
- 51單片機(jī)最小系統(tǒng)
- 單片機(jī)at89c51
- 《51單片機(jī)》教案教學(xué)教程
- 51單片機(jī)簡(jiǎn)介外文翻譯
評(píng)論
0/150
提交評(píng)論