資料介紹
// 簡(jiǎn)單描述 : 本文件是行列掃描法實(shí)現(xiàn)矩陣按鍵掃描程序
/* ***************************************************** */
#include 《reg52.h》
/* ***************************************************** */
// 宏定義
/* ***************************************************** */
#define uInt16 unsigned int
#define uChar8 unsigned char
#define DATA P0 //數(shù)據(jù)口
#define KEYPORT P3 //鍵盤(pán)接入端口
/* ***************************************************** */
// 位定義
/* ***************************************************** */
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; //讀取鍵盤(pán)端口數(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的入門(mén)實(shí)驗(yàn)-verilo 11次下載
- 《深入淺出玩轉(zhuǎn)FPGA》基于EPM240的入門(mén)實(shí)驗(yàn)-ps2ver 8次下載
- 《深入淺出玩轉(zhuǎn)FPGA》基于EPM240的入門(mén)實(shí)驗(yàn)-myosct 5次下載
- 《深入淺出玩轉(zhuǎn)FPGA》基于EPM240的入門(mén)實(shí)驗(yàn)-uartve 6次下載
- 《深入淺出玩轉(zhuǎn)FPGA》基于EPM240的入門(mén)實(shí)驗(yàn)-UFTtes 4次下載
- 《深入淺出玩轉(zhuǎn)FPGA》基于EPM240的入門(mén)實(shí)驗(yàn)-johnso 8次下載
- 《深入淺出玩轉(zhuǎn)FPGA》基于EPM240的入門(mén)實(shí)驗(yàn)-clkdiv 4次下載
- 《深入淺出玩轉(zhuǎn)FPGA》基于EPM240的入門(mén)實(shí)驗(yàn)-models 4次下載
- 《深入淺出玩轉(zhuǎn)FPGA》基于EPM240的入門(mén)實(shí)驗(yàn)-mux16 6次下載
- 深入淺出AVR單片機(jī)_精要 16次下載
- STM32深入淺出之新手篇 128次下載
- 深入淺出AVR單片機(jī)(珍藏版) 0次下載
- 深入淺出AVR單片機(jī)(珍藏版) 0次下載
- 深入淺出AVR單片機(jī)學(xué)習(xí)教材
- 深入淺出AVR單片機(jī)--從ATMega48/88/168開(kāi)始
- 兩個(gè)單片機(jī)之間串口通信的例程 5127次閱讀
- 什么是51單片機(jī)最小系統(tǒng) 2159次閱讀
- #深入淺出學(xué)習(xí)eTs#(九)變紅碼?專屬二維碼生成 1258次閱讀
- 深入淺出編譯優(yōu)化選項(xiàng)(下) 1087次閱讀
- 單片機(jī)里的程序是如何運(yùn)行? 3908次閱讀
- 詳解STM32單片機(jī)和51單片機(jī)的區(qū)別 3.7w次閱讀
- 51單片機(jī)的最小系統(tǒng)應(yīng)用說(shuō)明 7719次閱讀
- 51單片機(jī)引腳簡(jiǎn)介 5.4w次閱讀
- 如何學(xué)習(xí)51單片機(jī) 4929次閱讀
- 如何對(duì)51單片機(jī)進(jìn)行外部擴(kuò)展 1.5w次閱讀
- 51單片機(jī)和AVR單片機(jī)有什么區(qū)別 1.3w次閱讀
- 新手學(xué)習(xí)單片機(jī)的首選:51單片機(jī) 8536次閱讀
- 如何深入學(xué)習(xí)單片機(jī)? 3772次閱讀
- 學(xué)習(xí)51單片機(jī)晶振這21問(wèn)題搞懂了學(xué)單片機(jī)就簡(jiǎn)單了 1.2w次閱讀
- 51單片機(jī)學(xué)習(xí)感悟與51單片機(jī)上拉電阻心得 4229次閱讀
下載排行
本周
- 1普中科技HC6800-EM3使用操作手冊(cè)
- 21.69 MB | 3次下載 | 2 積分
- 2PCB板EMC/EMI的設(shè)計(jì)技巧
- 0.20 MB | 3次下載 | 免費(fèi)
- 32024PMIC市場(chǎng)洞察
- 2.23 MB | 2次下載 | 免費(fèi)
- 4MSP430?閃存器件引導(dǎo)加載程序(BSL)
- 1.45MB | 2次下載 | 免費(fèi)
- 5PL4807單節(jié)鋰離子電池充電器中文手冊(cè)
- 1.36 MB | 2次下載 | 免費(fèi)
- 6LTH7充電電路和鋰電池升壓5V輸出電路原理圖
- 0.04 MB | 1次下載 | 免費(fèi)
- 7HT2120兩節(jié)鋰電池保護(hù)板電路
- 0.22 MB | 1次下載 | 免費(fèi)
- 8BQ77207EVM用戶指南
- 865.23KB | 1次下載 | 免費(fèi)
本月
- 1XL4015+LM358恒壓恒流電路圖
- 0.38 MB | 151次下載 | 1 積分
- 2PCB布線和布局電路設(shè)計(jì)規(guī)則
- 0.40 MB | 33次下載 | 免費(fèi)
- 3智能門(mén)鎖原理圖
- 0.39 MB | 13次下載 | 免費(fèi)
- 4GB/T4706.1-2024 家用和類似用途電器的安全第1部分:通用要求
- 7.43 MB | 11次下載 | 1 積分
- 5JESD79-5C_v1.30-2024 內(nèi)存技術(shù)規(guī)范
- 2.71 MB | 10次下載 | 免費(fèi)
- 6elmo直線電機(jī)驅(qū)動(dòng)調(diào)試細(xì)則
- 4.76 MB | 9次下載 | 6 積分
- 7WIFI智能音箱原理圖完整版
- 0.09 MB | 7次下載 | 10 積分
- 8PC1013三合一快充數(shù)據(jù)線充電芯片介紹
- 1.03 MB | 7次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935115次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420061次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233084次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191367次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183332次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73806次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65985次下載 | 10 積分
評(píng)論
查看更多