0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

矩陣按鍵識別的兩種方法

CHANBAEK ? 來源:頭條號電子秘探 ? 作者:頭條號電子秘探 ? 2023-03-23 15:54 ? 次閱讀

最近進(jìn)度比較慢,馬上要學(xué)習(xí)中斷和計(jì)時器了。遇到一個很郁悶的問題,矩陣按鍵線反轉(zhuǎn)法在proteus中用現(xiàn)成的模塊就是實(shí)現(xiàn)不了,自己畫的矩陣模塊可以正常使用。不知道什么原因。

行列掃描---按鍵識別

原理比較簡單:P2端口的低四位D0---D3置1,高四位D4-D7分別置0,順序執(zhí)行P2口的值

P2 端口的值 0xef 0xdf 0xbf 0x7f,利用按鍵底層驅(qū)動中Key_Scan()函數(shù),得到返回鍵值

#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;
		}
.........

線反轉(zhuǎn)法--按鍵識別

1.首先,我們將所有行設(shè)置為邏輯0,將所有列設(shè)置為邏輯1。

P2口的低四位連接矩陣按鍵4行上,高四位連接矩陣按鍵4列上

2.每當(dāng)我們按下一個按鈕時,對應(yīng)于該按鈕的列和行都會短路,并使對應(yīng)的列達(dá)到邏輯電平0??梢源_定列號

3.同理我們將所有列設(shè)置為邏輯0,將所有行設(shè)置為邏輯1。按下一個按鈕時,該按鈕的列和行都會達(dá)到邏輯0.可以確定行號

4.把行號和列號通過邏輯與操作連接起來,和行列編碼數(shù)組比較,得到按鍵返回值

