資料介紹
// 簡(jiǎn)單描述 : 本文件是行列掃描法實(shí)現(xiàn)矩陣按鍵掃描程序
/* ***************************************************** */
#include 《reg52.h》
/* ***************************************************** */
// 宏定義
/* ***************************************************** */
#define uInt16 unsigned int
#define uChar8 unsigned char
#define DATA P0 //數(shù)據(jù)口
#define KEYPORT P3 //鍵盤接入端口
/* ***************************************************** */
// 位定義
/* ***************************************************** */
sbit SEG_SELECT = P1^7; //段選控制端
sbit BIT_SELECT = P1^6; //位選控制端
/* ***************************************************** */
// 數(shù)組定義
/* ***************************************************** */
uChar8 code SEG_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};//段選顯示表格
/* ***************************************************** */
// 全局變量定義
/* ***************************************************** */
uChar8 g_ucKeyNum = 16; //鍵值
/* ***************************************************** */
// 函數(shù)名稱:MelayMS()
// 函數(shù)功能:毫秒延時(shí)
// 入口參數(shù):延時(shí)毫秒數(shù)(ValMS)
// 出口參數(shù):無(wú)
/* ***************************************************** */
void DelayMS(uInt16 ValMS)
{
uInt16 uiVal,ujVal;
for(uiVal = 0; uiVal 《 ValMS; uiVal++)
for(ujVal = 0; ujVal 《 121; ujVal++);
}
/* ***************************************************** */
// 函數(shù)名稱:ScanKey()
// 函數(shù)功能:矩陣按鍵掃描
// 入口參數(shù):無(wú)
// 出口參數(shù):無(wú)
/* ***************************************************** */
void ScanKey(void)
{
uChar8 ucTemp;
KEYPORT = 0xfe; //檢測(cè)第一行
ucTemp = KEYPORT; //讀取鍵盤端口數(shù)值
if(ucTemp != 0xfe) //若是不等于0xF0表示有按鍵按下
{
DelayMS(5); //去抖
ucTemp = KEYPORT; //讀端口值
if(ucTemp != 0xfe) //再次判斷
{
ucTemp = KEYPORT; //取鍵值
switch(ucTemp) //判斷鍵值對(duì)應(yīng)鍵碼
{
case 0xee:g_ucKeyNum = 0;break;
case 0xde:g_ucKeyNum = 1;break;
case 0xbe:g_ucKeyNum = 2;break;
case 0x7e:g_ucKeyNum = 3;break;
}
while(KEYPORT != 0xfe); //按鍵釋放檢測(cè)
}
}
KEYPORT = 0xfd;
ucTemp = KEYPORT;
if(ucTemp != 0xfd)
{
DelayMS(5);
ucTemp = KEYPORT;
if(ucTemp != 0xfd)
{
ucTemp = KEYPORT;
switch(ucTemp)
{
case 0xed:g_ucKeyNum = 4;break;
case 0xdd:g_ucKeyNum = 5;break;
case 0xbd:g_ucKeyNum = 6;break;
case 0x7d:g_ucKeyNum = 7;break;
}
while(KEYPORT != 0xfd);
}
}
KEYPORT = 0xfb;
ucTemp = KEYPORT;
if(ucTemp != 0xfb)
{
DelayMS(5);
ucTemp = KEYPORT;
if(ucTemp != 0xfb)
{
ucTemp = KEYPORT;
switch(ucTemp)
{
case 0xeb:g_ucKeyNum = 8;break;
case 0xdb:g_ucKeyNum = 9;break;
case 0xbb:g_ucKeyNum = 10;break;
case 0x7b:g_ucKeyNum = 11;break;
}
while(KEYPORT != 0xfb);
}
}
KEYPORT = 0xf7;
ucTemp = KEYPORT;
if(ucTemp != 0xf7)
{
DelayMS(5);
ucTemp = KEYPORT;
if(ucTemp != 0xf7)
{
ucTemp = KEYPORT;
switch(ucTemp)
{
case 0xe7:g_ucKeyNum = 12;break;
case 0xd7:g_ucKeyNum = 13;break;
case 0xb7:g_ucKeyNum = 14;break;
case 0x77:g_ucKeyNum = 15;break;
}
while(KEYPORT != 0xf7);

?
掃碼添加小助手
加入工程師交流群
- 《深入淺出玩轉(zhuǎn)FPGA》基于EPM240的入門實(shí)驗(yàn)-verilo 13次下載
- 《深入淺出玩轉(zhuǎn)FPGA》基于EPM240的入門實(shí)驗(yàn)-ps2ver 9次下載
- 《深入淺出玩轉(zhuǎn)FPGA》基于EPM240的入門實(shí)驗(yàn)-myosct 6次下載
- 《深入淺出玩轉(zhuǎn)FPGA》基于EPM240的入門實(shí)驗(yàn)-uartve 7次下載
- 《深入淺出玩轉(zhuǎn)FPGA》基于EPM240的入門實(shí)驗(yàn)-UFTtes 5次下載
- 《深入淺出玩轉(zhuǎn)FPGA》基于EPM240的入門實(shí)驗(yàn)-johnso 10次下載
- 《深入淺出玩轉(zhuǎn)FPGA》基于EPM240的入門實(shí)驗(yàn)-clkdiv 5次下載
- 《深入淺出玩轉(zhuǎn)FPGA》基于EPM240的入門實(shí)驗(yàn)-models 5次下載
- 《深入淺出玩轉(zhuǎn)FPGA》基于EPM240的入門實(shí)驗(yàn)-mux16 7次下載
- 深入淺出AVR單片機(jī)_精要 16次下載
- STM32深入淺出之新手篇 130次下載
- 深入淺出AVR單片機(jī)(珍藏版) 0次下載
- 深入淺出AVR單片機(jī)(珍藏版) 0次下載
- 深入淺出AVR單片機(jī)學(xué)習(xí)教材
- 深入淺出AVR單片機(jī)--從ATMega48/88/168開(kāi)始
- 兩個(gè)單片機(jī)之間串口通信的例程 1.2w次閱讀
- 什么是51單片機(jī)最小系統(tǒng) 4k次閱讀
- #深入淺出學(xué)習(xí)eTs#(九)變紅碼?專屬二維碼生成 2.4k次閱讀
- 深入淺出編譯優(yōu)化選項(xiàng)(下) 2.1k次閱讀
- 單片機(jī)里的程序是如何運(yùn)行? 5.8k次閱讀
- 詳解STM32單片機(jī)和51單片機(jī)的區(qū)別 4w次閱讀
- 51單片機(jī)的最小系統(tǒng)應(yīng)用說(shuō)明 9k次閱讀
- 51單片機(jī)引腳簡(jiǎn)介 5.6w次閱讀
- 如何學(xué)習(xí)51單片機(jī) 5.5k次閱讀
- 如何對(duì)51單片機(jī)進(jìn)行外部擴(kuò)展 1.7w次閱讀
- 51單片機(jī)和AVR單片機(jī)有什么區(qū)別 1.4w次閱讀
- 新手學(xué)習(xí)單片機(jī)的首選:51單片機(jī) 9.6k次閱讀
- 如何深入學(xué)習(xí)單片機(jī)? 4.3k次閱讀
- 學(xué)習(xí)51單片機(jī)晶振這21問(wèn)題搞懂了學(xué)單片機(jī)就簡(jiǎn)單了 1.3w次閱讀
- 51單片機(jī)學(xué)習(xí)感悟與51單片機(jī)上拉電阻心得 4.5k次閱讀
下載排行
本周
- 1美的電磁爐電路原理圖資料
- 4.39 MB | 16次下載 | 10 積分
- 2反激式開(kāi)關(guān)電源設(shè)計(jì)解析
- 0.89 MB | 2次下載 | 5 積分
- 3簡(jiǎn)易光伏控制器原理圖資料
- 0.07 MB | 1次下載 | 5 積分
- 4TPS23755數(shù)據(jù)手冊(cè)
- 0.07 MB | 次下載 | 免費(fèi)
- 536伏,10兆赫茲低噪聲雙運(yùn)算放大器COS5532 技術(shù)手冊(cè)
- 0.41 MB | 次下載 | 免費(fèi)
- 6LM5176 55V 寬輸入電壓同步4開(kāi)關(guān)降壓/升壓控制器技術(shù)手冊(cè)
- 2.40 MB | 次下載 | 免費(fèi)
- 7MCU模塊原理圖資料
- 0.37 MB | 次下載 | 1 積分
- 8LoRa1121 FCC&CE認(rèn)證 多頻段LoRa無(wú)線通訊模塊規(guī)格書
- 997.05 KB | 次下載 | 免費(fèi)
本月
- 1美的電磁爐電路原理圖資料
- 4.39 MB | 16次下載 | 10 積分
- 2冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 7次下載 | 10 積分
- 3SDFM 激光測(cè)距模塊模組手冊(cè)
- 0.54 MB | 7次下載 | 免費(fèi)
- 4直流電路的組成和基本定律
- 1.67 MB | 4次下載 | 免費(fèi)
- 5SW6238V ACCC 三 PD 四口多協(xié)議移動(dòng)電源 SOC規(guī)格書
- 0.59 MB | 4次下載 | 1 積分
- 6安川A1000變頻器中文版說(shuō)明書
- 20.16 MB | 3次下載 | 3 積分
- 7IP6742_datasheet_100V8A 同步 BUCK 控制器
- 2.16 MB | 3次下載 | 免費(fèi)
- 8PAW3395DM-T6QU:光學(xué)游戲?qū)Ш叫酒謨?cè)
- 1.26 MB | 2次下載 | 10 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233094次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191448次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183360次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81605次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73829次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問(wèn)
發(fā)資料
發(fā)視頻
上傳資料賺積分
評(píng)論