各種各樣的矩陣鍵盤掃瞄程式集
矩陣鍵盤的掃瞄對初學者來說是不可避免的,然而也相對來說有點難度.
鑑於此,我整理了一下,我所遇到的矩陣鍵盤掃瞄程式集,將相繼貼上來,供大家參考!
說明:這些大多都是網上轉貼來的,其所有權歸原作者!
謝謝合作.
最簡單矩陣鍵盤掃瞄程式
key:mov p0,#00001111b;上四位和下四位分別為行和列,所以送出高
低電壓檢查有沒有按鍵按下
jmp k10;跳到k10處開始掃瞄,這裡可以改成其它條件轉移指令來決
定本次掃瞄是否要繼續,例如減1為0轉移或者位為1或0才轉移,這主
要用來增加功能,確認上一按鍵功能是否完成?是否相當於經過了延
時?是否要封鎖鍵盤?
goend:jmp kend;如果上面判斷本次不執行鍵盤掃瞄程式,則立即轉
到程式尾部,不要浪費cpu的時間
k10:jb p0.0,k20;掃瞄正式開始,先檢查列1四個鍵是否有鍵按下,
如果沒有,則跳到k20檢查列2
k11:mov p0,#11101111b;列1有鍵按下時,p0.0變低,到底是那乙個鍵
按下?現在分別輸出各行低電平
jb p0.0,k12;該行的鍵不按下時,p0.0為高電平,跳到到k12,檢查其
它的行mov r1,#1;如果正好是這行的鍵按下,將暫存器r0寫下1,表示1號鍵
按下了k12:mov p0,#11011111b
jb p0.0,k13
mov r1,#2;如果正好是這行的鍵按下,將暫存器r0寫下2,表示2號鍵
按下了k13:mov p0,#10111111b
jb p0.0,k14
mov r1,#3;如果正好是這行的鍵按下,將暫存器r0寫下3,表示3號鍵
按下了k14:mov p0,#01111111b
jb p0.0,kend;如果現在四個鍵都沒有按下,可能按鍵鬆開或干擾,
退出掃瞄(以後相同)
mov r1,#4如果正好是這行的鍵按下,將暫存器r0寫下4,表示4號鍵
按下了jmp kend;已經找到按下的鍵,跳到結尾吧
k20:jb p0.1,k30;列2檢查為高電平再檢查列3、4
k21:mov p0,#11101111b;列2有健按下時,p0.0會變低,到底是那一
行的鍵按下呢?分別輸出行的低電平
jb p0.1,k22;該行的鍵不按下時p0.0為高電平,跳到到k22,檢查另
外三行mov r1,#5;如果正好是這行的鍵按下,將暫存器r0寫下5,表示5號鍵
按下了(以後相同,不再重複了)
k22:mov p0,#11011111b
jb p0.1,k23
mov r1,#6
k23:mov p0,#10111111b
jb p0.1,k24
mov r1,#7
k24:mov p0,#01111111b
jb p0.1,kend
mov r1,#8
jmp kend;已經找到按下的鍵,跳到結尾吧(以後相同,不要重複了
) k30:jb p0.2,k40
k31:mov p0,#11101111b
jb p0.2,k32
mov r1,#9
k32:mov p0,#11011111b
jb p0.2,k33
mov r1,#10
k33:mov p0,#10111111b
jb p0.2,k34
mov r1,#11
k34:mov p0,#01111111b
jb p0.2,kend
mov r1,#12
jmp kend
k40:jb p0.3,kend
k41:mov p0,#11101111b
jb p0.3,k42
mov r1,#13
k42:mov p0,#11011111b
jb p0.3,k43
mov r1,#14
k43:mov p0,#10111111b
jb p0.3,k44
mov r1,#15
k44:mov p0,#01111111b
jb p0.3,kend
mov r1,#16
kend: ret
行列掃瞄鍵盤可檢測出雙鍵按下
#include <>
#define ulong unsigned long
#define uint unsigned int
#define uchar unsigned char
extern void delay(unsigned int x);
unsigned char tab_key行列式鍵盤對映
keypin_h = keypin_h|0xf0;
return(fnkeycode(keytemp));
} unsigned char fnkeycode(unsigned char key根據鍵盤
對映表輸出順序鍵值
{switch(key)
case 0x111 鍵 //
key = 0x01;
break;
微控制器控制廣告燈的左移右移
廣告燈的左移右移 1 實驗任務 做單一燈的左移右移,硬體電路如圖4.4.1所示,八個發光二極體l1 l8分別接在微控制器的p1.0 p1.7介面上,輸出 0 時,發光二極體亮,開始時p1.0 p1.1 p1.2 p1.3 p1.7 p1.6 p1.0亮,重複迴圈。2 電路原理圖 圖4.4.1 3 系...
基於微控制器的水位控制系統設計
萍鄉高等專科學校 微控制器課程設計報告 姓名 學號 1 專業 應用電子 系別 機械電子工程系 目錄1 概述 3 2 設計的基本任務和要求 4 2.1 基本功能 4 2.2塔水位控制原理 4 2.3 系統硬體總體方案 5 3 控制系統方案設計 5 3.1系統硬體方案 5 3.2 核心晶元at89c51...
微控制器在3G基站控制中的應用
摘要 在3g基站控制板設計中,採用微控制器at89s8252完成了對其他單板資訊的採集 網路配置 裝置執行監控以及與主cpu通訊等功能,說明了低檔器件在高檔裝置中同樣具有應用價值。關鍵詞 3g wcdma 基站控制板微控制器 rs485 spi 第三代移動通訊 3g 是乙個複雜而龐大的系統,其採用的...