单片机音乐控制流水灯
基于单片机AT89C51控制的键控流水灯_课程设计报告

图3-5流水灯模块图
3.3
图3-6 键控流水灯图
4
#include<reg51.h>
#define smg1 P0
#definelsd1P1
#define smg2P2
unsignedinti=1,u=7,j,n,c,k,h=7,s=1;
voidsjms3(void);
voidsjms4(void);
voidsjms5(void);
voidmsms1(void);
voidmsms2(void);
voidmsms3(void);
voidmsms4(void);
voidmsms5(void);
voidzd1(void);
voidzd2(void);
3.2.5
发光二极管就是LED,是一种由磷化镓等半导体材料制成的、能直接将电能转换成光能的发光显示器件。当其内部有一定电流通过时,就是发光。发光二极管具有功耗低、体积小、可靠性高、寿命长和相应快等优点。
流水灯模块采用16个LED发光二极管,通过代码的编写,实现五种流水移动,其中电阻的作用是保护二极管,向它提供较小的电流,防止二极管因为电流过大而烧毁。
1
单片机控制系统能够取代以前利用复杂电子线路或者数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化。现在的单片机的控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛。
2
2.1
随着经济的发展、科技的突飞猛进,芯片业得到了迅速的发展,是单片机技术在各种民用和工业控制等领域得到更广泛的应用。单片机凭借其低成本、高性能的不可代替优势已经成为了微电脑 控制的主力军。学习单片机的有效方法是将理论与实践并重,因此通过对单片机可控流水灯的设计和研究,鼓励学生在熟悉基本原理的前提下,与实际应用相联系,提出自己的方案,来完善设计,使得他们更好的掌握单片机的应用。
单片机跑马灯(流水灯)控制实验报告

单片机跑马灯(流水灯)控制实验报告实验目的:本实验旨在通过使用单片机对LED灯进行控制,实现跑马灯(流水灯)的效果,同时熟悉单片机编程和IO口的使用。
实验器材:1)STC89C52单片机2)最基本的LED灯3)面包板4)若干跳线实验过程:1.硬件连接:将单片机的P2口与面包板上的相应位置连接,再将LED灯接入面包板中。
2.编写程序:按照题目要求编写所需程序。
3.单片机烧录:将程序烧录进单片机中,即可实现跑马灯效果。
程序详解:1. 由于LED灯是呈现亮灭效果,我们要编写程序来控制LED的亮灭状态。
2. 在程序中,我们通过P2口控制LED灯的亮灭状态。
例如,若要让LED1亮,我们就将P2口的第一个引脚设置为低电平(0),此时LED1就会发光。
同样地,若要LED2,LED3等依次点亮,则需要将P2口的第二个、第三个引脚设置为低电平,依此类推即可。
3. 接下来,我们要实现每个LED灯的亮灭时间间隔,并实现跑马灯的效果。
4. 在本实验中,我们采用了计时器中断的方式来实现灯光的控制,即在定时器中断函数中对P2口进行控制,这样可以方便地控制灯亮灭时间和亮度。
通过改变定时器中断的时间,可以改变LED灯的亮灭时间;通过改变P2口的控制顺序,可以实现跑马灯效果。
5. 整个程序比较简单,具体的代码实现可以参考以下程序:#include <REG52.H>#include <intrins.h>#define uint unsigned int #define uchar unsigned char void Delay1ms(uchar _ms); void InitTimer0();sbit led1=P2^0;sbit led2=P2^1;sbit led3=P2^3;sbit led4=P2^4;sbit led5=P2^5;sbit led6=P2^6;sbit led7=P2^7;void InitTimer0(){TMOD=0x01;TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;ET0=1;TR0=1;}void Timer0() interrupt 1 {static uint i;TH0=(65536-50000)/256; TL0=(65536-50000)%256;i++;if(i%2==0){led1=~led1;}if(i%4==0){led2=~led2;}if(i%6==0){led3=~led3;}if(i%8==0){led4=~led4;}if(i%10==0){led5=~led5;}if(i%12==0){led6=~led6;}if(i%14==0){led7=~led7;}}void Delay1ms(uchar _ms){uchar i;while(_ms--){i=130;while(i--);}}实验总结:通过本次实验,我们掌握了单片机控制跑马灯(流水灯)的方法,对单片机编程和IO 口的使用有了更深入的了解。
基于单片机的音乐流水灯设计

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

