//ps2鍵盤測試程式,可換行,按shift不放接著輸入
//可輸出大寫,按下caps輸出大寫,再次按下輸出小寫
//此程式只用來測試,**冗餘,僅供參考,可根據需要自行刪減
//pa13->ps2.clk pa15->ps2.data
#include #include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "exti.h"
#include "wdg.h"
#include "timer.h"
#include "lcd.h"
const u8 unshifted[2]= //shift鍵沒按下解碼表
;const u8 shifted[2]= //shift鍵按下解碼表
', 0x5d,'|',
0x61,'>',
0x69,'1',
0x6b,'4',
0x6c,'7',
0x70,'0',
0x71,'.',
0x72,'2',
0x73,'5',
0x74,'6',
0x75,'8',
0x79,'+',
0x7a,'3',
0x7b,'-',
0x7c,'*',
0x7d,'9',
0,0};void decode(u8 scancode);// 宣告函式原型
u8 bitcount=11,ascii=' '; // bitcount為位計數值;ascii為翻譯後的ascii碼,初值為空格
u8 hang=0,lie=0; //彩屏顯示位置
int main(void)
lcd_showchar(hang,lie,ascii,16,0); // 顯示鍵盤字元
}
}/*******************************************
函式名稱: decode
功 能:
參 數: scancode--需要翻譯的掃瞄碼
返回值 : 無
********************************************/
void decode(u8 scancode)
} else //如果shift鍵按下
}
break;
} }
else //已接收的11位資料是斷碼(up為1) }
}
此外還需修改中斷資料夾中的兩個函式
void extix_init(void)
//外部中斷15~10服務程式
void exti15_10_irqhandler(void)
} }
else //如果是上公升沿觸發中斷 }
// delay_ms(10); //消抖
// if(key0==0) //按鍵0
// else if(key1==0)//按鍵1
//
// exti->pr=1<<13; //清除line13上的中斷標誌位
exti->pr=1<<15; //清除line15上的中斷標誌位
}
PS 2鍵盤原理
11.4 鍵盤原理 早期的鍵盤實際上是一種5pin的鍵盤,稱作at鍵盤,是1984年ibm pc的標準鍵盤。在1987年ibm進行了改進,從而變成了現在的ps 2鍵盤。當按下乙個鍵或釋放乙個鍵,鍵盤都會傳送鍵盤掃瞄碼到主機。比如按下a,鍵盤就會傳送0x1c到主機。如果持續按a,當經過乙個給定時間後,...
STM32鍵盤掃瞄程式
stm32鍵盤掃瞄程式 帶中斷觸發輸入 可注釋忽略 include key.h include delay.h 按鍵初始化函式 void key init void while gpiob idr 0x0f00 0x0000 等待鬆開 gpio setbits gpiob,gpio pin 12 g...
STM32鍵盤 庫函式
昨天晚上老大回來看我頻繁使用暫存器寫程式給出指點,告訴我盡量使用庫函式,少使用暫存器,畢竟暫存器在後面使用的時候還要乙個乙個查詢手冊可能太麻煩了,nice!這次使用庫函式操作鍵盤,很基礎的實驗,其中摻雜了之前的蜂鳴器和led內容。感覺基礎鍵盤實驗比較有價值的還是那個鍵盤操作函式,以下給出標準模板,m...