单片机实现对音乐流水灯的控制
51单片机流水灯程序

51单片机流水灯程序51单片机是一种广泛使用的微控制器,具有丰富的IO端口和定时器资源。
流水灯程序是51单片机入门的基础示例之一,通过多个LED灯按照一定顺序逐个亮起或熄灭,形成流水灯的效果。
下面详细介绍51单片机流水灯程序的编写。
一、硬件连接要实现流水灯效果,需要将多个LED灯连接到51单片机的IO端口上。
一般使用P1端口作为输出端口控制LED灯的亮灭,P2端口作为输出口控制LED灯亮起的顺序。
具体连接方式如下:•将LED灯的阳极通过限流电阻连接到VCC。
•将每个LED灯的阴极通过限流电阻连接到P1端口。
•将P2端口的每个引脚依次连接到每个LED灯的阴极。
二、程序实现#include <reg52.h> //包含51单片机头文件#define LED P1 //定义LED为P1端口#define ORDER P2 //定义顺序控制为P2端口void delay(unsigned int t); //延时函数声明void main(){unsigned char i;while(1) //循环控制流水灯效果{for(i=0; i<8; i++) //控制8个LED灯{LED = 0x01<<i; //将第i个LED灯置亮delay(10000); //延时一段时间,使LED灯亮起后延时熄灭LED = 0x01>>(i+1); //将第i个LED灯置灭}}}void delay(unsigned int t) //延时函数定义{unsigned int i, j;for(i=0; i<t; i++){for(j=0; j<1275; j++);}}该程序首先定义了LED和ORDER两个变量,分别对应P1和P2端口的输出口。
在主函数中,使用一个while循环控制流水灯效果。
在循环内部,使用一个for循环控制8个LED灯的状态。
在每次循环中,先将第i个LED灯置亮,延时一段时间后将其置灭,然后进入下一个循环。
单片机音乐控制流水灯

摘要本设计是一种基于AT89C51单片机音乐控制彩灯的方案,实现单片机演奏音乐,并且对LED彩灯随音符频率的不同而闪烁发光。
本方案以AT89C51单片机作为主控核心,利用三极管和蜂鸣器,通过三极管放大电流使用蜂鸣器播放音乐,利用编程实现亮灯循环模式,在有8个LED彩灯,根据用户需求可以编写若干种亮灯模式.例如左右闪烁,隔几个亮灭,蜂鸣器可以根据用户需求改写编程播放各种音乐。
本方案具有设计简单、体积小、元器件少、电路结构简单等优点。
该设计方案设计及其简单,典型的89c51单片机,亮灯模式多,播放各种类型的音乐,具有体积小、价格低、低能耗等优点。
在美丽的都市夜晚,彩灯的循环亮灭,播放动人的音乐,衬托出美丽的氛围,音乐彩灯具有更广阔的发展天地。
关键字:AT89C51 LED彩灯音乐AbstractThis design is a musical based on AT89C51 microcontroller control program Lantern,realize MCU playing music,And the LED lights on the frequency of different notes with the light flashing。
The program for AT89C51 microcontroller as the control center, use of transistor and buzzer, the current through the transistor amplification using the buzzer to play music,Using programming lighting cycle mode, with 8 LED Lantern, according to user needs to write some kind of switch-mode. For example, flashing around, every few light off, the buzzer can be adapted according to user requirements play a variety of music programming . The program is simple in design, small size, less components, and simple circuit structure. The design and simple design, the typical 89c51 microcontroller, a switch-mode and more, playing all types of music, has a small size, low price and low power consumption and so on. In the beautiful city at night, lanterns light off cycle, play beautiful music, brings out the beautiful atmosphere,music Carnival with the development of a broader world.Keywords: AT89C51 LED Lantern music目录绪论------------------------------------------------------------- 41音乐流水灯方案设计与选择--------------------------------------- 41、1 设计要求-------------------------------------------------51、2 基本原理------------------------------------------------- 51、3 设计电源------------------------------------------------- 5-61、4 频率音符------------------------------------------------- 62 音乐流水灯设计过程---------------------------------------------- 7 2、1 元件选择------------------------------------------------- 7 2、2 电路设计------------------------------------------------- 7 2、2、1 元器件介绍------------------------------------------7-9 2、2、2 音乐流水灯构思---------------------------------------9-11 2、3 软件设计-------------------------------------------------11 2、3、1 编程介绍--------------------------------------------11-13 2、3、2 设计程序-------------------------------------------14-15 参考文献---------------------------------------------------------- 16绪论目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
基于单片机的音乐流水灯设计

