收藏 分销(赏)

单片机优秀课程设计数字音乐盒设计.doc

上传人:精**** 文档编号:2534037 上传时间:2024-05-31 格式:DOC 页数:28 大小:456.04KB
下载 相关 举报
单片机优秀课程设计数字音乐盒设计.doc_第1页
第1页 / 共28页
单片机优秀课程设计数字音乐盒设计.doc_第2页
第2页 / 共28页
单片机优秀课程设计数字音乐盒设计.doc_第3页
第3页 / 共28页
单片机优秀课程设计数字音乐盒设计.doc_第4页
第4页 / 共28页
单片机优秀课程设计数字音乐盒设计.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、机 电 工 程 系课 程 设 计 报 告题目:单片机课程设计-数字音乐盒设计专 业: 应用电子技术 班 级: 10应用电子(4)班 学 号: 姓 名: 指导老师: 答辩日期: 9月 目录一、绪论- 4 -二、对本课程设计分析- 4 -2.1工作原理- 5 -2. 节拍确实定- 6 -3. 音符编码- 8 -4.软硬件环境:- 8 -三、关键电路模块实现方案比较及选择- 8 - 3.2 设计方案确实定:- 9 -四、系统电路图- 9 -五、系统软件设计- 13 -六、结论- 15 -七、课程设计中所负责内容- 15 -八、课程设计过程中碰到关键问题和处理措施- 15 -九、心得体会- 16 -一

2、、 绪论本设计是为了检测自己对单片机掌握情况,而且能以c语言写出程序并应用,设计是以AT89S51芯片电路为基础,利用keil和proteus仿真软件,设计出一个多功效音乐盒。音乐盒关键由四大模块组成,包含AT89S51芯片、8个按键、蜂鸣器、晶振复位电路。有开机键、暂停键、播放键、上一曲、下一曲和3个用来选择歌曲键。另外用户能够根据自己喜好选择音乐并将其转化成机器码存入单片机存放器中。对于不一样型号单片机只需要对应改变一下地址即可。该软、硬件系统含有很好通用性,很高实际使用价值。本汇报写了音乐盒原理,怎样使用,述写了音调产生和节拍确实定及音符编码。包含主电路及其图和步骤图和我们此次设计心得体

3、会。 关键字:AT89S51;Keil;计时;音乐盒 二、 对本课程设计分析芯片AT89S51介绍AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4k BytesISP(In-system programmable)可反复擦写1000次Flash只读程序存放器,器件采取ATMEL企业高密度、非易失性存放技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存放单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。外形及引脚排列图2.1所表示 图2.1 AT89S51 2.1 工作原理本程序是得用单片机I/O口产生一定频率

4、方波,驱动蜂鸣器,发出不一样音调,从而演奏乐曲。下面我们来看下相关音乐是怎样出来:1 音调产生频率高低决定了音调高低。音乐十二平均率要求:每两个八度音(如简谱中中音1和高音1)之间频率相差一倍。在两个八度音之间又分为十二个半音。另外,音名A(简谱中低音6)频率为440Hz,音名B到C之间、E到F之间为半音,其它为全音。由此能够计算出简谱中从低音1到高音1之间每个音名对应频率,全部不一样频率信号全部是从同一个基准频率分频得到。1、要产生音频脉冲,只要算出某一音频周期(1/频率),然后将此周期除以2,即为半周期时间。利用定时器计时这半个周期时间,每当计时到后就将输出脉冲I/O反相,然后反复计时此半

5、周期时间再对I/O反相,就可在I/O脚上得到此频率脉冲。2、利用AT89s51内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不一样频率方法。另外结束符和休止符能够分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生对应停顿效果。3、比如频率为523Hz,其周期T=1/523=1912us,所以只要令计数器计时956us/1us=956,在每次技术956次时将I/O反相,就可得到中音DO(523Hz)。计数脉冲值和频率关系公式以下:N=Fi2FrN:计算值;Fi:内部计时一次为1us,故其频率为1MHz; 4、其计数值求法以下

6、:初值T=65536-N=65536-Fi2Fr比如:设K=65536,F=1000000=Fi=1MHz,球低音DO(261Hz)。中音DO(523Hz)。高音DO(1046Hz)计算值T=65536-N=65536-Fi2Fr=6Fr=6/Fr低音DOT=6/262=63627低音DOT=6/523=64580低音DOT=6/1047=650591、 C调各音符频率和计数值T对照表如表4.1所表示。表2.3 C调各音符频率和计数值T对照表低音频率N参数中音频率N参数高音频率N参数Do2621908229Do523956115Do10465757Do#2771805217Do55490310

