北邮小学期基于avr单片机的电子琴制作实验报告

北邮小学期基于avr单片机的电子琴制作实验报告

ID:3140870

大小:784.80 KB

页数:35页

时间:2017-11-19

北邮小学期基于avr单片机的电子琴制作实验报告_第1页
北邮小学期基于avr单片机的电子琴制作实验报告_第2页
北邮小学期基于avr单片机的电子琴制作实验报告_第3页
北邮小学期基于avr单片机的电子琴制作实验报告_第4页
北邮小学期基于avr单片机的电子琴制作实验报告_第5页
资源描述:

《北邮小学期基于avr单片机的电子琴制作实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、小学期单片机实验报告姓名:班级:学号:同组姓名:EMAIL:时间:2013/9/16-2013/9/2735/35基于AVR单片机的电子琴制作目录基于AVR单片机的电子琴制作2简介31.1课题名称31.2摘要3前期准备32.1流水灯32.1.1功能32.1.2程序代码32.2蜂鸣器/按键蜂鸣器42.2.1功能42.2.2程序代码42.3秒表计时器62.3.1功能62.3.2程序代码6有关发声的基础知识8设计过程84.1设计流程84.2实验元器件94.3实验程序主要流程图94.4实验原理及原理图104.4.1实验原理104.4.

2、2原理图104.4.3各模块的设计与详解:11程序源代码及程序分析13实验结果326.1操作过程326.2实验结果32排错过程33心得体会33参考文献35意见与建议3535/35简介1.1课题名称简易电子琴1.2摘要本实验设计制作一个基于单片机Atmega16的模拟电子琴。能够通过键盘控制实现播放预存检测音乐,弹奏音符,储存弹奏音乐并播放,暂停及停止播放,上一曲下一曲等功能。关键词:单片机,按键检测,预存播放,弹奏,储存,播放控制,可视化操作界面,电子琴前期准备在之前的学习中我们从未学习单片机,所以在确定选题前需要一定的学习和

3、练习。我们小组一共练习了3个工程:流水灯、按键蜂鸣器和秒表计时器,学会了使用AVRstudio工作环境和WINAVR(GCC)编译器。并且学会了下载程序到板上。学会了I/O端口初始化、输入输出操作,通过端口控制LED序列、8段数码管、蜂鸣器,中断和定时的使用。2.1流水灯2.1.1功能学会I/O端口的初始化及通过端口控制LED,使得LED呈现流水灯效果,我们小组用的PB端口作为控制LED的端口,并且由于人眼频率和单片机频率的关系加了延迟函数,使得流水灯每个为1s2.1.2程序代码intmain(void){chartemp;/

4、/用来存储当前A端口的输出unsignedinti,k;//循环变量DDRA=0xff;//将A端口设为输出35/35PORTA=0b00000001;//初始化A端口,最开始第一个灯亮while(1)//主循环{temp=PORTA;PORTA=PORTA<<1;if(temp&0b10000000)//这段代码使得,最后一个等亮起后,又从第一个亮起{PORTA=PORTA

5、0b00000001;}for(i=0;i<50;i++)//延时,约1秒钟{for(k=0;k<1000;k++);}}}2.2蜂鸣器/按键蜂鸣器2.

6、2.1功能按键蜂鸣器主要为了了解按键的使用,并且学会中断的应用2.2.2程序代码蜂鸣器:#includeintmain(void){unsignedinti,k;//循环变量DDRB

7、=(1<<3);//对B端口的设置,使得pd3设置为输出PORTB&=~(1<<3);//初始时蜂鸣器不响while(1){PORTB^=(1<<3);//设置蜂鸣器每隔一秒响一次for(i=0;i<50;i++){for(k=0;k<1000;k++);}}}35/35按键蜂鸣器:#includeintm

8、ain(void){DDRA&=~(1<<6);//按钮6的设置PORTA

9、=(1<<6);DDRA&=~(1<<7);//按钮7的设置PORTA

10、=(1<<7);DDRA&=~(1<<2);//按钮2的设置PORTA

11、=(1<<2);DDRA&=~(1<<3);//按钮3的设置PORTA

12、=(1<<3);DDRB

13、=(1<<3);//蜂鸣器输出PORTB&=~(1<<3);DDRD=0xff;//灯的输出while(1){switch(PINA&0b11001100){case0b11001100://K1被按下{PORTD

14、

15、=(1<<0);//LED0发光break;}case0b11000000://K2被按下{PORTD

16、=(1<<1);//LED1发光break;}case0b10001000://K3被按下{PORTD

17、=(1<<2);//LED2发光break;}case0b01001000://K4被按下{PORTB

18、=(1<<3);//蜂鸣器鸣响break;}default:{35/35PORTB&=~(1<<3);//关蜂鸣器PORTD=0;//关灯break;}}}}2.3秒表计时器2.3.1功能利用两位数码管,实现秒表计时的

19、功能2.3.2程序代码#include#includeintscandata[10]=//显示0—9个数的数组{0b01111111,0b00011001,0b10111110,0b10111011,0b11011001,

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

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

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