基于单片机的音乐流水灯设计音乐流水灯在现代生活中越来越受到人们的喜爱,它将音乐与灯光相结合,创造出一种独特的视听效果。
而更是将这一创意发挥到了极致。
本文将围绕这一主题展开深入研究,探讨单片机技术在音乐流水灯设计中的应用。
首先,我们需要了解什么是单片机。
单片机是一种集成在一块芯片上的微处理器,具有中心处理器、存储器、输入输出端口等功能。
在嵌入式系统设计中,单片机被广泛应用于各种领域,包括家电、汽车电子、医疗设备等。
在音乐流水灯设计中,单片机可以控制灯光的亮度、颜色、闪烁效果,并实现与音乐的同步播放。
音乐流水灯设计的关键是如何实现音乐与灯光的同步效果。
传统的音乐流水灯主要通过模拟电路来实现,但是这种设计存在灵活性低、难以控制等问题。
而基于单片机的音乐流水灯设计则可以通过编程控制灯光效果,实现更加精确的同步效果。
单片机可以根据音乐的节奏和节拍,控制灯光的亮度和闪烁频率,达到视听效果的最佳匹配。
在实际的音乐流水灯设计中,我们可以选择不同的单片机芯片和周边器件,根据需求设计相应的硬件电路。
同时,我们还需要编写相应的控制程序,实现音乐与灯光的同步效果。
在程序设计中,我们可以利用单片机的定时器、中断、串口通信等功能,实现复杂的灯光效果。
除了硬件设计和程序编写,我们还需要考虑音乐流水灯的外观设计。
灯光的颜色、形状、布局等都会影响整体效果。
在外观设计中,我们可以采用不同的灯珠、灯管、灯带等灯具,搭配适当的灯罩或反光板,创造出独特的视觉效果。
此外,我们还可以设计出不同的灯光变换模式,如呼吸灯、闪烁灯、渐变灯等,增加灯光效果的多样性。
在音乐流水灯设计中,音乐的选择也是至关重要的。
不同类型的音乐会带来不同的视听感受。
我们可以选择流行歌曲、古典乐曲、电子音乐等不同类型的音乐,根据音乐的节奏和情感色彩,设计出相应的灯光效果。
此外,我们还可以考虑加入声控功能,让灯光根据声音的大小和频率进行变化,增加互动性和趣味性。
在实际应用中,基于单片机的音乐流水灯设计可以广泛应用于家庭装饰、商业展示、演艺舞台等场合。
单片机控制左右循环的流水灯设计

单片机控制左右循环的流水灯设计单片机是一种微型计算机芯片,可以用于控制和管理各种电子设备。
流水灯是一种经典的电子元件,通过依次点亮或熄灭一组LED灯来形成流动效果。
本文将设计一个使用单片机控制的左右循环流水灯。
设计思路:1.硬件设计:a.先准备一个单片机开发板、一组LED灯和与LED灯串联的电阻。
b.将LED灯按照循序连接,连接方式可以为并联或串联。
c.通过引脚和外部电路将LED灯与单片机的IO口相连。
每个LED灯与一个IO口相连,并且通过电阻限流。
2.软件设计:a.在单片机上编写控制流水灯的程序。
这可以使用C语言或汇编语言进行编写。
b.程序主要通过循环结构来实现流水灯的效果。
编写一个循环函数,用于控制LED灯的点亮和熄灭。
c.在循环函数中,通过控制IO口输出高电平或低电平来控制LED灯的亮灭。
每次循环,根据需要逐个点亮或熄灭LED灯。
d.为了实现左右循环的效果,可以通过改变点亮或熄灭的顺序来改变流水灯的方向。
可以使用一个变量来控制点亮和熄灭的顺序,每次循环后改变该变量的值。
示例代码:以下是一个使用C语言编写的简单示例代码,来控制左右循环流水灯。
```c#include <reg52.h>//定义LED灯使用的IO口sbit LED1 = P1^0;sbit LED2 = P1^1;sbit LED3 = P1^2;sbit LED4 = P1^3;//控制流水灯循环void lightFlowint i;int direction = 1; // 控制流水灯的方向,1表示向右,-1表示向左//流水灯循环while(1)//控制LED灯的点亮和熄灭LED1=0;LED2=1;LED3=1;LED1=1;LED2=0;LED3=1;LED4=1;LED1=1;LED2=1;LED3=0;LED4=1;LED1=1;LED2=1;LED3=1;LED4=0;//根据方向改变控制顺序if(direction == 1)//向右direction = -1;}elsedirection = 1;}}void mainlightFlow(;```这个示例代码中,使用P1口上的4个IO口来控制4个LED灯的点亮和熄灭。
五种编程方式实现流水灯的单片机C程序

