LED点亮:首先通过原理图可知,8个LED灯已全接阳极,只要将需要点亮的LED灯在接阴极,则可点亮LED灯(也就是P2接口输出低电平)
独立按键控制原理:通过原理图可知,当独立按键按下时,如K1,K1所接单片机RXD接口则会接负极,也就是单片机中的P3.1接口,故可用判断语句来判断P3.1接口是否为负(P3_1==0),来控制P2电平输出,来控制LED灯的亮灭方式
独立按键控制LED亮灭
#include <REGX52.H>
void main()
{
while(1){
if(P3_1==0)
P2_0=0;
else
P2_0=1;
}
}
独立按键控制LED状态
#include <REGX52.H>
void Delay(unsigned int xms) //@12.000MHz
{
unsigned char i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main()
{
while(1){
if(P3_1==0){
Delay(20);
while(P3_1==0);
Delay(20);
P2_0=~P2_0;
}
}
}
独立按键控制LED显示二进制
#include <REGX52.H>
void Delay(unsigned int xms) //@12.000MHz
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void main()
{
unsigned char LEDnum=0;
while(1)
{
if(P3_1==0){
Delay(20);
while(P3_1==0);
Delay(20);
LEDnum++;
P2=~LEDnum;
}
}
}
独立按键控制LED移位
#include <REGX52.H>
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void main()
{
unsigned char LEDnum=0;
P2=~0x01;
while(1)
{
if(P3_1==0)
{
Delay(20);
while(P3_1==0);
Delay(20);
LEDnum++;
if(LEDnum>=8)
LEDnum=0;
P2=~(0x01<<LEDnum);
}
if(P3_0==0)
{
Delay(20);
while(P3_0==0);
Delay(20);
if(LEDnum==0)
LEDnum=7;
else
LEDnum--;
P2=~(0x01<<LEDnum);
}
}
}