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

單片機鍵盤自檢

發布時間: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 輸出低電平,否則,會有較大的灌電流出現。

閱讀全文

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

熱點內容
node開源論壇源碼 瀏覽:8
單片機比手機晶元還貴 瀏覽:35
java課表 瀏覽:555
如何在pdf裡面修改 瀏覽:929
橙光製作器檔案框在哪個文件夾 瀏覽:991
php如何抓取網頁數據 瀏覽:642
計數器單片機 瀏覽:966
游戲aoi演算法 瀏覽:844
phpmysqlint 瀏覽:912
怎麼從appstore商城買東西 瀏覽:184
大秀直播平台源碼 瀏覽:424
java視屏 瀏覽:934
電腦中如何給程序加密 瀏覽:240
java排序容器 瀏覽:942
職稱證書在哪個app下載 瀏覽:362
四九演算法算男女 瀏覽:659
javawindows8 瀏覽:498
2021世界程序員節 瀏覽:486
php翼支付 瀏覽:884
盈通伺服器ip地址 瀏覽:791