预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共17页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

通达学院 2013/2014学年第一学期 课程设计实验报告 模块名称AVR单片机课程设计(proteus) 专业 学生班级 学生学号 学生姓名 指导教师 设计题目基于LM016L显示的可存储式电子琴任务要求1、使用4*4键盘,对应2个8度的16个单音,当按下相应按键时,扬声器发出相对音符的音阶。 2、可以单键按下,也可以按照乐谱演奏音乐。 3、在ATmega128内存储至多64个单音(在两个8度音阶中任选),按键可以控制开始连续播放这64个单音或停止播放,每个单音的播放时长自定。 4、使用LED/LCD来实时显示目前正在演奏的单音码,例低音音符la、相应的音符频率及时长、或中音音符si、相应的音符频率及时长等。 实验设备及软件设备:计算机 软件:proteus7.7sp2 ICCAVR7.22同组人员学号及姓名 一人一组,无同组成员参考文献[1]金钟夫杜刚.ATmega128单片机C程序设计与实践[M].北京:航空航天大学出版社,1999. [2]沈建良赵文宏.ATmega128单片机入门与提高[M].北京:航空航天大学出版社,2001. [3]张毅刚.单片机应用设计[M].哈尔滨:工业大学出版社,2004年第二版 [4]长沙太阳人电子有限公司.SMC1602ALCM使用说明书[EB/OL]. [5]刘娟梁卫文.单片机c语言与protues仿真技能实训[M].中国电力出版社,2004. AVR单片机软件设计(proteus)报告 总体设计原理、思路 1.电子琴的设计主要分为手动弹奏乐曲和自动播放音乐两大部分组成。手动弹奏乐曲是根据具体的硬件键盘设置了16个音符按键和1个功能转换键,自动播放音乐是在单片机的存储器中通过软件编程的方法放置音乐代码和相关播放程序来实现。 2.应用到的原件,主要是ATmega128单片机、矩阵4×4键输入电路、LM016L显示电路、扬声器以及电源电路。 3.从声音原理方面来看,通过控制单片机的定时器的定时时间产生不同频率的音频脉冲,经放大后驱动扬声器发出不同音乐的声音。用软件延时来控制发音时间的长短,控制节拍。 4.在写程序时,将电子琴的设计采用程序模块化设计方法,将程序分为主程序、键盘扫描程序模块、数码显示模块。这样使得思路更加清晰,出问题更加容易更正。 硬件方面原理图的设计: 整个硬件部分主要包括一颗atmega128单片机,lm016l显示器和16个按键组成。单片机ATMEGA128是一颗高性能低功耗的avr8位微处理器,它拥有先进的RISC结构,多达133条指令,大多数可以在一个时钟周期内完成。 Atmega128的引脚图 LM016L的接口说明 最后连接的原理图 软件方面程序流程图的设计、关键代码的说明 程序流程图如下 关键代码及其说明 /******************************************************************************/ #include<iom128v.h> #include<macros.h> //1602液晶显示程序 #include"xianshi.h" //蜂鸣器 #defineBEEP()PORTB^=(1<<PB0) //音符延时表,它们分别对应于0~15号音符的输出频率 uinttone[]= {64021,64103,64260,64400,64524,64580,64684,64777, 64820,64898,64918,64938,64958,64978,64998,65100 }; //第一段(Tone为音符,Time为节拍) ucharMusic1_Tone[]= {2,3,1,1,2,3,1,1,2,3,5,5,5,6,1,1,6,1,2,2,2,1,6,6,6,1,2,2,3,2,1,2,2,2,0xFF}; ucharMusic1_Time[]= {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0xFF}; //第二段 ucharMusic2_Tone[]= {1,3,3,3,3,5,4,2,5,3,7,6,5,5,7,4,4,3,6,7,2,1,0xFF}; ucharMusic2_Time[]= {2,1,1,2,1,1,1,2,1,1,3,2,1,1,2,4,1,1,2,1,1,1,0xFF}; //第三段 ucharMusic3_Tone[]= {0,1,2,3,4,5,5,6,7,8,9,10,11,12,13,14,15,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0xFF}