資料介紹
// 簡單描述 : 本文件是行列掃描法實現矩陣按鍵掃描程序
/* ***************************************************** */
#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 11次下載
- 《深入淺出玩轉FPGA》基于EPM240的入門實驗-ps2ver 8次下載
- 《深入淺出玩轉FPGA》基于EPM240的入門實驗-myosct 5次下載
- 《深入淺出玩轉FPGA》基于EPM240的入門實驗-uartve 6次下載
- 《深入淺出玩轉FPGA》基于EPM240的入門實驗-UFTtes 4次下載
- 《深入淺出玩轉FPGA》基于EPM240的入門實驗-johnso 8次下載
- 《深入淺出玩轉FPGA》基于EPM240的入門實驗-clkdiv 4次下載
- 《深入淺出玩轉FPGA》基于EPM240的入門實驗-models 4次下載
- 《深入淺出玩轉FPGA》基于EPM240的入門實驗-mux16 6次下載
- 深入淺出AVR單片機_精要 16次下載
- STM32深入淺出之新手篇 128次下載
- 深入淺出AVR單片機(珍藏版) 0次下載
- 深入淺出AVR單片機(珍藏版) 0次下載
- 深入淺出AVR單片機學習教材
- 深入淺出AVR單片機--從ATMega48/88/168開始
- 兩個單片機之間串口通信的例程 8088次閱讀
- 什么是51單片機最小系統 2802次閱讀
- #深入淺出學習eTs#(九)變紅碼?專屬二維碼生成 1493次閱讀
- 深入淺出編譯優化選項(下) 1341次閱讀
- 單片機里的程序是如何運行? 4546次閱讀
- 詳解STM32單片機和51單片機的區別 3.8w次閱讀
- 51單片機的最小系統應用說明 8207次閱讀
- 51單片機引腳簡介 5.4w次閱讀
- 如何學習51單片機 5082次閱讀
- 如何對51單片機進行外部擴展 1.5w次閱讀
- 51單片機和AVR單片機有什么區別 1.3w次閱讀
- 新手學習單片機的首選:51單片機 8836次閱讀
- 如何深入學習單片機? 3890次閱讀
- 學習51單片機晶振這21問題搞懂了學單片機就簡單了 1.2w次閱讀
- 51單片機學習感悟與51單片機上拉電阻心得 4295次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 651單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 751單片機大棚環境控制器仿真程序
- 1.10 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多