五种编程方式实现流水灯的单片机C程序流水灯是一种常见的灯光效果,常用于装饰和展示。
实现流水灯的程序可以使用多种不同的编程方式,包括传统的顺序编程、状态机编程、中断编程、调度器编程和面向对象编程。
下面分别介绍这五种方式实现流水灯的程序。
1.顺序编程方式:顺序编程是最常见的编程方式,也是最直接的方式。
下面是使用顺序编程方式实现流水灯的C程序:```c#include <reg52.h>void delay(unsigned int t)while(t--)for(int i=0; i<50; i++);}void mainunsigned char led = 0x80; // 初始灯光状态while(1)P0 = led; // 输出灯光状态delay(500); // 延时一段时间led >>= 1; // 右移一位,实现流水灯效果if(led == 0) // 到达最右边后重新开始led = 0x80;}}```2.状态机编程方式:状态机编程是一种基于状态的编程方式,通过定义不同的状态和状态转换来实现流水灯效果。
下面是使用状态机编程方式实现流水灯的C程序:```c#include <reg52.h>typedef enumState1,State2,State3,State4,State5} State;void delay(unsigned int t)while(t--)for(int i=0; i<50; i++);}void mainState state = State1; // 初始状态为State1 while(1)switch(state)case State1:P0=0x80;delay(500);state = State2;break;case State2:P0=0x40;delay(500);state = State3;break;case State3:P0=0x20;delay(500);state = State4;break;case State4:P0=0x10;delay(500);state = State5;break;case State5:P0=0x08;delay(500);state = State1;break;}}```3.中断编程方式:中断编程方式是一种基于中断事件的编程方式,通过在特定的中断事件触发时改变灯光状态来实现流水灯效果。
基于STM32单片机对流水灯的控制

