導航:首頁 > 操作系統 > 單片機鍵盤自檢

單片機鍵盤自檢

發布時間:2024-04-08 03:06:44

1. 檢測按鍵是否按下,應注意什麼問題(單片機)

檢測按鍵是否按下,一要注意是」消抖「;二要注意按鍵的」抬起「和按下狀態。前者一般加幾十毫秒延時。後者看程序要求,是確定按下後,等待抬起才退出鍵盤檢測,還是直接退出。

2. 單片機鍵盤自檢程序

rans()流程
掃描碼鍵值轉換程序流程第一類按鍵的掃描碼鍵值轉換程序代碼:

if (F0_FLAG) {//接收掃描碼為斷碼

switch (mcu_revchar){//處理控制鍵
case 0x11: agcs_status&=0xF7;break;//左alt釋放

case 0x12: agcs_status&=0xFE;break;//左shift釋放

case 0x14: agcs_status&=0xFD;break;//左ctrl釋放

case 0x58: if(led_status&0x04)

led_status&=0x03;//caps lock鍵

else led_status =0x04;

ps2_ledchange();

break;

case 0x59: agcs_status&=0xEF;break;//右shift釋放

case 0x77: if(led_status&0x02)

led_status&=0x05;//num lock鍵

else led_status =0x02;

ps2_ledchange();

break;

case 0x7E: if(led_status&0x01)

led_status&=0x06;//scroll lock鍵

else led_status =0x01;

ps2_ledchange();

break;

default:break;

}

F0_FLAG = 0;

}

else {//接收掃描碼為通碼

if (led_status & 0x04) caps_flag = 1; else caps_flag = 0;

if (led_status & 0x02) num_flag = 1; else num_flag = 0;

if (scga_status & 0x11) shift_flag = 1; else shift_flag = 0;

file://掃描碼鍵值轉換

if ((caps_flag == shift_flag) (!num_flag))
KeyVal=kb_plain_map\[mcu_revchar\];

else KeyVal=kb_shift_map\[mcu_revchar\];

switch(mcu_revchar){//處理控制鍵或狀態鍵

case 0x11: agcs_status = 0x08;//左alt按下

case 0x12: agcs_status = 0x01;//左shift按下

case 0x14: agcs_status = 0x02;//左ctrl按下

case 0x59: agcs_status = 0x10;//右shift按下

default: break;

}

}第二類按鍵的掃描碼鍵值轉換程序與上相似。要注意的是在退出該程序段時對
E0_FLAG和F0_FLAG標志的清0。

PAUSE鍵的處理程序:如果接收到0xE1,置E1_FLAG=1,然後順次將後續接收到的7
個位元組數據和PAUSE的通碼後7個位元組比較,一致則返回KeyVal=KB_PAUSE。在比較
完所有7個位元組後清除E1_FLAG標志。

鍵盤初始化程序kb_init()流程:

① 上電後,接收鍵盤上電自檢通過信號0xAA,或者自檢出錯信號0xFC。單片機接
收為0xAA,進入下一步,否則,進行出錯處理。

② 關LED指示,單片機發送0xED,然後接收鍵盤回應0xFA,接著發送送0x00接收
0xFA。

③ 設置機打延時和速率。 單片機發送0xF3,接收0xFA,發送0x00
(250ms,2.0cps),接收0xFA。

④ 檢查LED,發送0xED,接收0xFA,發送0x07(開所有LED),接收0xFA。發送0xED,
接收0xFA,發送0x00(關LED),接收0xFA。

⑤ 允許鍵盤發送0xF4,接收0xFA。

鍵盤LED改變ps2_ledchange()函數流程:發送0xED→接收0xFA→發送led_status→接收0xFA。
結語
該驅動程序經Keil uVision2編譯,在AT89C51單片機上運行通過,實現了對PS/2 104鍵盤的支持,以及對字元按鍵大小寫切換,num lock切換,控制鍵及組合按鍵的支持。該程序對其他嵌入式或單片機系統中PS/2鍵盤的應用也有借鑒意義。

3. 51單片機按鍵檢測問題

三個二極體、一個電阻,確實是一個與門。

電阻的計算公式,正確。
二極體的導通電壓、電流,選擇的基本合理。

可以進行實際電路的安裝、測試。

實際上,現在的二極體,發光效率,逐年的提高,已經不用 6mA,就很醒目了。
不同顏色的二極體,導通電壓,也有差異,選用較小的,才利於觸發中斷。
得進行反復實驗,才能完成設計。

在程序中,注意不要使 P3.2 輸出低電平,否則,會有較大的灌電流出現。

閱讀全文

與單片機鍵盤自檢相關的資料

熱點內容
android銀聯demo 瀏覽:86
智能演算法發展 瀏覽:351
房車露營地用什麼app 瀏覽:70
spark編程指南python 瀏覽:553
phparray源碼 瀏覽:1002
安卓手機反應有點慢怎麼辦 瀏覽:705
c語言怎麼訪問伺服器並獲取數據 瀏覽:114
怎麼下載三維app 瀏覽:77
把pdf中的圖片導出到excel 瀏覽:505
php操作redis實例 瀏覽:143
蘋果app怎麼綁卡 瀏覽:978
便簽加密的筆記在哪裡打開 瀏覽:845
php截取時間函數 瀏覽:867
lol手游版怎麼下載安卓版 瀏覽:81
10年程序員做地攤 瀏覽:628
安卓手機拍攝慢動作怎麼設置 瀏覽:482
中國程序員加油 瀏覽:174
python去哪個城市比較多 瀏覽:761
閃迪u盤加密初始密碼 瀏覽:773
房屋辦理解壓需要契稅和發票嗎 瀏覽:891