7、8Do11095454Re32941701204Re587852102Re11755151Re3111608193Re62280497Re12454848Mi3301515182Mi65975991Mi13184545Fa3491433172Fa69871686Fa13974343Fa3701351162Fa74067681Fa14804141So3921276153So78463877So15683838So4151205145So83160272So16613636La4401136136La88056868La17603434La4641078129La93253664La1865323

8、2Si4941012121Si98850661Si197630302. 节拍确实定若要组成音乐,光有音调是不够,还需要节拍,让音乐含有旋律(固定律动),而且能够调整各个音快满度。“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主随之拍手或跺脚。若1拍实0.5s,则1/4 拍为0.125s。至于1拍多少s,并没有严格要求,就像人心跳一样,大部分人心跳是每分钟72下,有些人快一点,有些人慢一点,只要听悦耳就好。音连续时间长短即时值,通常见拍数表示。休止符表示暂停发音。一首音乐是由很多不一样音符组成,而每个音符对应着不一样频率,这么就能够利用不一样频率组合,加以和拍数对应延时,组成音乐。了

9、解音乐部分基础知识,我们可知产生不一样频率音频脉冲即能产生音乐。对于单片机来说,产生不一样频率脉冲是很方便,利用单片机定时/计数器来产生这么方波频率信号。所以,需要搞清楚音乐中音符和对应频率,和单片机定时计数关系。表2.41节拍和节拍码对照节拍码节拍数节拍码节拍数11/4拍11/8拍22/4拍21/4拍33/4拍33/8拍41拍42/1拍51又1/4拍55/8拍61又1/2拍63/4拍82拍81拍A2又1/2拍A1又1/4拍C3拍C1又1/2拍F3又3/4拍每个音符使用1个字节,字节高4位代表音符高低,低4位代表音符节拍,表2.41为节拍码对照。假如1拍为0.4秒,1/4拍实0.1秒,只要设定

10、延迟时间就可求得节拍时间。假设1/4拍为1DELAY,则1拍应为4DELAY,以这类推。所以只要求得1/4拍DELAY时间,其它节拍就是它倍数,图5.3为1/4和1/8节拍时间设定。表2.42 1/4和1/8节拍时间设定曲调值DELAY曲调值DELAY调4/4125毫秒调4/462毫秒调3/4187毫秒调3/494毫秒调2/4250毫秒调2/4125毫秒3. 音符编码do re mi fa so la si分别编码为17,重音do编为8,重音re编为9,停顿编为0。播放长度以十六分音符为单位(在本程序中为165ms),一拍即四分音符等于4个十六分音符,编为4,其它播放时间以这类推。音调作为编码

11、高4位,而播放时间作为低4位,如此音调和节拍就组成了一个编码。以0xff作为曲谱结束标志。举例1:音调do,发音长度为两拍,即二分音符,将其编码为0x18举例2:音调re,发音长度为半拍,即八分音符,将其编码为0x22歌曲播放设计。先将歌曲简谱进行编码,储存在一个数据类型为unsigned char 数组中。程序从数组中取出一个数,然后分离出高4位得到音调,接着找出对应值赋给定时器0,使之定时操作蜂鸣器,得出对应音调;接着分离出该数低4位,得到延时时间,接着调用软件延时。 4.软硬件环境:我用单片机是at89s51机而且利用keil和proteus仿真软件,设计出一个多功效音乐盒,使用c语言写

12、程序。三、 关键电路模块实现方案比较及选择3.1 方案设计:第一方案此方案采取是模拟电路,其中包含有几部分:1.基准频率产生器,产生基准频率,其值应依据音调发生器频率要求决定。 电路可由晶振组成时钟脉冲振荡器。2.音调发生器,音调发生器产生各个音区和音符所对应频率;音符代码存放器,用来存放和乐曲音符对应数字代码及乐曲数量。3.通常先将乐曲进行编码,再将其代码存放在EPROM存放器。4.节拍发生器和地址计数器,节拍发生器振荡频率由乐曲演奏速度所决 定。演奏速度越快,节拍发生器速度越高。5节拍分配器,将节拍分配好,产生驱动打击节拍信号。6.声音驱动电路,使乐曲节拍和频率经过发音演奏出所想要乐曲。第

