初级组E 09梁锦瑞.doc

初级组E 09梁锦瑞.doc

ID:61444521

大小:336.50 KB

页数:23页

时间:2021-01-31

初级组E 09梁锦瑞.doc_第1页
初级组E 09梁锦瑞.doc_第2页
初级组E 09梁锦瑞.doc_第3页
初级组E 09梁锦瑞.doc_第4页
初级组E 09梁锦瑞.doc_第5页
资源描述:

《初级组E 09梁锦瑞.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、华南理工大学第五届智能控制设计大赛初级组E题电子琴梁锦瑞组员:梁锦瑞庞旺军杨观超2009级自动化一班所在单位:华南理工大学自动化科学与工程学院2010年5月12日电子琴论文一、设计任务设计制作一个电子琴。二、设计要求1.基本要求:1)可以通过按键控制发音,能够发出1、2、3、4、5、6、7、i等八个音符;2)可以播放已存储的音乐;3)能够自动演奏多首(两首以上)乐曲,且演奏方式可选择(如重复播放或者顺序播放等)。2.扩展要求:1)可以发出八个以上的音符;2)进行音调、音量的选择;3)可以对编奏乐曲进行录音,在按下放音键时能演奏出来;其他。摘要音乐播放器在现代

2、生活中是非常常见的,音乐播放器一般可以播放一首或多首歌曲;另外,现在一些先进的音乐播放器除了具有播放音乐的功能外,还能实现其他多种功能。但作为单片机的初学者,如何使用单片机来控制蜂鸣器奏乐是我们比较感兴趣的问题之一,以此来提高我们学习单片机的热情。本制作通过设计一个简单的电子琴来提高我们对单片机的认识和我们软件的设计能力。一、原理一首音乐是由多个音符构成的,每个音符都对应着一个一定的频率。另外,每一个音符都会根据乐曲的要求设定一个确定的节拍。所以,要产生特定的声音,即要产生不同的频率,就是要单片机产生一定的延时时间。若能利用程序来控制单片机某个口线不断的输出

3、“高”“低”电平,则在该口线上就能产生一定频率的方波,将该方波接上喇叭就能发出一定频率的声音,若再利用程序控制“高”“低”电平的持续时间,就能改变输出波形的频率,从而改变音调,即能实现蜂鸣器演奏音乐的功能。(1)音符频率的处理如何利用定时器技术的方式来产生延时的效果,那么就可以将歌曲中每一个音符所对应的频率换成相应的计数初值。然后,可以将这首音乐曲中所有的计数初值编成一个表,并把每一个音符的计数初值与一个确定的数字码来联系。这个数字码可以称其为简谱码。每个计数初值的计算过程为:先将频率对应的周期值计算出来,然后计算其半周期的时间,之后利用定时器T1方式1的计

4、数初值公式来运算,就可以得到音符的计算初值了。如:中音DO:TC=216-106/(523*2)=64580=0FC44H(1)音符节拍的处理一首乐曲的每一个音符除了频率之外,还会有不同的节拍,也就是这个音符发音的持续时间的长短。对于音符的节拍,用定时器T0的方式1来控制:对T0送入不同的初值,就可以产生不同的定时时间,以此来控制音符的演奏持续的时间,于是就实现了节拍的控制。另外,要演奏一首歌曲还需要按顺序存储歌曲的音符和节拍信息。将每一音符的时间常数和其对应的节拍常数作为一组,按顺序将歌曲中的所有常数排成一个数据表格,存储在程序存储器中。然后由循环程序依次

5、取出每一音符的时间常数和相应的节拍常数,产生音符并控制节奏,就可以实现演奏歌曲。此外,结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子结束了;若查表为FFH,则产生相应的停顿效果。一、方案论证与比较1、控制器部分第一种方法是使用循环语句来实现延时,让单片机循环的执行某条指令然后根据单片机每条指令运行的时间以及循环的次数来计算延时时间。在上面的延时程序中可以看出:DJNZ指令执行时间为2个机器周期,MOV指令执行时间为1个机器周期,对于单片机的晶振频率为12MHz时机器周期为1μs。因此可以根据这些指令的执行时间和每条指令的循环

6、次.数计算出以上的延时程序延时时间大约为50ms。但这种方法的计算的延时时间不是很准确并且为达到一定的延时时间先必须进行很复杂的运算。所以在延时时间要求不严格的时候才采用这种方法。但对于电子琴电路由于每个音符的频率值要求比较严格,变化范围不能太大,因此产生方波的频率也要求比较严格,不能采用延时程序来产生此方波。  第二种方法是使用单片机的定时/计数器延时。AT89S52单片机内部有三个16位的定时/计数器T0和T1和T2,单片机的定时/计数器实际上是个计数装置它既可以对单片机的内部晶振驱动时钟计数也可以对外部输入的脉冲计数,对内部晶振计数时称为定时器,对外部

7、时钟计数时称为计数器。当对单片机的内部晶振驱动时钟计数时,每个机器周期定时/计数器的计数值就加1,当计数值达到计数最大值时计数完毕并通知单片机的CPU;对外部输入的时钟信号计数时,外部时钟的每个时钟上升沿定时/计数器的计数值就加1,当计数值达到计数最大值时计数完毕并通知单片机的CPU。因此,如果知道单片机的机器周期或者外部输入时钟信号的周期,单片机就可以根据定时器的计数值计算出定时的时间。用此方法定时十分准确,想得到多大的延时时间就可以给定时器赋一定的计数初值,定时器从预先设置的计数初值开始不断增1当增加到计数最大值时计数完毕,调整计数初值的大小就可以调整定

8、时器定时的时间,从而达到准确的延时。本系统中就采用第

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。