写在前面:以下涉及到的程序及电路图不保证是最优方案,会存在很多不足之处,望谅解。
正文
学习目标:使用51单片机实现LED流水灯功能。
学习内容:
- LED灯的点亮
- LED灯的闪烁
- LED流水灯
程序一:LED灯的点亮
功能要求:实现上电后LED灯的常亮
源程序
#include "reg52.h"
sbit led = P2^0; //定义LED端口
/************主函数************/
void main()
{
while(1) //进入死循环
{
led = 1; //点亮LED
}
}
仿真图
程序二:LED灯的闪烁
功能要求:实现上电后LED灯的闪烁
源程序
#include "reg52.h"
typedef unsigned char uchar;
typedef unsigned int uint;
sbit led = P2^0;
void delay(uint t) //12MHz,t毫秒
{
uchar k;
while(1)
{
for(k = 100;k > 0;k--);
}
}
void main()
{
while(1)
{
led = 1;
delay(500);
led = 0;
delay(500);
/*
方法二:
led = ~led;
delay(500);
*/
}
}
仿真图
程序三:LED流水灯
功能要求:实现上电后LED灯组按照一定顺序亮灭
源程序
#include "reg52.h"
typedef unsigned char uchar;
typedef unsigned int uint;
#define led P2
uchar i,j;
void delay(uint t)
{
uchar k;
while(t--)
{
for(k = 100;k > 0;k--);
}
}
void main()
{
uchar liu;
led = 0x01;
while(1)
{
/***LED灯右移***/
liu = 0xfe;
for(i = 8;i > 0;i--)
{
led = ~liu;
delay(500);
liu = liu << 1;
}
/* LED灯左移
liu = 0x7f;
for(i = 8;i > 0;i--)
{
led = ~liu;
delay(500);
liu = liu >> 1;
}
*/
}
}