




免费预览已结束,剩余17页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品 黑 龙 江 工 业 学 院单片机综合实训报告 院 系:电气与信息工程系 专业班级:电气工程及自动化本(三) 姓 名:陈强 学 号:04991303037 指导教师:魏喜雯 报告成绩:1、设计目的 (1)加强对单片机和汇编语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、芯片选择、模块化编程等多项知识。(2)用单片机模拟实现具体应用,使个人设计系统能够真正使用。(3)把原理和实践相结合,充分发挥个人和团体的合作能力,并在实践中得到锻炼。(4)提高利用已学知识分析和解决问题的能力。(5)利用AT89C51单片机结合内部定时器设计一个八音盒,按下单键可以演奏预先设置的歌曲旋律。2、设计任务要求本设计利用AT89C51单片机结合内部定时器设计一个八音盒,按下单键可以演奏预先设置的歌曲旋律。本设计可以学习AT89C51定时器程设计,按键扫描及歌曲旋律简单直觉式输入法的设计方法。其基本功能为:(1)使用数码显示管来显示目前演奏的歌曲编号;(2)具有8个按键操作来选择演奏哪一首歌曲;(3)内建8首歌曲旋律,按下单键可以演奏歌曲。3、设计方案选取与论证(1)选用Keil软件和Protues软件,选用AT89C51单片机,它有4kB内部ROM,2个定时/计数器,5个中断源。(2)通过中断实现歌曲的播放和暂停。(3)通过定时实现LED闪烁和音乐频率的变化。(4)通过按键实现歌曲的选择。3.1八音盒的发音原理一段音乐需要的是两个元素,一个是音调,另一个是音符。首先要了解 对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。对一定强度 的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。另外,音符的频率有所不同。基于上面的内容,这样就对发音的原理有了一些初步的了解。音符的发音主要靠不同的音频脉冲。利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制P3.7引脚的输出音乐。只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。3.2音符频率的产生3.2.1音符及定时器初始值:例如:中音1(do)的音频=523HZ,周期T=1/523s=1912。定时器/计数器0的定时时间为:T/2=1912/2=956。定时器956的计数值=定时时间/机器周期=956/1=956(时钟频率=12MHZ)。装入T0计数器初值为65536-956=64580。将64580装入T0寄存器中,启动T0工作后,每计数956次时将产生溢出中断,进入中断服务时,每次对P3.0引脚的输出值进行取反,就可得到中音DO(523HZ)的音符音频。将51单片机内部定时器工作在计数器模式1下,改变计数初值TH0,TL0以产生不同的频率。下表2-1是C调各音符频率与计数初值T的对照表: 表2-1 C调各音符频率与计数初值T的对照表音符频率(Hz)/初值()音符频率(Hz)/初值()低1DO262/63627中1DO 523/64580高1DO1042/65056低2RE 294/63835中2RE589/64687高2RE 1245/65134低3M330/64021中3M 661/64780高3M1318/65157低4FA 350/64107中4FA700/64822高4FA 1397/65178低5SO393/64264中5SO 786/64900高5SO1568/65217低6LA 441/64402中6LA882/64969高6LA 1760/65252低7SI495/64526中7SI 990/65031高7SI1967/652823.2.2音符、音符编码及定时器初始值:为了产生音符,必须求出音符低音5高音5的计数初值。例如C调的低1DO的THTL=65536-50000/262=63627,中音DO的THTL=65536-500000/523=64580,高音DO的THTL=65536-500000/1042=65056。为了方便写谱,对其进行简单的编码,在编程时,根据音符编码查找对应的计数初值。比如说音乐是C调的,那么出现低音的5SO,直接将代码写为1;出现低音6LA,直接写一个2的代码;出现低音7SI,直接写一个3代码。表2-2 音符编码表音符音符编码音符音符编码不发音0低5SO1低6LA2低7SI3中1DO4中2RE5中3M6中4FA7中5SO8中6LA9中7SIA高1DOB高2REC高3MD高4FAE高5SOF高6LAG3.2.3节拍频率的产生、节拍的产生与编码:音乐中的节拍用延时时间产生。例如,1拍=0.4s,1/4拍=0.1s,以此类推。假设1/4拍执行一次延时程序,则1/2拍就执行两次延时程序,所以只要求出1/4拍的延时时间,其余节拍就是它的倍数。为了方便,将节拍数也进行了编码,并且计算了乐谱节拍编程时的延时时间,如表2-3和表2-4所示。 表2-3 节拍数编码表按1/4拍为一个延时时间的节拍编码与节拍对应的表按1/8拍为一个延时时间的节拍编码与节拍对应的表节拍编码节拍节拍编码节拍节拍编码节拍节拍编码节拍11/466/411/866/822/488/422/888/833/4A10/433/8A10/844/4C12/444/8C12/855/4F15/455/8 表2-4 乐谱节拍编程时的时间延时表乐谱节拍1/4拍的延时时间乐谱节拍1/8拍的延时时间4/4125 ms4/462 ms3/4187 ms3/494 ms2/4250 ms2/4125 ms音符编码和节拍编码完成后,在编程时,每个音符占一个字节,高四位是音符编码,低四位是节拍编码。4、硬件电路设计4.1 总体设计框图数码管 AT89C51键盘输入 扬声器复位电路 本设计中用到了AT89C51单片机,8个开关,扬声器, 数码管等硬件电路常用元器件。4.2 晶振与复位电路晶振电路为系统提供基本的时钟频率信号,它结合单片机内部电路产生所需的时钟频率。复位电路由单片机XTAL1、 XTAL2引脚外接晶振(12MHz)及起振电容C1、C2(均为30pf)组成。当复位按钮按下时,内存和相关的寄存器,计数器,计时器所具有状态表示的器件全部被复位,回到初始状态。(如下图所示)4.3 按键输入电路按键输入电路由8个开关组成, P1口作为输入控制按键。4.4 输出显示电路用P0.0P0.7作为数码管的D0D7的控制信号。由于P0口作为输出,应加上拉电阻。用P2.0口控制发光二极管以及扬声器。5 、仿真过程及仿真结果 6、心得体会课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。 对于我们这些工科学生来说,这是一次考验。怎么才能找到课堂所学与实际应用的最佳结合点?怎样让自己的业余更接近专业?怎样让自己的计划更具有序性,而不会忙无一用?这都是我们所要考虑和努力的。这次课程设计我学到很多很多的东西,学会了怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不够好。这次课程设计通过自己的努力,同学的帮助,还有老师的辛勤指导下,最终顺利完成。7、程序感谢下载载#include #define uchar unsigned char#define uint unsigned int#define ulong unsigned longsbit SPEAK = P20;/接蜂鸣器管脚uchar th0_f; uchar tl0_f; uchar code SEG10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67;uchar code jie88=12,14,16,17,19,21,23,24;/*中断函数*/timer0() interrupt 1 TL0=tl0_f;TH0=th0_f; SPEAK =SPEAK; /取反音乐输出IOuchar code freq36*2=0xA9,0xEF,/00220HZ ,1 /00x93,0xF0,/00233HZ ,1#0x73,0xF1,/00247HZ ,20x49,0xF2,/00262HZ ,2#0x07,0xF3,/00277HZ ,30xC8,0xF3,/00294HZ ,40x73,0xF4,/00311HZ ,4#0x1E,0xF5,/00330HZ ,50xB6,0xF5,/00349HZ ,5#0x4C,0xF6,/00370HZ ,60xD7,0xF6,/00392HZ ,6#0x5A,0xF7,/00415HZ ,70xD8,0xF7,/00440HZ 1 /120x4D,0xF8,/00466HZ 1# /130xBD,0xF8,/00494HZ 2 /140x24,0xF9,/00523HZ 2# /150x87,0xF9,/00554HZ 3 /160xE4,0xF9,/00587HZ 4 /170x3D,0xFA,/00622HZ 4# /180x90,0xFA,/00659HZ 5 /190xDE,0xFA,/00698HZ 5# /200x29,0xFB,/00740HZ 6 /210x6F,0xFB,/00784HZ 6# /220xB1,0xFB,/00831HZ 7 /230xEF,0xFB,/00880HZ 10x2A,0xFC,/00932HZ 1#0x62,0xFC,/00988HZ 20x95,0xFC,/01046HZ 2#0xC7,0xFC,/01109HZ 30xF6,0xFC,/01175HZ 40x22,0xFD,/01244HZ 4#0x4B,0xFD,/01318HZ 50x73,0xFD,/01397HZ 5#0x98,0xFD,/01480HZ 60xBB,0xFD,/01568HZ 6#0xDC,0xFD,/01661HZ 7 /35 ;changedata(uchar *song,uchar *diao,uchar *jie)uchar i,i1,j;char gaodi; /高低+/-12音阶uchar banyin;/有没有半个升音阶uchar yinchang;/音长uchar code jie78=0,12,14,16,17,19,21,23; /C调的7个值*diao=*song;for(i=0,i1=0;)gaodi=0; /高低=0banyin=0;/半音=0yinchang=4;/音长1拍if(*(song+i)=|) | (*(song+i)= ) i+; /拍子间隔和一个空格过滤switch(*(song+i)case ,: gaodi=-12;i+;/低音break;case : gaodi=12;i+; /高音break;if(*(song+i)=0) /遇到0结束*(diao+i1)=0; /加入结束标志0*(jie+i1)=0;return;j=*(song+i)-0x30; i+; /取出基准音j=jie7j+gaodi; /加上高低音yinc: switch(*(song+i)case #: /有半音j加一个音阶i+;j+;goto yinc;case -: /有一个音节加长yinchang+=4;i+;goto yinc;case _: /有一个音节缩短yinchang/=2;i+;goto yinc;case .: /有一个加半拍yinchang=yinchang+yinchang/2;i+;goto yinc;*(diao+i1)=j; /记录音符*(jie+i1)=yinchang; /记录音长i1+; void play(uchar *songdata)uchar i,c,j=0;uint n;uchar diaodata48; /音调缓冲uchar jiedata48; /音长缓冲changedata(songdata,diaodata,jiedata); /解释音乐符号串TR0=1;while(P1=0xff)for(i=0;diaodatai!=0;i+) /逐个符号演奏tl0_f=freqdiaodatai*2; /取出对应的定时值送给T0th0_f=freqdiaodatai*2+1;for(c=0;cjiedatai;c+) /按照音长延时for(n=0;n29500;n+); /29500if(P1!= 0xff)/(!K1)|(!K2)|(!K3)|(!K4)/发现按键,立即退出播放TR0=0;return; TR0=0;for(n=0;n460;n+); /音符间延时TR0=1;TR0=0;/茉莉花uchar code molihua=33_5_6_1_1_6_|55_6_5-|33_5_6_1_1_6_|55_6_5-| 5553_5_|665-|32_3_53_2_|11_2_1| /3_2_1_3_2.3_|56_1_5-|23_5_2_3_1_,6_|,5-,61| /2.3_1_2-1_,6_|,5- ;/世上只有妈妈好 uchar code mamahao= 6.5_35|16_5_6-|35_6_53_2_|1_,6_5_3_2-| 2.3_55_6_|321-|5.3_2_1_,6_1_|,5- ;/小毛驴uchar code xiaomaolv=1_1_1_3_|5_5_5_5_|6_6_6_1|5-| 4_4_4_6_|3_3_3_3_|2_2_2_2_|5-;/我是一只菠萝uchar code boluo=1-|2_4_3_2_55|5_6_3_4_22|2_4_3_2_1_1_7_6_|5_4_2_3_11|2_4_3_2_55|5_6_3_4_22|2_4_3_2_1_5_2_3_|1-|;/小星星uchar code xiaoxingxing=1155|665-|4433|221-|5544|332-|5544|332-|1155|665-|4433|221-|;/春天在哪里uchar code chuntian=3_3_3_1_|,5,5_|3_3_3_1_|3-|5_5_3_1_|,5_,5_,5|,6_,7_1_3_|2-| 3_3_3_1_|,5,5_|3_3_3_1_|3-|5_6_5_6_|5_4_3_1_|,5_3_|2_1_;/两只老虎uchar code laohu=1231|1231|345-|345-| 5_6_5_4_31|5_6_5_4_31| 151-|151-;/就是爱你uchar code jiushiaini=3_2_3_4_5,7_1_|11_7_7 5_6_|66_5_5_3_2_1_3_|4_,6_,7_1_32|3_2_3_4_5,7_1_|11_7_7_3_|3-6_|5_4_.4_5_5-|4_,6_ ,7_1_32._1_|;/黑白配uchar code heibai=32345-|1,7123-|3,5,611-|;/找朋友uchar code zhaopeng=5_6_5_6_|5_6_5|5_1_7_6_|5_6_5;/数鸭子uchar code shuya=313_3_1|3_3_5_6_5-|6_6_5_5_4_4_4|2_3_2_1_2;/欢乐颂uchar code huanle=3345|5432|1123|322-|3345|5432|1123|211-|;/一分钱uchar c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业自动化设备维护与管理
- 工业自动化与智能制造成长关系研究
- 工作中的自我管理与领导力培养
- 工业设计在产品创新中的作用与价值
- 工业风与极简风办公室对比分析
- 工作效率提升与团队协作技巧
- 工业领域智慧能源管理案例
- 工作效率工具使用经验分享
- 工厂企业消防安全检查标准
- 工厂生产线的日常巡检要点与技巧
- (完整版)高考必备3500词
- GB/T 14832-2008标准弹性体材料与液压液体的相容性试验
- GB/T 1185-2006光学零件表面疵病
- 工业管道工程工程量清单项目设置及计价
- 济宁市城市介绍家乡旅游攻略PPT
- 熊浩演讲稿全
- 基于MATLAB的控制系统仿真及应用-第5章-基于MATLABSimulink的控制系统建模与仿真课件
- 巡检培训课件.ppt
- 北师大版五下书法《第6课戈字旁》课件
- 国家开放大学电大本科《设施园艺学》2023-2024期末试题及答案(试卷代号:1329)
- 关于地理高考四大能力要求解读
评论
0/150
提交评论