?1.前言
當(dāng)我們熟悉了數(shù)碼管的位選與段選,并了解的矩陣鍵盤的掃描之后就可以編寫程序了。
1.1實驗現(xiàn)象
按下矩陣鍵盤S1并松開,數(shù)碼管第一位(LED8)顯示0;按下矩陣鍵盤S2并松開,數(shù)碼管第一位顯示1;...按下矩陣鍵盤S16并松開,數(shù)碼管第一位顯示F;
1.2工作原理
矩陣鍵盤掃描(輸入掃描)
?? ?原理:讀取第1行(列)→讀取第2行(列) →讀取第3行(列) → ……,然后快速循環(huán)這個過程,最終實現(xiàn)所有按鍵同時檢測的效果
https://blog.csdn.net/YLG_lin/article/details/126429384?utm_source=app&app_version=5.3.0&code=app_1562916241&uLinkId=usr1mkqgl919blen
數(shù)碼管的顯示(位選,段選)文章來源:http://www.zghlxwxcb.cn/news/detail-507289.html
https://blog.csdn.net/YLG_lin/article/details/126406076?utm_source=app&app_version=5.3.0&code=app_1562916241&uLinkId=usr1mkqgl919blen文章來源地址http://www.zghlxwxcb.cn/news/detail-507289.html
2.源碼
#include<regx52.h>
//數(shù)碼管段碼表,123456789AbcdEF;
unsigned char Table[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void Delay(unsigned int xms)//延時函數(shù)
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
unsigned char MatrixKey()//按鍵掃描(逐列掃描)
{
unsigned char KeyNumber=0;
P1=0xFF;
P1_3=0;
if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=1;}
if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=5;}
if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=9;}
if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=13;}
P1=0xFF;
P1_2=0;
if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=2;}
if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=6;}
if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=10;}
if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=14;}
P1=0xFF;
P1_1=0;
if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=3;}
if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=7;}
if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=11;}
if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=15;}
P1=0xFF;
P1_0=0;
if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=4;}
if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=8;}
if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=12;}
if(P1_4==0){Delay(20);while(P1_4==0);Delay(20);KeyNumber=16;}
return KeyNumber;
}
void Xian_Shi(KeyNum)
{
P2_4=1;P2_3=1;P2_2=1;//選中第一位(LED8)
P0=Table[KeyNum-1]; //數(shù)字的首元素為Table[0];
Delay(1);
}
void main()
{
while(1)
{
unsigned char KeyNum=MatrixKey();//不斷循環(huán)掃描
if(KeyNum) //判斷是否有按鍵按下,如果有就顯示
{
Xian_Shi(KeyNum);
}
}
}
到了這里,關(guān)于51單片機矩陣鍵盤——數(shù)碼管顯示的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!