中斷方式的擴充套件矩陣鍵盤

2021-05-23 22:25:52 字數 1143 閱讀 3880

來電了! 電工總算煩了,沒想到會這麼快,多虧阿福,外面真是只能湊合,還是自個兒宿舍舒服,明天開焊!

總圖最小系統&數碼管

與門實現鍵盤中斷觸發

解碼器實現矩陣鍵盤的擴充套件

擴充套件的矩陣鍵盤

程式**:

#include//標頭檔案

#include

#define uchar unsigned char //巨集定義

#define uint  unsigned int

code uchar table=;

code uchar key_tab[32]=; //  c,d,e,f,

uchar l_key=0x00; //定義變數,存放鍵值

uchar l_keyold=0xff; //作為按鍵放開否的憑證

uchar flag,flag1;//flag為了使最初不顯示數字,flag1

void readkey();    //掃瞄鍵盤,獲取鍵值

void display(uchar *lp); //顯示子函式

void delay1(uint z)

void delay();  //延時子函式

void main()  }

void key_scan() interrupt 0//外部中斷,的優先順序最高

void time0() interrupt 1   //定時器的中斷函式

void readkey()    //掃瞄鍵盤子函式

j++; //此函式的功能是:左移迴圈

}if(key==0xff)   //如果讀取不到p0口的值,如干擾,則返回

if(l_keyold==key) // 檢查按鍵放開否,如果相等表明沒有放開

th0=0x2e;  

tl0=0;

tr0=1;  //啟動定時器

l_keyold=key; //獲取鍵值,作為放開否的憑證

key+=j;

for(i=0;i<32;i++)   //查表獲得相應的進製值存放到l_key中

}//程式執行到此,就表明有鍵值存放到l_key中,主程式

//就可以檢測鍵盤值並作相應的處理

}void display(uchar *lp) //顯示子函式 }

}void delay() //延時子函式

STM32 4 4矩陣鍵盤掃瞄程式(中斷方式)

總體思路 中斷線為4行連線的gpio口,先初始化矩陣的4行輸出低電平4列輸出高電平,當有按鍵按下時的上公升沿觸發中斷 然後在相應的中斷處理函式裡面採取查詢的方式 參考上篇 獲得鍵值。部分程式 void exti9 5 irqhandler void 外部中斷中斷函式 if gpio readinpu...

4 4矩陣鍵盤的實現方式

在網上看了些4 4矩陣鍵盤的程式,哥們自己也想寫乙個,首先是初始化就是p0口賦初值,這是數碼管的i o口,然後就是p3口的賦初值,這個是選通有幾個數碼管的,就是這個意思吧,最重要的是p1口這是連線鍵盤的i o口。首先說說它的原理 我是依據我自己的圖來寫的,我的圖是p1.0 p1.3是行,p1.4 p...

STM32使用中斷驅動矩陣鍵盤

巨集定義 b6,b7,c8,c9做行掃瞄,c10 c12做列掃瞄 define row1 gpio port gpiob 行1 define gpio clk rcc apb2periph gpiob rcc apb2periph gpioc gpio埠時鐘 define row1 gpio pin...