13、二方案:采取单片机来设计电路。其中关键包含以下多个部分:1.AT89S51单片机,经过对其进行编程,利用其内部定时器/计数器改变计数初值,能够实现不一样音调。2.按键电路 有不一样按键能够实现不一样功效。3.晶振复位电路 由石英晶体振荡器产生单片机工作时所必需时钟信号。振荡器采取12MHZ晶振,使之机器周期 Tcy=1us,方便发音程序计算和编译。4.蜂鸣器经过对应程序能够驱动蜂鸣器使之发声。3.2 设计方案确实定:经过查资料、构思和自己设计,为确保电路基础功效实现,经过分析,从实现难度、性能、经济等方面综合就以上两种方案进行比较:1.从实现音乐盒电路硬件方面看,用单片机实现所用硬件电路比用模

14、拟电路实现所用器件少,接线图简单,功耗较小,稳定性和抗干扰性及相对方案1好2.用单片机实现音乐盒,经过编程就可实现音频和节拍,省去了节拍发生器和节拍分配器,实现音乐产生较简单3.AT89S51微处理器性价比高,用它完全能够实现本设计当中要求功效,且体积小,便于产品小型化,功耗小,工作电压范围宽。4.用单片机设计音乐盒音质较方案一好5.用单片机设计音乐盒电路能够加按键电路实现播放暂停及选曲功效综合以上原因,选择方案二比较可行。四、 系统电路图4.1设计思绪(仿真)程序设计部分关键有:简谱音调及节拍、计时、键盘扫描部分。设计部分见下图3.11: 图3.11利用keil和proteus仿真软件,在仿

15、真部分能够看到分别有八个按键经过74ls21外部中止来控制歌曲切换及对应功效,及蜂鸣器放出程序中音乐4.2 PCB电路图上图包含最小51系统、8按键和74ls48P.4.3 电路实物图1开机 2第一曲 3下一曲 4播放 5第二曲6第三曲 7暂停 8上一曲“1”:歌曲1,世上只有母亲好 “2”:歌曲2,感恩心“3”:歌曲3,千年之恋(共有三首歌曲)4.4实现系统功效由图中8个按键控制对应功效经过hd74ls08p控制外部中止,再由51机中c语言程序控制输出实现对应功效。五、 系统软件设计由下面步骤图我们看出,首先主程序开始先是初始化变量,然后按key1,判定是否按下,有话则开机,默认播放第一首歌

16、曲,这时我们能够按key2、key3、key4、key5、key6、key7、key8控制歌曲切换、播放和暂停。主程序开始初始化变量初始化定时器T1Key1=?开机播放歌曲1Key2=?暂停Key8=?播放返回Key7=?Key6=?Key5=?Key4=?Key3=?歌曲1歌曲2歌曲3上一曲下一曲NYNYNYYYYYYNNNNN六、 结论设计是以AT89S51芯片电路为基础,利用keil和proteus仿真软件,设计出一个多功效音乐盒。并经过硬件实现在单片机上音乐播放。现在我们音乐盒已经能够完成我们写全部功效,而且有深入可拓展性,相信我经过这次学习能愈加好学好单片机。在此间我发觉有个很好方法

17、,同时也是老师提醒下,就是先写步骤图,这么能使思绪清楚,然后按步骤图步骤来,就不会出现混乱情况了。最终最终将程序完成了,而且能在仿真软件上调试成功,然后就是完成硬件。现已全部可用(包含硬件及仿真)。经过这次单片机设计我发觉要学好单片机还有很大一大段距离,因为自己理念知识不扎实,能力有限,造成编程困难,最终在有资料和同学帮助下才将程序很好完成而且能用到实际中。我认为在此期间我学到是很多,没有扎实基础是不行,我们要在理念知识指导下去实践,细心是很关键。在程序中我们要注意指令规范。七、 课程设计中所负责内容在此次设计过程中,我负责写驱动程序,而且负责查找相关资料,和画PCB、还有写汇报。程序已经写好

