单片机电子琴的实验报告

上传人:m**** 文档编号:508555562 上传时间:2023-10-03 格式:DOC 页数:43 大小:419KB
返回 下载 相关 举报
单片机电子琴的实验报告_第1页
第1页 / 共43页
单片机电子琴的实验报告_第2页
第2页 / 共43页
单片机电子琴的实验报告_第3页
第3页 / 共43页
单片机电子琴的实验报告_第4页
第4页 / 共43页
单片机电子琴的实验报告_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《单片机电子琴的实验报告》由会员分享,可在线阅读,更多相关《单片机电子琴的实验报告(43页珍藏版)》请在金锄头文库上搜索。

1、-姓 名:班 级:学 号:小班*:同组:电子:实验课题:基于AVR单片机电子琴的制作实验日期:目录:一、实验简介1.1实验目的.41.2实验关键词.41.3根底知识.4二、实验器材2.1核心部件:ATmega16单片机.52.2电路元件.62.3管脚说明.6三、实验原理3.1实验原理图73.2实验流程图83.3实物效果图8四、操作过程与运行结果4.1操作过程示意图.94.2电子琴系统主要局部.114.3具体操作过程.114.4运行结果.12五、实验中的排错、体会与建议5.1调试与排错过程.125.2体会与建议.145.3小组分工.155.4参考文献.15六、附录6.1流水灯实验166.2蜂鸣器

2、实验176.3秒表实验.186.4简易交通灯实验256.5电子琴源代码.30一、实验简介1.1实验目的通过设计一个模拟电子琴系统熟悉ATmega16单片机的使用及其根本功能。使其能够通过键盘控制实现播放预存音乐,弹奏、储存弹奏音乐,变速播放,暂停及继续播放,停顿播放功能。1.2实验关键词按键检测 预存播放 弹奏 储存 变速 暂停 停顿1.3根底知识声波是振动产生的。频率即表示每秒钟振动的次数,采用CTC方式时avr单片机通过特定的端口PD4及PD5输出一定频率的方波,TCCR1A设为比拟匹配时OC1A/OC1B电平取反,TCCR1B的计数上限为OC1A,根据公式OA=f/2N(1+OCRnA)

3、计算出7个频率音阶所需的OCR1A,则只需将喇叭接在PD4或PD5,通过程序控制端口输出特定频率的方波波形发声使用正弦波最好,方波效果稍次但影响不大,喇叭就会发出七种不同的声音,依照人听觉分辨7个音阶分为三组,分别为高,中,低音阶频率,经计算可得,当OCR1A=(8000000/musicmemi-1)时,131,147,165,175,196,220,247存放低音阶频率,262,294,330,349,392,440,494存放中音阶频率,524,588,660,698,784,880,988则存放高音阶频率,所以需要定义三个数组存放各音阶的频率值。除了音符频率以外还需要音长,所以定义两个

4、数组表示一段音乐,第一个表示频率,第二个表示音长,播放时先访问频率数组,使喇叭发声,之后访问音长数组,确定喇叭发声时间。而有了音符频率数组,只要再得到任意一首歌的简谱,就可以将其转化为两个数组的形式,由音符对应的频率得出频率数组,然后再根据每个音符的音长,将其通过乐曲的节拍和音符的拍数计算出音符持续时间即可得出音长数组。下面我们举例来看两只老虎的简谱: 图一 两只老虎简谱图音符数组为:uint sound32 = 262,294,330,262,262,294,330,262,330,349,392,330,349,392,392,440,392,349,330,262,392,440,392

5、,349,330,262,294,196,262,294,196,262;音长数组为:uint time32 = 500,500,500,500,500,500,500,500,500,500,1000,500,500,1000, 375,125,375,125,500,500,375,125,375,125,500,500,500,500,1000,500,500,1000;二、实验器材2.1核心部件:ATmega16单片机图二 ATmega16单片机外观图图三 ATmega16单片机引脚图2.2电路元件器材名称数量用途4*4键盘1模拟电子琴的按键不同音调的音符以及暂停、快进、储存、播放等功

6、能。数码管1显示不同音调的音符扬声器1播放音符及储存的音乐LED灯3不同颜色的LED灯亮代表电子琴不同的工作状态,有指示作用。导线假设干连接电路2.3管脚说明14*4键盘:接PA0PA7端口。2LED灯:黄灯接PC1端口,绿灯接PC0端口,红灯接PD7端口。3数码管:接PB0PB3端口,PB5PB7端口。4扬声器:“+接PD5端口,“接AGND。三、实验原理3.1实验原理图黄绿红3.1.1原理简单说明单片机输出频率CTC不同的信号来产生各种音符,将歌曲各个音符转化成相应的数字信号,存放在单片机程序存放器中,当播放音乐时,程序从该存放器里读取数据,然后以CTC信号的模式实现放音乐的功能。3.2实

