基于单片机的花样彩灯
1、设计目的
(1)4种样式持续循环
(2)花样1:从上到下依次点亮8位led
(3)花样2:从下到上依次熄灭8位led
(4)花样3:从两边向中间依次点亮8位led
(5)花样4:从中间向两边依次熄灭8位led
2、仿真电路
3、程序设计(C语言)
#include<reg51.h> //包含单片机寄存器的头文件
#include<math.h> //包含数学函数的头文件
int mode; //mode=0,依次点亮led;mode=1,依次熄灭led;mode=2,两边向中间点亮;mode=3,中间向两边熄灭
/****************************************
函数功能:延时
*****************************************/
void delay(int time) //无返回值,无参数
{
unsigned int i; //定义无符号整数,最大取值范围65535
for(time;time>0;time--)
for(i=0;i<20000;i++); //做20000次空循环
}
/****************************************
函数功能:花样转换
*****************************************/
void pattern(int model)
{
int n;
switch(model)
{
case 0: //花样1
{
for(n=0;n<8;n++)
{
P3=P3<<1;
delay(5); //调用延时函数
}
mode=1;
}
break;
case 1: //花样2
{
for(n=0;n<8;n++)
{
P3=P3+pow(2,7-n);
delay(5); //调用延时函数
}
mode=2;
}
break;
case 2: //花样3
{
for(n=0;n<4;n++)
{
P3=P3-pow(2,7-n)-pow(2,n);
delay(5); //调用延时函数
}
mode=3;
}
break;
case 3: //花样4
{
for(n=0;n<4;n++)
{
P3=P3+pow(2,4+n)+pow(2,3-n);
delay(5); //调用延时函数
}
mode=0;
}
break;
}
}
/*******************************************************
函数功能:主函数
********************************************************/
void main()
{
while(1) //程序持续运行
{
pattern(mode); //调用花样切换函数
}
}