ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:466.63KB ,
资源ID:1009737      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-1009737.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(音乐发生器的设计与实现.docx)为本站会员(龙***)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

音乐发生器的设计与实现.docx

1、1实验课程名称:监测控制系统应用 实验五实验项目名称:音乐发生器的设计与实现 实验成绩: 实验者: 专业班级: 电信 130 班 同组者: 111 实验日期: 周四 34 节课 一实验内容掌握单片机片内定时器应用设计技巧,会确定定时器的时间常数,能够进行定时器的初始化编程。掌握利用微处理器设计音乐发生器的方法二探究内容1.利用定时器产生特定的频率信号,设计一个音乐发生器,可以循环播放音乐,候选乐曲 3 首。2.用按键选择播放哪一首音乐。有音乐播放的启停键。3.用 8 个 LED 灯随节拍闪烁(选做)4扩展内容(选做) ,用 7 个按键分别产生音阶 1、2、3、4、5、6、7,按一下键,即产生一

2、个节拍的相应音符,也就是设计电子琴。3实验设计:1.设计要求具体任务:(1)设计一个音乐发生器,候选音乐有三种,K1 可启动停止音乐,K2 用于选择音乐段;(2)用 proteous 仿真电路,保证设计的正确性;(3) 基于开发板完成实物制作。2. 探究内容:(1)如何利用音阶计算定时器的时间常数?(2)音乐声音的洪亮稳定如何保证?(3)节拍如何实现?23、实验设计:1.设计音乐发生器的基本任务的基本任务:(1)研究产生音阶 1、2、3、4、5、6、7 的方法,计算 7 个音阶对应的时间常数(2)设计产生单首乐曲循环的软件,调试后下载到开发板(3) 设计产生 3 首乐曲的音乐发生器,用按键选择

