版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计任务书分院(系)信息科学与工程专业自动化学生姓名 学号 设计题目基于单片机的音乐喷泉设计硬件设计部分课程设计内容及要求:内容:设计一个基于MCS-51系列单片机的音乐喷泉,随着音乐音调节拍的变化,彩灯也随之变化。、要求:1. 电路有两种工作模式:演奏音乐模式和花样灯模式。演奏音乐模式:演奏完整的一首歌曲,八路LED随着音乐变化。花样模式:八路LED变化出各种花样,蜂鸣器随着发出“滴滴”声。2. 按下按键1进入演奏音乐模式,再按切换LED花样,共两首歌曲。3. 按下按键2进入花样灯模式,再按切换LED花样,共四种花样。进度安排:(10天)1.熟悉题目,查找资料。(2天)2.进行编程和设计
2、接线。(4天)3.进行仿真。(2天)4.编写实验报告。(2天)指导教师(签字):年 月 日 学院院长(签字):年 月 日摘 要本课题是设计一个基于MCS-51系列单片机的音乐喷泉,随着音乐音调节拍的变化,彩灯也随之变化。先用Keil软件调试编写的程序再用Proteus软件仿真,在Proteus软件商是用两个软件,一个来切换演奏出不同的乐曲,利用定时器0发出不同频率的方波从P3.7输出,使蜂鸣器发出不同的音调,然后延时控制音调的节拍,与之相对应的LED灯亮起;另一个用来切换八路LED的变化的花样并且喇叭发出声音。关键词:AT89c0251单片机;音乐;LED灯目录1.绪论32.设计内容43.软件
3、设计43.1 程序设计分析43.2 歌曲简谱的编码规则53.3程序流程图63.4 软件源程序84.硬件设计154.1 AT89c2051单片机154.2电路原理175.仿真185.1 ISIS介绍185.2 Keil介绍195.3 仿真结果图206.心得体会22参考文献221.绪论德国发明家奥图皮士特先生在1930年提出喷泉的相关理论,随后他在百货商店和餐馆前建造小型的喷泉。经过多年来的发展,音乐喷泉的设计变的多样化,构造变得复杂化。在1952年的夏天,在西柏林的工业展览中,一个美国人看到了奥图皮士特先生音乐喷泉的表演,并把它带回纽约。1953年1月15日音乐喷泉在美国首次表演,表演期间超过1
4、50万人观看。在音乐喷泉走向全世界的同时,各种新技术也不断地运用在音乐喷泉上,使其表演变得复杂和美丽,给人们带来无限的乐趣,提高了人们的生活质量。 为了使控制简单可靠,活用现代社会的市场需求,各种形式的喷泉层出不穷,并逐步转向小型和营业性较强的方向发展。其音乐喷泉的控制也变得灵活多样,如单片机、PLC、DSP等都在音乐喷泉中有所运用,当然也具有优缺点。本课题选用单片机作为此次音乐喷泉控制系统设计的控制核心,主要是为了实现单片机的放音,并控制多个彩灯随着音乐的音调节奏变化而随之变换。2.设计内容电路有两种工作模式:演奏音乐模式和花样灯模式。演奏音乐模式:演奏完整的一首的歌曲,八路LED随着音乐变
5、化。花样灯模式:八路LED变化出各种花样,蜂鸣器随着发出“嘀嘀”声。按下按键1进入演奏音乐模式,再按切换歌曲,共两首歌曲。按下按键2进入花样灯模式,再按切换LED花样,共四种花样。3.软件设计3.1 程序设计分析 程序利用了R6和R7两个寄存器分别作为花样和音乐的标志,都初始化为0.用到了两个外部中断和一个定时器,两个按键接两个外部中断,按键1使得R7在1和2之间切换,当按下按键1时产生外部中断1,中断程序使得R7加1当R7为2时使之为0,用程序检测R7的值,R7等于1时播放第一首歌曲,等于2时播放第二首歌;按键2使得R6在04之间切换,当按下按键2时产生外部中断0,中断程序使得R6加1,当R
6、6为4时使之为0,根据R6的值来切换LED的花样。R6和R7的值是互斥的,设置R7等于1、2时,R6同时设置为0;设置R6等于14时,R7也同时设置为0。 歌曲播放的设计:利用定时器0发出不同频率的方波从P3.7输出,使蜂鸣器发出不同的音调,然后延时控制音调的节拍。当程序检测到R7不为0时调用音乐子程序,先将歌曲的简谱进行编码,储存在一个编码表中。在子程序中从对应的编码表中取出一个数,然后分离出高4位得到音调,接着找出程序相应的值赋给定时器0,使之定时操作喇叭,得出相应的音调,同时从P1口输出相应的值使得八路LED灯随着音乐变化而发生相应的变化;接着分离出该数的低4位,得到延时时间,接着调用软
7、件延时。 花样灯的设计:一共设计了四种花样,即花样一是一半灯循环移动、花样二是八个灯循环闪烁,花样三是高低四位轮流亮,花样四是有八个灯循环被点亮和熄灭。R6的值为14一次对应花样的14,当程序检测到R6的值不为0时就调用与其值相对应的花样的子程序。3.2 歌曲简谱的编码规则 do re mi fa so la si分别编码为17,重音do编为8,重音re编为9,停顿编为0.播放长度一十六分音符为单位(在本程序中为165ms),一拍即四分音符等于4个十六分音符,编为4,其他的播放时间以此类推。音调作为编码的高4位,二播放时间作为低4位,如此音调和节拍就构成了一个编码。以ffH为曲谱的结束标志。举
8、例1:音调do,发音长度为两拍,集二分音符,将其编码为18H。举例2:音调re,发音长度为半拍,集八分音符,将其编码为22H。 确定定时器0对应于音调的初值:假设要得到500HZ的声音。500HZ的声音信号每个周期为2ms,即2000us。假设单片机采用12MHZ的晶振,每个机器周期的时间为12/12M=1us。故单片机操作(对与蜂鸣器相连的I/O口取反)一次蜂鸣器的时间间隔为2000us/1us/2=1000个机器周期,故给工作在方式1的定时器0赋初值C=t/MC补=模-t/MC,C=(3E8H)补=10000H-3E8H=FC18H,TH0=#FCH,TL0=#18H。下面给出定时器0工作
9、在方式1对应各音调的初值,假定使用的晶振是12MHZ:3.3程序流程图主程序流程图播放音乐子程序流程图Count2=0?计数i=0Count2=1?从第一个编码表取第i个数从第二个编码表取第i个数结束标志?取数高4位,点亮相应LED是0?关蜂鸣器,停顿一次给定时器0置入相应初值取数的低4位,调用软件延时i=i+1,修改编码指针结束yesnoyesnoyesyesnono3.4 软件源程序#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit duan=P26;sbit key1=P32;/
10、按key1可切换花样sbit key2=P33;/按key2可切换歌曲sbit fm=P37;/蜂鸣器连续的IO口sbit P34=P34;/矩阵键盘的一列uchar code huayang1=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf;/花样1uchar code huayang2=0x7f,0xfe,0xbf,0xfd,0xdf,0xfb,0xef,0xf7,0xef,0xfb,0xdf,0xfd,0xbf,0xfe;/花样2uchar code huayang3=0x7f,0x3f,0x1f
11、,0x0f,0x07,0x03,0x01,0x0,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff;char code huayang4= 0x55,0xaa,0xcc,0x33,0x99,0x66,0x0f,0xf0;uchar count1;/花样标志uchar count2;/歌曲标志uchar timeh,timel,i;/=简谱=/编程规则:字节高位是简谱,低位是持续时间,/代表多少个十六分音符/1-7代表中央C调,8-E代表高八度,0代表停顿/最后的0是结束标志uchar code qnzl= /千年之恋0x12,0x22,0x34,0x84,0x74
12、,0x54,0x38,0x42,0x32,0x22,0x42,0x34,0x84,0x72,0x82,0x94,0xA8,0x08,/前奏0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,/竹林的灯火 到过的沙漠 0x32,0x31,0x21,0x32,0x82,0x71,0x81,0x71,0x51,0x32,0x22,/七色的国度 不断飘逸风中 0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,/有一种神秘 灰色的旋涡 0x32,0x31,0x21,0x32,0x83,0x82,0x71,0
13、x72,0x02,/将我卷入了迷雾中 0x63,0xA1,0xA2,0x62,0x92,0x82,0x52,/看不清的双手 0x31,0x51,0x63,0x51,0x63,0x51,0x63,0x51,0x62,0x82,0x7C,0x02,/一朵花传来谁经过的温柔 0x61,0x71,0x82,0x71,0x62,0xA2,0x71,0x76,/穿越千年的伤痛 0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36,/只为求一个结果 0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53,/你留下的轮廓 指引我 0x42,0x63,
14、0x83,0x83,0x91,0x91,/黑夜中不寂寞 0x61,0x71,0x82,0x71,0x62,0x0A2,0x71,0x76,/穿越千年的哀愁 0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36,/是你在尽头等我 0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53,/最美丽的感动 会值得 0x42,0x82,0x88,0x02,0x74,0x93,0x89,0xff/结束标志/用一生守候;uchar code jmszl= /寂寞沙洲冷0x12,0x12,0x22,0x32,0x31,0x22,0x21,0x22,/
15、自你走后心憔悴0x21,0x31,0x51,0x52,0x31,0x52,0x61,0x15,0x14,/白色油桐风中纷飞0x51,0x52,0x31,0x52,0x62,0x13,0x11,0x13,0x32,0x28,0x08,0x28,/落花似人有情 这个季节0x31,0x32,0x31,0x32,0x11,0x21,0x51,0x52,0x51,0x52,/河畔的风放肆拼命地吹0x51,0x51,0x31,0x32,0x31,0x32,0x81,0x72,0x63,/不断拨弄离人的眼泪0x62,0x71,0x81,0x72,0x61,0x61,0x52,0x31,0x21,0x32,0
16、x51,0x54,/那样浓烈的爱再也无法给0x22,0x12,0x11,0x12,0x11,0x12,0x12,0x14,0x26,0x32,0x26,/伤感一夜一夜0x32,0x61,0x51,0x51,0x31,0x31,0x21,0x31,0x51,0x61,0x51,0x31,0x51,/当记忆的线缠绕过往支离破碎0x02,0x32,0x81,0x81,0x81,0x81,0x62,0x52,0x34,/是慌乱占据了心扉 0x31,0x81,0x81,0x81,0x61,0x91,0x82,/有花儿伴着蝴蝶0x51,0x51,0x51,0x51,0x31,0x61,0x53,/孤雁可以
17、双飞0x21,0x11,0x21,0x11,0x22,0x11,0x21,0x26,/夜深人静独徘徊0x32,0x61,0x51,0x51,0x31,0x31,0x21,0x31,0x51,0x61,0x51,0x31,0x51,0x52,/当幸福恋人寄来红色分享喜悦0x31,0x31,0x81,0x81,0x81,0x61,0x91,0x81,0x61,0x31,0x56,/闭上双眼难过头也不敢回0x32,0x32,0x81,0x81,0x81,0x81,0x91,0x81,0x61,0x81,0x61,0x51,0x31,0x51,0x34,/仍然捡尽寒枝不肯安歇微带着后悔0x21,0x3
18、1,0x51,0x31,0x21,0x11,0x61,0x21,0x16,/寂寞沙洲我该思念谁0xff;/=简谱音调对应的定时器初值=/适合11.0592M的晶振uchar code cuzhi= 0xff,0xff,/占位 0xFC,0x8E,/中央C调1-7 0xFC,0xED, 0xFD,0x43, 0xFD,0x6A, 0xFD,0xB3, 0xFD,0xF3, 0xFE,0x2D, 0xFE,0x47,/高八度1-7 0xFE,0x76, 0xFE,0xA1, 0xFE,0xC7, 0xFE,0xD9, 0xFE,0xF9, 0xFF,0x16 ;uchar yinyue=0xff,
19、0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x0,0x0;/将音调转化为对应的LED样式void delay1(uint z);/延时1MSvoid delay(uint z);/延时165MS,即十六分音符void song();void beep();/蜂鸣器叫一声main()uchar x;count1=0;/流水灯无花样count2=1;/唱第一首歌P34=0;/选取矩阵键盘的一列EA=1;/开总中断EX0=1;/开外部中断0IT0=1;/外部中断0下降沿触发方式EX1=1;/开外部中断1IT1=1;/外部中断1下降沿触发方式TMOD=0x01;/
20、定时器0工作在方式1TH0=0;TL0=0;ET0=1;while(1)if(count1!=0)switch(count1)case 1:for(x=0;x<14;x+)duan=1;P1=huayang1x;beep();delay1(300);duan=0;if(count1!=1)break;break;case 2:for(x=0;x<14;x+)duan=1;P1=huayang2x;beep();delay1(300);duan=0;if(count1!=2)break;break;case 3:for(x=0;x<16;x+)duan=1;P1=huayang
21、3x;beep();delay1(300);duan=0;if(count1!=3)break;break;case 4:for(x=0;x<8;x+)duan=1;P1=huayang4x;beep();delay1(300);duan=0;if(count1!=4)break;break;elsesong();delay1(1000); void int0() interrupt 0EA=0;/关总中断delay1(1);/去抖if(key1=0)count2=0;/不让蜂鸣器唱歌TR0=0;count1+;if(count1=5) count1=1;EA=1;/开总中断void i
22、nt1() interrupt 2EA=0;/关总中断delay1(1);/去抖if(key2=0)count1=0;/流水灯无花样TR0=1;i=0;/从头开始唱count2+;if(count2=3) count2=1;EA=1;/开总中断void timer0() interrupt 1 /用于产生各种音调TH0=timeh;TL0=timel;fm=fm;void song()uint temp;uchar jp;/jp是简谱i=0;while(1)if(count2=0)break;if(count2=1)/选曲 temp=qnzli;if(count2=2)temp=jmszli;
23、if(temp=0xff)break;jp=temp/16; /取数的高4位duan=1;P1=yinyuejp;duan=0;if(jp!=0)timeh=cuzhijp*2;timel=cuzhijp*2+1;elseTR0=0;fm=1;/关蜂鸣器delay(temp%16); /取数的低4位TR0=0; /唱完一个音停10MSfm=1;delay1(10); TR0=1; i+;TR0=0;fm=1;void delay(uint z)/延时165MS,即十六分音符uint x,y;for(x=z;x>0;x-) for(y=19000;y>0;y-);void delay
24、1(uint z)/延时1MSuint x,y;for(x=z;x>0;x-) for(y=112;y>0;y-);void beep()/蜂鸣器叫一声uchar i;for(i=0;i<50;i+)fm=fm;delay1(1);fm=1;4.硬件设计4.1 AT89c2051单片机 AT89c2051是美国ATMEL公司生产的低电平、高性能CMOS8位单片机,片内含2K bytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理
25、器和Flash存储单元,AT89C2051单片机在电子类产品中有广泛的应用。 1.VCC:电源电压。2.GND:地。3. P1口:P1口是一个8位双向I/O口。口引脚P1.2P1.7提供内部上拉电阻,P1.0和P1.1要求外部上拉电阻。P1.0和P1.1还分别作为片内精密模拟比较器的同相输入(ANI0)和反相输入(AIN1)。P1口输出缓冲器可吸收20mA电流并能直接驱动LED显示。当P1口引脚写入“1”时,其可用作输入端,当引脚P1.2 P1.7用作输入并被外部拉低时,它们将因内部的写入“1”时,其可用作输入端。当引脚P1.2P1.7用作输入并被外部拉低时,它们将因内部的上拉电阻而流出电流。
26、4. P3口:P3口的P3.0P3.5、P3.7是带有内部上拉电阻 的七个双向I/O口引脚。P3.6用于固定输入片内比较器的输出信号并且它作为一通用I/O引脚而不可访问。P3口缓冲器可吸收20mA电流。当P3口写入“1”时,它们被内部上拉电阻拉高并可用作输入端。用作输入时,被外部拉低的P3口脚将用上拉电阻而流出电流。P3口还用于实现AT89C2051的各种第二功能,如下表所列: P3口还接收一些用于闪速存储器编程和程序校验的控制信号。5. RST:复位输入。RST一旦变成高电平所有的I/O引脚就复位到“1”。当振荡器正在运行时,持续给出RST引脚两个机器周期的高电平便可完成复位。每一个机器周期
27、需12个振荡器或时钟周期。6. XTAL1:作为振荡器反相器的输入和内部时钟发生器的输入。7. XTAL2:作为振荡器反相放大器的输出。4.2电路原理由于51单片机的电流驱动能力较弱,而蜂鸣器的工作电流为几十MA。单片机给P3.7低电平,则蜂鸣器开;给高电平则喇叭关。LED接到单片机的P1口,输出0时,可使LED亮起。两个按键的一段接单片机的I/O口变成低电平,引发单片机中断。 5.仿真5.1 ISIS介绍 P r o t e u s I S I S是英国L a b c e n t e r公司开发的电路设计、分析与仿真软件,功能极其强大。该软件的主要特点是: 集原理图设计、仿真分析( I S
28、I S ) 和印刷电路板设计( A R E S ) 于一身。可以完成从绘制原理图、仿真分析到生成印刷电路板图的整个硬件开发过程。 提供几千种电子元件(分立元件和集成电路、模拟和数字电路)的电路符号、仿真模型和外形封装。 支持大多数单片机系统以及各种外围芯片(R S 2 3 2动态仿真、I 2 C调试器、S P I调试器、键盘和 L C D 系统仿真等)的仿真。 提供各种虚拟仪器,如各种测量仪表、示波器、逻辑分析仪、信号发生器等。过去需要昂贵的电子仪器设备、繁多的电子元件才能完成的电子电路、单片机等实验,现在只要一台电脑,都可在该软件环境下快速轻松地实现。 5.2 Keil介绍Keil Visi
29、on32006年1月30日ARM推出全新的针对各种嵌入式处理器的软件开发工具,集成Keil Vision3的RealView MDK开发环境。RealView MDK开发工具KeilVision3源自Keil公司。RealView MDK集成了业内领先的技术,包括Keil Vision3集成开发环境与RealView编译器。支持ARM7、ARM9和最新的Cortex-M3核处理器,自动配置启动代码,集成Flash烧写模块,强大的 Simulation设备模拟,性能分析等功能,与ARM之前的工具包ADS等相比,RealView编译器的最新版本可将性能改善超过20%。其优点是:Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《苏武传》课件统编版高二语文选择性必修中册-
- 开店小吃采购合同范本
- 实习生签的合同还协议
- 工地土方分包合同范本
- 微贷网反担保合同范本
- 小型油轮转让合同范本
- 扩建道路项目合同范本
- 意甲俱乐部转让协议书
- 听力障碍儿童的听觉言语训练教案
- 幼儿中班体育游戏教案抱树(2025-2026学年)
- 高压氧培训课件
- 民用航空安全保卫审计工作指导手册
- 2025福建德化闽投抽水蓄能有限公司社会招聘4人备考题库附答案
- 2025水土流失动态监测技术指南
- 客户需求对接管理规范
- 垃圾分类与处理专员面试题集
- 往来核算岗位实训
- 2025年医保政策知识培训考试试题库及答案
- 雨课堂学堂在线学堂云军事理论国防大学单元测试考核答案
- 2025中原农业保险股份有限公司招聘67人笔试考试备考试题及答案解析
- 多源医疗数据融合的联邦学习策略研究
评论
0/150
提交评论