音乐播放器实验报告.doc_第1页
音乐播放器实验报告.doc_第2页
音乐播放器实验报告.doc_第3页
音乐播放器实验报告.doc_第4页
音乐播放器实验报告.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、 实验项目名称基于单片机的音乐播放器二、 实验目的设计方案设计一个基于AT89C51系列单片机的音乐盒,利用按键控制切换演奏出不同的音乐。蜂鸣器发出某个音调,与之对应的LED灯亮起。使用两个按键,一个用来切换歌曲,另一个切换LED的变化花样。 研究内容电路有两种模式:演奏音乐模式和花样灯模式A 演奏音乐模式:演奏完整的一首歌曲,LED随着音乐变化;B 花样灯模式:LED变化出各种花样,蜂鸣器随着发出“滴滴”声;按下按键1进入演奏音乐模式,再按切换歌曲,共两首歌曲; 按下按键2进入花样灯模式,再按切换LED花样,共三种花样。 总体方案图 a组成框图:音乐盒的系统结构以AT89C51单片机位控制核心,加上2个按键、时钟复位电路、蜂鸣器、LED模块组成。单片机负责接收按键的输入,根据输入控制音乐播放曲目和音乐花样灯的显示样式以及蜂鸣器发音。系统组成框图如下所示:b功能结构图:Key1负责切换播放歌曲,共两首。分别是祝你生日快乐和寂寞沙洲冷;Key2负责切换LED显示花样,共3种:顺序显示,由两边向中间移动然后向两边移动,循环显示。三、 实验器材Windows7 操作系统 Proteus仿真软件 keil4软件 AT89C51单片机共阴极数码管 开关 电容 晶振 电阻 发光二极管 蜂鸣器四、 实验要求(1) 以单片机为主控处理器,用蜂鸣器播放歌曲;(2) 系统要求有选择上一首、下一曲功能;(3) 两个按键,可在播放和显示花样中进行切换;(4) 用一个键控制花样类型的显示功能;(5) 用LED灯闪烁“伴奏”。五、 实训基本原理(附原理图、源程序清单) 1 硬件设计 LED显示电路设计与原理LED显示电路是由8个LED发光二极管组成,连接方式是共阳极,LED接到单片机的P1口,若是低电平,可使LED亮。发光二极管的亮灭是由内部程序控制的,8个LED发光二极管分别对应不同的音阶,所以LED会随着音阶的变化按规律亮灭。 硬件电路图及其功能介绍1) 电路中用P3.2、P3.3 控制键;2) P1.0P1.7控制LED;3) P2.3控制蜂鸣器;4) 电路为12MHZ晶振频率工作,起振电路中C1、C2均为30PF。时钟振荡电路AT89C51中有一个用于构成内部振荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是该放大器的输入和输出端。 蜂鸣器播放声音是通过振动产生的。单片机对某一引脚以一定的频率循环置1置0,该引脚便产生一定频率的方波,方波通过放大,作用于一定的物理实件(扬声器),就产生了一定频率的声音。若改变输出方波的频率,产生的声音随之改变。通过控制输出方波的时间长短,声音的长短也可以得到控制,因此,根据乐谱,以类似的音及同样的节拍,单片机就可以产生电子音乐。音乐的播放模式及选择可以通过按键的输入得以实现。在本次设计中将蜂鸣器连接到AT89C52的P37接口处。通过控制单片机定时器的定时时间产生不同频率的音频脉冲使得蜂鸣器发出不同音节的声音,即声调。用软件延时来控制发音时间的长短,控制节拍。把乐谱中的音符和相应的节拍变换为定时常数和延时常数,作为数据表格存放在存储器中,由程序查表得到定时常数和延时常数,分别用来控制定时器产生的脉冲频率和发出该音频脉冲的持续时间。 2 软件设计在本程序中设置了两个标志:count和count,分别初始化为和。按键使得count在和之间切换,按键使得count在之间切换。程序检测count的值,count等于时播放第一首歌曲,时播放第二首。同时根据count的值来切换LED的花样。count1和count2的值是互斥的,设置count1等于1、2时,count2同时设置为0;设置count2等于14时,count1也同时设置为0。音调的确定1)要产生音频脉冲,只要计算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用定时器计时这半个周期的时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。 2)可利用AT89C51的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0和TL0产生不同频率的方法。 3)C调各音符频率与计数值T的对照表 低音频率T参数中音频率T参数高音频率T参数Do2621908229Do523956115Do10465757Do2771805217Do554903108Do11095454Re2941701204Re587852102Re11755151Re3111608193Re62280497Re12454848Mi3301515182Mi65975991Mi13184545Fa3491433172Fa69871686Fa13974343Fa3701351162Fa74067681Fa14804141So3921276153So78463877So15683838So4151205145So83160272So16613636La4401136136La88056868La17603434La4641078129La93253664La18653232Si4941012121Si98850661Si19763030节拍的确定 音乐是由许多不同的音符组成,而每个音符对应着不同频率,这样就可以利用不同的频率组合,加以与拍数对应的延时,构成音乐。编码do re mi fa so la si分别编码为17,重音do编为8,重音re编为9,停顿编为0。播放长度以十六分音符为单位(在本程序中为165ms),一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推。音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码。以0xff作为曲谱的结束标志。 歌曲播放的设计。先将歌曲的简谱进行编码,储存在一个数据类型为unsigned char 的数组中。程序从数组中取出一个数,然后分离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低4位,得到延时时间,接着调用软件延时。程序流程图及代码: 主程序流程图主程序代码:void main ()uchar x;count1=0;/流水灯无花样 count2=1;/唱第一首歌 P34=0;/选取矩阵键盘的一列 EA=1;/开总中断EX0=1;/开外部中断0 IT0=1;/外部中断0下降沿触发方式 EX1=1;/开外部中断1 IT1=1;/外部中断1下降沿触发方式 TMOD=0x01;/定时器0工作在方式1 TH0=0;TL0=0;ET0=1;while(1)if(count1!=0) /音乐停止,花样灯开始按照花样闪烁switch(count1) case 1:for(x=0;x14;x+)duan=1;P1=huayang1x;beep();delay1(300);duan=0;if(count1!=1)break;break;case 2:for(x=0;x14;x+)duan=1;P1=huayang2x;beep();delay1(300);duan=0;if(count1!=2)break;break;case 3:for(x=0;x0;x-) for(y=19000;y0;y-);void delay1(uint z)/延时1MSuint x,y;for(x=z;x0;x-) for(y=112;y0;y-);六、 实验步骤 1.建立一个新工程单击Project菜单,在弹出的下拉菜单中选中NewProject选项然后选择你要保存的路径,输入工程文件的名字,然后点击保存。同时弹出一个对话框,要求选择单片机的型号,你可以根据你使用的单片机选择AT89C52, ,选择完后右边栏是对这个单片机的基本的说明,点击确定。2.单击“File”菜单,再在下拉菜单中单击“New”选项此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“SaveAs”选项单击,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。用语言编写程序,则扩展名为(.c)。然后,单击“保存”按钮。3.回到编辑界面后,单击“Target1”前面的“”号,然后在“SourceGroup1”上单击右键,在弹出的菜单中单击“AddFiletoGroupSourceGroup1”选中Test.c,然后单击“Add”之后请输入C语言源程序。4.单击“Project”菜单,再在下拉菜单中单击“BuiltTarget”选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/StopDebugSession”(或者使用快捷键Ctrl+F5)5.调试程序:单击“Debug”菜单,在下拉菜单中单击“Go”选项,(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中单击“StopRunning”选项(或者使用快捷键Esc);再单击“View”菜单,再在下拉菜单中单击“SerialWindows#1”选项,就可以看到程序运行后的结果。6.单击“Project”菜单,再在下拉菜单中单击“”在下图中,单击“Output”中单击“CreateHEXFile”选项,使程序编译后产生HEX代码,供下载器软件使用。把程序下载到AT89C52单片机中。七、 实验调试 1检查硬件连接在PROTUES检查各硬件管脚是否连接正确,线路逻辑是否正确。2 检查软件系统 根据系统的原理结构检查各流程图是否正确,再根据流程图来检查程序是否也正确;将所有程序组织起来,在软件环境下运行,检查程序是否正确。通过对硬件和软件系统的认真检查反复测试,如果没有出现问题即把源程序编译成HEX文件装载到单片机中对硬件仿真。 3测试结果 A总体运行图B花样灯的3种花样图第一种花样灯显示方式为:从D1移向D2,然后D1熄灭,再从D2移向D3,然后D2熄灭,以此类推,往复循环。第二种花样灯显示方式为:从两边向中间移动,首先从D1移向D8,再从D8移向D2,以此类推,往复循环。第三种花样灯显示方式为:从D1移向D2,然后D1熄灭,再从D2移向D3,然后D2熄灭,以此往复循环。与第一种方式的不同之处为:当D1移向D2时,D1不熄灭,再从D2移向D3时,D2也不熄灭,以此类推。八、 实验总结 在整个音乐播放器的设计过程中,学会用画Proteus仿真软件画原理图。通过查阅相关的书籍,设计了电路原理图,经过仿真和反复的修改电路中元器件的参数得到了可行的电路图。 经过这一学期的学习单片机这门课,使自己对单片机有了更深入的了解,提高了自己的思考能力。从最初的生疏到现在对单片机有了一定的认识,最后在期末大作业上通过与同学老师交流和上网查阅相关资料,写出了这份实验报告。虽然不是很完整,有些功能也还没有完全实现,但是很感谢在整个课程学习中老师的指导,以及同班同学的热心帮助。当然在这次宝贵的毕业设计活动中,经验才是对于我们最大的收获,而且还增强了自身对未知问题以及对知识的深化认识的能力,用受益匪浅这个词语来概括再合适不过了。同时也让我们深刻的认识到了实践的重要性。不管理论掌握的多么熟悉,只有亲手去做,去完成,才会真正学好掌握好一门学科。 总之,这次设计从软件编写、调试到软硬件调试,都花费了大量的时间和心血。不管结果怎样,中间的过程才是最重要的,只有认真去尝试每一个错误,才能学到更多的知识。九、 参考资料 单片机原理与C51程序设计基础教程 源程序清单:#include #define uchar unsigned char#define uint unsigned intsbit duan=P26;sbit key1=P32;/按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,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=0x42,0x42,0x44,0x14,0x02,0x62,0x62,0x64,0x44,0x04,0x42,0x62, 0x84,0x84,0x02,0x72,0x62,0x54,0x04,0x52,0x62,0x74,0x74,0x02, 0x62,0x52,0x64,0x44,0x04,0x42,0x62,0x54,0x14,0x02,0x32,0x52, 0x44,0x04,0xff;uchar code jmszl=0x12,0x12,0x22,0x32,0x31,0x22,0x21,0x22,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,0x51,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,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,0x31,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,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x0,0x0;/将音调转化为对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论