3、循环的单曲,调试后下载到开发板,运行。2.相关知识介绍2.3 音阶对应频率计数初值的计算单片机的振荡频率为 fosc12MHz ,通过定时器 T0 溢出后对 P3.0 口取反产生方波,故定时器溢出时间为 1/2f 。由: , 则定时初值为:noscnfX21)2(16 1624oscnnfX以音阶“1”为例:f523 Hz,则 T1/f 定时初值:6161604582423oscnnf FCH用同一方法可求出其它音阶所对应的频率定时初值,将其制表放在程序中,通过查表向定时器 T0 装入所要求的定时初值,即可产生某一音阶所对应的频率的方波信号。C 调的音阶及其频率、在单片机中的定时初值对应如下:

4、四原理图1.音乐播放器原理图3因为开发板上面的蜂鸣器为无源蜂鸣器,所以设计时要适应开发板的情况进行设计。K1、K2 按键用来进行上一曲和下一曲的选择,K3 为暂停/开始按键,P2.0 接蜂鸣器,P1 口接 LED 灯,用 LED 灯显示节拍。2.电子琴原理图上面七个键按下分别发出哆嘞咪发嗦啦嘻的音,第八个按键选择音调的高低。最下面的按键用来控制使用和暂停。4五实验结果音乐播放器仿真和实物都能正常的播放音乐,并且能够实现上一曲、下一曲的选择,并且有暂停和播放的功能,电子琴也能够正常发音,可以演奏音乐。5六、结果分析及总结(1)如何利用音阶计算定时器的时间常数?单片机的振荡频率为 fosc12MH

5、z ,通过定时器 T0 溢出后对 P3.0 口取反产生方波,故定时器溢出时间为 1/2f 。由: , 则定时初值为:noscnfX21)2(16 1624oscnnfX以音阶“1”为例:f523 Hz,则 T1/f 定时初值:61616045843oscnnf FCH用同一方法可求出其它音阶所对应的频率定时初值,将其制表放在程序中,通过查表向定时器 T0 装入所要求的定时初值,即可产生某一音阶所对应的频率的方波信号。(2)节拍如何实现?取乐曲节拍的长度为 0.4s ,即 1 拍0.4s ,由定时器 T1 控制延时。设置定时器T1 的定时中断 T50ms ,采用定时方式 1。由: ,则定时初值

6、X3C0BHfXosc12)(16因此 1 拍0.4s8*50ms,即通过定时器 T1 的定时中断 8 次,产生 8*50ms 的定时,就可以满足 1 节拍的定时要求。以此类推,通过定时中断 N 次,可产生 N*50ms 的定时以满足 1/4 拍、1/2 拍、1 拍、2 拍等不同节拍的定时要求。由此可知,节拍值只能是整数值。(3)音乐声音的洪亮稳定如何保证?6这里的“源”不是指电源。而是指震荡源。 也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。 而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用 2K5K 的方波去驱动它。 此次设计初,由于没意识到蜂鸣器驱动分为有源驱动和无

7、源驱动,在使用网上的乐谱和相应的函数设计音乐播放器时,不能正确产生音乐,后来查资料才发现有无源和有源之分,有源和无源蜂鸣器的发声原理不同,故其乐谱会有所不同。乐谱可以放在一个乐谱表中,通过查表来实现音乐的播放,要想循环播放一首歌,可以加一句查询语句,因为一条语句的执行时间非常短,对乐曲的演奏没有影响,在判断乐曲播放完后,继续回到乐曲开始,便可实现循环播放。附录:音乐播放器程序#include /*-硬件端口定义-*/sbit SPK=P20; /定义音乐输出端口sbit key1=P32; /定义按键 用于 暂停sbit key2=P33; /定义按键 用于 切换unsigned char W

8、=0,T; /用于选择音乐unsigned char Timer0_H,Timer0_L,Time;void delay5ms(void) /误差 0usunsigned char a,b;for(b=185;b0;b-)for(a=12;a0;a-);void delay500ms(void) /误差 0usunsigned char a,b,c;7for(c=205;c0;c-)for(b=116;b0;b-)for(a=9;a0;a-);/世上只有妈妈好 数据表 音谱,高中低音,音长code unsigned char MUSIC102= 6,2,3, 5,2,1, 3,2,2, 5,2

9、,2, 1,3,2, 6,2,1, 5,2,1,6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2,5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0 ;/送别 数据表 音谱,高中低音,音长code unsigned char MUSIC1174=5,2,2, 3,2,1, 5,2,1, 1,3,4, 6,2,2, 1,3,2, 5

10、,2,4,5,2,2, 1,2,1, 2,2,1, 3,2,2, 2,2,1, 1,2,1, 2,2,8,5,2,2, 3,2,1, 5,2,1, 1,3,3, 7,2,1, 6,2,2, 1,3,2,5,2,4, 5,2,2, 2,2,1, 3,2,1, 4,2,3, 7,1,1, 1,2,8, 6,2,2, 1,3,2, 1,3,4, 7,2,2, 6,2,1, 7,2,1, 1,3,4,6,2,1, 7,2,1, 1,3,1, 6,2,1, 6,2,1, 5,2,1, 3,2,1,1,2,1, 2,2,8, 5,2,2, 3,2,1, 5,2,1, 1,3,3, 7,2,1,6,2,2,

11、 1,3,2, 5,2,4, 5,2,2, 2,2,1, 3,2,1, 4,2,3,7,1,1, 1,2,8 ;/新年好 数据表 音谱,高中低音,音长code unsigned char MUSIC290=1,2,1, 1,2,1, 1,2,2, 5,1,2,3,2,1, 3,2,1, 3,2,2, 1,2,2,1,2,1, 3,2,1, 5,2,2, 5,2,2,4,2,1, 3,2,1, 2,2,4, 2,2,1,3,2,1, 4,2,2, 4,2,2, 3,2,1,2,2,1, 3,2,2, 1,2,2, 1,2,1,3,2,1, 2,2,2, 5,1,2, 7,1,1,2,2,1, 1

12、,2,4 ;/童年 数据表 音谱,高中低音,音长code unsigned char MUSIC3423=5,1,1, 5,1,1, 3,1,1, 5,1,2, 3,1,1, 5,1,2, 6,1,1,6,1,1, 1,2,1, 6,1,2, 6,1,1, 1,2,2, 2,2,1, 2,2,1,83,2,1, 2,2,2, 5,1,1, 6,1,1, 5,1,1, 1,2,1, 1,2,1,5,1,1, 1,2,1, 1,2,1, 1,2,2, 1,2,1, 1,2,1, 5,1,2,1,2,1, 6,1,1, 5,1,1, 3,1,1, 2,1,1, 1,1,2, 3,1,1,5,1,1,

13、 5,1,2, 5,1,1, 3,1,1, 6,1,1, 6,1,1, 1,2,1,6,1,1, 6,1,1, 6,1,1, 6,1,1, 5,1,1, 1,2,2, 1,2,1,1,2,1, 1,2,1, 6,1,1, 1,2,1, 6,1,1, 5,1,2, 0,2,1,3,1,1, 6,1,1, 1,2,1, 6,1,1, 5,1,1, 3,1,1, 2,1,1,3,1,1, 5,1,1, 5,1,2, 5,1,1, 3,1,1, 6,1,1, 6,1,1,1,2,1, 6,1,1, 6,1,1, 6,1,1, 6,1,1, 5,1,1, 1,2,2,1,2,1, 1,2,1, 1,2,

14、1, 6,1,1, 6,1,1, 1,2,1, 2,2,2,0,2,1, 5,1,1, 2,2,1, 5,2,1, 2,2,2, 5,2,1, 5,2,2,5,2,1, 5,2,1, 5,2,1, 3,2,1, 2,2,1, 1,2,1, 1,2,2,6,1,1, 6,1,1, 1,2,1, 6,1,1, 1,2,1, 2,2,1, 2,2,1,2,2,1, 2,2,1, 2,2,1, 1,2,1, 3,2,1, 2,2,1, 2,2,8,3,2,1, 3,2,2, 3,2,1, 3,2,2, 2,2,2, 1,2,1, 1,2,2,1,2,1, 2,2,1, 1,2,1, 6,1,1, 5,

15、1,1, 5,1,1, 5,1,2,5,1,1, 6,1,1, 5,1,1, 2,2,1, 3,2,1, 1,2,8, 1,2,1,5,1,2, 1,2,1, 6,1,1, 5,1,1, 3,1,1, 2,1,1, 1,2,6,0,2,2 ;/ 音阶频率表 高八位code unsigned char FREQH=0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,

16、; /1,2,3,4,5,6,7,8,i/ 音阶频率表 低八位code unsigned char FREQL=0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F,0xEE,0x44,0x6B,0xB4,0xF4,0x2D,0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,;/1,2,3,4,5,6,7,8,i/*-uS 延时函数,含有输入参数 unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0255 这里使用晶振 12M,

17、精确延时请使用汇编,大致延时长度如下 T=tx2+5 uS -*/void DelayUs2x(unsigned char t) while(-t);9/*-mS 延时函数,含有输入参数 unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0255 这里使用晶振 12M,精确延时请使用汇编-*/void DelayMs(unsigned char t) while(t-)/大致延时 1mSDelayUs2x(245);DelayUs2x(245);/*-节拍延时函数各调 1/4 节拍时间:调 4/4 125ms调 2/4 250ms调 3/4

18、187ms-*/void delay(unsigned char t)unsigned char i;for(i=0;it;i+)DelayMs(250);TR0=0;/*-定时器 0 中断-*/void TIM0_ISR() interrupt 1TR0=0; SPK=!SPK;TH0=Timer0_H;TL0=Timer0_L;TR0=1;/*-歌曲处理函数-*/void Song()10TH0=Timer0_H;/赋值定时器时间,决定频率TL0=Timer0_L;TR0=1; /打开定时器delay(Time); /延时所需要的节拍 /*-主函数-*/void led(unsigned

19、char a);void main(void)unsigned int i;unsigned char k;TMOD|=0x01; /置定时器 0 工作方式 1EA=1; /打开全局中断ET0=1; /打开 定时器 0 中断EX0=1; /打开 外部中断 0 中断IT0=1; /设置为下降沿中断EX1=1; /打开 外部中断 1 中断IT1=1; /设置为下降沿中断PX1=1; /设置 外部中断 1 为高优先级while(1)/i=0;if(W=0) T=W;for(i=0;i100;i=i+3) /音乐数组长度 ,唱完从头再来led(MUSICi);k=MUSICi+7*MUSICi+1-1;/去音符振荡频率所需数据Timer0_H=FREQHk;Timer0_L=FREQLk;Time=MUSICi+2; /节拍时长/ i=i+3;Song();

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。