介绍
这篇文章将延续上一篇,介绍关于led单个灯的点亮、led流水灯、led显示二进制等等;
led灯:
接上次介绍:
#include <REGX52.H> // 导包
unsigned char lednum; // 定义八位二进制数字
void main(){
lednum = 1;
P2 = lednum;
return 0;
}
全部灯的点亮
#include <REGX52.H> // 导包
unsigned char lednum;
int main()
{
// 手册找到LED灯的八位引脚,这里是P2
led = 0x00; // 00000000八位全是零,低电平,全亮
P2 = lednum;
while(); // 无线循环,不让程序结束,这样灯才能一直亮
}
单个灯的点亮
#include <REGX52.H> // 导包
unsigned char lednum;
void main()
{
// 我们让P5位置处灯亮,其他都灭
lednum = 0x01;
P2 =~ lednum; // 这里取反,因为0为低电平,亮
while();
}
led流水灯
#include <REGX52.H>
long int n;
void Delay() // 随便写的一个延迟函数
{
n = 10000;
while(n--);
}
void main()
{
while(1)
{
P2=0xFE;//1111 1110
Delay();
P2=0xFD;//1111 1101
Delay();
P2=0xFB;//1111 1011
Delay();
P2=0xF7;//1111 0111
Delays();
P2=0xEF;//1110 1111
Delay();
P2=0xDF;//1101 1111
Delay();
P2=0xBF;//1011 1111
Delay();
P2=0x7F;//0111 1111
Delay();
}
}
按键控制led显示二进制
找到按键所在引脚,通过手册查找传输按下时引脚为啥
注意防抖
if(P3_1==0) //如果K1按键按下
{
Delay(20); //延时消抖
while(P3_1==0); //松手检测
Delay(20); //延时消抖
}
代码
#include <REGX52.H>
void Delay(unsigned int xms) // stc软件手动形成ms延时函数
{
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) //如果K1按键按下
{
Delay(20); //延时消抖
while(P3_1==0); //松手检测
Delay(20); //延时消抖
LEDNum++; //变量自增
P2=~LEDNum; //变量取反输出给LED
}
}
}