7、验流程图int main程序入口init初始化 8段数码管发声、播放速度、按键C:play弹奏和储存B:播放倔强Keyscan;PORTB = 0b11111111;数码管初始化为8PORTD |=(17); 红灯亮player(&sound,&time,15); 播放一千年以后3.3实物效果图四、操作过程与运行结果开场4.1操作过程示意图定时器初始化数码管显示8调用键盘扫描子程序弹奏键按下否播放键按下 是调用弹奏子程序是调用播放子程序 否复位完毕4.1.1子程序操作过程分别演示1按键操作原理 2 弹奏模式3播放模式4.2电子琴系统主要局部共分为五大局部:1ATmega16单片机24*4键盘3

8、LED显示灯4数码管5扬声器4.3具体操作过程1键盘区:数字17代表7个音符,8代表曲子加速播放,9代表曲子减速播放,0代表曲子恢复原速播放。另外,B、F可以进入演奏模式:按B可以播放我们预存的曲子一,按F可以播放预存曲子二。C、D、E分别代表L大调、C大调、H大调。按键C还有另一个功能:按下它可以进入弹奏模式,可以自己弹奏一曲音符默认为L大调,弹奏完后按F可以播放自己先前弹奏的音符,有存储的功能。除此之外,2键有暂停的功能,3键有继续的功能,实现曲子的暂停与继续播放。1键有停顿的功能,实现模式之间的转换,如从演奏模式转入弹奏模式。最后,在我们按17七个音符时,数码管会给予相应的数字显示,按下

9、A键有清屏的功能。2LED灯显示区:共有红、黄、绿三个灯。红:电子琴整个开启的过程中,红灯一直保持亮的状态,代表电子琴处于工作状态。红、绿:代表电子琴进入演奏模式,可以播放预存曲子。红、黄:代表电子琴进入弹奏模式,可以任意弹奏音符。3数码管:在播放预存曲子时,显示为数字8。起到预先测定电子琴工作状态是否正常的作用。 既不是演奏模式又不是弹奏模式时,显示为数字0,等待下一步按键。 进入弹奏模式后,显示按下音符所代表的数字。4整体操作过程如视频中:通电后,红灯亮,代表电子琴进入工作模式;同时自动播放储存音乐,数码管显示为8,代表工作正常。按下B键进入演奏模式,此时红绿灯亮;电子琴播放预存曲子一,按

10、下2键曲子暂停,再按下3键曲子继续播放;按下1键就跳出了演奏模式,等待下一步指示。然后我们再次按下B键播放曲子,以测试8、9、0键的作用。如视频中所示,8键曲子播放速度加快,9键速度变慢,0键回到正常速度。紧接着我们按下C键进入弹奏模式,此时红黄灯亮;在弹奏了一串音符后,按下F键可以播放我们刚刚弹的音乐,同时数码管显示相应音符。在弹奏音符时,按下A键有数码管清屏的作用。在键盘未接收到任何指示时,数码管显示为0。以上为电子琴的整个工作过程。4.4运行结果图四 电子琴工作状态图如视频中所示,一切运行正常。五、实验中的排错、体会与建议5.1调试与排错过程1在此次实验过程中,我尝试过采用ICC AVR

11、 7作为编译软件。同样在AVR Studio 4软件GCC环境中编译成功的代码在ICC环境下却不能编译成功。出现了cannot include source fileavr/io.h;file not found的error。在问过教师后,将头文件中的换成后编译成功。原来是GCC环境下的头文件,是ICC环境下的头文件,二者发挥同等作用。2实验开场前期有点无从下手,在设计好了大的框架后开场着手分块写程序。最初的问题是4*4键盘的使用,首先通过资料等学习了4*4键盘的原理和部构造,接下来写了单段的键盘测试代码。如下:switch(key) case 0*EE : key=0;break; case

12、 0*DE : key=1;break; case 0*BE : key=2;break; case 0*7E : key=3;break; case 0*ED : key=4;break; case 0*DD : key=5;break; case 0*BD : key=6;break; case 0*7D : key=7;break; case 0*EB : key=8;break; case 0*DB : key=9;break; case 0*BB : key=10;break; case 0*7B : key=11;break; case 0*E7 : key=12;break; case 0*D7 : key=13;break

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号