基于 STM32 单片机对流水灯的控制
1.跟着例程自己创建自己的工程时,出现了 GPIO 库文件里有 undefined 等等,在我们刚开始学习新建工程时要注意 C/c++里面的 Defined,与开发板 匹配! 2.在启动文件中选择与开发板匹配的文件,比如 hd,ld,md 等等只要加 入一种,多了会出现错误。 3.终于成功了! 4.出现 Flash download failed cortex M3 注意 Flashdownload 里面关于你芯片 Flash 匹配。 5.今天终于借助于库开发点亮第一个 LED 灯,哈哈。 blog.csdn/hantangsongming/article/details/8139793
blog.sina/s/blog_5e4c7eeb01019gxl.html 本文引用地址: 21ic/app/mcu/201810/781453.htm 6.不过对于寄存器的控制仍然有点问题,明天再搞。 *********************************************************Байду номын сангаас STM32 流水灯实验。 1.通过 GPIO 口函数库实现 LED 的闪灭。 ,晚上和陈辉加一起将 cc3000 入网密码问题解决,可是对于不设定 smartconfig 的密码为何不行还是想不通。。 2.位绑定。有待深入了解。
单片机控制流水灯—位操作指令
2 知识准备
四、取反指令
C语言中取反运算符是“~” ,用来对一个二进制整数按位取反,即将0变1,将1变0。
1.“~”运算符可以对整型常量直接操作,比如: int a=~0;则a的值为1。
2.“~”运算符也可以操作变量 unsigned char a=0xaa; unsigned char b=~a; 则b=~a=0x55; 因为“~”运算是一元运算符,所以没有复合赋值运算。
2 知识准备
三、循环位移
_crol_, _cror_指令:将char型变量循环向左(右)移动指定位数后返回,区别 于一般移位的是移位时没有数位的丢失。循环左移时,用从左边移出的位填 充字的右端,而循环右移时,用从右边移出的位填充字的左侧。这种情况在 系统程序中时有使用,在一些控制程序中用得也不少。
3 搭建硬件电路
1.关闭单片机开发板电源开关; 2.单片机P1.0~P1.7端口对应连 接VD31~VD24。
4
编写程序
{ unsigned char a, t;
//定义无符号字符型变
#include< reg51.h >
量
void delay(unsigned int ys) P1=0xff;
8
课后任务
•复习位操作指令,理解其含义及用法。
单片机技术及应用
}
}产生Hex二进制文件,下载到STC89C58芯片中,验证流水灯程序功能。
6
成果展示及评价
•学生进行作品展示
6
成果展示及评价
评价内容 1.安全用电
自评
小组评价 教师评价
优☆ 良△ 中√ 差×
职业素养
2.设备及器材的安全 3.记录整理完整准确
•学生进41..符流行合水6灯作S管工理品作理原展念理 示
单片机流水灯实验报告
单片机流水灯实验报告引言单片机是一种集成电路,可以通过编程来控制不同的功能。
其中,流水灯是一个最简单的单片机实验项目,也是学习单片机的第一步。
本篇实验报告将详细介绍如何通过使用 AVR 单片机来实现一个流水灯的控制器。
实验原理流水灯的原理很简单,就是通过一个方向控制信号,以及一定的时间延时控制来逐步点亮和熄灭多个 LED 灯。
在本次实验中,我们将使用 AVR ATmega328P 单片机,它可以通过编程来实现流水灯的控制功能。
实验步骤1. 硬件准备将 ATmega328P 单片机插入到开发板中,并使用杜邦线将单片机的引脚连接到各个 LED 灯。
我们需要将一个引脚连接到方向控制信号,用于控制灯的点亮方向。
同时,我们还需要连接一个电位器,用于调节流水灯的速度。
2. 程序设计使用 Arduino 开发环境来编写 AVR 单片机的程序。
首先需要包含头文件 avr/io.h 和 util/delay.h,并定义输入输出引脚。
然后,我们需要定义一个名为“led” 的一个数组,来存储各个 LED 灯的输出状态。
同时,还需要定义一个变量“dir”,来表示流水灯的方向。
在程序主循环中,我们使用 for 循环来遍历各个 LED 灯。
同时,根据“dir”变量的不同,我们可以实现流水灯的正向和反向控制。
另外,我们还需要使用“_delay_ms()”函数来延时一定的时间,实现流水灯的闪烁效果。
3. 程序烧录使用 AVR ISP 编程器将编写好的程序烧录到单片机中。
在烧录过程中需要设置正确的程序和芯片类型,并选择正确的口线连接方式。
实验结果经过实际测试,我们成功地实现了一个流水灯控制器。
在调节电位器之后,灯的闪烁速度可以得到不同的调整。
同时,也可以通过改变方向控制信号来改变流水灯的运动方向。
结论通过本次实验可以学习到如何使用 AVR 单片机来实现一个简单的流水灯控制器。
通过编写程序、烧录编译等过程,可以加深对单片机的基础知识和理解。
51单片机音乐流水灯程序
#include <reg52."h>sbitspeaker = P1^6;sbitkey1=P1^5;sbitkey2=P1^7;unsigned char kk=0;unsigned long t3;unsigned char timer0h, timer0l, time,n;codecharled[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x00,0x55,0xaa,0x00,0x5 5,0xaa,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,0x00,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x 7f,0x00,0x55,0xaa,0x00,0x55,0xaa,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,0x00,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x 7f,0x00,0x55,0xaa,0x00,0x55,0xaa,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,0x00,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x 7f,0x00,0x55,0xaa,0x00,0x55,0xaa,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,0x00,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x 7f,0x00,0x55,0xaa,0x00,0x55,0xaa,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,0x00}; //灯亮数组//--------------------------------------//单片机晶振采用11."0592MHz//频率-半周期数据表高八位本软件共保存了四个八度的28个频率数据code unsigned char FREQH[] = {0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8,//低音0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE,//高音2345670xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF};//超高音//频率-半周期数据表低八位code unsigned char FREQL[] = {0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6,//低音0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1,2,3,4,5,6,7,i0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D,//高音2345670x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16};//超高音//--------------------------------------//世上只有妈妈好数据表要想演奏不同的乐曲,只需要修改这个数据表codeint shengrikuaile[] = {5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4,//生日快乐5,1,1, 5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4,5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,2, 6,1,2,4,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 1,2,4,0,0,0};code int tonghua[]={5,1,2, 5,2,2, 4,2,2,3,2,4, 3,2,2, 4,2,1, 3,2,1, 3,2,4, 3,2,2, 4,2,2,3,2,2, 4,2,2, 3,2,2, 2,2,1, 1,2,1, 1,2,2, 1,2,2, 3,2,2, 5,2,2,6,2,4, 6,2,2, 6,2,1, 5,2,1, 5,2,2, 2,2,2, 2,2,2, 4,2,2,3,2,8, 1,2,2, 3,2,2, 5,2,2,6,2,4, 6,2,2, 6,2,1, 5,2,1, 2,2,2, 2,2,2, 4,2,2,3,2,2, 4,2,2, 3,2,2, 2,2,1, 1,2,1, 1,2,4, 2,2,2, 3,2,2,6,1,4, 6,1,2, 1,2,2, 1,2,2, 7,1,2, 7,1,2, 1,2,1, 1,2,16,0,0,0};//童话//一个音符有三个数字。
单片机流水灯实验原理
单片机流水灯实验原理单片机流水灯实验原理是利用单片机的控制功能,通过对端口的操作,控制LED 灯的亮灭顺序,从而实现流水灯效果。
单片机是一种集成电路,由中央处理器、存储器和各种输入输出端口组成,可以对外部设备进行控制和操作。
在单片机流水灯实验中,我们使用的是8051系列单片机。
流水灯是一种常见的LED灯效,它的原理是多个LED灯按照一定的顺序依次亮灭,形成流动的效果。
在单片机流水灯实验中,我们可以通过对单片机的编程,控制端口的状态,从而实现LED灯的顺序控制。
具体实现流水灯效果的步骤如下:1. 确定使用几个LED灯:在单片机流水灯实验中,可以根据实际需求确定使用几个LED灯。
一般情况下,我们使用4~8个LED灯。
2. 连接LED灯和单片机:将LED灯的一端连接到单片机的输出端口,另一端接地。
3. 设置端口为输出模式:使用单片机的编程语言,将需要控制的端口设置为输出模式。
这样,单片机就可以通过改变端口的电平来控制LED灯的亮灭。
4. 设计流水灯的控制循环:设计一个循环控制LED灯的亮灭顺序,从而实现流水灯的效果。
一种简单的控制方式是通过改变端口的电平来控制LED灯的亮灭。
例如,假设我们使用4个LED灯,控制端口的顺序为P1.0、P1.1、P1.2、P1.3,那么我们可以设计一个循环控制LED灯亮灭的顺序为:P1.0亮,P1.1灭、P1.2灭、P1.3灭-> P1.0灭,P1.1亮,P1.2灭、P1.3灭-> P1.0灭,P1.1灭,P1.2亮,P1.3灭-> P1.0灭,P1.1灭,P1.2灭,P1.3亮-> P1.0亮,P1.1灭,P1.2灭,P1.3灭-> P1.0灭,P1.1亮,P1.2灭,P1.3灭-> P1.0灭,P1.1灭,P1.2亮,P1.3灭-> ...5. 编写程序:根据上述设计的控制循环,使用单片机的编程语言编写相应的程序。
程序的逻辑是根据循环的顺序,通过改变端口的电平来控制LED灯的亮灭。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实现对音乐流水灯的控制摘要:自上世纪70年代以来,单片机作为一种集成电路芯片,其发展越来越完善,性能越来越优越,而且单片机的应用不断深入国民经济和人们生活的各个领域,给人们的生活带来了极大方便,满足了人们越来越高的生活需求。
本文就是研究单片机在娱乐场所的应用,通过感应音乐声音的强度去控制流水灯流动的节奏。
这一研究对改善娱乐场所的活跃气氛有较大的意义。
该电路分3个部分,即数据采集部分,单片机处理部分,驱动电路部分。
关键词:数据采集;数据处理;流水灯;单片机;控制The single a computer realizes to the control of the music flowingrunning water lightAbstract:Since the 70's of last century, the single a machine is used as a kind of integrated circuit an each realm for, its development more and more perfectly, function more coming roughly superiorly, and single an application of machine continuously going deep into national economy with people living, the life for people brought biggest convenient, satisfied the more and more high life in people need. This text be strength that research that rhythm the single a machine is amusing the amenity applied, pass to respond the music voice to control the flowing water light flow. This a research to improve amusement amenity active atmosphere contain bigger meaning. That electric circuit divides 3 parts, namely the data collects part, the single a machine handles part, color light control part.Key word:data collecting system;data handle;flowing water light;single computer;control 1 引言声音传感器输出的是声音模拟信号,信号电压的大小反映声音的强弱,整个设计的思想就是用这个信号去控制流水灯的闪烁。
由于输入信号是模拟信号,而单片机所能处理的是只能是数字信号,所以这里要用到一个A/D转换器,去将模拟信号转换为数字信号,本文中采用的是8位高速A/D转换器TLC5510。
8位数字信号输入单片机AT89C51后按大小被程序分为4组,分别控制输出4个不同的延时去控制流水的流动速度。
2 电路功能原理图1 电路功能原理图本文所要实现的是将娱乐场所的流水彩灯去适应音乐声强的大小,即根据声音的大小改变流水灯的流水快慢,节奏。
要实现这一功能需要一些硬件。
图1是其功能原理图。
首先,要将声音信号转换成为电信号,这里需要一个声音传感器。
从传感器出来是一个模拟信号,而信号最终要通过单片机系统去处理,一般单片机只能识别数字信号,所以信号处理前必须将模拟信号转换为数字信号。
这里需要一个A/D转换器。
数据经过单片机的处理,去控制16支灯,如果直接用引脚控制的话需要16根数据线,而输出数据是八位的数字信号,这里造成数据线的不足。
为了解决这一问题,还引入了可编程并行接口8255A。
流水灯的流水的视觉效果是通过控制每一个灯泡的点亮和熄灭来实现的。
从单片机输出的只是控制信号,这些信号的功率太低不足以去点亮彩灯,所以又引入了一个驱动电路,这里采用双向可控硅来实现,双向可控硅是一个三端口器件一端是控制信号,另两端是大功率电压,当控制信号为高电压时两端导通,彩灯被点亮。
硬件电路设计好了,就只需在单片机设计软件去控制它的工作过程了。
只要用一个程序根据输入声音信号的弱用相应的延时逐个将灯点亮就可以了。
以下是整个电路的方框图。
C1C3C7C8C6C5C9C11C4T L C 5510A VDDA 14VDDD 13VDDA 15CLK 12REFTS 16VDDD 11REFT 17D8(MSB)10VDDA 18D79AGND 19D68ANALOG IN 20D57AGND 21D46REFBS 22D35REFB 23D24DGND 24D1(LSB)3OE 1DGND 2R3CLOCK OUTPUT ENABLE3.1.2 TLC5510的内部结构及工作过程图4 TLC5510的内部结构框图TLC5510的内部结构如图4所示。
由图中可以看出:TLC5510模数转换器内含时钟发生器、内部基准电压分压器、1套高4位采样比较器、编码器、锁存器、2套低4位采样比较器、编码器和1个低4位锁存器等电路。
TLC5510的外部时钟信号CLK通过其内部的时钟发生器可产生3路内部时钟,以驱动3组采样比较器。
基准电压分压器则可用来为这3组比较器提供基准电压。
输出A/D信号的高4位由高4位编码器直接提供,而低4位的采样数据则由两个低4位的编码器交替提供。
TLC5510的工作时序见图5。
时钟信号CLK在每一个下降沿采集模拟输入信号。
第N次采集的数据经过2.5个时钟周期的延迟之后,将送到内部数据总线上。
在图5所示的工作时序的控制下,当第一个时图5 TLC5510的工作时序钟周期的下降沿到来时,模拟输入电压将被采样到高比较器块和低比较器块,高比较器块在第二个时钟周期的上升沿最后确定高位数据,同时,低基准电压产生与高位数据相应的电压。
低比较块在第三个时钟周期的上升沿的最后确定低位数据。
高位数据和低位数据在第四个时钟周期的上升沿进行组合,这样,第N次采集的数据经过2.5个时钟周期的延迟之后,便可送到内部数据总线上。
此时如果输出使能OE有效,则数据便可被使其产生正确可靠的时序逻辑。
系统及数据分析实验证明,采用TLC5510作为线阵CCD 音频信号的A/D转换芯片,其接口电路简单实用,使用方便,稳定性好。
3.2数据处理及控制电路3.2.1 控制单片机AT89C51图7 AT89C51引脚AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案.本文采用该芯片可编程可擦除的特性控制音乐流水灯,可以通过延时程序对灯光的闪烁节奏进行调试,以达到设计的目的。
(1) 主要特性:·与MCS-51 兼容·4K字节可编程闪烁存储器寿命:1000写/擦循环数据保留时间:10年·全静态工作:0Hz-24Hz·三级程序存储器锁定·128*8位内部RAM·32可编程I/O线·两个16位定时器/计数器·5个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路(2)管脚说明VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高电阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH 进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL 门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。