学习目标:3周了解并掌握51单片机
学习内容:独立按键控制LED灯
通过上次学习了LED流水灯之后,继续学习了如何用独立按键控制LED灯。主要有以下四个功能,其中包括按键控制LED灯的亮灭,闪烁,以及左移右移等。
在开始之前,先了解一下常见的一些算术运算符。算术运算符是用于执行基本数值运算的符号。常见的算术运算符有:
-
加法运算符(+):用于两个数值相加。
例如:2 + 3 = 5 -
减法运算符(-):用于两个数值相减。
例如:5 - 2 = 3 -
乘法运算符(*):用于两个数值相乘。
例如:2 * 3 = 6 -
除法运算符(/):用于两个数值相除。
例如:6 / 2 = 3 -
取余运算符(%):用于计算两个数值相除的余数。
例如:7 % 3 = 1 (7除以3余1)
一、独立按键控制LED灯亮灭
#include <REGX52.H>
void main()
{
while(1)
{
if(P1_4==0) //判断P1.4是否等于0
{
P2_0=0;
}
else
{
P2_0=1;
}
}
}
具体展示效果为:按一下亮,松开手灭。
二、独立按键控制LED灯状态
#include <REGX52.H>
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main()
{
while (1)
{
if(P1_4==0)
{
Delay(20);
while(P1_4==0);
Delay(20);
P2_0=~P2_0;
}
}
}
具体展示效果为:按下按键,LED常亮。
三、 独立按键控制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;
while(1)
{
if(P1_4==0)
{
Delay(20);
while(P1_4==0);
Delay(20);
LEDNum++;
P2=~LEDNum;
}
}
}
具体展示效果为:按一次按键,LED灯向下一位移动。
四、 独立按键控制LED灯左移右移
#include <REGX52.H>
void Delay(unsigned int xms);
unsigned char LEDNum;
void main()
{
P2=~0x01;
while(1)
{
if(P1_4==0)
{
Delay(20);
while(P1_4==0);
Delay(20);
LEDNum++;
if(LEDNum>=8)
LEDNum=0;
P2=~(0x01<<LEDNum);
}
if (P1_5==0)
{
Delay(20);
while(P1_5==0);
Delay(20);
if (LEDNum==0)
LEDNum=7;
else
LEDNum--;
P2=~(0x01<<LEDNum);
}
}
}
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}