单片机控制左右循环的流水灯设计单片机是一种微型计算机芯片,可以用于控制和管理各种电子设备。
流水灯是一种经典的电子元件,通过依次点亮或熄灭一组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灯的点亮和熄灭。
音乐流水灯的单片机控制研究

音乐流水灯的单片机控制研究摘要在音乐流水灯控制中,单片机更有取代齿轮调节延迟时间的发展快,更是以后系统中的核心部分。
本设计系统是基于单片机的音乐流水灯系统,具有实用观赏性。
通过8个led作为显示电路完成简单的音乐流水灯的模拟运作。
关键词单片机音乐流水灯音频图分类号:tp273 文献标识码:a1 基本原理通过控制单片机的内部定时器的定时时间产生各种不同频率的脉冲,从而使蜂鸣器发出不同调的音节声音,利用演示子程序来控制节拍。
为了在编程时的方便,通常会吧检点的音符和节拍转换成定时常数和延时常数,这个时候利用查表法得到定时常数,分别有脉冲频率的持续时间和控制定时器产生相应的脉冲频率,当时间到时,程序会自动查找下一个音符的定时常数和延时常数,最后能播放出好听的歌声。
不同的频率会产生不同的音调,而且每个音调都有一个音符和节拍组成,音符决定音调的高低,节拍决定音调的拍数。
根据音符字节产生次数的演示,声音输出口取反,就能得到该音调的高低音。
控制播放音乐的速度能通过设置延时的大小。
单片机的i/0端脚为声音输出端,在限定的节拍上,音符字节的不同产生延时,把声音输出端不断的取反,就能出现音调。
正确选择单位节拍延时,就能播放出悦耳的歌声。
内部定时器t0产生简谱中各音符相对应的脉冲频率,在此通过延时常数来控制脉冲频率的延续时间。
在此同时在电路板p0-p8脚接上8个led灯,播放音乐的同时增加了观赏性和实用性,音乐流水灯就这样来了。
2 设计电源采用at89c51芯片,它需要的电源是5v直流电源,因为家用电压为220v50赫兹,所以需要交流电220v转5v直流电源的变压器,单片机控制系统和外围芯片供电都采用7805系列的三端稳压器件,先通过全波整流,然后滤波整压,最后电容过滤交流。
3 音符频率do re mi fa so la si分别编码是1~7,重音do为8,停顿为0。
播放以十六分音符为单位,即一拍为四分音符,编为4,最后以0xff为结束标志。
单片机音乐流水灯程序

