音乐播放系统设计单片机课程设计报告Word格式文档下载.docx
《音乐播放系统设计单片机课程设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《音乐播放系统设计单片机课程设计报告Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
3.1电路板制作
3.2电路板焊接
3.3电路板调试
4讨论及进一步研究建议
5课程设计心得
Abstract
参考文献
1.方案比较与选择
方案一:
利用AT89C2051和三级管9012构成的音乐播放器
一、功能特色
本播放器可实现循环播放、上一曲、下一曲、复位等功能。
为了体现乐曲播放过程中的动态效果,在P1口增加了8只LED,作随机闪烁以指示旋律的节奏。
二、硬件设计
电路以AT89C2051为主控制器,S1为复位键,S2、S3分别为上一曲、下一曲选择键。
晶振采用12MHz,音乐信号由P3.7口输出,经9012放大后推动喇叭发声(电路图见图1)。
三、软件设计
程序中根音选取的是C调三个8度内的音符,共21个音。
每个音符对应频率由定时器T0产生(音符频率及对应计数初值见附表)。
为了程序调用方便,每个音符都对应一个编码,占用一个字节。
在程序中以查表的方式加载计数初值。
当值为00H时表示空拍,与节拍码配合完成节拍发音。
节拍码也占一个字节,其总时间长度等于基本时间乘以节拍码的值。
节拍码值为01H时,表示当前乐曲结束,为00H时,表示全部乐曲结束。
为了编码简单,一般节拍码高半字节表示整拍,低半字节表示分数,只要基本延时设定恰当即可,为了及时响应键盘操作,键扫描指令安排在基本延时时间子程序中。
按键每按下一次,乐曲数目计数器R5加"
1"
或减"
,然后根据R5的内容转向不同的乐曲。
本程序包含4首乐曲。
若要增加更多的乐曲,在存储空间许可的情况下(可直接换用4k的AT89C4051),只要照所附的编码表将简谱转化为相应的代码附着在乐曲数据表中即可。
图1
优缺点:
功能有特色,本播放器可实现循环播放、上一曲、下一曲、复位等功能,但是P1口增加了8只LED,作随机闪烁以指示旋律的节奏,使得电路稍微复杂了一些,而且是用三级管9012来充当放大器和滤波,效果不好。
方案二:
利用AT89C2051和芯片LM386构成的音乐播放器
利用AT89C2051和芯片LM386构成的音乐播放器的电路图比较简单,而且LM386的放大和滤波效果好,因此选用方案二。
具体分析如下:
(一):
AT89C51的主要特性和引脚功能
AT89C51是带4K字节闪烁可编程可擦除只读存储器(EPEROM)的低电压、高性能CMOS8位微处理器(俗称单片机)。
该单片机与工业标准的MCS-51型机的指令集和输出引脚兼容。
AT89C51将多功能8位CPU和闪烁存储器组合在单个芯片中,为很多嵌入式控制提供了灵活性高且价格低廉的方案。
AT89C51的主要特性如下:
寿命达1000写/擦循环;
数据保留时间:
10年;
全静态工作:
0Hz-24MHz;
三级程序存储器锁定;
128×
8位内部RAM;
32可编程I/O线;
2个16位定时器/计数器;
5个中断源;
可编程串行通道;
低功耗闲置和掉电模式;
片内振荡器和时钟电路。
AT89C51引脚排列如图2所示,引脚功能如下:
图2
VCC(40):
+5V。
GND(20):
接地。
P0口(39-32):
P0口为8位漏极开路双向I/O口,每引脚可吸收8个TTL门电流。
P1口(1-8):
P1口是从内部提供上拉电阻器的8位双向I/O口,P1口缓冲器能接收和输出4个TTL门电流。
P2口(21-28):
P2口为内部上拉电阻器的8位双向I/O口,P2口缓冲器可接收和输出4个TTL门电流。
P3口(10-17):
P3口是8个带内部上拉电阻器的双向I/O口,可接收和输出4个TTL门电流,P3口也可作为AT89C51的特殊功能口。
RST(9):
复位输入。
当振荡器复位时,要保持RST引脚2个机器周期的高电平时间。
ALE/PROG(30):
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节,在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6,它可用作对外部输出的脉冲或用于定时目的,要注意的是,每当访问外部数据存储器时,将跳过1个ALE脉冲。
PSEN(29):
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期2次PSEN有效,但在访问外部数据存储器时,这2次有效的PSEN信号将不出现。
EA/VPP(31):
当EA保持低电平时,外部程序存储器地址为(0000H-FFFFH)不管是否有内部程序存储器。
FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1(19):
反向振荡器放大器的输入及内部时钟工作电路的输入。
XTAL2(18):
来自反向振荡器的输出
(二):
自动播放系统的设计
自动播放系统如图3所示,AT89C51的P1.0端接音频放大模块的IN+端口,在音频放大模块的VOUT端接一个8欧姆或者16欧姆的喇叭。
(三):
电路设计及音乐编程原理
若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。
利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。
就可在P1.0引脚上得到此频率的脉冲。
利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。
图3
计数脉冲值与频率的关系式是:
N=fi÷
2÷
fr
式中,N是计数值;
fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);
fr是想要产生的频率。
其计数初值T的求法如下:
T=65536-N=65536-fi÷
例如:
设K=65536,fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。
fr=65536-1000000÷
fr=65536-500000/fr
低音DO的T=65536-500000/262=63627
中音DO的T=65536-500000/523=64580
高音DO的T=65536-500000/1046=65059
C调各音符频率与计数初值T对照如表1所示。
(四)主程序流程
本系统主要完成作息定时和号音播放功能,因此用定时器T1中断方式产生100ms基准时间,再根据作息表上各段时间的长短对基准时间用软件计时。
可以用查表方式取得计数参数,计时到后将播放子程序地址送DPTR,转入播放子程序,放2遍对应号音后再继续计时。
主程序流程如图3所示。
播放子程序是用T0中断方式控制P1.0不断取反以产生不同频率音符,节拍的长短靠调用200ms延时子程序次数来完成。
子程序也用查表来完成。
2.电路仿真与分析
(对所选择的电路进行软件仿真,记录仿真的步骤与出现的结果,通过仿真确定电路中各元件的参数,本部分内容中应包含仿真与分析的详细说明,题图要明确,如下文所示,全文宋体,小四号,1.5倍行距)
吴罗罗等(1996)进行了不同形式、型号喷头和喷施方法的抗飘失能力的对比试验,试验布置见图2.1。
用此设备对比在无风或有风等不同条件下,各类喷头的药液回收率变化及药液横向沉积分布状况,以评价各类喷头和喷施方法的抗飘失能力。
试验用的喷头有两大类,一类为不同型号的扇形雾喷头,喷头安装成其雾面与气流平行。
另一类是双圆盘离心喷头,单喷头喷施。
喷头正下方2cm处,风速为5m/s。
在药液横向分布试验台上试验时,以清水代替农药喷施。
3电路板制作、焊接、调试
1:
电路板制作
PCB布局、布线基本原则
1、元件布局基本规则
1).按电路模块进行布局,实现同一功能的相关电路称为一个模块,电路模块中的元件应采用就近集中原则,同时数字电路和模拟电路分开;
2).定位孔、标准孔等非安装孔周围1.27mm内不得贴装元、器件,螺钉等安装孔周围3.5mm(对于M2.5)、4mm(对于M3)内不得贴装元器件;
3).卧装电阻、电感(插件)、电解电容等元件的下方避免布过孔,以免波峰焊后过孔与元件壳体短路;
4).元器件的外侧距板边的距离为5mm;
5).贴装元件焊盘的外侧与相邻插装元件的外侧距离大于2mm;
6).其它元器件的布置:
所有IC元件单边对齐
2、元件布线规则
1)、画定布线区域距PCB板边≤1mm的区域内,以及安装孔周围1mm内,禁止布线;
2)、电源线尽可能的宽,不应低于18mil;
信号线宽不应低于12mil;
cpu入出线不应低于10mil(或8mil);
线间距不低于10mil;
3)、注意电源线与地线应尽可能呈放射状,以及信号线不能出现回环走线
(2)印制板图的设计
完成一个印制板图的设计一般都要经过原理图输入--网络表生成--定义KeepoutLayer网络表(元件)加载--元件布局--自动(手动)布线等过程。
应该注意印制线路板的走线:
印制导线的布设应尽可能的短,在高频回路中更应如此;
印制导线的拐弯应成圆角,而直角或尖角在高频电路*布线密度高的情况下会影响电气性能;
当两面板布线时,两面的导线宜相互垂直、斜交、或弯曲走线,避免相互平行,以减小寄生耦合;
作为电路的输入及输出用的印制导线应尽量避免相邻平行,以免发生回授,在这些导线之间最好加接地线。
(三)所出现的问题及解决的方法
问题一:
用PROTEL绘制原理图,制板时产生的网络表始终有错,无法自动产生PCB板。
解决方法:
可以根据原理图对生成的网络表进行手工编辑,检查通过后即可自动布线。
用制板软件自动布局和布线的板面都不十分理想。
网络表错误可能是没有指定原理图中元件封装;
也可能是布电路板的库中没有包含指定原理图中全部元件封装。
如果是单面板就不要用自动布线,双面板就可以用自动布线。
也可以对电源和重要的信号线手动,其他的自动。
问题二:
后期制作出现的问题
有些问题虽然发生在后期制作中,但却是PCB设计中带来的,它们是:
过线孔太多,沉铜工艺稍有不慎就会埋下隐患。
所以,设计中应尽量减少过线孔。
同向并行的线条密度太大,焊接时很容易连成一片。
所以,线密度应视焊接工艺的水平来确定。
焊点的距离太小,不利于人工焊接,只能以降低工效来解决焊接质量。
否则将留下隐患。
焊盘或过线孔尺寸太小,或焊盘尺寸与钻孔尺寸配合不当。
前者对人工钻孔不利,后者对数控钻孔不利。
容易将焊盘钻成“c”形,重则钻掉焊盘。
导线太细,而大面积的未布线区又没有设置敷铜,容易造成腐蚀不均匀。
即当未布线区腐蚀完后,细导线很有可能腐蚀过头,或似断非断,或完全断。
所以,设置敷铜的作用不仅仅是增大地线面积抗干扰。
2:
焊接:
出现的问题
1)短路:
过大的焊点造成两焊点相接.
2)线路设计不良:
线路或接点间太过接近(应有0.6mm以上间距);
3)虚焊
焊点技术小结.
1)完全使用软件元件库中的元件,不加任何修改
这是大部分情况下我们应该的,但有时你的器件可能多少有点出入,如果你没有用过,确认是否与库里的元件相符,最好量一下实尺寸,以免出现元件到时插不了、管脚不符等的灾难性后果。
2)要保证焊接质量
焊接时确实焊牢,焊锡的堆积、气孔容易造成虚焊。
焊接时间一般不超过3秒钟,烙铁的功率应用内热式25W左右。
已焊接好的集成电路要仔细查看,最好用欧姆表测量各引脚间有否短路,确认无焊锡粘连现象再接通电源。
3)焊接时间不宜过长,否则容易烫坏元件,必要时可用镊子夹住管脚帮助散热。
4)、焊点应呈正弦波峰形状,表面应光亮圆滑,无锡刺,锡量适中。
5)、焊接完成后,要用酒精把线路板上残余的助焊剂清洗干净,以防炭化后的助焊剂影响电路正常工作。
焊接技术是一项必须掌握的基本技术,需要多多练习才能熟练掌握。
3:
调试
程序调试中出现的问题及解决的办法:
1.有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发行是因为程序中有的指令书写得不规范导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。
2.程序中的跳转指令的运用很重要,为保险起见,都用LJMP,我们就遇到过跳转指令用错程序无法正常运行的现象。
当用JNZ指令时,跳转范围比较少,这时要用一个标号中转。
3.编程时要注意,在程序开始时,要写入各定时器中断的入口地址。
4.编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。
5.程序的结构要设计的合理,避免上下乱调用的现象,这样会使程序更加清晰化。
6.编程前要加流程图,这样会使思路清晰,例如数字音乐盒的设计思路完全可以按着MP3的工作方式列写流程图。
7.两个定时器同时工作,存在中断时序问题,刚开始时我们把定时器1设定在方式3,计250us,由于定时中断过于频繁,使CPU负载过大,导致音乐不能正常播放,时间不能正常显示。
解决办法:
将定时器1设定在工作方式1,16位计数,计50ms,效果有很大改观。
8.在歌曲中,当遇到一个音符发音为4拍,在编曲中为*CH,托因时间较长,当定时器T1此时来中断时,就会对歌曲播放产生影响,若改为发音一拍,中断对歌曲播放影响减弱,但音乐效果变差。
改进方案:
若采用可以定时时间更长的单片机,可以避免所有问题。
4.讨论及进一步研究建议
扩大宽音域范围:
可以采用适当的误差补偿,利用单片机定时中断的方法能在宽音域范围产生准确稳定的音频信号。
要产生音频信号,只要算出某一音频的周期(频率的倒数),将此周期除以2即为半周期的时间,利用定时器计时此半周期时间,计时到后取反输出,重复此过程即得到此频率的声音信号。
关于中断响应时间:
必须考虑到中断响应时间的影响,尤其在高音部分,若忽略中断响应时间,会使音频频率比标准值低几十Hz,相当于1/4音程,很容易听出来,对低音部分影响不大。
一般中断响应时间为3~6个机器周期,经过反复试验取5个机器周期作为校正最为恰当。
关于杂音:
为避免T1中断可能引起杂音,应将定时器T0中断设为高优先级。
这样编写出来的程序播放的音与标准音叉进行差频校音,非常准确和谐
4:
关系波形:
由于输出的是方波,比较难听,也可以将波形细分用DA输出正弦波。
5:
关于芯片:
可以考虑选用89S51
89S51相对于89C51增加的新功能包括:
--新增加很多功能,性能有了较大提升,价格基本不变,甚至比89C51更低!
--ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。
是一个强大易用的功能。
--最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。
--具有双工UART串行通道。
--内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。
--双数据指示器。
--电源关闭标识。
--全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。
--兼容性方面:
向下完全兼容51全部字系列产品。
比如8051、89C51等等早期MCS-51兼容产品。
也就是说所有教科书、网络教程上的程序(不论教科书上采用的单片机是8051还是89C51还是MCS-51等等),在89S51上一样可以照常运行,这就是所谓的向下兼容。
比较结果:
就如同INTEL的P3向P4升级一样,虽然都可以跑Windows98,不过速度是不同的。
从AT89C51升级到AT89S51,也是同理。
和S51比起来,C51就要逊色一些,实际应用市场方面技术的进步是永远向前的。
5.课程设计心得
本学期学习单片机的时间只有10周时间,对单片机的硬件设计,软件设计掌握的深度不够,但通过此次课程设计,却改变了很多,首先对于硬件电路的工作原理有了进一步的学习,同样就有了进一步的认识;
其次软件方面,在程序的设计,程序的调试方面都学到了很多东西,这是第一次编写单片机的大程序,很有成就感。
在一个好的氛围里才能踏下心来做东西,在这几天课设的时间里,实验室的氛围对我们的影响很大,大家一起努力,这也是我们能完成课设的动力。
另外在编程中出现问题时,一定要戒骄戒躁,脚踏实地,认真看书,仔细分析,仔细调试,就一定会发现错误,克服困难,我们也是这么做的,这在课设中十分重要。
此次实习可以说是获益匪浅。
通过查阅了很多资料,了解了许多汇编程序的思想,扩展了自己的视野,不再仅仅局限于书本中几条简短的程序,而且更重要的是明白写程序的态度:
仔细谨慎,精益求精。
在系统加电调试中,针对一些问题,熟练掌握了根据原理分步测试,将错误之处缩小的最小范围内。
Abstract
MusicPlayerSystemDesign
SCMasimportantresourcesofthehardware,usingthetimercouldhaveavarietyoffixed-frequencysquare-wavesignal,andalsocouldhaveincluded"
Do"
"
Re"
and"
Me"
--suchasscale,thefrequencysound,Inthisdesign,weused12MHzoscillator,thefrequencysignalthatthemusicsignaloutputfromP3.7mouth,Aftersignalamplifiedbytheloudspeakertomaketheirvoicesheard.
Music,eachnotecorrespondstodeterminethefrequency,Wecanrefertothenotesgiventothefrequencyandtimeconstantcorrespondingtothepreparationprocess.Accordingtothetableprovidedbytheconstant,16to229ofitscodeintothechip,andthenthemusiccanbeplayed.WecelebratetherhythmsT0timercanbeusedtocontrolandtodifferentinitialvalue,itcanhavedifferenttimingtime.forexaple,somesongstotherhythmofeach94-minutefilm,afilmof0.64seconds.Otherrhythmsandthetimerelationshipcanalsorelationsbetweenthetwotables.
TimerT0workinaregularmanner,cytokinesandTL0change,thedifferentaudiofrequencies.Topreparethescoresrequiredtonotebytedatatableintheformofstoredprocedures,changeisthemusicofthedatabychangingthecontenttoachievethey.Themainprogramisasequentialreaddatabytetable,accordingtothesoundlevelofthesubroutinecallandaudioeldestsonprocedures,starttimerT0work.
参考文献
肖洪兵.跟我学用单片机.北京:
北京航空航天大学出版社,2002.8
李广第.单片机基础.第1版.北京:
北京航空航天大学出版社,1999
徐惠民、安德宁.单片微型计算机原理接口与应用.第1版.北京邮电大学出版社,1996
夏继强.单片机实验与实践教程.北京:
北京航空航天大学出版社,2001
陈志强胡辉.单片机应用系统设计实践指南.自编教材
李朝青《现代微机原理与接口技术》,第3版,北京航空航天大学出版社,2005.5