標(biāo)題:
51單片機(jī)矩陣鍵盤控制LED數(shù)碼管顯示0-F源程序
[打印本頁(yè)]
作者:
zhangyu111
時(shí)間:
2021-12-8 11:26
標(biāo)題:
51單片機(jī)矩陣鍵盤控制LED數(shù)碼管顯示0-F源程序
通過4*4的矩陣鍵盤,控制數(shù)碼管顯示0-F
原理:
先設(shè)置某一列為低電平,這樣如果這一列有按鍵被按下,這樣就會(huì)兩邊都是低電平,就相當(dāng)于閉合。這樣就能檢測(cè)出來了。循環(huán)三次就行了
代碼亂碼了 看附件吧
單片機(jī)源程序如下:
#include <reg51.h>
#define uchar unsigned char
sbit L1=P1^0;
sbit L2=P1^1;
sbit L3=P1^2;
sbit L4=P1^3;
uchar dis[16]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
unsigned int time;
//延時(shí)函數(shù)
delay(time)
{
unsigned int j;
for(j=0;j<time;j++)
{}
}
//主函數(shù)
main( )
{
uchar temp;//定義臨時(shí)變量
uchar i;
while(1)
{
P1=0xef; //先把第一行置于低電位P1.4=0, P1.5-P1.7=1
for(i=0;i<=3;i++)
{
if (L1==0) P0=dis[i*4+0]; //判斷第一列是否有按鍵被按下,如果被按下,則結(jié)果可能是 0 4 8 c
if (L2==0) P0= dis[i*4+1]; //同樣的 判斷第二列是否有按鍵按下 結(jié)果是....
if (L3==0) P0= dis[i*4+2];
if (L4==0) P0= dis[i*4+3];
delay(500);
temp=P1;
temp=temp | 0x0f;//保持P1.0-P1.3端口不變
temp=temp<<1; //0xef-->0xcf 也就是保持第二列為低電平
temp=temp | 0X0f; //保持P1.0-P1.3的高電位(若被按下,則立即變?yōu)榈碗娢唬?br />
P1=temp; //換為第二行掃描,繼續(xù)下一輪
}
}
}
復(fù)制代碼
Keil代碼下載:
keil.7z
(63.29 KB, 下載次數(shù): 14)
2021-12-9 20:37 上傳
點(diǎn)擊文件名下載附件
源程序
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1