心形花样LED流水灯参考文文档格式.docx
《心形花样LED流水灯参考文文档格式.docx》由会员分享,可在线阅读,更多相关《心形花样LED流水灯参考文文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
●工作频率:
0~35MHz,相当于普通8051:
0~420MHz---实际可到48MHz,相当于8051:
0~576MHz
●时钟:
外部晶体或内部RC振荡器可选,在ISP下载编程用户程序时设置
●16K字节片内Flash程序存储器,擦写次数10万次以上
●512字节片内RAM数据存储器
●芯片内EEPROM功能
●ISP/IAP,在系统可编程/在应用可编程,无需编程器/仿真器
●10位ADC,8通道,STC12C5A16S2系列为8位ADC。
4路PWM还可当4路D/A使用
●2个硬件16位定时器,兼容普通8051的定时器。
4路PCA还可再实现4个定时器
●硬件看门狗(WDT)
●高速SPI通信端口
●全双工异步串行口(UART),兼容普通8051的串口
●先进的指令集结构,兼容普通8051指令集
4组8个8位通用工作寄存器(共32个通用寄存器)
有硬件乘法/除法指令
●通用I/O口(27/23/15个),复位后为:
准双向口/弱上拉(普通8051传统I/O口)
可设置成四种模式:
准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可达到20mA,但整个芯片最大不得超过55mA。
3、集成音乐芯片
外形18.5mm*9.5mm迷你小片型,工作电压2.5V-4.5V,模块本身静态工作电流仅几uA
此种音乐片为上电连续循环发声型,带有复位端,该端接通VCC可以复位从头播放音乐
接上放大NPN型三极管可以推动16欧以上扬声器或有源蜂鸣器发声,不接放大可以输出
内部音频信号,具体使用与工作原理见以下图示描述
注意:
有源蜂鸣器一般可以直接接入电路发声
如接喇叭请保持负载阻抗大于32欧(可以串联电阻增大阻抗)才是最佳工作状态
接不同类型的放声器件,其音质效果将会不同使用接口图示:
不接复位电路、接放大三极管连接图示:
接复位电路、接放大三极管连接图示:
音乐片相关知识介绍:
使用音乐集成电路,通过简单的外接电路即可获得简单的乐曲、语音或是各种模拟的声响。
音乐集成电路价格便宜,电路结构简单,工作稳定可靠,耗电省,所以用途广泛;
在音乐门铃、音乐贺年卡、音乐报时钟、电话振铃电路中都可见它的踪影。
音乐集成电路是一种大规模的CMOS集成电路。
音乐集成电路内部结构框图大致如下:
振荡电路产生的信号供各个电路使用;
控制电路从存储器中读出代码,根据代码来控制节拍器和音调器协调工作,产生相应的音乐输出。
音乐集成电路一般采用“软封装”,也有的使用双列直插和单列直插封装,还有的做成晶体三极管外形,叫做“音乐三极管”。
工作电压一般用2.5~4.5伏直流电源。
输出常用压电陶瓷片或蜂鸣器作为电-声转换器件;
也常用晶体三极管进行放大后送到喇叭放音,音质更好。
4、数码管
电路采用四个一位共阴数码管,显示LOVE字样。
放在整个电路的中间,效果就更加炫。
其中“L”字分别把数码管D、E、F脚分别连上,“O”字样分别把数码管A、B、C、D、E、F分别连上;
“V”字样分别把数码管B、C、D、E、F分另连上;
“E”字样分别把数码管A、D、E、F分别连上。
最后把以上各个引脚串联接上一个100欧电阻连到+5V电源上,点亮。
5、总电路图
本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。
总共有32个LED灯,4个I/O全部用上了。
用200欧电阻串联LED,限流保护LED灯不被烧坏。
晶振可以用12M的或11.0592M也行,C1,C2用30PF。
其具体硬件组成如图1所示:
7、软件程序
软件编写程序,共显示20种不同的效果。
程序如下:
#include<
reg52.h>
#include<
intrins.h>
#defineuintunsignedint
#defineucharunsignedchar
ucharcodetable[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
//逐个点亮0~7
ucharcodetable1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
//逐个点亮7~0
ucharcodetable2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
//逐个灭0~7
ucharcodetable3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
//逐个灭7~0
/***********************************************************/
voiddelay(uintt);
//延时
voidzg(uintt,uchara);
//两边逐个亮
voidqs(uintt,uchara);
//全部闪烁
voidzgxh(uintt,uchara);
//逆时针逐个点亮
//voidzgxh1(uintt,uchara);
//顺时针逐个点亮
voiddjs(uintt,uchara);
//对角闪
voidlbzgm(uintt,uchara);
//两边逐个灭
//voidsszgm(uintt,uchara);
//顺时针逐个灭
voidnszgm(uintt,uchara);
//逆时针逐个灭
voidsztl(uintt,uchara);
//顺时逐个同步亮
voidnztl(uintt,uchara);
//逆时逐个同步亮
voidsztm(uintt,uchara);
//顺时逐个同步灭
voidnztm(uintt,uchara);
//逆时逐个同步灭
voidhwzjl(uintt,uchara);
//横往中间亮
voidhwzjm(uintt,uchara);
//横往中间灭
//voidswzjl(uintt,uchara);
//竖往中间亮
//voidswzjm(uintt,uchara);
//竖往中间灭
voidnzdl(uintt,uchara);
//逆时逐段亮
voidnzdgl(uintt,uchara);
//逆时逐段一个点亮
voidjgs(uintt,uchara);
//间隔闪
/**********************************************************/
voidzg(uintt,uchara)//两边逐个亮
{
uchari,j;
for(j=0;
j<
a;
j++)
{
P0=P1=P2=P3=0xff;
P0=0x7f;
delay(t);
for(i=0;
i<
7;
i++)
{
P0=table1[i+1];
P2=table1[i];
delay(t);
}
P2=0x00;
P1=0xfe;
P1=table[i+1];
P3=table1[i];
delay(t);
P3=0x00;
}
}
voidqs(uintt,uchara)//全部闪烁
ucharj;
P0=P1=P2=P3=0xff;
delay(t);
P0=P1=P2=P3=0x00;
}
voidzgxh(uintt,uchara)//逆时针逐个点亮
for(j=0;
for(i=0;
8;
P0=table1[i];
P1=table[i];
P3=table[i];
P2=table[i];
voidnszgm(uintt,uchara)//逆时针逐个灭
P0=P1=P2=P3=0x00;
P0=table3[i];
P1=table2[i];
P3=table2[i];
P2=table2[i];
/*
voidzgxh1(uintt,uchara)//顺时针逐个点亮
P2=table1[i];
for(i=