stm32 ps2鍵盤顯示測試程式

2021-06-09 23:57:34 字數 1783 閱讀 6310

//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...