使用AT89C51單片機控制燈亮,要求按一下亮一個燈,但是因為是個小白,做不到按一下燈亮再按一下燈滅,僅供參考
原理圖如圖
代碼如下
#include<reg51.h>
unsigned char s[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
unsigned char num=-1;
void delay(unsigned int n)
{
unsigned int i=0,j=0;
for(i;i<n;i++)
{
for(j;j<120;j++);
}
}
void scan()
{
unsigned char temp0=0,temp1=0,temp=0;
P2=0xf0;
delay(100);
if(P2!=0xf0)
{
delay(20);
temp0=P2;
P2=0x0f;
if(P2!=0x0f)
{
temp1=P2;
}
}
temp=temp0+temp1;
if(temp==0xee)
{
num=0;
}
if(temp==0xed)
{
num=1;
}
if(temp==0xeb)
{
num=2;
}
if(temp==0xe7)
{
num=3;
}
if(temp==0xde)
{
num=4;
}
if(temp==0xdd)
{
num=5;
}
if(temp==0xdb)
{
num=6;
}
if(temp==0xd7)
{
num=7;
}
}
void display()
{
P1=s[num];
}
void main()
{
while(1)
{
scan();
display();
}
}
|