单片机音乐控制流水灯

单片机音乐控制流水灯

ID:47062753

大小:357.01 KB

页数:4页

时间:2019-07-12

单片机音乐控制流水灯_第1页
单片机音乐控制流水灯_第2页
单片机音乐控制流水灯_第3页
单片机音乐控制流水灯_第4页
资源描述:

《单片机音乐控制流水灯》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、摘要本设计是一种基于AT89C51单片机音乐控制彩灯的方案,实现单片机演奏音乐,并且对LED彩灯随音符频率的不同而闪烁发光。本方案以AT89C51单片机作为主控核心,利用三极管和蜂鸣器,通过三极管放大电流使用蜂鸣器播放音乐,利用编程实现亮灯循环模式,在有8个LED彩灯,根据用户需求可以编写若干种亮灯模式.例如左右闪烁,隔几个亮灭,蜂鸣器可以根据用户需求改写编程播放各种音乐。本方案具有设计简单、体积小、元器件少、电路结构简单等优点。该设计方案设计及其简单,典型的89c52单片机,亮灯模式多,播放各种类型的音乐,具有体积小、价格低、低能耗等优点。在美丽的都市夜晚,彩灯的循环亮灭,播放动人的音乐,

2、衬托出美丽的氛围,音乐彩灯具有更广阔的发展天地。1、设计要求(1)、用8个发光二极管作为显示电路。(2)、蜂鸣器播放音乐。(3)、能够循环的显示灯的亮灭。2、基本原理通过控制单片机的内部定时器的定时时间来产生不同的脉冲频率,以驱动蜂鸣器发出不同音节的声音,利用延时子程序来控制音调的节拍。为了编程方便,通常是将简单的音符和相应的节拍转换成为定时常数和延时常数,利用查表法得到定时常数,分别控制定时器产生相应的脉冲频率和脉冲频率的持续时间,当持续时间到时,程序自动查找下一个音符的定时常数和延时常数,这样就可以听到悦耳动听的歌声。音调是由不同的频率产生的,而每一个音调都是有一个音符和一个节拍组成,音

3、符决定该音调的高低,节拍决定了该音调是多少拍。因此,一个音调是由两个字节组成的。根据音符字节产生该大小次数的延时,声音输出口取反,就可以得到该音调的高低音。根据设置单位的延时大熊啊,可以控制音乐演唱速度。因此算法很简单:定义单片机的一个I/O端脚为声音输出口,在规定的节拍内,根据音符字节的大小产生延时,将声音输出口不断的至置高置低(即取反),就可以得到该音调。只要选取合适的单位节拍延时,就可以输出动听的音乐。用内部定时器T0方式产生简谱中各音符飞对应脉冲频率,同时通过延时常数来控制脉冲频率的持续时间。为了加强观赏和实用性在上面P1脚接了LED灯,这样在音乐播放的同时也有灯的闪烁对音符有直观的

4、感觉。3、设计过程(1)元器件选取单片机stc89c52三极管8550电阻1K电容30pf发光二极管晶振11.0592按键开关蜂鸣器4(2)方案框图单片机控制系统LED显示蜂鸣器直流电源五伏(3)原理图从下面的电路原理图中可以看出,如果要让接在P0口的LED1亮起来,那么只要把P1.0的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此,我们还应注意一点

5、,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了P2^7输出的电流很小,P2^7接了一个三极管,放大电流以使蜂鸣器能够正常的工作,播放出音乐。(4)设计程序#include4#defineucharunsignedchar#defineuintunsignedintsbitsound=P2^7;uintcounter=0;ucharcodearray[]={0x18,0x30,0x1c,0x10,0x20,0x40,0x1c,0x10,0x18,0x10,0x20,0x10,0x1c,0x1

6、0,0x18,0x40,0x1c,0x20,0x20,0x20,0x1c,0x20,0x18,0x20,0x20,0x80,0xff,0x20,0x30,0x1c,0x10,0x18,0x20,0x15,0x20,0x1c,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2b,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0xff,0x20,0x20,0x1c,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2b,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00,0x00,};voidi

7、nit_com()/设置定时器{TMOD=0x01;TH0=0xff;TL0=0xff;EA=1;ET0=1;}voidtimer0(void)interrupt1using3/设置中断3{counter=counter+1;/不断加1TH0=0xd8;TL0=0xef;}voiddelay(ucharn)/延时子程序{uchari;while(n--)for(i=0;i<125;i++);}voidsoun

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。