多首电子音乐选播报告.doc_第1页
多首电子音乐选播报告.doc_第2页
多首电子音乐选播报告.doc_第3页
多首电子音乐选播报告.doc_第4页
多首电子音乐选播报告.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

武 汉 城 市 职 业 学 院2009级科学教育专业AVR电子实践制作作品报告2011年6月28日项目名称:多首电子音乐选播小组成员及分工:胡婷: 主要负责编写报告书,电路板设计,辅助protues仿真。焊接电路板。柳思思:负责实验可行性分析及调试,编写C语言程序编程,protues仿真,焊接电路板。温小曼:负责电路的可行性及调试,组织小组成员按进度工作,帮助焊接电路板。彭芸: 购买主要元器件及后期缺失元器件的选购,账务支出清单核算,帮助焊接电路板。一、 项目概述1、 本项目核心部分为单片机、条形LED和蜂鸣器,其主要功能为单片机编程,实现单片机控制LED发光及蜂鸣器发声。2、 本作品单片机内置了六首自定义的电子音乐,通过中断例程来切换音乐和控制音乐的播放与停止。3、 本作品的条形LED部分随着音乐调子的增高而放光的LED数目增加。二、功能介绍本作品的主要功能为单片机控制条形LED和蜂鸣器,利用中断例程控制切换播放下一音乐,实现电子音乐的选播。三、 系统框架排针开关蜂鸣器单片机电阻发光管电源按键四、 实物图五、 软硬件模块划分 软件部分1、 单片机上程序编程,发出的命令到达条形LED和蜂鸣器。2、 按键控制程序,通过按键可以控制LED发光个数以及蜂鸣器的发声。 硬件部分1、单片机控制部位是本作品的主要部位,主要是ATMEGA单片机及其控制部分。2、条形LED部分,根据音调的不同,显示不同个数的LED。3、蜂鸣器部分,根据程序,发出不同的音调或音乐。4、按键部分,通过控制按键,可以控制多首音乐的选播和启停。六、PROTEUS仿真电路七、软件设计(核心代码)/-/ 名称: 多首电子音乐的选播/-/ 说明: 本例运行时,每次按下K1将切换播放下一首电子音乐,对应的/ 的LED会进行闪烁,音调越高,闪烁灯越高,音调越低,闪烁灯越低./-#define F_CPU 1000000UL#include #include #include #define INT8U unsigned char#define INT16U unsigned int/蜂鸣器#define BEEP() PORTB = _BV(PB0)/音符延时表,它们分别对应于015号音符的输出频率const INT16U Tone_Delay_Table = 64021,64103,64260,64400,64524,64580,64684,64777, 64820,64898,64968,65030,65058,65110,65157,65178,;/第一段(Tone为音符,Time为节拍)const INT8U Music2_Tone = 10,8,10,13,11,13,10,10,6,7,8,7,6,7,10,8,10,13,12,11,13,10,10,7,8,9,5,6,11,13,13,12,11,12,13,11,12,13,11,11,10,8,6,7,10,8,10,13,12,11,13,10,10,7,8,9,5,6,0xFF ; const INT8U Music2_Time = 2,1,1,4,2,2,4,2,1,1,2,1,1,6,2,1,1,3,1,2,2,4,2,1,1,3,1,6,2,2,4,2,1,1,4,1,1,1,1,1,1,1,1,6,2,1,1,3,1,1,2,2,1,2,1,1,3,1,6,0xFF ; /第二段const INT8U Music1_Tone = 6,6,6,8,10,10,10,10,11,11,11,13,10,9,9,9,11,8,8,8,10,7,7,7,7,10,10,6,6,6,8,10,10,10,10,11,11,11,13,10,9,9,9,11,8,8,8,10,7,7,7,8,6,0xFF ; const INT8U Music1_Time =1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,3,0xFF;/第三段 const INT8U Music3_Tone =1,3,6,6,3,2,1,1,1,1,2,3,4,3,1,3,4,6,3,2,1,3,3,4,5,5,6,0xFF; const INT8U Music3_Time =2,1,3,2,1,3,1,1,1,1,1,1,3,3,2,1,3,2,1,3,2,1,1,1,1,3,3,0xFF;/第四段const INT8U Music4_Tone =11,10,11,9,10,10,9,10,11,10,9,8,6,2,4,5,5,5,5,8,7,6,2,6,5,6,2,5,5,4,3,2,2,9,8,9,5,6,5,4,5,6,11,10,9,10,6,0xFF;const INT8U Music4_Time =2,2,4,2,2,2,4,2,2,1,2,2,4,2,2,4,2,2,2,2,2,8,4,2,2,4,4,2,1,2,2,4,4,2,2,4,4,2,1,2,2,4,4,2,2,4,4,0xFF;/第五段const INT8U Music5_Tone =1,4,6,1,4,10,6,1,1,9,10,4,2,2,1,1,6,5,4,4,4,6,5,4,4,4,6,5,5,4,2,6,5,5,1,4,6,1,4,10,6,1,1,9,10,4,2,2,1,1,7,6,0xFF;const INT8U Music5_Time =2,4,2,4,2,4,2,4,2,4,2,4,2,2,2,4,2,2,4,4,4,2,2,4,2,4,2,2,4,2,4,2,2,4,2,2,4,2,4,2,4,2,4,2,2,4,21,4,2,2,2,4,2,2,0xFF;/第六段const INT8U Music6_Tone = 9,7,6,7,3,5,6,14,3,2,2,3,5,6,6,6,6,9,3,3,9,9,6,9,11,10,10,0xFF;const INT8U Music6_Time =4,4,2,2,4,4,2,4,2,2,4,4,2,4,2,2,4,2,2,4,4,2,4,4,4,4,4,4,0xFF;/音符与延时指针数组Volatile const INT8U * Music_Tone_Ptr=Music1_Tone,Music2_Tone,Music3_Tone,Music4_Tone,Music5_Tone,Music6_Tone, * Music_Time_Ptr=Music1_Time,Music2_Time,Music3_Time,Music4_Time,Music5_Time,Music6_Time;/音乐片段索引,音符索引volatile INT8U Music_Idx = 5, Tone_Idx = 0;/从当前数组中取音符的位置volatile INT8U i = 0;/暂停控制volatile enum bool FALSE = 0, TRUE = 1 Pause = TRUE;/-/ 主程序/-int main()DDRB=0xFF; /端口配置DDRC=0xFF;DDRA=0xFF; DDRD=(_BV(PD2)|_BV(PD3); /终端引脚设为输入PORTC=0xFF; /LED初始时全部关闭PORTA=0xFF; PORTD=_BV(PD2)|_BV(PD3); /终端输入引脚设为内部上拉 TCCR1B=0x01; /T1预设分频:1(未分频)MCUCR=0x82; /INT0,INT1均为下降沿触发GICR=_BV(INT0)|_BV(INT1); /INT0,INT1终端许可SREG=0x80; /开中断while(1)/暂定控制if(Pause) _delay_ms(200);continue;/Tone_Idx是当前音乐片段中的第i个音符的序号(取值为015中的某一个)/它将用于获取对应的延时,以便输出对应的频率Tone_Idx=Music_Tone_PtrMusic_Idxi;if(Tone_Idx=0xFF) _delay_ms(2000); /每段音乐播放结束后停顿一段时间i=0; /回到当前音乐片段的第0个音符continue; /继续播放TIMSK=_BV(TOIE1); /启动定时器溢出中断,开始输出当前音符/音符输出时长(节拍)由各段音乐中Music6_Time数组中对应音符的延时值决定 _delay_ms(Music_Time_PtrMusic_IdxTone_Idx*200); TIMSK=0x00; /禁止定时器溢出中断,停止当前音符输出 i+; /取音符位置变量i递增INT16U P=0xFFFF;INT16U C;C=(P8;/-/ T1定时器溢出中断控制音符输出/-ISR (TIMER1_OVF_vect)/如果遇到音乐片段结束标志则返回if(Tone_Idx=0xFF)return;/根据Tone_Delay_TableTone_Idx设置定时初值/该初值即决定了输出的频率TCNT1=Tone_Delay_TableTone_Idx;BEEP();/-/ 按键触发INT0中断,控制音乐段切换/-ISR (INT0_vect)TIMSK=0x00; /禁止定时器溢出中断,音符输出停止/切换到另一段音乐if(Music_Idx=5)Music_Idx=0;else Music_Idx+;/切换到另一段音乐后总是从第0个音符开始输出i=0;_delay_ms(1000); /在开始另一段音乐输出前暂停1SPause=FALSE; /暂停取消TIMSK=_BV(TOIE1); /允许定时器溢出中断,音符输出继续/-/ 播放启动/停止控制/-ISR (INT1_vect)Pause=! Pause;if(Pause)PORTC=0xFF; /如果停止则关闭所有的LEDTIMSK=0x00; /停止音符输出else/允许定时器溢出中断,输出音符TIMSK=_BV(TOIE1);八、元件清单09科教多首电子音乐选播序号元件名称单价(元)数量金额(元)1TY809-D电路板21229012三极管0.220.43330欧姆电阻0.02200.44无源蜂鸣器0.721.4510位发光管3.52766mm按键0.230.674M晶振1118电容(22PF)0.120.29单片机座子0.410.410排针(40)0.510.511ATMEGA16161161210千欧姆电阻0.0110.01131.5V电池14414电池槽2.512.515开关11116底座0.54217630电烙铁1511518松香111合计(元)55.41九、实训过程中遇到的困难与挫折和实训过后的收获(一) 困难与挫折1、 在编程的过程中,我们经过很长时间的调试以及老师的指导才编出我们想要的结果,耗时很长。2、 在焊锡的过程中,我们的作品出现了问题,但是又找不出问题的所在,以致大家的情绪以及意见很大。3、 在买作品材料时,我们所买的有的东西没有买到,(比如1兆晶振没找到而取用4兆的晶振),以至于我们要买一个替代品,从而我们要改程序以及了解这件物品的属性。(二) 收获1、 团体合作的力量应是凝聚的,是缺一不可的。2、 团体成员对工作的态度是齐心协力的,有错误找问题,不懂地方查相关资料以及请教老师。3、 挫折是难以避免的,我们要学会把它踩在脚下,也许会离成功更近一步。4、 粗心大意,毛毛躁躁,考虑不全是我们学习前进的障碍,学会克服改正它。十、小组成员自我感言彭 芸:不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之温小曼:有志者,事竟成。胡 婷:纸上得来终觉浅,得知此事要躬行。柳思思:实践是检验真理的唯一标准。十一、自我评估单片机实训课程,一个让我们对实训课程有了新的定义的名词,在大学的学习过程中,我们所接触的实训课大多逃脱不了关乎花草树木,山川石林,虫鱼鸟兽。单片机实训课,它给我们带来了更多的挑战,这是我们第一次接触在动手操作方面比较独到的实训课,通过短暂的实训过程,我们深刻明白了理论和实践的差别,“不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之”,而我们大多数人在“知之”这一阶段就止住脚步了,所以很多人抱怨“我就只差一步了”,单片机实训课程给我们的警钟不仅是理论知识有多重要,而是理论与实践相结合有多重要!在设计编程的初级阶段,由于我们对一些理论性的东西掌握的不足,在程序的调试过程以及在焊接的过程中对引脚的模糊感,如何联线看起来更美观,焊接点是否存在虚焊的检查等等费了很大的功夫,虽然实践后的成品存在或多或

温馨提示

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

评论

0/150

提交评论