按键控制蜂鸣器播放多段音乐的设计论.docx_第1页
按键控制蜂鸣器播放多段音乐的设计论.docx_第2页
按键控制蜂鸣器播放多段音乐的设计论.docx_第3页
按键控制蜂鸣器播放多段音乐的设计论.docx_第4页
按键控制蜂鸣器播放多段音乐的设计论.docx_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及应用课程设计基于按键控制蜂鸣器播放多段音乐的设计姓 名: X X X 任课教师: X X 院 系: X X X 专 业: 电子信息工程 提交日期: 2012年6月25日 基于按键控制蜂鸣器播放多段音乐的设计引言这学期我们学习了单片机原理及接口技术这一门实用而又生动的课程,初次接触到它就被它丰富的内容所吸引。单片机自20世纪70年代问世以来,已得到了十分广泛的应用。随着单片机 的集成度越来越高以及单片机系统的广泛应用,对软件编程的要求也越来越高,要求编程人员在短时间内编写出执行效率高、运行可靠的程序代码。单片机具有一些突出的有点:体积小、重量轻、耗电少、电源单一、功能强、价格低、运行速度较快、抗干扰能力强、可行性高,所以在如今的绝大数的领域中都能够看到单片机的身影。本次设计是基于AT89C51芯片的电路为基础,外加上三极管的放大、放音设备蜂鸣器,以此来实现音乐硬件控制器的硬件电路,通过软件程序来控制单片机内部的定时器使其播放出优美的音乐。此次设计共写进了三首歌曲程序,分别是仙剑、月亮代表我的心和小星星。关键字:单片机 蜂鸣器 AT89C51芯片 音乐Based on the button control play more paragraphs music of the buzzer designInstructionThis term we have learnt the digital image processing which is a practical and vivid course, First contact to it, I was attractive by its rich content.Since the 1970 s, the single chip microcomputer appeared has been a wide range of applications. With the integration of single chip more and more high and the wide application of single-chip microcomputer system, the software programming requirement also more and more high, requesting programming staff in a short time, writing executive high efficiency and reliable operation program code. SCM has some prominent a bit: small volume, light weight, less consumption, and the power of a single, the function is strong, price low, the process is fast and strong anti-interference ability, feasibility is high, so in most of the number now in your field you can see the figure of single chip microcomputer.This design is based on AT89C51 chips based circuit, and the transistor amplifier and let the sound equipment, so as to realize music hardware hardware circuit, through the software program to control of the single chip microcomputer timer internal plays beautiful music. The design of three songs were written into the program, it is respectively xianjian, the moon represents my heart, little star. Keywords: Single-chip microcomputer ,buzzer,AT89C51 chip,music目 录第一章 绪论11.1课程设计目的11.2课程设计任务11.3课程设计的意义1第二章 设计原理22.1 设计原理22.1.1 基本原理简述22.1.2 关于音乐的原理知识概况2第三章 ATMEL 89C51 简介53.1 ATMEL 89C51简介53.1.1 AT89C51单片机53.1.2 单片机CPU结构53.1.3 AT89C51用户系统63.1.4 引脚介绍73.1.5 蜂鸣器原理7第四章 软件编程设计84.1 编程思路84.2 编程方案的设计94.2.1 软件功能选择94.2.2 综合调试94.2.3 程序清单9心得体会16致谢17参考文献17第一章 绪论1.1课程设计目的应用单片机,基于按键控制蜂鸣器播放多段音乐,利用它的原理组成一个简单的音乐盒。1.2课程设计任务1) 以单片机为核心部件组成一个简单音乐播放器;2) 利用单片机的定时器产生乐谱的各种频率方波,信号经过放大后由蜂鸣器发出声音;3) 自行定义按键盘,当有键按下时,能相应的播放出歌曲。有一个停止键能控制音乐的播放;1.3课程设计的意义利用开发板及组成的器件,在软件及硬件上进一步了解单片机的原理,深入了解了单片机C51语言的实际应用,能更深地理解课堂上所学的内容,巩固C语言程序编写,亲身体会作为一名设计人员所需要具备的各种能力,学会理论知识联系实际,提高我们发现问题,分析问题,解决问题和实践动手的能力。第二章 设计原理2.1 设计原理2.1.1 基本原理简述声音是通过振动产生的。单片机对某一引脚以一定的频率循环置1置0,该引脚便产生一定频率的方波,方波通过放大,作用于一定的物理实件(蜂鸣器),就产生了一定频率的声音。若改变输出方波的频率,产生的声音随之改变。通过控制输出方波的时间长短,声音的长短也可以得到控制,因此,根据乐谱,以类似的音节及同样的节拍,单片机就可以产生电子音乐。音乐的播放选择可以通过按键的输入得以实现。为简便起见,以一定的频率方波产生的音在其每个周期内高低幅值得时间各占一半因此,输出引脚在每个方波周期内要动作两次:一次升高,一次降低。即输出引脚的频率是原音频率的两倍。方波的产生由定时器控制。定时器T0工作在定时方式1,改变TH0及TL0,产生不同的音频频率。必须考虑到中断响应时间的影响,尤其在高音部分,若忽略中断响应时间,会使音频频率比标准值低几十Hz,相当于1/4音程,很容易听出来,对低音部分影响不大。一般中断响应时间为36个机器周期,经过反复试验取5个机器周期作为校正最为恰当,表1中所给的定时初值就是考虑中断响应后的定时常数。另外,为避免T1中断可能引起杂音,应将定时器T0中断设为高优先级。这样编写出来的程序播放的音与标准音叉进行差频校音,非常准确和谐。音乐播放器的基本硬件电路有六部分组成:单片机、时钟与复位电路、选择按键输入电路、音频发生器、音频放大器和扬声器。2.1.2 关于音乐的原理知识 在音乐中使用的各个固定频率的音叫音级1。常用符号C、D、E、F、G、A、B、c、d、e、a1、b1、c2、d2表示,它们对应于钢琴上的白键。两音之间音高的距离叫音程。在上述音级中,E与F、B与C之间音高的距离仅为其它相邻音级之间距离的一半,称它们之间的音程为半音音程,而称其它相邻各音之间的距离为全音音程。在这些全音音程之间又加入新的半音音级,用符号C、D、F、G、A、c、d、f、表示,对应于钢琴上的黑键。音持续时间的长短即时值,一般用拍数表示。休止符表示暂停发音。下面分别是各音符及对应频率(表2.1)与节拍表(表2.2)表2.1 各音符及对应频率音符低DO低#DO低RE低#RE低MI低EA简谱码DO_LDO#_LRE_LRE#_LMI_LFA_L频率262HZ277HZ294HZ311HZ330HZ349HZ音符低#FA低SO低#SO低LA低#LA低SI简谱码FA#_LSO_LSO#_LLA_LLA#_LSI_L频率370HZ393HZ415HZ440HZ466HZ494HZ音符中DO中#DO中RE中#RE中MI中EA简谱码DODO#RERE#MIFA频率523HZ554HZ587HZ622HZ659HZ698HZ音符中#FA中SO中#SO中LA中#LA中SI简谱码FA#SOSO#LALA#SI频率740HZ785HZ831HZ880HZ932HZ988HZ音符高DO高#DO高RE高#RE高MI高EA简谱码DO_HDO#_HRE_HRE#_HMI_HFA_H频率1047HZ1109HZ1174HZ1245HZ1318HZ1397HZ音符高#FA高SO高#SO高LA高#LA高SI简谱码FA#_HSO_HSO#_HLA_HLA#_HSI_H频率1480HZ1568HZ1661HZ1760HZ1865HZ1976HZ每个音符分为简谱码和节拍码。简谱码为D0-L到SI-H,节拍码为1到16。对应的节拍表如表2.2所示。对应的拍子: 2/2。以二分音符为一拍,每小节有两拍(二分音符代表一拍)2/4。以四分音符为一拍,每小节有两拍(四分音符代表一拍)3/4。以四分音符为一拍,每小节有三拍(四分音符代表一拍)4/4。以四分音符为一拍,每小节有四拍(四分音符代表一拍)表2.2 节拍表拍数字符拍数字符 1/8 00H 2 08H 1/4 01H 5/2 09H 1/2 02H 3 0AH 3/4 03H 7/2 0BH 1 04H 4 0CH 5/4 05H 5 0DH 3/2 06H 6 0EH 7/4 07H 8 0FH第三章 ATMEL 89C51概况3.1 ATMEL 89C51简介3.1.1 AT89C51单片机AT89C51是美国ATMEL公司推出的系列单片机,将多种功能的8位CPU与FPEROM(快闪可编程/擦除只读存储器)结合在一个芯片上,是一种低功耗、高性能的CMOS控制器,为很多嵌入式控制应用提供了非常灵活而又价格适宜的方案,其性能价格比远高于同类芯片。它与MCS-51指令系统兼容,片内FPEROM允许对程序存储器在线重复编程,也可用常规的EPROM编程器编程,可循环写入/擦除1000次。89C51内含4KB的FPEROM,一般的EEPROM的字节擦除时间和写入时间基本上均为10ms,对于任一个实时控制系统来说,这样长的时间是不可能在线修改程序的。3.1.2 单片机CPU结构(如图3.1) 图3.1单片机CPU结构3.1.3 AT89C51用户系统l CPU为Atmel公司生产的89C51/89C52/89C55等。出厂所配晶振频率为11.0592MH,每个机器周期为1.085us,用户更换晶振以提高速度;l 存贮器为64K,前4K/8K20K在CPU内部,其它程序在EPR0M27512中;l 数据存贮器为32K(62256),地址为8000FFFFH;l /O扩展8155,片内RAM地址200O-20FFH ;l 8155命令口地址为2100H ;l A口地址21O1H B口地址:2102H C口地址:2103H ;l T低八位2104H T高八位2105H ;l 多路模拟开关的使用 IN0P1=0F8H IN4:P1=0FCH IN1P1=0F9H IN5:P1=OFDH IN2P1=0FAH IN5:P1=0FEH IN3P1=0FBH IN7:P1=0FFH l 不掉电数据存贮器为500EH-507FH ;l 控制板160x1O9(mm) 供电+5V300mA +12V100mA -12V100mA ;l AT89C51是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器(FPEROM-Flash Programmable and Eraseable Read Only Memory)的8位CMOS微控制器,使用高密度、非易失存储技术制造,并且与80C51引脚和指令系统完全兼容;l 主要性能: 与MCS-51 微控制器产品系列兼容;片内有4KB可在线重复编程的快闪擦写存储器 。3.1.4 引脚分布如图(3.2)图3.2 89C51引脚图3.1.5 蜂鸣器原理如图(3.3)图3.3 蜂鸣器原理图第四章 软件编程设计4.1 编程思路想要产生音频信号,只要算出某一音频的周期(频率的倒数),将此周期除以2即为半周期的时间,利用定时器计时此半周期时间,计时到后取反输出,重复此过程即得到此频率的声音信号。此信号从P3.0脚输出。定时器T0工作在定时方式1,改变TH0及TL0,产生不同的音频频率。必须考虑到中断响应时间的影响,尤其在高音部分,若忽略中断响应时间,会使音频频率比标准值低几十Hz,相当于1/4音程,很容易听出来,对低音部分影响不大。一般中断响应时间为36个机器周期,经过反复试验取5个机器周期作为校正最为恰当,表2.1中所给的定时初值就是考虑中断响应后的定时常数。另外,为避免T1中断可能引起杂音,应将定时器T0中断设为高优先级。这样编写出来的程序播放的音与标准音叉进行差频校音,非常准确和谐。本设计中单片机晶振频率为11.0592MHz。每个音符使用两个字节。低位字节(偶地址)代表音级,00H表示不发音(休止符),01H30H依次表示的音级为c、c、d、d、e、f、a3、a3、b3 ,详见表2.1。高位字节(奇地址)代表音符的时值(拍数),00H0FH依次表示拍数为1/8拍(0.10s)8拍(6.40s),见表2.2。乐曲的结束标志是两个字节:0FFH,0FFH。设计延时程序125ms,来控制节拍,并在延时中判断是否有停止键按下,以便随时停止音乐。改变延时程序的延迟时间,即可实现歌曲的快慢演奏。主程序的任务是按顺序读取数据表中的字节,根据情况调用音级子程序和演唱子程序,启动定时器T0;通过延时控制节拍,并循环回音级子程序,等待演唱完毕。要编写的乐谱按要求以音符字节数据表的形式存放在程序中,改变乐曲就是通过改变该数据表的内容来实现的。主程序的任务是按顺序读取数据表中的字节,根据情况调用音级子程序和音长子程序,启动定时器T0;根据定时器T1应中断的次数,启动定时器T1。数据表读完后,根据所设置的循环演奏次数决定是否结束程序。音级子程序的任务是取出字节中的音级部分,分析TH0和TL0中应送入何值,送给33H,34H。演唱子程序的任务是取出对应频率值,并乘以2,启动T0,实现发音。之后执行延时程序,体现节拍,依此循环,直到音乐结束。当乐曲较长时(超过254个字节),数据表指针溢出,应及时修改基址寄存器DPTR内容,即数据表的表头指针。4.2 编程方案的设计4.2.1 软件功能选择对于4个按键的功能设计,一个停止键P2.5,其余三个键(P1.0,P1.2,P1.3)分别对应三首歌曲。演奏过程中,按停止键可使乐曲停止,继续按其他键继续选择其他歌曲演奏。选歌的按键使用8279键盘扫描以获得键值。停止键使用的单片机的外部中断1实现其功能的。4.2.2 综合调试 在开发板上进行调试,先是进行单个模块调试,在开发板上进行播放歌曲的调试,使其能单曲循环播放,当有开关键按下时,就停止播放歌曲,再按下时,又重新播放歌曲。最终实现当有控制键按下时,能够演奏对应的歌曲,再按播放下一首,当停止键按下时,停止播放歌曲。4.2.3程序清单#define uchar unsigned char /定义一下方便使用#define uint unsigned int#define ulong unsigned long#include /包括一个52标准内核的头文件char code dx5163 _at_ 0x003b;/这是为了仿真设置的sbit BEEP=P37; /喇叭输出脚sbit P10=P10; sbit K1= P10; /播放仙剑sbit K2= P12;/播放月亮sbit K3= P13;/播放小星星sbit K4= P25;/停止播放uchar th0_f; /在中断中装载的T0的值高8位uchar tl0_f; /在中断中装载的T0的值低8位/T0的值,及输出频率对照表uchar 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,/00554HZ0xE4,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;/定时中断0,用于产生唱歌频率timer0() interrupt 1TL0=tl0_f;TH0=th0_f; /调入预定时值BEEP=BEEP; /取反音乐输出IO/*/音乐符号串解释函数/入口:要解释的音乐符号串,输出的音调串,输出的时长串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 xdata diaodata112; /音调缓冲uchar xdata jiedata112; /音长缓冲changedata(songdata,diaodata,jiedata); /解释音乐符号串TR0=1;for(i=0;diaodatai!=0;i+) /逐个符号演奏tl0_f=freqdiaodatai*2; /取出对应的定时值送给T0th0_f=freqdiaodatai*2+1;for(c=0;cjiedatai;c+) /按照音长延时for(n=0;n32000;n+);if(!K1)|(!K2)|(!K3)|(!K4)/发现按键,立即退出播放TR0=0;return;TR0=0;for(n=0;n500;n+); /音符间延时TR0=1;TR0=0;/仙剑uchar code xianjian=|3_3_3_2_3-|2_3_2_2_,6,6_,7_|12_1_,7,6_,5_|,6-|3_3_3_2_3.6_|5_6_5_5_22_3_|45_4_32_1_|3.-3_|67_6_55_3_|5-3_5_|26_5_32_3_|3-|26_6_6-|16_6_66_7_|17_6_76_7_|3.-3_|67_6_55_3_|5-3_5_|67_6_76_7_|3-|26_6_6-|16_6_66_7_|17_6_7.5_|6-|;/月亮代表我的心uchar code song3=5-5_3_2_1_|3-|6-6_4_2_1_,7-,5_|1.3_5.1_|,7.3_5 5_|6.7_1.6_|6_5_5-3_2_|1.1_13_2_|1.1_12_3_|2.1_,62_3_|2- ,5_|1.3_5.1_|,7.3_55_|6.7_1.6_|6_5_5-3_2_|1.1_13_2_|1.1_12_3_2.,6_,71_2_|1-;/小星星uchar code mamahao=1155|665-|4433|221-|5544|332-|5544|332-|1155|665-|4433|221-|;/三个按键选择三首不同的音乐播放,一个键停止播放void main(void) / 主程序TMOD = 0x01; /使用定时器0的16位工作模式TR0 = 0;ET0 = 1; /定时器0中断EA = 1; /打开总中断while(1)if(!K1)while(!K1);play(xianjian); /播放音乐if(!K2)while(!K2);play(song3); /播放音乐if(!K3)while(!K3);play(mamahao); /播放音乐心得体会此次课程设计培养了学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。 回顾起此次单片机课程设计,我仍感慨颇多,的确,从

温馨提示

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

评论

0/150

提交评论