最近進度比較慢,馬上要學習中斷和計時器了。遇到一個很郁悶的問題,矩陣按鍵線反轉法在proteus中用現成的模塊就是實現不了,自己畫的矩陣模塊可以正常使用。不知道什么原因。
行列掃描---按鍵識別
原理比較簡單:P2端口的低四位D0---D3置1,高四位D4-D7分別置0,順序執行P2口的值
P2 端口的值 0xef 0xdf 0xbf 0x7f,利用按鍵底層驅動中Key_Scan()函數,得到返回鍵值
#define KEYPAD P2
KEYPAD = 0xef;
switch(Key_Scan())
{
case 1:
LEDBuf[3]=1;break;
case 2:
LEDBuf[3]=2;break;
case 3:
LEDBuf[3]=3;break;
case 4:
LEDBuf[3]=4;break;
default: break;
}
KEYPAD = 0xdf;
switch(Key_Scan())
{
case 1:
LEDBuf[3]=5;break;
case 2:
LEDBuf[3]=6;break;
case 3:
LEDBuf[3]=7;break;
case 4:
LEDBuf[3]=8;break;
default: break;
}
.........
線反轉法--按鍵識別
1.首先,我們將所有行設置為邏輯0,將所有列設置為邏輯1。
P2口的低四位連接矩陣按鍵4行上,高四位連接矩陣按鍵4列上
2.每當我們按下一個按鈕時,對應于該按鈕的列和行都會短路,并使對應的列達到邏輯電平0。可以確定列號
3.同理我們將所有列設置為邏輯0,將所有行設置為邏輯1。按下一個按鈕時,該按鈕的列和行都會達到邏輯0.可以確定行號
4.把行號和列號通過邏輯與操作連接起來,和行列編碼數組比較,得到按鍵返回值
#include "Key.h"
u8 Key_Scan()
{
u8 temp,temp2,keycode,i;
static u8 KeyNum = 0;//初始化顯示0
u8 KEYCODE[]= //按鍵行列編碼
{0XEE,0XDE,0XBE,0X7E,
0XED,0XDD,0XBD,0X7D,
0XEB,0XDB,0XBB,0X7B,
0XE7,0XD7,0XB7,0X77};
KEYPORT = 0xf0;//4列置1,4行置0
temp = KEYPORT ;//讀P2口
if(temp!=0xf0)//判斷是否有按鍵按下
{
DelayXms(10);
if(temp!=0xf0)//再次判斷是否有按鍵按下
{
temp=KEYPORT & 0xf0;//取高4位,取列數
KEYPORT = 0x0f;//低4位寫1,高四位取0,線反轉
temp2 = KEYPORT & 0x0f;//取低四位,取行號
keycode = temp | temp2;//高四位和第四位(行列)組合到一起
for(i=0;i<16;i++)
{
if(keycode == KEYCODE[i])
{
KeyNum = i;
return KeyNum;
}
}
}
}
return KeyNum;
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
中斷
+關注
關注
5文章
895瀏覽量
41401 -
計時器
+關注
關注
1文章
419瀏覽量
32647 -
函數
+關注
關注
3文章
4308瀏覽量
62445 -
按鍵識別
+關注
關注
0文章
10瀏覽量
6956 -
矩陣按鍵
+關注
關注
0文章
28瀏覽量
8360
發布評論請先 登錄
相關推薦
消除按鍵抖動的兩種方法分享
按鍵也是機械裝置,在按下或放開的一瞬間會產生抖動,如下圖: 消除方法有兩種: 軟件除抖和硬件除抖,其中硬件除抖是應用了電容對高頻信號短路的原理。 軟件除抖是檢測出鍵閉合后執行一個延時
發表于 09-02 17:52
pcb庫封裝常用的兩種方法
識別模塊通訊模塊調試模塊單片機模塊PCB庫——原理圖庫——原理圖首先需要明白他們之間的關系畫圖的實質是什么pcb庫封裝常用的兩種方法,簡單實用原理圖封裝原理圖的封裝和pcb...
發表于 07-29 09:33
STM32操作矩陣鍵盤的兩種方法
目錄STM32操作矩陣鍵盤的兩種方法——掃描和中斷一、矩陣鍵盤的結構和原理二、掃描式矩陣鍵盤的原理和實現三、中斷式矩陣鍵盤的原理和實現四、
發表于 08-12 06:33
檢查電池剩余電量的兩種方法
檢查電池剩余電量的兩種方法・如果電池已經被插入到熔接機的插槽中,打開電源。那么電源模式會被自動識別為 "電池",并且剩余電量也會被顯示在 "READY" 畫面
發表于 11-07 14:26
?65次下載
AODV協議中解決斷鏈問題的兩種方法
AODV協議中解決斷鏈問題的兩種方法
2.1 備用路由方法由于常規路由協議維護完整的路由表,能得知網絡中的拓撲情況,很容易
發表于 03-01 17:31
?1116次閱讀
使用jdbc連接上oracle的兩種方法
本文主要介紹了使用jdbc連接上oracle的兩種方法:1、 使用thin連接,2、 使用oci連接(Oracle Call Interface)
發表于 02-06 10:43
?1703次閱讀
STM32操作矩陣鍵盤的兩種方法——掃描和中斷
目錄STM32操作矩陣鍵盤的兩種方法——掃描和中斷一、矩陣鍵盤的結構和原理二、掃描式矩陣鍵盤的原理和實現三、中斷式矩陣鍵盤的原理和實現四、
發表于 11-26 13:36
?36次下載
簡述安裝打印機驅動的兩種方法
安裝打印機驅動通常有兩種方法,一種是直接使用驅動文件自帶的安裝程序自動安裝,而另一種方法就是我們自己手動進行安裝。兩種方法各有利弊,日常工作中可以根據實際情況來選擇使用哪種方法進行安裝
評論