基于AVR单片机的电子琴制作实验报告.docx

上传人:h**** 文档编号:129541 上传时间:2018-07-09 格式:DOCX 页数:35 大小:786.84KB
下载 相关 举报
基于AVR单片机的电子琴制作实验报告.docx_第1页
第1页 / 共35页
基于AVR单片机的电子琴制作实验报告.docx_第2页
第2页 / 共35页
基于AVR单片机的电子琴制作实验报告.docx_第3页
第3页 / 共35页
基于AVR单片机的电子琴制作实验报告.docx_第4页
第4页 / 共35页
基于AVR单片机的电子琴制作实验报告.docx_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、 1 / 35 小学期单片机实验报告 姓名: 班级: 学号: 同组姓名: EMAIL: 时间: 2013/9/16-2013/9/27 2 / 35 基于 AVR 单片机的电子琴制作 目录 基于 AVR 单片机的电子琴制作 . 2 简介 . 3 1.1 课题名称 . 3 1.2 摘要 . 3 前期准备 . 3 2.1 流水灯 . 3 2.1.1 功能 . 3 2.1.2 程序代码 . 3 2.2 蜂鸣器 /按键蜂鸣器 . 4 2.2.1 功能 . 4 2.2.2 程序代码 . 4 2.3 秒表计时器 . 6 2.3.1 功能 . 6 2.3.2 程序代码 . 6 有关发声的基础知识 . 8 设

2、计过程 . 8 4.1 设计流程 . 8 4.2 实验 元器件 . 9 4.3 实验程序主要流程图 . 9 4.4 实验原理及原理图 . 10 4.4.1 实验原理 . 10 4.4.2 原理图 . 10 4.4.3 各模块的设计与详解: . 11 程序源代码及程序分析 . 13 实验结果 . 32 6.1 操作过程 . 32 6.2 实验结果 . 33 排错过程 . 33 心得体会 . 34 参考文献 . 35 意见与建议 . 35 3 / 35 简介 1.1 课题名称 简易电子琴 1.2 摘要 本 实验设计 制作一 个 基于 单 片机 Atmega16 的模 拟电 子琴。能够通过键盘控制实

3、现播放预存 检测 音乐,弹奏 音符 ,储存弹奏音乐 并播放,暂停及 停止播放 ,上一曲下一曲等 功能。 关 键词: 单片机 , 按键检测,预存播放,弹奏,储存, 播放控制 , 可视化操作界面,电子琴 前期准备 在之前的学习中 我们 从未学习单片机 , 所以在确定选题前需要一定的学习和练习。我们小组一共练习了 3 个工程:流水灯、按键蜂鸣器和秒表计时器, 学会了使用 AVR studio 工作环境和 WINAVR( GCC)编译器。并且学会了下载程序到 板 上。学会了 I/O 端口初始化、输入输出操作,通过端口控制 LED 序列、 8 段数码管、蜂鸣器,中断和定时的使用。 2.1 流水灯 2.1

