目录
一、主要功能
1、数码管显示彩灯模式,闪烁时间
2、按键切换彩灯模式和闪烁时间
3、四种彩灯模式
二、使用步骤
51单片机的彩灯控制器系统是一种常见的嵌入式应用,通过编程控制LED灯实现多种动态效果。这类系统通常以AT89C51或STC89C52单片机为核心,配合LED灯组、按键控制、电源模块等硬件组成。
三、硬件资源
1、51单片机核心模块
2、按键模块
3、LED灯模块
4、数码管显示模块
四、软件设计
#include <REGX51.H>
#include "intrins.h"
#include "main.h"
#include "keyscanf.h"
#include "time.h"
#include "dispaly.h"
#define LED P2
uchar keyvalue;
bit LEDSwitch = 0;
uchar LEDMode = 0;
int LEDTime = 50;
uint temp = 0x01;
char i;
void Delay1ms(int ms)
{
unsigned char i, j;
while(ms--)
{
nop();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
int main()
{
LED = 0xff;
Timer0Init();
while(1)
{
keyvalue = KeyScanf();
LEDFlag();
if(timefalg ==1)
{
timefalg = 0;
LEDUser();
}
if(LEDSwitch == 1)
{
display(0,LEDMode);
display(1,13);
display(2,LEDTime/100);
display(3,LEDTime/10%10);
}
else
{
displayNo(0,11);
displayNo(1,11);
displayNo(2,11);
displayNo(3,11); }
}
}
void LEDFlag()
{
if(keyvalue == 1)
LEDSwitch = !LEDSwitch; //控制开关灯
if(LEDSwitch == 1) //只有灯开了这些操作才有用
{
if(keyvalue == 2) //按键2控制四种间隔方式
{
LEDMode++;
if(LEDMode >= 4)
LEDMode = 0;
}
else if(keyvalue == 3)
{
LEDTime += 50;
if(LEDTime >= 300)
LEDTime = 300;
}
else if(keyvalue == 4)
{
LEDTime -= 50;
if(LEDTime <= 50)
LEDTime = 50;
}
}
keyvalue = 0;
}
五、实验现象
演示视频: