資料介紹
// 簡單描述 : 本文件是行列掃描法實現矩陣按鍵掃描程序
/* ***************************************************** */
#include 《reg52.h》
/* ***************************************************** */
// 宏定義
/* ***************************************************** */
#define uInt16 unsigned int
#define uChar8 unsigned char
#define DATA P0 //數據口
#define KEYPORT P3 //鍵盤接入端口
/* ***************************************************** */
// 位定義
/* ***************************************************** */
sbit SEG_SELECT = P1^7; //段選控制端
sbit BIT_SELECT = P1^6; //位選控制端
/* ***************************************************** */
// 數組定義
/* ***************************************************** */
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; //鍵值
/* ***************************************************** */
// 函數名稱:MelayMS()
// 函數功能:毫秒延時
// 入口參數:延時毫秒數(ValMS)
// 出口參數:無
/* ***************************************************** */
void DelayMS(uInt16 ValMS)
{
uInt16 uiVal,ujVal;
for(uiVal = 0; uiVal 《 ValMS; uiVal++)
for(ujVal = 0; ujVal 《 121; ujVal++);
}
/* ***************************************************** */
// 函數名稱:ScanKey()
// 函數功能:矩陣按鍵掃描
// 入口參數:無
// 出口參數:無
/* ***************************************************** */
void ScanKey(void)
{
uChar8 ucTemp;
KEYPORT = 0xfe; //檢測第一行
ucTemp = KEYPORT; //讀取鍵盤端口數值
if(ucTemp != 0xfe) //若是不等于0xF0表示有按鍵按下
{
DelayMS(5); //去抖
ucTemp = KEYPORT; //讀端口值
if(ucTemp != 0xfe) //再次判斷
{
ucTemp = KEYPORT; //取鍵值
switch(ucTemp) //判斷鍵值對應鍵碼
{
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); //按鍵釋放檢測
}
}
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);

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





創作
發文章
發帖
提問
發資料
發視頻
上傳資料賺積分
評論