藍橋杯微控制器學習之矩陣鍵盤

2021-10-18 16:37:09 字數 2675 閱讀 9187

這裡是我的矩陣鍵盤學習筆記,大一學生,希望共同進步,錯誤地方大佬指點一下

先看原理圖吧,只有了解怎麼工作的,咱才能設計程式

要使用矩陣鍵盤,就先吧j5跳線帽跳到key上面,也就是1,2上面,這樣才是矩陣鍵盤模式

接下來看這個是怎麼工作的

如圖,p34表示第四列,p35表示第三列,p44表示第二列,p42表示第一列

(iap15f2k61s2晶元)

p30表示第一排,p31表示第二排,p32表示第三排,p33表示第四排

那麼我們只需要監視他們的上電情況就行

先寫乙個第二列按鍵的程式:

#include

"reg52.h"

unsigned

char temp;

sfr p4=

0xc0

;sbit p44=p4^4;

sbit p42=p4^2;

void

delayms

(int b)

}void

main()

}}}}

因為p34,p35的控制第三四列,所以必須設定成一,這裡我的p36,p37在微控制器上的功能我暫時用不到,也不會有大礙,我就全部設定成一,這樣方便操作,

如果設定監視哪一列,把那一列的引腳所對應的變數設定成0即可;

正如我的注釋那樣寫 如果後面的四個1有變動,也就是第二列有按鍵按下,然後temp監視到這種情況,用switch語句捕捉,做出決斷

寫入微控制器後,根據我們寫的程式,的確是這樣的功能

下面以此類推,我們把整個矩陣鍵盤的按鍵都寫在裡面:

#include

"reg52.h"

unsigned

char temp;

sfr p4=

0xc0

;sbit p44=p4^4;

sbit p42=p4^2;

void

delayms

(int b)

}void

main()

}}p3=

0xff

; p44=

0;p42=1;

temp=p3;

temp=temp&

0x0f;if

(temp!=

0x0f)}

} p3=

0x2f

; p44=

1;p42=1;

temp=p3;

temp=temp&

0x0f;if

(temp!=

0x0f)}

} p3=

0x1f

; p44=

1;p42=1;

temp=p3;

temp=temp&

0x0f;if

(temp!=

0x0f)}}}}

這樣就是按下不同按鍵有不同功能

但是呢我們這樣寫到主題程式裡面不是太合適,我們就單獨放在乙個函式裡面就行了

void

keyscan16()

}}p3=

0xff

; p44=

0;p42=1;

temp=p3;

temp=temp&

0x0f;if

(temp!=

0x0f)}

} p3=

0x2f

; p44=

1;p42=1;

temp=p3;

temp=temp&

0x0f;if

(temp!=

0x0f)}

} p3=

0x1f

; p44=

1;p42=1;

temp=p3;

temp=temp&

0x0f;if

(temp!=

0x0f)}}}}

然後主函式就直接掃瞄就行了

但是呢,我們覺得這樣是不是太長了,是的呢,那麼我們直接掃瞄整個鍵盤行不行,然後返回乙個鍵值

然後在主函式裡面實現功能

所以我寫了兩個版本的矩陣掃瞄:第一種是書上的:

unsigned

char

keyscan()

}}return keynum;

}

他用的技術是用位移的方法,每四位表示一列的按鍵情況然後表示成數字,然後掃瞄返回乙個值。

p3&0x0f跟上面的意思是一樣的得到的是這一列的按鍵情況***x(0/1 0/1 0/1 0/1),然後右移四位得到情況

接下來是翻轉得到各個情況

void

key_scan()

}}

先看列的拉低情況(變成0的情況)得到乙個數,然後看排的情況,得到乙個數,相加減得到鍵值

在主程式裡面用if或者swtich就行

好了我的筆記到這就沒了,矩陣鍵盤掃瞄的功能我實現完畢,至於按下鍵的功能你們自己實現吧!

51微控制器矩陣鍵盤

行列掃瞄法 所有的行線置高電平,依次對列線進行掃瞄。將第一列置低電平,p1.0 0 若檢測到行線p1.4 0,則k0鍵被按下。同理若p1.5 0,則k4被按下。pertues 圖 c程式 include include define uchar unsigned char define uint u...

藍橋杯微控制器矩陣按鍵掃瞄程式設計

藍橋杯的矩陣按鍵的掃瞄,使用reg52.h標頭檔案的時候需要自定義p4介面,因為在該標頭檔案中並沒有定義p4介面。include reg52.h include intrins.h typedef unsigned char u8 typedef unsigned int u16 sfr p4 0x...

藍橋杯微控制器比賽矩陣鍵盤的基本使用方法

include typedef unsigned char uchar typedef unsigned int uint define temp p3 sfr p4 0xc0 sbit p42 p4 2 sbit p44 p4 4 uchar code table 0xbf 0xff 熄滅 下標為...