流水灯程序
申明:此代码用于学习交流,禁止用于商业用途!
//====================================蓝色之心==================================================
//名称:蓝色之心
//文件功能:流水灯移动
//修改时间:2014年5月18日
//修改人:刘祚东
//说明:1T单片机12M晶振
//===================================================================== =========================
main.c
#include "STC12C5A60S2.H"
#include "typedef.h"
#include "led.h"
#include "water.h"
void main()
{
while(1)
{
LED_0(5);//运算方式流水灯
dropWater(50); //水滴效果流水灯
}
}
typedef.h
#ifndef _typedef
#define _typedef
typedef unsigned char uchar;
typedef unsigned char uchar8;
typedef unsigned char Byte;
typedef unsigned int uint;
typedef unsigned int uchar16;
typedef unsigned int Word;
#endif
led.h
#ifndef _led
#define _led
void Delay_1ms(uint Time); //误差0us
void P0LED_LeftShift(uint Time);//LED左移
void P1LED_LeftShift(uint Time);//LED左移
void P2LED_LeftShift(uint Time);//LED左移
void P3LED_LeftShift(uint Time);//LED左移
void P0LED_RightShift(uint Time);//LED右移
void P1LED_RightShift(uint Time);//LED右移
void P2LED_RightShift(uint Time);//LED右移
void P3LED_RightShift(uint Time);//LED右移
void P0_LeftShift(uint Time);//LED左移流水
void P1_LeftShift(uint Time);//LED左移流水
void P2_LeftShift(uint Time);//LED左移流水
void P3_LeftShift(uint Time);//LED左移流水
void P0_RightShift(uint Time);//LED右移流水
void P1_RightShift(uint Time);//LED右移流水
void P2_RightShift(uint Time);//LED右移流水
void P3_RightShift(uint Time);//LED右移流水
void P0P1LED_DownShift(uint Time);//LED向下
void P2P3LED_DownShift(uint Time);//LED向下
void P0P1_DownShift(uint Time);//LED向下流水
void P2P3_DownShift(uint Time);//LED向下流水
void P0P1LED_UpShift(uint Time);//LED向上
void P2P3LED_UpShift(uint Time);//LED向上
void P0P1_UpShift(uint Time);//LED向上流水
void P2P3_UpShift(uint Time);//LED向上流水
void P0P1P2P3_flicker(uint Time);//LED全闪烁
void P0P1P2P3_downShift(uint Time);//LED四组同时向下移动
void P0P1P2P3_upShift(uint Time);//LED四组同时向上移动
void P0123_RightShift(uint Time);//LED向右顺时针旋转
void P0123_LeftShift(uint Time);//LED向左顺时针旋转
void LED_0(uint time);//流水灯函数
#endif
led.c
#include "STC12C5A60S2.H"
#include "intrins.h"
#include "typedef.h"
//===================================================================== =========================
//函数名称:延时函数
//功能:1ms*Time延时
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void Delay_1ms(uint Time) //误差0us
{
unsigned char a,b;
uint c;
for(c=Time;c>0;c--)
for(b=129;b>0;b--)
for(a=43;a>0;a--);
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P0LED左移
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P0LED_LeftShift(uint Time)
{
uchar a=0xfe,i;
for(i=0;i<8;i++)
{
P0=a;
Delay_1ms(Time);
a<<=1;
a|=1;
}
P0 =0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P1LED左移
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P1LED_LeftShift(uint Time)//LED左移
{
uchar a=0xfe,i;
for(i=0;i<8;i++)
{
P1=a;
Delay_1ms(Time);
a<<=1;
a|=1;
}
P1=0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P2LED左移
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P2LED_LeftShift(uint Time)//LED左移
{
uchar a=0x7F,i;
for(i=0;i<8;i++)
{
P2=a;
Delay_1ms(Time);
a>>=1;
a|=0X80;
}
P2=0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P3LED左移
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P3LED_LeftShift(uint Time)//LED左移
{
uchar a=0xfe,i;
for(i=0;i<8;i++)
{
P3=a;
Delay_1ms(Time);
a<<=1;
a|=1;
}
P3=0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P0LED右移
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P0LED_RightShift(uint Time)//LED右移
{
uchar a=0x7F,i;
for(i=0;i<8;i++)
{
P0=a;
Delay_1ms(Time);
a>>=1;
a|=0X80;
}
P0=0XFF;
}
//=====================================================================
=========================
//函数名称:LED移动函数
//功能:P1LED右移
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P1LED_RightShift(uint Time)//LED右移
{
uchar a=0x7F,i;
for(i=0;i<8;i++)
{
P1=a;
Delay_1ms(Time);
a>>=1;
a|=0X80;
}
P1=0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P2LED右移
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P2LED_RightShift(uint Time)//LED右移
{
uchar a=0xfe,i;
for(i=0;i<8;i++)
{
P2=a;
Delay_1ms(Time);
a<<=1;
a|=1;
}
P2=0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P3LED右移
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P3LED_RightShift(uint Time)//LED右移
{
uchar a=0x7F,i;
for(i=0;i<8;i++)
{
P3=a;
Delay_1ms(Time);
a>>=1;
a|=0X80;
}
P3=0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P0、P1LED下移
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P0P1LED_DownShift(uint Time)//LED向下
{
uchar a=0xfe,i;
for(i=0;i<8;i++)
{
P0=a;
P1=a;
Delay_1ms(Time);
a<<=1;
a|=1;
}
P0=0XFF;
P1=0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P2、P3LED下移
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P2P3LED_DownShift(uint Time)//LED向下
{
uchar a=0x7F,b=0xfe,i;
for(i=0;i<8;i++)
{
P2=a;
P3=b;
Delay_1ms(Time);
a>>=1;
a|=0X80;
b<<=1;
b|=1;
}
P2=0XFF;
P3=0XFF;
}//==================================================================== ==========================
//函数名称:LED移动函数
//功能:P0、P1LED上移
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P0P1LED_UpShift(uint Time)//LED向上
{
uchar a=0x7f,i;
for(i=0;i<8;i++)
{
P0=a;
P1=a;
Delay_1ms(Time);
a>>=1;
a|=0x80;
}
P0=0XFF;
P1=0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P2、P3LED上移
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P2P3LED_UpShift(uint Time)//LED向上
{
uchar a=0x7F,b=0xfe,i;
for(i=0;i<8;i++)
{
P2=b;
P3=a;
Delay_1ms(Time);
a>>=1;
a|=0X80;
b<<=1;
b|=1;
}
P2=0XFF;
P3=0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P0LED左移流水
//入口参数:Time
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P0_LeftShift(uint Time)//LED左移流水
{
uchar a=0xfe,i;
for(i=0;i<8;i++)
{
P0=a;
Delay_1ms(Time);
a<<=1;
}
P0=0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P1LED左移流水
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P1_LeftShift(uint Time)//LED左移流水
{
uchar a=0xfe,i;
for(i=0;i<8;i++)
{
P1=a;
Delay_1ms(Time);
a<<=1;
}
P1 =0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P2LED左移流水
//入口参数:Time
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P2_LeftShift(uint Time)//LED左移流水
{
uchar a=0x7F,i;
for(i=0;i<8;i++)
{
P2=a;
Delay_1ms(Time);
a>>=1;
}
P2=0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P3LED左移流水
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P3_LeftShift(uint Time)//LED左移流水
{
uchar a=0xfe,i;
for(i=0;i<8;i++)
{
P3=a;
Delay_1ms(Time);
a<<=1;
}
P3 =0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P0LED右移流水
//入口参数:Time
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P0_RightShift(uint Time)//LED右移流水
{
uchar a=0x7F,i;
for(i=0;i<8;i++)
{
P0=a;
Delay_1ms(Time);
a>>=1;
}
P0=0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P1LED右移流水
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P1_RightShift(uint Time)//LED右移流水
{
uchar a=0x7F,i;
for(i=0;i<8;i++)
{
P1=a;
Delay_1ms(Time);
a>>=1;
}
P1=0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P2LED右移流水
//入口参数:Time
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P2_RightShift(uint Time)//LED右移流水
{
uchar a=0xfe,i;
for(i=0;i<8;i++)
{
P2=a;
Delay_1ms(Time);
a<<=1;
}
P2=0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P3LED右移流水
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P3_RightShift(uint Time)//LED右移流水
{
uchar a=0x7F,i;
for(i=0;i<8;i++)
{
P3=a;
Delay_1ms(Time);
a>>=1;
}
P3=0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P0、P1LED向下流水
//入口参数:Time
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P0P1_DownShift(uint Time)//LED向下流水
{
uchar a=0xfe,i;
for(i=0;i<8;i++)
{
P0=a;
P1=a;
Delay_1ms(Time);
a<<=1;
}
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P2、P3LED向下流水
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P2P3_DownShift(uint Time)//LED向下流水
{
uchar a=0x7F,b=0xfe,i;
for(i=0;i<8;i++)
{
P2=a;
P3=b;
Delay_1ms(Time);
a>>=1;
b<<=1;
}
P0=0XFF;
P1=0XFF;
P2=0XFF;
P3=0XFF;
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P0、P1LED向上流水
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P0P1_UpShift(uint Time)//LED向上流水
{
uchar a=0x7f,i;
for(i=0;i<8;i++)
{
P0=a;
P1=a;
Delay_1ms(Time);
a>>=1;
}
}
//===================================================================== =========================
//函数名称:LED移动函数
//功能:P2、P3LED向上流水
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P2P3_UpShift(uint Time)//LED向上流水
{
uchar a=0x7F,b=0xfe,i;
for(i=0;i<8;i++)
{
P2=b;
P3=a;
Delay_1ms(Time);
a>>=1;
b<<=1;
}
P0=0XFF;
P1=0XFF;
P2=0XFF;
P3=0XFF;
}
//===================================================================== =========================
//函数名称:LED全闪
//功能:LED花样全闪
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年8月29日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P0P1P2P3_flicker(uint Time)//LED全闪烁
{
P0=0X55;P1=0X55;P2=0Xaa;P3=0X55;
Delay_1ms(Time);
P0=0Xaa;P1=0Xaa;P2=0X55;P3=0Xaa;
Delay_1ms(Time);
P0=0X55;P1=0X55;P2=0Xaa;P3=0X55;
Delay_1ms(Time);
P0=0Xaa;P1=0Xaa;P2=0X55;P3=0Xaa;
Delay_1ms(Time);
P0=0Xff;P1=0X00;P2=0Xff;P3=0X00;
Delay_1ms(Time);
P0=0X00;P1=0Xff;P2=0X00;P3=0Xff;
Delay_1ms(Time);
P0=0Xff;P1=0X00;P2=0Xff;P3=0X00;
Delay_1ms(Time);
P0=0X00;P1=0Xff;P2=0X00;P3=0Xff;
Delay_1ms(Time);
P0=0X00;P1=0X00;P2=0Xff;P3=0Xff;
Delay_1ms(Time);
P0=0Xff;P1=0Xff;P2=0X00;P3=0X00;
Delay_1ms(Time);
P0=0X00;P1=0X00;P2=0Xff;P3=0Xff;
Delay_1ms(Time);
P0=0Xff;P1=0Xff;P2=0X00;P3=0X00;
Delay_1ms(Time);
P0=0Xff;P1=0Xff;P2=0Xff;P3=0Xff;
Delay_1ms(Time);
P0=0X00;P1=0X00;P2=0X00;P3=0X00;
Delay_1ms(Time);
P0=0Xff;P1=0Xff;P2=0Xff;P3=0Xff;
Delay_1ms(Time);
P0=0X00;P1=0X00;P2=0X00;P3=0X00;
Delay_1ms(Time);
P0=0Xff;P1=0Xff;P2=0Xff;P3=0Xff;
}
//===================================================================== =========================
//函数名称:LED四组同时向下移动
//功能:LED四组同时向下移动
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年8月29日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P0P1P2P3_downShift(uint Time)//LED四组同时向下移动
{
uchar tempP013=0xfe,tempP2=0x7f,m,n;
for(m=0;m<7;m++)
{
for(n=0;n<8;n++)
{
P0=P1=P3=tempP013;;
P2=tempP2;
Delay_1ms(Time);
tempP013=_crol_(tempP013,1);
tempP2=_cror_(tempP2,1);
}
tempP013<<=1;
tempP2>>=1;
}
}
//===================================================================== =========================
//函数名称:LED四组同时向上移动
//功能:LED四组同时向上移动
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年8月29日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P0P1P2P3_upShift(uint Time)//LED四组同时向上移动
{
uchar tempP013=0x7f,tempP2=0xfe,m,n;
for(m=0;m<7;m++)
{
for(n=0;n<8;n++)
{
P0=P1=P3=tempP013;;
P2=tempP2;
Delay_1ms(Time);
tempP013=_cror_(tempP013,1);
tempP2=_crol_(tempP2,1);
}
tempP013>>=1;
tempP2<<=1;
}
}
//===================================================================== =========================
//函数名称:LED向右顺时针旋转
//功能:LED向右顺时针旋转
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年8月29日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P0123_RightShift(uint Time)//LED向右顺时针旋转
{
uchar tempP0=0xfe,tempP123=0x7f,m,n;
for(m=0;m<7;m++)
{
for(n=0;n<8;n++)
{
P0=tempP0;;
P1=P2=P3=tempP123;
Delay_1ms(Time);
tempP0=_crol_(tempP0,1);
tempP123=_cror_(tempP123,1);
}
tempP123>>=1;
tempP0<<=1;
}
P0=0Xff;P1=0Xff;P2=0Xff;P3=0Xff;
}
//===================================================================== =========================
//函数名称:LED向左顺时针旋转
//功能:LED向左顺时针旋转
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年8月29日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void P0123_LeftShift(uint Time)//LED向左顺时针旋转
{
uchar tempP0=0x7f,tempP123=0xfe,m,n;
for(m=0;m<7;m++)
{
for(n=0;n<8;n++)
{
P0=tempP0;;
P1=P2=P3=tempP123;
Delay_1ms(Time);
tempP0=_cror_(tempP0,1);
tempP123=_crol_(tempP123,1);
}
tempP123<<=1;
tempP0>>=1;
}
P0=0Xff;P1=0Xff;P2=0Xff;P3=0Xff;
}
//===================================================================== =========================
//函数名称:流水灯函数
//功能:运算实现流水
//入口参数:Time
//出口函数:
//编写(修改)时间:2014年5月18日
//编写(修改)人:刘祚东
//备注:1T单片机12M晶振
//===================================================================== =========================
void LED_0(uint time)//流水灯函数
{
P1LED_LeftShift(time);
P3LED_LeftShift(time);
P0LED_LeftShift(time);
P2LED_LeftShift(time);
P1_LeftShift(time);
P3_LeftShift(time);
P0_LeftShift(time);
P2_LeftShift(time);
P0P1LED_DownShift(time);
P2P3LED_DownShift(time);
P2P3LED_UpShift(time);
P0P1LED_UpShift(time);
P1_LeftShift(time);
P1=0X00;
P3_LeftShift(time);
P1=0XFF;
P0_LeftShift(time);
P0=0X00;
P2_LeftShift(time);
P0=0XFF;
P1_LeftShift(time);
P1=0X00;
P3_LeftShift(time);
P3=0X00;
P0_LeftShift(time);
P0=0X00;
P2_LeftShift(time);
P1=0XFF;
P0=0XFF;
P3=0XFF;
P3LED_RightShift(time);
P1LED_RightShift(time);
P2LED_RightShift(time);
P0LED_RightShift(time);
P3_RightShift(time);
#include
井冈山大学 机电工程学院 单片机 课程设计报告 课程名称:单片机 设计题目:心形流水灯 姓名:彭玉红 专业:生物医学工程 班级:11级医工本一班 学号:110615017 指导教师:王佑湖 2013年11月27日
目录 1引言 (2) 1.1设计任务 (2) 1.2设计要求……………………………………………… ..2 2 课题综述 (2) 2.1课题的来源 (2) 2.2面对的问题 (2) 3 系统分析 (2) 3.1 STC89C52单片机引脚图及引脚功能介绍 (2) 4 系统设计 (4) 4.1硬件设计 (4) 4.1.1硬件框图 (4) 4.1.2硬件详细设计 (5) 4.2 软件设计 (5) 4.3 硬件原理图 (6) 4.4 元件清单 (6) 4.5 硬件焊接图 (6) 4.6 代码编写 (7) 5心得体会 (7) 6致谢 (8) 参考文献 (8)
1 引言 单片机课程设计主要是为了让我们增进对STC89C51单片机电路的感性认识,加深对理论方面的理解。了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目的。 1.1设计任务 设计一个单片机控制的流水灯系统 1.2设计要求 (1)32个LED灯; (2)可实现多种的亮灯(如左循环,右循环,间隔闪,90度交叉闪等)。 2 课题综述 2.1 课题的来源 当今社会,这种由单片机芯片控制各种硬件工作的技术也日益成熟,并普及在交通、化工、机械等各个领域。而流水灯这项技术在生活中的应用更是广泛,较为贴近生活。而流水灯控制的设计所需要的知识也正好吻合了我们本学期对于单片机这门课程的学习,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。 2.2 面对的问题 这次课程设计是通过STC89C52位单片机实现。但面对的问题却
作为一个电子技术爱好者,先就做一个最简单的心形流水灯玩玩吧。 本教程主要特点就是简单,不要你懂原理,不要你懂编程,只要最基本的元件和材料就可以完成。 首先我们来准备和认识元件。 1、最大的一个部件,洞洞板也叫万能板,9*15cm的刚刚好。便宜的万能板1元一块,你也可以用双面喷锡的质量好的玻纤板,4元一块。 2、主角单片机。要求用40脚的,刚好驱动32个led。建议用STC89C52RC,最常见便宜而且不用复位电路。 3、led,5mm的颜色随你喜欢,32个,注意长脚为正极。我用的是白发蓝,你也可以用不同的颜色组合各种效果。 4、电阻,限制led的工作电流,这个严格讲要经过计算,咱们随便作就不管了,200欧姆到1K欧姆的都可以,只是led的亮度有点区别。贴片电阻和直插的都可以,建议用贴片美观,熟练了焊起来更快,只要稍加练习就可以,实在没信心直插的也可以,反正在背面也没用什么影响。 5、镊子,焊接贴片电阻要用到。 6、晶振和瓷片电容。 晶振采用12MHz的,电容15pF-33pF都可以。 7、导线几根,连接电源和飞线用,当然飞线越少越好,一是美观,二是飞线容易出问题。 8、焊接工具。烙铁、焊锡、烙铁架、海绵、斜口钳等等,大家自己有啥样就用什么。我的是坏烙铁拼凑的白菜白光,看着烂用着还可以。 9、还有最好用IC座,一是保护单片机二是方便拆卸和烧录。第一个是固定式IC座,元,第二个是活体的,用的更方便,4元一个。 10、电源部分。这里可以废物利用,用废弃的手机电池,在正负极接上导线,安装XH插头,插座焊在洞洞板上。不必在意电压,只是点亮led,手机电池标准电压,充满这里用没问题。可以加一个拨动开关控制电源。 接下来开始焊接,注意元件的位置和极性。 先焊最小系统,ic座,晶振、电容这些,然后是led,注意正极(长脚)朝外,负极(断脚)朝向单片机。接着是led的负极用锡接过线接到单片机的io口,注意中间接电阻。最后连
LED心形流水灯加程序 1.原件清单:一个万能板,一个底座,一个STC89C52芯片,32个LED 灯,32个贴片电阻,两个30uf电容,一个晶振。 2.原理图: 注:电源处的复位可以不用;就是上面红框里的内容 3.正面图
背面图: 亮灯图: 4. 程序代码: #include