18、能正常使用,出现问题已经得四处理。PCB已经画好,除了有部分跳线,一切正常。八、 课程设计过程中碰到关键问题和处理措施1. 问题:歌曲在下一曲再下一曲后,无法由最终一曲返回到第一曲。处理方法:加一个if循环函数使其能够返回2问题:按暂停键老是出现尾音。 处理方法:每次判定完按键开关位置后,全部将总中止开关EA和定时器开关TR0关闭3问题:硬件悍好发觉不能用。 处理方法:细心观察,发觉电路出现粗心时悍错,认真悍好。4问题:发觉程序一点也没有犯错,但就是不能正常运行。处理方法:认真对照书上程序,最终发觉是指令书写不规范,最终将其更正。九、 心得体会经过这次试验,我加深了对单片机认识。从硬件到软件,

19、从设计到调试。并深刻体会到了理论和实践有时并不是完全相同,理论上能够解释,能够实现东西,在实践中很有可能出现问题。在以后学习中,不能一味依靠书本,试验中碰到问题,要尝试多个思绪。在为期二周课程设计当中感慨最深便是实践联络理论关键性,当碰到实际问题时,只要认真思索。就是思索,利用所学知识,一步一步去探索,是完全能够处理碰到通常问题。此次实习使我们对电子元件及电路设计有一定感性和理性认识;培养和锻炼我们实际动手能力。使我们理论知识和实践充足地结合,作到不仅含有专业知识,而且还含有较强实践动手能力,能分析问题和处理问题高素质人才,为以后顺利就业作好准备。此次实习对我们很关键,是我们应用电子技术专业学

20、生实践中关键步骤。在以前我们学全部是部分理论知识。一周时间很短,不过我们学到比我们在学校两年学还要多,以前我们光只注意部分理论知识,并没有专门练习我们实际动手能力。这次实习使我意识到我操作能力不足,在理论上也有很多缺点。附件:/* C语言音乐盒源程序设计 */#include #include #define uchar unsigned char#define uint unsigned intuchar count=0,count1=0;/count1 歌曲标志uchar key,count2,h=1,i; uchar temp; /temp歌调/uchar s1,s2,m1,m2;uch

21、ar second,j=0;void delay1(uint z); /延时1mssbit key2=P32; / 按key2可切换歌曲sbit key1=P33;sbit fm=P37;/蜂鸣器连续IO口sbit rs=P22;sbit rw=P21; sbit e=P20; sbit busy=P00; sbit CS1=P24; sbit CS2=P23; /* 于键消抖延时函数 */void delay5() uint t; for (t=400;t0;t-); /*=音乐按键扫描函数= */uchar keyscan(void) /键盘扫描 unsigned char key_l,k

22、ey; key_l=P1&0x0f; if(key_l!=0x0f) / 判定是否有按键按下 delay5() ; /消抖 if(key_l!=0x0f) /再次判定是否有按键按下 key_l=P1&0x0f; /扫描列 得到列值 P1=0X7f;/0111 1111 if(P1!=0x7f) key=P1; P1=0Xbf; /1011 1111 if(P1!=0xbf) key=P1; P1=0Xdf; if(P1!=0xdf) key=P1; P1=0Xef; if(P1!=0xef) key=P1; P1=0x0f; delay1(1000); switch(key) case 0xe

23、b: count1=1;i=0; TR1=1;break; case 0xd7: count1=2;i=0; TR1=1;break; case 0xdb: count1=3;i=0; TR1=1;break; case 0xe7: count2=1;count1=1;delay1(100); TR1=1;break; /开机键ON/C case 0xed: count2=2;h=0; delay1(100); TR1=1;ER0=0;EA=1; break; /暂停键 = case 0xee: count1=count1+1;i=0; delay1(100); TR1=1; if(count

24、1=4) count1=1;break; /下一曲 + case 0xde: count1=count1-1;i=0; delay1(100); TR1=1; if(count1=0) count1=3;break; /上一曲 - case 0xbe: count2=5;h=1; TR0=1; break; TR1=1; /播放键 default:break; P1 = 0x0f; /=外部中止INT0=/ void ZD() interrupt 0 keyscan(); /=显示延迟=/ delay2(int a)int b; for(;a0;a-) for(b=0;b0;x-) for(y=19000;y0;y-);void delay1(uint z)/显示延时1ms uint x,y;for(x=z;x0;x-) for(y=112;y0;y-);/*= 主函数 = */main() P1=0x0f;EA=1;/ 开总中止EX0=1;TMOD=0x11;/T0工作在方法1TH0=0;TL0=0;ET0=1; /开定时器T0ET1=1; TH1=15536/256; TL1=15526%256;while(1)if(count2=1) inti(); song();delay1(10);

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服