#include <reg52.h>sbit speaker = P1^6;sbit key1=P1^5;sbit key2=P1^7;unsigned char kk=0;unsigned long t3;unsigned char timer0h, timer0l, time,n;code char led[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x00,0x55,0xaa,0x00,0x55,0xaa,0x7f,0xbf,0xdf,0 xef,0xf7,0xfb,0xfd,0xfe,0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,0x00,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x00,0x55,0 xaa,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,0x7f,0x00,0x55,0 xaa,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,0x7f,0x00,0x55,0 xaa,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,0x7f,0x00,0x55,0 xaa,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, //低音12345670xF9, 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}; //超高音1234567// 频率-半周期数据表低八位code unsigned char FREQL[] = {0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6, //低音12345670x21, 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}; //超高音1234567//--------------------------------------//世上只有妈妈好数据表要想演奏不同地乐曲, 只需要修改这个数据表code int 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};//童话//一个音符有三个数字.前为第几个音、中为第几个八度、后为时长(以半拍为单位).//6, 2, 3 分别代表:6, 中音, 3个半拍;//5, 2, 1 分别代表:5, 中音, 1个半拍;//3, 2, 2 分别代表:3, 中音, 2个半拍;//5, 2, 2 分别代表:5, 中音, 2个半拍;//1, 3, 2 分别代表:1, 高音, 2个半拍;code unsigned int nuannuan []={5,2,2, 6,2,2, 7,2,2, 1,3,2, 7,2,1, 1,3,1, 1,3,1, 5,2,1, 6,2,2, 6,2,4, 5,2,2, 4,2,1, 3,2,1,3,2,2, 3,2,2, 3,2,2, 3,2,1, 2,2,1, 2,2,2, 5,2,2, 6,2,2, 7,2,2, 1,3,2, 7,2,1, 1,3,1, 1,3,1, 5,2,1, 6,2,2, 6,2,4, 6,2,2, 1,3,1, 1,3,1,1,3,2, 1,3,2, 1,3,2, 1,3,1, 2,3,1, 2,2,2, 5,2,1, 6,2,2, 7,2,2, 1,3,2, 7,2,1, 1,3,1, 1,3,1, 3,3,2, 6,3,2, 5,3,1, 5,3,2, 4,3,2,3,3,4, 3,3,2, 2,3,2, 2,3,2, 6,2,2, 7,2,2, 1,3,4, 1,3,2, 2,3,1, 1,3,1, 1,3,2, 1,3,1, 7,2,1, 1,3,2, 2,2,1,2,3,4, 1,3,2, 7,2,2, 1,3,8,//平凡之路0,0,0};code unsigned int zanmenjiehunba[]={2,2,4, 1,2,4, 6,2,8, 6,2,2, 5,2,2, 3,2,2, 3,2,2, 3,2,2, 2,2,2, 2,2,4, 1,2,2, 2,2,2, 5,2,2,5,2,2, 5,2,2, 5,2,2, 5,2,2, 5,2,4, 2,2,2, 3,2,2,2,2,4, 1,2,4, 6,2,8, 6,2,2, 5,2,2, 3,2,2, 3,2,2, 3,2,2, 2,2,2, 2,2,4, 6,1,2, 1,2,2,2,2,2, 1,2,2, 2,2,2, 1,2,2, 2,2,4, 5,2,2, 3,2,2,2,2,4, 3,2,4, 6,2,8, 6,2,2, 5,2,2, 3,2,2, 5,2,2, 5,2,2, 5,2,2, 5,2,4, 2,2,2, 2,2,2, 5,2,2,5,2,2, 5,2,2, 5,2,2, 5,2,2, 5,2,4, 2,2,2, 3,2,2, 3,2,8, 6,1,2, 1,2,2, 3,2,4, 2,2,4, 1,2,4, 2,2,2, 3,2,2, 3,2,2, 2,2,2, 2,2,8, 3,2,2, 2,2,4, 1,2,4, 2,2,4, 3,2,2, 6,1,2, 6,1,8,0,0,0}; //咱们结婚吧code unsigned int haojiubujian[]={6,2,2, 5,2,2, 5,2,2, 3,2,2, 5,2,8, 6,2,2, 5,2,2, 3,2,2, 2,2,1, 1,2,1, 1,2,8,6,1,2, 1,2,2, 2,2,2, 3,2,2, 5,2,8, 3,2,2, 2,2,2, 1,2,2, 3,2,1, 2,2,1, 2,2,8,6,2,2, 5,2,2, 5,2,2, 3,2,2, 5,2,8, 6,2,2, 5,2,2, 3,2,2, 2,2,1, 1,2,1, 1,2,8,6,1,2, 1,2,2, 2,2,2, 3,2,2, 5,2,8, 3,2,2, 2,2,2, 1,2,2, 6,1,2, 1,2,2, 2,2,2, 1,2,2, 1,2,2,0,0,0};//你若成风code unsigned int tianshidechibang[]={3,2,2, 5,2,2, 6,2,2, 5,2,1, 6,2,1, 6,2,2, 3,2,1, 2,2,1, 2,2,8,5,2,2, 3,2,1, 5,2,1, 5,2,2, 1,2,1, 2,2,1, 1,2,8,3,2,2, 2,2,1, 3,2,1, 3,2,2, 6,1,2, 2,2,2, 1,2,1, 2,2,1, 2,2,1, 5,2,2, 3,2,1,3,2,2, 3,2,2, 3,2,8, 3,2,2, 5,2,2,6,2,2, 5,2,1, 6,2,1, 6,2,2, 3,2,1, 2,2,1, 2,2,8,5,2,2, 3,2,1, 5,2,1, 5,2,2, 2,2,1, 1,2,1, 1,2,4, 6,1,2, 1,2,2,3,2,2, 2,2,1, 3,2,1, 3,2,2, 6,1,2, 2,2,2, 1,2,1, 2,2,1, 2,2,2, 7,1,1, 6,1,1,6,1,2, 6,1,2, 6,1,8,0,0,0}; //天使地翅膀code unsigned int zuijinhaoma[]={5,1,2, 6,1,2, 1,2,2, 2,2,2, 3,2,2, 1,2,2, 3,2,2, 2,2,12,2,2,2, 2,2,2, 2,2,2, 2,2,2, 1,2,2, 1,2,2, 6,1,2, 6,1,2, 6,1,4,5,1,2, 6,1,2, 1,2,2, 2,2,2, 3,2,2, 5,2,2, 3,2,2, 2,2,12,2,2,2, 2,2,2, 2,2,2, 2,2,2, 1,2,2, 1,2,2, 6,1,2, 3,2,2, 3,2,2, 3,2,8,6,2,2, 6,2,2, 6,2,2, 6,2,2, 5,2,2, 5,2,2, 3,2,2, 2,2,12,2,2,2, 2,2,2, 2,2,2, 2,2,2, 1,2,2, 1,2,2, 5,2,2, 3,2,12,6,2,2, 6,2,2, 6,2,2, 1,3,2, 3,2,2, 2,2,2, 3,2,2, 2,2,12,2,2,2, 2,2,2, 2,2,2, 2,2,2, 1,2,2, 6,1,2, 1,2,2, 1,2,2, 1,2,2, 1,2,8, //滴答0,0,0};code unsigned int shinian []={1,2,1, 2,2,1, 5,2,1, 3,2,1,3,2,2, 3,2,1, 3,2,1, 4,2,1, 5,2,1, 6,2,1, 2,2,2, 2,2,2, 2,2,1, 4,2,1, 3,2,1, 2,2,1,1,2,2, 3,1,1, 3,1,1, 2,2,1, 1,2,1, 7,1,1,1,2,1, 6,1,1, 6,1,2, 1,2,1, 7,1,1, 6,1,1, 7,1,2, 4,2,1, 3,2,1, 2,2,2, 7,1,1, 1,2,1,1,2,4, 1,2,1, 2,2,1, 3,2,1,6,2,2, 3,2,1, 4,2,2, 5,2,1, 3,2,1, 3,2,2, 2,2,2, 1,2,1, 2,2,1, 5,2,1, 3,2,1,3,2,2, 3,2,1, 3,2,1, 4,2,1, 5,2,1, 6,2,1,2,2,2, 2,2,1, 2,2,1, 4,2,1, 3,2,1, 2,2,1,1,2,2, 3,1,1, 3,1,1, 2,2,1, 1,2,1, 7,1,1, 1,2,1, 6,1,1, 6,1,1, 1,2,1, 7,1,1, 6,1,1,7,1,2, 4,2,1, 3,2,1, 2,2,2, 3,2,1, 2,2,1,0,0,0 //十年};//-------------------------------------- ,void t0int() interrupt 1 //T0中断程序,控制发音地音调{TR0 = 0; //先关闭T0speaker = !speaker; //输出方波, 发音TH0 = timer0h; //下次地中断时间, 这个时间, 控制音调高低TL0 = timer0l;TR0 = 1; //启动T0}//--------------------------------------void delay(unsigned char t) //延时程序,控制发音地时间长度{unsigned char t1;unsigned long t2;if(kk==1){t3=6000;}if(kk==2){t3=6000;}if(kk==3){t3=5000;}if(kk==4){t3=3000;}if(kk==5){t3=6000;}if(kk==6){t3=4000;}if(kk==7){t3=6000;}if(kk==8){t3=5000;}for(t1 = 0; t1 < t; t1++) //双重循环, 共延时t个半拍for(t2 = 0; t2 < t3; t2++); //延时期间, 可进入T0中断去发音TR0 = 0; //关闭T0, 停止发音}//--------------------------------------void song() //演奏一个音符{TH0 = timer0h; //控制音调TL0 = timer0l;TR0 = 1; //启动T0, 由T0输出方波去发音delay(time); //控制时间长度}void delaytime (){unsigned char e,f;for(e=0;e<100;e++)for(f=0;f<30;f++);}//--------------------------------------void main(void){unsigned char k, i;TMOD = 1; //置T0定时工作方式1ET0 = 1; //开T0中断EA = 1; //开CPU中断while(1) {i = 0;time = 1;P0=P2=P3=0x0;while(time){if (key1==0){delaytime();while(!key1);kk=kk+1;}if (key2==0){delaytime();while(!key2);kk=kk-1;}if(kk==1){k = shengrikuaile[i] + 7 * shengrikuaile[i + 1] - 1; //第i个是音符, 第i+1个是第几个八度if(n==8){n=0;}{P0=P3=P2=led[n]; } //控制灯亮timer0h = FREQH[k]; //从数据表中读出频率数值timer0l = FREQL[k];n=n+1; //实际上, 是定时地时间长度time = shengrikuaile[i + 2]; //读出时间长度数值i += 3;song();}if(kk==2){k = tonghua[i] + 7 * tonghua[i + 1] - 1; //第i个是音符, 第i+1个是第几个八度if(n==8){n=0;}{P0=P3=P2=led[n]; } //控制灯亮timer0h = FREQH[k]; //从数据表中读出频率数值timer0l = FREQL[k];n=n+1; //实际上, 是定时地时间长度time = tonghua[i + 2]; //读出时间长度数值i += 3;song();}if(kk==3){k = nuannuan[i] + 7 * nuannuan[i + 1] - 1; //第i个是音符, 第i+1个是第几个八度if(n==8){n=0;}{P0=P3=P2=led[n]; } //控制灯亮timer0h = FREQH[k]; //从数据表中读出频率数值timer0l = FREQL[k];n=n+1; //实际上, 是定时地时间长度time = nuannuan[i + 2]; //读出时间长度数值i += 3;song();}if(kk==4){k = zanmenjiehunba[i] + 7 * zanmenjiehunba[i + 1] - 1; //第i个是音符, 第i+1个是第几个八度if(n==8){n=0;}{P0=P3=P2=led[n]; } //控制灯亮timer0h = FREQH[k]; //从数据表中读出频率数值timer0l = FREQL[k];n=n+1; //实际上, 是定时地时间长度time = zanmenjiehunba[i + 2]; //读出时间长度数值i += 3;song();}if(kk==5){k = haojiubujian[i] + 7 * haojiubujian[i + 1] - 1; //第i个是音符, 第i+1个是第几个八度if(n==8){n=0;}{P0=P3=P2=led[n]; } //控制灯亮timer0h = FREQH[k]; //从数据表中读出频率数值timer0l = FREQL[k];n=n+1; //实际上, 是定时地时间长度time = haojiubujian[i + 2]; //读出时间长度数值i += 3;song();}if(kk==6){k = tianshidechibang[i] + 7 * tianshidechibang[i + 1] - 1; //第i个是音符, 第i+1个是第几个八度if(n==8){n=0;}{P0=P3=P2=led[n]; } //控制灯亮timer0h = FREQH[k]; //从数据表中读出频率数值timer0l = FREQL[k];n=n+1; //实际上, 是定时地时间长度time = tianshidechibang[i + 2]; //读出时间长度数值i += 3;song();}if(kk==7){k = zuijinhaoma[i] + 7 * zuijinhaoma[i + 1] - 1; //第i个是音符, 第i+1个是第几个八度if(n==8){n=0;}{P0=P3=P2=led[n]; } //控制灯亮timer0h = FREQH[k]; //从数据表中读出频率数值timer0l = FREQL[k];n=n+1; //实际上, 是定时地时间长度time = zuijinhaoma[i + 2]; //读出时间长度数值i += 3;song();}if(kk==8){k = shinian[i] + 7 * shinian[i + 1] - 1; //第i个是音符, 第i+1个是第几个八度if(n==8){n=0;}{P0=P3=P2=led[n]; } //控制灯亮timer0h = FREQH[k]; //从数据表中读出频率数值timer0l = FREQL[k];n=n+1; //实际上, 是定时地时间长度time = shinian[i + 2]; //读出时间长度数值i += 3;song();}if(kk>8){unsigned int c;unsigned int d=40000;for(c=0;c<50;c++)while(d--)P0=P2=P3=led [n]; delaytime();delaytime();}} //发出一个音符} }版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.用户可将本文地内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律地规定,不得侵犯本网站及相关权利人地合法权利.除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人地书面许可,并支付报酬.Users may use the contents or services of this article for personal study, research or appreciation, and othernon-commercial or non-profit purposes, but at the same time, they shall abide by the provisions of copyright law and other relevant laws, and shall not infringe upon the legitimate rights of this website and its relevant obligees. In addition, when any content or service of this article is used for other purposes, written permission and remuneration shall be obtained from the person concerned and the relevant obligee.转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目地地合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任.Reproduction or quotation of the content of this article must be reasonable and good-faith citation for the use of news or informative public free information. It shall not misinterpret or modify the original intention of the content of this article, and shall bear legal liability such as copyright.。
音乐流水灯

