|
我從廠里面拿來了一個(gè)學(xué)習(xí)板(作為初學(xué)者,我用的是AT89C52單片機(jī)),這個(gè)學(xué)習(xí)板數(shù)碼管位選是P0口,低電平有效,
段選是P2口,也是低電平有效。數(shù)碼管對(duì)應(yīng)的按鍵是一邊是P2^2~P2^7,公共端接的是P3^3。怎么才能一邊控制按鍵一邊讓數(shù)碼管亮(程序不會(huì)寫)。這是我的寫的按鍵控制小燈的程序,可是控制數(shù)碼管就不會(huì)了。
//LED小燈區(qū)別按鍵
//LED小燈區(qū)別按鍵
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp;
sbit key=P3^3; //按鍵公共端
void delay(uchar z) //延時(shí)函數(shù)
{
uint x,y;
for(x=70;x>0;x--)
for(y=z;y>0;y--);
}
void main()
{
while(1)
{
key=0; //按鍵公共端置0
temp=P2; //用按鍵掃描方法判斷是否有按鍵按下
temp=temp&0xff;
while(temp!=0xff)
{
delay(5); //延時(shí)一段時(shí)間確認(rèn)按鍵是否按下
temp=P2;
temp=temp&0xff;
while(temp!=0xff)
{
temp=P2;
switch(temp) //對(duì)應(yīng)按下的不同按鍵,點(diǎn)亮不同的LED小燈
{
case 0x7f:P1=0x7f;break;
case 0xbf:P1=0xbf;break;
case 0xdf:P1=0xdf;break;
case 0xef:P1=0xef;break;
case 0xf7:P1=0xf7;break;
case 0xfb:P1=0xfb;break;
}
while(temp!=0xff) //消除按鍵松開時(shí)的抖動(dòng)
{
temp=P2;
}
}
}
}
}
|
|