基于CPLD的矩陣鍵盤掃描模塊設(shè)計

鍵盤編碼輸出模塊的時序仿真圖如圖5所示。本文引用地址:http://www.ex-cimer.com/article/191430.htm
2.4 接口模塊(PCPORT)的功能與時序仿真
該模塊用于實現(xiàn)CPU讀入鍵盤碼以及矩陣鍵盤控制信號的輸出。開始時,CPU首先應(yīng)通過該模塊送出OSCEn=‘1’信號,使振蕩器模塊(OSC)和時鐘產(chǎn)生模塊(CreatClock)開始工作,產(chǎn)生驅(qū)動掃描模塊工作的時鐘信號F3kHz:接下來送出鍵盤禁止信號enKeyOut=0;禁止矩陣鍵
盤在穩(wěn)定工作前隨機輸出按鍵值;其次送出清除鍵盤緩存狀態(tài)指示位的ClrKey信號;最后再送出鍵盤使能信號enKeyOut=‘1’,開始模塊掃描鍵盤工作。接口模塊的時序仿真圖如圖6所示。
2.5 其他模塊的功能
振蕩器模塊(OSC)為利用Altera公司的IP核產(chǎn)生的MAXII系列CPLD內(nèi)帶的振蕩器,用于在使能信號的控制下產(chǎn)生3.3 MHz的時鐘輸出。
時鐘產(chǎn)生模塊(CreatClock),用于將3.3 MHz的時鐘分頻產(chǎn)生3 KHz的鍵盤掃描時鐘,驅(qū)動整個鍵盤掃描模塊工作。
3 控制軟件的設(shè)計
本文軟件設(shè)計的基本思想是:CPU利用定時中斷查詢矩陣鍵盤狀態(tài)并讀入矩陣鍵盤的按鍵碼,如果按鍵碼為需要立即響應(yīng)的特殊功能鍵(如熱啟動鍵),即在中斷服務(wù)程序中作出處理,否則直接送入與標準鍵盤共用的鍵盤緩沖區(qū),在鍵盤緩沖區(qū)與標準鍵盤送來的按鍵碼一起排隊等待CPU響應(yīng)處理,從而實現(xiàn)雙鍵盤同時工作。在向鍵盤緩沖區(qū)寫入按鍵值時,必須使用DOS軟中斷,否則會由于中斷優(yōu)先級的原因而使新寫入的按鍵碼得不到響應(yīng)。
矩陣鍵盤的控制軟件采用C語言編制,利用PC104的定時器中斷定時查詢矩陣鍵盤,如果有鍵值,將其存入PC104的鍵盤緩沖區(qū),等待PC104使用??刂瞥绦虻脑创a如下:
4 測試結(jié)果
本文所述的鍵盤掃描模塊已經(jīng)在多功能電法接收機中使用,在使用過程中對矩陣鍵盤的響應(yīng)時間、準確度、CPU處理時間占用、以及雙鍵盤同時工作性能等指標進行了測試分析,結(jié)果如下:
1)矩陣鍵盤響應(yīng)時間和準確度測試,理論上計算矩陣鍵盤的最短響應(yīng)時間為T=t1+t2+t3+t4=55.9 ms(其中,t1為防抖動延時時間30ms;t2鍵盤掃描最短用時,共掃描2次用22個F3 kHz時鐘周期6.6 ms;t3為鍵盤值暫存時間,3個F3kHz時鐘周期1 ms;t4為查詢鍵盤中斷間隔18.3 ms),考慮到操作鍵盤的速度,測試方法為全部16個鍵以3次/s的速度連續(xù)按6次,間隔5 s換一個鍵,將鍵值輸出到顯示器觀察輸入情況,測試結(jié)果為:總按鍵數(shù):96;顯示按鍵數(shù):96;漏判按鍵數(shù):0;錯判按鍵數(shù):0;準確率:100%。
2)矩陣鍵盤占用CPU時間分析,通過對矩陣鍵盤按鍵值的讀入程序分析可知,當(dāng)允許矩陣鍵盤輸出且有鍵按下時,每次中斷服務(wù)程序需要額外執(zhí)行8條語句,大約用時4μs;當(dāng)允許矩陣鍵盤輸出且沒有鍵按下時,每次中斷服務(wù)程序需要額外執(zhí)行3條語句,大約用時1.5μs;與CPU完成矩陣鍵盤掃描工作(假設(shè)從鍵按下到釋放一般用時300 ms)相比,一次按鍵讀入CPU占用時間節(jié)省99.998%。
3)雙鍵盤同時工作測試,測試方法將矩陣鍵盤和標準鍵盤同時接入系統(tǒng),按1次/s的速度交替按兩鍵盤的按鍵100個,在顯示器上觀察按鍵輸出情況,得出雙鍵盤工作可靠性數(shù)據(jù)如下:總按鍵數(shù):200;顯示按鍵數(shù)200;漏判按鍵數(shù):0;錯判按鍵數(shù):0;準確率:100%。因此,該模塊可以實現(xiàn)雙鍵盤同時工作。
5 結(jié)論
該模塊經(jīng)過測試和使用,得出如下結(jié)論:1)基于CPLD的矩陣鍵盤掃描模塊占用CPU時間很少;2)可以實現(xiàn)雙鍵盤同時工作;3)誤判、漏判率低;4)反應(yīng)速度快,能夠處理組合鍵。測試結(jié)果表明,該方案滿足設(shè)計要求。該模塊以按鍵的放開控制按鍵編碼輸出,因此在鍵按下一段時間后到釋放按鍵之前不能按一定的間隔連續(xù)輸出按下鍵的鍵值,矩陣鍵盤沒有連續(xù)按鍵輸出功能。鍵盤碼的讀入采用PC104定時器中斷(18.3 ms一次)定時查詢的方式實現(xiàn),在大多數(shù)情況下都不會查詢到按鍵事件發(fā)生,也就是說矩陣鍵盤占用的比較少的CPU處理時間中絕大部分被白白浪費。如果能夠修改接口模塊實現(xiàn)更靈活的按鍵外中斷觸發(fā)方式讀入鍵值,還可以節(jié)省更多的時間。
評論