单片机控制流水灯音乐播放设计【摘要】本设计采用体积小、重量轻、功能强大、使用方便而且可靠性高的单片机为硬件电路的设计主体,即以89S52芯片为中心。
硬件电路设计由4*4键盘控制播放、停止和选曲实现不同音乐之间的转换的选曲电路、89S52单片机系统、YM12864R液晶显示电路、流水灯电路等,最终实现音乐播放控制流水灯的的功能,并在YM12864液晶显示器上显示音乐名称.【关键词】89S52单片机 YM12864R液晶汇编语言音乐流水灯 4*4键盘扬声器Base on Microcontroller Control Streamline Lights With Music design【Abstract】This Design introduces the microcontroller which is small ,light,high dependable and conveniently used .Its function is very strong.It is the principal part of the hardware circuit design.That is to say that 89S52microcontroller is the center of the hardware circuit design. The hardware circuit design is composed of 4*4keyboard ,whice can control playing ,stoping to play and selecting music to achieve conversion between different musics,89S52 Microcontroller System,the liquid crystal display of YM12864 circuit and the Streamline Lights circuit etc..The system finally realize playing music and control the streamline lights and display the name of the music whichis playing on the liquid crystal display of YM12864.【Key words】89S52 Microcontroller YM12864R LCD Assemble Language Streamline Lights With Music 4*4 Keyboard Loudspeaker第一章绪论1.1引言现当今单片机的应用无处不在.利用单片机控制音乐播放也多不胜举.音乐芯片也相当之多,而利用单片机存储音乐,控制播放最为广泛.它有功能多﹑价格优﹑外围电路简单的特点,备受音乐爱好者及音乐芯片制造商的青昧.用89S52单片机及少数外围电路控制MUSIC播放,就可以产生美妙的音乐,又有流水灯设计即显得美观大方又经济实惠。
基于单片机的带流水灯的音乐盒设计解析