#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位,取列數(shù)
			KEYPORT = 0x0f;//低4位寫1,高四位取0,線反轉(zhuǎn)
			temp2 = KEYPORT & 0x0f;//取低四位,取行號	
			keycode =  temp | temp2;//高四位和第四位(行列)組合到一起
			for(i=0;i<16;i++)
			{
				if(keycode == KEYCODE[i])
				{
					KeyNum = i;
					return KeyNum;
				}
			}

		}
	
	}
	return KeyNum;
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    898

    瀏覽量

    41516
  • 計(jì)時器
    +關(guān)注

    關(guān)注

    1

    文章

    420

    瀏覽量

    32722
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4332

    瀏覽量

    62666
  • 按鍵識別
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    6974
  • 矩陣按鍵
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    8371
收藏 人收藏

    評論

    相關(guān)推薦

    Linux端口的開啟的兩種方法需要掌握

    Linux端口的開啟的兩種方法需要掌握
    發(fā)表于 11-28 10:05 ?1245次閱讀

    消除按鍵抖動的兩種方法分享

      按鍵也是機(jī)械裝置,在按下或放開的一瞬間會產(chǎn)生抖動,如下圖:    消除方法兩種:  軟件除抖和硬件除抖,其中硬件除抖是應(yīng)用了電容對高頻信號短路的原理?! ≤浖妒菣z測出鍵閉合后執(zhí)行一個延時
    發(fā)表于 09-02 17:52

    pcb庫封裝常用的兩種方法

    識別模塊通訊模塊調(diào)試模塊單片機(jī)模塊PCB庫——原理圖庫——原理圖首先需要明白他們之間的關(guān)系畫圖的實(shí)質(zhì)是什么pcb庫封裝常用的兩種方法,簡單實(shí)用原理圖封裝原理圖的封裝和pcb...
    發(fā)表于 07-29 09:33

    STM32操作矩陣鍵盤的兩種方法

    目錄STM32操作矩陣鍵盤的兩種方法——掃描和中斷一、矩陣鍵盤的結(jié)構(gòu)和原理二、掃描式矩陣鍵盤的原理和實(shí)現(xiàn)三、中斷式矩陣鍵盤的原理和實(shí)現(xiàn)四、
    發(fā)表于 08-12 06:33

    按鍵信號是如何識別的

    一、按鍵掃描的基本原理按鍵信號是如何識別的?一般來說,按鍵個引腳的一端通過電阻上拉到高電平,另一端則接地。在沒有
    發(fā)表于 01-17 08:29

    矩陣按鍵識別的過程中是否要進(jìn)行消抖處理?

    矩陣按鍵識別的過程中是否要進(jìn)行消抖處理
    發(fā)表于 10-11 06:30

    檢查電池剩余電量的兩種方法

    檢查電池剩余電量的兩種方法・如果電池已經(jīng)被插入到熔接機(jī)的插槽中,打開電源。那么電源模式會被自動識別為 "電池",并且剩余電量也會被顯示在 "READY" 畫面
    發(fā)表于 11-07 14:26 ?65次下載

    AODV協(xié)議中解決斷鏈問題的兩種方法

    AODV協(xié)議中解決斷鏈問題的兩種方法 2.1 備用路由方法由于常規(guī)路由協(xié)議維護(hù)完整的路由表,能得知網(wǎng)絡(luò)中的拓?fù)淝闆r,很容易
    發(fā)表于 03-01 17:31 ?1130次閱讀
    AODV協(xié)議中解決斷鏈問題的<b class='flag-5'>兩種方法</b>

    使用jdbc連接上oracle的兩種方法

    本文主要介紹了使用jdbc連接上oracle的兩種方法:1、 使用thin連接,2、 使用oci連接(Oracle Call Interface)
    發(fā)表于 02-06 10:43 ?1712次閱讀

    提升家里網(wǎng)速的兩種方法

    總是嫌家里的網(wǎng)速慢,看視頻“轉(zhuǎn)圈圈”,玩游戲“時延高”,如何提升家里的網(wǎng)速呢?這里介紹兩種方法
    的頭像 發(fā)表于 02-19 21:10 ?1.5w次閱讀
    提升家里網(wǎng)速的<b class='flag-5'>兩種方法</b>

    語音識別的方法_語音識別的應(yīng)用有哪些

    本文主要闡述了語音識別的方法及語音識別的應(yīng)用。
    發(fā)表于 04-01 09:04 ?6013次閱讀

    矩陣鍵盤的按鍵識別方法_矩陣鍵盤掃描程序

    矩陣鍵盤的按鍵識別方法來自簡單日記網(wǎng)精選推薦。在學(xué)習(xí)有關(guān)矩陣鍵盤的時候,往往要學(xué)會矩陣鍵盤的按鍵
    的頭像 發(fā)表于 04-20 09:39 ?3.4w次閱讀

    STM32操作矩陣鍵盤的兩種方法——掃描和中斷

    目錄STM32操作矩陣鍵盤的兩種方法——掃描和中斷一、矩陣鍵盤的結(jié)構(gòu)和原理二、掃描式矩陣鍵盤的原理和實(shí)現(xiàn)三、中斷式矩陣鍵盤的原理和實(shí)現(xiàn)四、
    發(fā)表于 11-26 13:36 ?36次下載
    STM32操作<b class='flag-5'>矩陣</b>鍵盤的<b class='flag-5'>兩種方法</b>——掃描和中斷

    LDO在IoT中省電的兩種方法

    LDO在IoT中省電的兩種方法
    發(fā)表于 11-04 09:50 ?0次下載
    LDO在IoT中省電的<b class='flag-5'>兩種方法</b>

    簡述安裝打印機(jī)驅(qū)動的兩種方法

    安裝打印機(jī)驅(qū)動通常有兩種方法,一種是直接使用驅(qū)動文件自帶的安裝程序自動安裝,而另一種方法就是我們自己手動進(jìn)行安裝。兩種方法各有利弊,日常工作中可以根據(jù)實(shí)際情況來選擇使用哪種方法進(jìn)行安裝
    的頭像 發(fā)表于 04-04 09:46 ?4808次閱讀
    簡述安裝打印機(jī)驅(qū)動的<b class='flag-5'>兩種方法</b>