- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
姓 名:
班 级:
学 号:
小班学号:
同组姓名:
电子邮件:
实验课题:基于AVR单片机电子琴的制作
实验日期:2013.09.02—2013.09.15
目录:
一、实验简介
1.1实验目的.....................................................................4
1.2实验关键词……………………….…………………………………….4
1.3基础知识.....................................................................4
二、实验器材
2.1核心部件:ATmega16单片机.....................................5
2.2电路元件......................................................................6
2.3管脚说明…………………………………………………………………..6
三、实验原理
3.1实验原理图………………………………………………………………7
3.2实验流程图………………………………………………………………8
3.3实物效果图………………………………………………………………8
四、操作过程与运行结果
4.1操作过程示意图……………………………………………………….9
4.2电子琴系统主要部分……………………………………………….11
4.3具体操作过程…………………………………………………….11
4.4运行结果………………………………………………………………….12
五、实验中的排错、体会与建议
5.1调试与排错过程………………………………………………………..12
5.2体会与建议………………………………………………………………..14
5.3小组分工…………………………………………………………………….15
5.4参考文献…………………………………………………………………….15
六、附录
6.1流水灯实验…………………………………………………………………16
6.2蜂鸣器实验…………………………………………………………………17
6.3秒表实验…………………………………………………………………….18
6.4简易交通灯实验…………………………………………………………25
6.5电子琴源代码…………………………………………………………….30
一、实验简介
1.1实验目的
通过设计一个模拟电子琴系统熟悉ATmega16单片机的使用及其基本功能。使其能够通过键盘控制实现播放预存音乐,弹奏、储存弹奏音乐,变速播放,暂停及继续播放,停止播放功能。
1.2实验关键词
按键检测 预存播放 弹奏 储存 变速 暂停 停止
1.3基础知识
声波是振动产生的。频率即表示每秒钟振动的次数,采用CTC方式时avr单片机通过特定的端口(PD4及PD5)输出一定频率的方波,TCCR1A设为比较匹配时OC1A/OC1B电平取反,TCCR1B的计数上限为OC1A,根据公式OCnA=f/2N(1+OCRnA)计算出7个频率音阶所需的OCR1A,则只需将喇叭接在PD4或PD5,通过程序控制端口输出特定频率的方波波形(发声使用正弦波最好,方波效果稍次但影响不大),喇叭就会发出七种不同的声音,依照人听觉分辨7个音阶分为三组,分别为高,中,低音阶频率,经计算可得,当OCR1A=(8000000/musicmem[i]-1)时,{131,147,165,175,196,220,247}存放低音阶频率,{262,294,330,349,392,440,494}存放中音阶频率,{524,588,660,698,784,880,988}则存放高音阶频率,所以需要定义三个数组存放各音阶的频率值。
除了音符频率以外还需要音长,所以定义两个数组表示一段音乐,第一个表示频率,第二个表示音长,播放时先访问频率数组,使喇叭发声,之后访问音长数组,确定喇叭发声时间。而有了音符频率数组,只要再得到任意一首歌的简谱,就可以将其转化为两个数组的形式,由音符对应的频率得出频率数组,然后再根据每个音符的音长,将其通过乐曲的节拍和音符的拍数计算出音符持续时间即可得出音长数组。
下面我们举例来看《两只老虎》的简谱:
图一 《两只老虎》简谱图
①音符数组为:uint sound[32] = {262,294,330,262,262,294,330,262,330,349,392,330,349,392,392,440,392,349,330,26
文档评论(0)