前言本次课程设计是一个基于AT89C51系列单片机的音乐盒的设计,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个音乐盒。
该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器和led显示电路组成。
使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换8路led的变化花样。
本音乐盒共有两首歌曲,花样灯花样共计3种。
播放歌曲时,蜂鸣器发出某个音调,与之对应的led亮起。
本设计利用keil编程软件对音乐盒源程序进行编程并调试,配合proteus仿真软件对硬件进行仿真调试。
该音乐盒使用c语言编程和汇编语言相结合,程序段使用C语言,歌曲音谱和led显示花样使用汇编语言。
目录绪论 (1)1.设计题目要求 (2)1.1课题意义 (2)1.2设计目的 (2)1.3设计要求 (2)2 方案设计及硬件设计及其原理 (2)2.1方案设计和硬件设计 (2)2.1.1系统总体方案设计 (2)2.1.2音乐盒设计 (3)2.1.3硬件总体设计 (3)2.1.4硬件仿真图及功能 (4)2.2相关知识,原理和理论介绍 (5)2.2.1 AT89C52简介 (5)2.2.2 LED显示电路设计与原理 (5)2.2.3 时钟振荡电路 (5)2.2.4 花样灯3种花样图 (6)3软件设计 (7)3.1音调、节拍以及编码的确定方法 (7)3.1.1音调的确定 (7)3.1.2节拍的确定 (8)3.1.3编码 (9)3.2软件程序设计 (10)3.2.1主程序流程图 (10)3.2.2播放音乐子程序设计 (13)3.3调试成果 (15)4心得体会 (15)参考文献 (17)附录 (18)绪论21世纪,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
随着科学技术的进步和社会的发展,人类所接触的信息也在不断增加并且日益复杂。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要本设计是一种基于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绪论目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC 卡,民用豪华轿车的安全保障系统,摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:1.在智能仪器仪表上的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
例如精密的测量设备(功率计,示波器,各种分析仪)。
2.在工业控制中的应用用单片机可以构成形式多样的控制系统、数据采集系统。
例如工厂流水线的智能化管芯片理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
3.在家用电器中的应用可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子称量设备,五花八门,无所不在。
4.在计算机网络和通信领域中的应用现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
5.单片机在医用设备领域中的应用单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。
1、音乐流水灯方案设计与选择1、1设计要求本次毕业设计要求设计一个音乐流水灯,其设计要求如下:(1)、用8个发光二极管作为显示电路。
(2)、播放八月桂花香的音乐。
(3)、能够循环的显示灯的亮灭。
1、2 基本原理通过控制单片机的内部定时器的定时时间来产生不同的脉冲频率,以驱动蜂鸣器发出不同音节的声音,利用延时子程序来控制音调的节拍。
为了编程方便,通常是将简单的音符和相应的节拍转换成为定时常数和延时常数,利用查表法得到定时常数,分别控制定时器产生相应的脉冲频率和脉冲频率的持续时间,当持续时间到时,程序自动查找下一个音符的定时常数和延时常数,这样就可以听到悦耳动听的歌声。
音调是由不同的频率产生的,而每一个音调都是有一个音符和一个节拍组成,音符决定该音调的高低,节拍决定了该音调是多少拍。
因此,一个音调是由两个字节组成的。
根据音符字节产生该大小次数的延时,声音输出口取反,就可以得到该音调的高低音。
根据设置单位的延时大熊啊,可以控制音乐演唱速度。
因此算法很简单:定义单片机的一个I/O端脚为声音输出口,在规定的节拍内,根据音符字节的大小产生延时,将声音输出口不断的至置高置低(即取反),就可以得到该音调。
只要选取合适的单位节拍延时,就可以输出动听的音乐。
用内部定时器T0方式产生简谱中各音符飞对应脉冲频率,同时通过延时常数来控制脉冲频率的持续时间。
为了加强观赏和实用性在上面P0-P8脚接了LED灯,这样在音乐播放的同时也有灯的闪烁对音符有直观的感觉。
1、3设计电源AD89c51单片机需要的电源是5v直流电源,我们所用的电是220v50赫兹,这要需要交流电源220v转换5v直流电源,利用变压器的原理220v进行降压,单片机控制系统以及外围芯片供电采用7805系列三端稳压器件,通过全波整流,然后进行滤波稳压,使用电容滤去交流。
电路图如下1.4频率音符单片机的震荡频率为12MHz,乐曲的音符、频率及定时常数三者的对应关系如下图列表所示2音乐流水灯设计过程2.1元器件选取单片机stc89c52 三极管8050 电阻470R 10R 4.7R 电容104 30pf 电解电容10uf 3300pf 变压器整流桥 7805 发光二极管蜂鸣器晶体振荡器 12MHz2、2电路设计2、2、1 元器件介绍7805介绍H7805系列为3端正稳压电路,TO-220封装,能提供很多种固定的输出电压,应用范围广。
内涵过流、过热和过载保护电路。
带散热片时,输出电流可达1A.。
虽然是固定稳压电路,但是用外接元件,可获得不同的电压和电流。
主要特点:1、输出电流可达1A2、输出电压有5V3、过热保护4、短路保护5、输出晶体管SOA 保护单片机介绍单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。