單片機(jī)實(shí)現(xiàn)數(shù)字化B超鍵盤設(shè)計(jì)
4.3 初始化及命令查詢處理
初始化過程是設(shè)計(jì)過程中需要注意的。計(jì)算機(jī)啟動(dòng)過程跟主板有關(guān),因?yàn)橹鳈C(jī)在總線上有優(yōu)先權(quán),通信過程發(fā)生異常,將禁用設(shè)備,而且目前找不到介紹計(jì)算機(jī)啟動(dòng)過程中對鍵盤操作細(xì)節(jié)的描述,所以本部分的設(shè)計(jì)是難點(diǎn)。
經(jīng)過試驗(yàn)發(fā)現(xiàn),上電后,鍵盤完成白檢即發(fā)送代碼0AAH給計(jì)算機(jī),計(jì)算機(jī)在啟動(dòng)過程中可以進(jìn)行復(fù)位、讀ID、停止鍵掃、使能鍵掃、控制LED狀態(tài)等操作,而且有時(shí)計(jì)算機(jī)會(huì)拉低時(shí)鐘信號——抑制通訊,在整個(gè)過程中,只要主機(jī)認(rèn)為設(shè)備異常,將抑制通訊導(dǎo)致鍵盤無法使用而且不能進(jìn)入操作系統(tǒng)。
每個(gè)由計(jì)算機(jī)發(fā)送到鍵盤的數(shù)據(jù)都能從鍵盤獲得一個(gè)0FAH應(yīng)答的回應(yīng),唯一例外的是鍵盤對Resend和Echo命令的回應(yīng)。在發(fā)送下一個(gè)字節(jié)給鍵盤之前,主機(jī)要等待應(yīng)答。鍵盤作為從設(shè)備,無法預(yù)先知道什么時(shí)候主機(jī)會(huì)發(fā)送控制命令,一旦主機(jī)發(fā)送命令給設(shè)備,設(shè)備沒有回應(yīng),主機(jī)即將該設(shè)備掛起,除非重新開機(jī)。
針對命令集,設(shè)計(jì)了專門的應(yīng)答子程序,根據(jù)設(shè)備收到的命令,作出相應(yīng)的回答和處理。
經(jīng)邏輯分析儀測試、分析和反復(fù)驗(yàn)證,發(fā)現(xiàn)在主程序中插入命令查詢處理程序,既能滿足初始化的要求,還可以保證鍵盤及時(shí)接收和處理來自主機(jī)的信息,維持鍵盤設(shè)備正常工作,命令查詢處理程序流程如圖4所示。這部分概括起來就是空出360μs的等待時(shí)間(15μsx20),作查詢,如果在這段時(shí)間內(nèi),數(shù)據(jù)線和時(shí)鐘線同時(shí)變?yōu)榈碗娖剑硎炬I盤有命令需發(fā)送,設(shè)備產(chǎn)生時(shí)鐘以接收命令,并根據(jù)收到的命令做相應(yīng)的處理。本文引用地址:http://m.butianyuan.cn/article/172890.htm
4. 4 TGC數(shù)據(jù)處理
TGC數(shù)據(jù)發(fā)送實(shí)質(zhì)上是一個(gè)掃描碼的序列,如第一個(gè)TGC增益數(shù)據(jù)為80,依次向計(jì)算機(jī)發(fā)送0x14 0x16 0x3E0x45 0xF0 0x14,對應(yīng)鍵“L Ctrl”按下、鍵“1”按下、鍵“8”按下、鍵“0”按下、鍵“L Ctrl”釋放的動(dòng)作,超聲系統(tǒng)軟件實(shí)現(xiàn)解析。實(shí)踐證明,發(fā)送每個(gè)序列數(shù)據(jù)過程中兩個(gè)數(shù)據(jù)間至少應(yīng)延時(shí)1.06 ms。
上述組合不會(huì)引起計(jì)算機(jī)異常,此前嘗試過其他組合,在沒進(jìn)入超聲軟件時(shí)調(diào)節(jié)TGC易引起誤操作。
特別要注意的是:
1)開機(jī)時(shí)ADC采樣使能標(biāo)志清0,禁止采集TGC;
2)鍵盤上電完成初始化后開啟定時(shí)器1,聯(lián)合應(yīng)用定時(shí)器和計(jì)數(shù)器,定時(shí)5 s,時(shí)間到則ADC采樣使能標(biāo)志置1,可以采集TGC數(shù)據(jù),TGC數(shù)據(jù)有變化則發(fā)送給計(jì)算機(jī);
3)設(shè)立轉(zhuǎn)換通道標(biāo)志碼,實(shí)時(shí)狀態(tài)每次鍵掃時(shí)根據(jù)標(biāo)志碼只進(jìn)行相對應(yīng)的一個(gè)電位器的模數(shù)轉(zhuǎn)換,轉(zhuǎn)換后將轉(zhuǎn)換標(biāo)志碼指向下一通道。
采用上述措施旨在解決因開機(jī)過程中鍵盤發(fā)送TGC數(shù)據(jù)和正常工作時(shí)TGC數(shù)據(jù)頻繁發(fā)送導(dǎo)致鍵盤死機(jī)問題,頻繁發(fā)送數(shù)據(jù)以至主機(jī)認(rèn)為鍵盤異常而禁用鍵盤。
4.5 狀態(tài)同步處理
標(biāo)準(zhǔn)鍵盤上有Num Lock,Caps Lock和Scroll Lock3個(gè)LED指示燈,為了實(shí)現(xiàn)主機(jī)與鍵盤的狀態(tài)同步,采用了如下解決方案:鍵盤只發(fā)送Num Lock、Caps Lock、Scroll Lock按下或者釋放的代碼;根據(jù)按鍵情況,主機(jī)發(fā)送專門用于指示鍵盤上Num Lock、Caps Lock和ScrollLo-ck3個(gè)LED狀態(tài)的指令;鍵盤處理器收到指令后刷新指示燈。
設(shè)計(jì)中凍結(jié)鍵使用Scroll Lock以保持狀態(tài)同步。
Depth、Zoom、Focus、I.P、A-Pwr與功能調(diào)節(jié)編碼器組合使用,5個(gè)按鍵中每次只有1個(gè)激活,激活時(shí)led指示燈亮,按鍵狀態(tài)則由鍵盤MCU寄存和切換控制,不同功能激活時(shí)調(diào)節(jié)編碼器產(chǎn)生不同的鍵碼,如:Depth激活時(shí)編碼器左旋產(chǎn)生“KP-”按下的代碼,右旋則產(chǎn)生“KP +”按下代碼;Zoom激活時(shí)編碼器左旋產(chǎn)生“Page Up”按下的代碼,右旋則產(chǎn)生“Page Down”按下代碼。該方法成功解決了狀態(tài)同步問題。
5 結(jié)論
對基于W78E052D單片機(jī)設(shè)計(jì)的PS2鍵盤方案、硬件和軟件設(shè)計(jì)做了詳細(xì)闡述,命令查詢、TGC和狀態(tài)同步處理對自行設(shè)計(jì)非標(biāo)PS2鍵盤有借鑒意義,在整個(gè)設(shè)計(jì)過程中,通過不斷改進(jìn)硬件和調(diào)試軟件,得到了預(yù)期的效果。相對于采用多片MCU分別處理幾個(gè)模塊最終通過USB集線器同PC主機(jī)通訊的方案,接口更簡單,成本更低,而且不需要專門開發(fā)鍵盤驅(qū)動(dòng)程序。在需要3個(gè)以上編碼器的應(yīng)用中,編碼器處理方案有待于進(jìn)一步改進(jìn)。
評論