4、.1 功能 学会 I/O 端口的初始化及通过端口控制 LED,使得 LED 呈现流水灯效果,我们小组用的 PB端口作为控制 LED 的端口,并且由于人眼频率和单片机频率的关系加了延迟函数,使得流水灯每个为 1s 2.1.2 程序代码 int main(void) char temp; /用来存储当前 A 端口的输出 unsigned int i,k; /循环变量 DDRA=0xff; /将 A 端口设为输出 4 / 35 PORTA=0b00000001; /初始化 A 端口,最开始第一个灯亮 while(1) /主循环 temp = PORTA; PORTA=PORTA int main(v

5、oid) unsigned int i,k; /循环变量 DDRB|=(1 int main(void) DDRA int main(void) DDRA=0xff; DDRB=0xff; DDRD=0b11110111; PORTA=0b00000001; PORTD=(13); PORTB=0b00001000; MCUCR|=(1 ISC11); /设置 INT1 中断 7 / 35 GICR|=(1 INT1); sei(); unsigned int i,j,k,x,y,tmp; TCCR0|=(1CS01); while(1) for(i=0;i60;i+) x=i/10,y=i%

6、10; /用取商和取余来显示计数的数字 PORTD=scandatax; PORTB=scandatay; tmp=PORTA; /流水灯的显示 PORTA=PORTA 1; if(tmp TCNT0=55; for(k=0;k3;k+) /一秒的延时 for(j=0;j10000;j+) while(!(TIFR TCNT0=55; int cnt1,cnt2; SIGNAL(SIG_INTERRUPT1) /中断服务程序 while(1) for(cnt2=0;cnt2100;cnt2+) for(cnt1=0;cnt120000;cnt1+); if(!(PIND 8 / 35 有关发声

7、的基础知识 声波是振动产生的。频 率即表示每秒 钟 振 动 的次 数 ,采用 CTC 方式时 avr 单 片机通过 特定的端口( PD4 及 PD5) 输 出一定 频 率的方波 , TCCR1A 设为 比 较 匹配 时 OC1A/OC1B电 平取反, TCCR1B 的 计数 上限 为 OC1A,根据公式 OCnA=f/2N(1+OCRnA)计 算出 7 个频 率音 阶 所需的 OCR1A, 则 只需 将 喇叭接在 PD4 或 PD5,通 过 程序控制 端口 输 出特定 频 率的方波波形(发声使用正弦波最好,方波效果稍次但影 响 不大) ,喇叭就 会发 出七 种 不同的声音,依照人听觉分辨 7

8、个音阶分 为 三 组 ,分 别为 高,中,低音 阶频 率, 经计 算可得,当 OCR1A=(500000/musicmemi-1)时 , 131,147,165,175,196,220,247存放低音 阶频率 , 262,294,330,349,392,440,494存放中音 阶频 率 , 524,588,660,698,784,880,988则 存放高音 阶频 率,所以需要定 义 三 个数组 存放各音 阶 的 频 率 值。 除了音符频率以外 还需要音 长 ,所以定义 1 个 2 位 数组表示一段音乐,第一 个 表示频率,第二 个 表示音 长 ,播放 时 先访问频率数组,使喇叭发声,之后访问音

9、长数组,确定喇叭发声时间。而有了音符频率 数组,只要再得到任意一首歌的简谱 ,就可以 将 其 转 化 为 两个 数组 的形式,由音符对应的频率得出频率数组, 然后再根据 每 个 音符的音 长 , 将 其通过乐曲的节拍和音符的拍数 计算出音符持续时间 即可得出音长 数字 。 举例说明: uint mamahao 2= /世上只有妈妈好 440,750,392,250,330,500,392,500,524,500,440,250,392,250, 440,1000,330,500,392,250,440,250,392,500,330,250,294,250, 262,250,220,250,3

10、92,250,330,250,294,1000,294,750,330,250, 392,500,392,250,440,250,330,750,294,250,262,1000,394,750, 330,250,294,250,262,250,220,250,262,250,196,1000,0,0 ; 设计过程 4.1 设计流程 9 / 35 4.2 实验元器件 Atmeal16 单片机 1 块 JTAG 下载器 1 个 4X4 矩阵键盘 1 块 1602 液晶显示屏 1 块 扬声器 1个 导线 若干 4.3 实验程序主要流程图 了解单片机原理及 AVR 编程规则 先编写一部分代码,然后接

11、好电路,下载到单片机测试,通过后,继续完成下一部分 所有部分完成后,进行整体测试 有错 修改代码 正确 接通电源 初始化,默认中音模式 低音模式 高音模式 录音模式 弹奏模式 播放录音 播放 7 首歌曲 暂停 下一曲 上一曲 10 / 35 运行结果及组员分工: 张诗悦:主要负责电子琴程序的编写 王文雪:主要负责硬件的连接和液晶显示屏部分的代码 4.4 实验原理及原理图 4.4.1 实验原理 单片机识别按键按下的 是哪个 键, 随之 改变 液晶显示屏 显示的数字,同时扬声器输出对应的频率的方波,按键不放就一直发声;将 7 首歌曲的谱子用二维数组存入 FLASH ROM,分别代表音符频率和间隔长度;如果按下 E,开启录入模式,将输入的音符保存在数组里;按下 F,播放录入的音乐。 4.4.2 原理图

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

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

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

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

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