可存储式电子琴课程设计

上传人:新** 文档编号:561627568 上传时间:2023-08-07 格式:DOC 页数:17 大小:905.51KB
返回 下载 相关 举报
可存储式电子琴课程设计_第1页
第1页 / 共17页
可存储式电子琴课程设计_第2页
第2页 / 共17页
可存储式电子琴课程设计_第3页
第3页 / 共17页
可存储式电子琴课程设计_第4页
第4页 / 共17页
可存储式电子琴课程设计_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《可存储式电子琴课程设计》由会员分享,可在线阅读,更多相关《可存储式电子琴课程设计(17页珍藏版)》请在金锄头文库上搜索。

1、通达学院2013 /2014 学年 第 一 学期课程设计 实验报告模 块 名 称 AVR单片机课程设计(proteus)专 业 学 生 班 级 学 生 学 号 学 生 姓 名 指 导 教 师 设计题目基于LM016L显示的可存储式电子琴任务要求1、使用4*4键盘,对应2个8度的16个单音,当按下相应按键时,扬声器发出相对音符的音阶。2、可以单键按下,也可以按照乐谱演奏音乐。3、在ATmega128内存储至多64个单音(在两个8度音阶中任选),按键可以控制开始连续播放这64个单音或停止播放,每个单音的播放时长自定。4、使用LED/LCD来实时显示目前正在演奏的单音码,例低音音符la、相应的音符频

2、率及时长、或中音音符si、相应的音符频率及时长等。实验设备及软件设备:计算机软件:proteus7.7 sp2 ICCAVR7.22同组人员学号及姓名一人一组,无同组成员参考文献1 金钟夫 杜刚.ATmega128单片机C程序设计与实践M.北京:航空航天大学出版社,19992 沈建良 赵文宏.ATmega128单片机入门与提高M.北京:航空航天大学出版社,20013 张毅刚.单片机应用设计M.哈尔滨:工业大学出版社,2004年第二版4 长沙太阳人电子有限公司.SMC1602A LCM 使用说明书EB/OL.5 刘娟 梁卫文.单片机c语言与protues仿真技能实训M.中国电力出版社,2004.

3、AVR单片机软件设计(proteus)报告1) 总体设计原理、思路 1. 电子琴的设计主要分为手动弹奏乐曲和自动播放音乐两大部分组成。手动弹奏乐曲是根据具体的硬件键盘设置了16个音符按键和1个功能转换键,自动播放音乐是在单片机的存储器中通过软件编程的方法放置音乐代码和相关播放程序来实现。 2. 应用到的原件,主要是ATmega128单片机、矩阵44键输入电路、LM016L显示电路、扬声器以及电源电路。 3. 从声音原理方面来看,通过控制单片机的定时器的定时时间产生不同频率的音频脉冲,经放大后驱动扬声器发出不同音乐的声音。用软件延时来控制发音时间的长短,控制节拍。 4. 在写程序时,将电子琴的设

4、计采用程序模块化设计方法,将程序分为主程序、键盘扫描程序模块、数码显示模块。这样使得思路更加清晰,出问题更加容易更正。2) 硬件方面原理图的设计: 整个硬件部分主要包括一颗atmega128单片机,lm016l显示器和16个按键组成。单片机ATMEGA128是一颗高性能低功耗的avr 8位微处理器,它拥有先进的RISC结构,多达133条指令,大多数可以在一个时钟周期内完成。 Atmega128的引脚图 LM016L的接口说明最后连接的原理图 3) 软件方面程序流程图的设计、关键代码的说明 程序流程图如下 关键代码及其说明/*/ #include#include /1602液晶显示程序#incl

5、udexianshi.h/蜂鸣器#define BEEP() PORTB = (1PB0)/音符延时表,它们分别对应于015号音符的输出频率uint tone= 64021,64103,64260,64400,64524,64580,64684,64777, 64820,64898,64918,64938,64958,64978,64998,65100;/第一段(Tone为音符,Time为节拍)uchar Music1_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 ; uchar

6、Music1_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 ; /第二段uchar Music2_Tone = 1,3,3,3,3,5,4,2,5,3,7,6,5,5,7,4,4,3,6,7,2,1,0xFF ; uchar Music2_Time = 2,1,1,2,1,1,1,2,1,1,3,2,1,1,2,4,1,1,2,1,1,1,0xFF ;/第三段 uchar Music3_Tone = 0,1,2,3,4,5,5,6,7,8,9,10,11,12,13,14,15,1

7、5,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0xFF; uchar Music3_Time = 1,1,1,1,1,1,1,1,1,1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1,1,1,1,1,1,1,1,1,0xFF;/第四段 uchar Music4_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; uchar Music4_Time = 1,1,1,1,1,1,1,1,1,1,1, 1, 1, 1,

8、 1, 1, 1, 1, 1, 1, 1, 1, 1,1,1,1,1,1,1,1,1,1,0xFF;/-uint playhz=0;uint playtime=0;uchar playn=0;uchar reshbz=0;/自弹uchar diy =0,3,5,7,9,11,13,14,15; uchar diyTime =2,2,2,2,2,2,2,2,2;/音乐符号引用变量volatile uchar t = 0;volatile uchar i = 0;/播放模式volatile uchar play=0; /播放模式启动volatile uchar bz=0; /播放模式静音volat

9、ile uchar bz1=0; /播放曲目1void play1() t=Music1_Tonei; if(Music1_Tonei=0xff)i=0;TIMSK=0X00;_delay_ms(100); TIMSK=(1TOIE1); _delay_ms(Music1_Timei*200); playn=Music1_Tonei; playhz=toneMusic1_Tonei; playtime=Music1_Tonei*200; TIMSK=0X00; i=i+1; /播放曲目2void play2() t=Music2_Tonei; if(Music2_Tonei=0xff)i=0;

10、_delay_ms(1000); TIMSK=(1TOIE1); _delay_ms(Music2_Timei*200); playn=Music2_Tonei; playhz=toneMusic2_Tonei; playtime=Music2_Tonei*200; TIMSK=0X00; i=i+1; /播放曲目3void play3() t=Music3_Tonei; if(Music3_Tonei=0xff)i=0;_delay_ms(1000); TIMSK=(1TOIE1); _delay_ms(Music3_Timei*200); playn=Music1_Tonei; playh

11、z=toneMusic3_Tonei; playtime=Music3_Tonei*200; TIMSK=0X00; i=i+1; /播放曲目4void play4() t=Music4_Tonei; if(Music4_Tonei=0xff)i=0;_delay_ms(1000); TIMSK=(1TOIE1); _delay_ms(Music4_Timei*200); playn=Music4_Tonei; playhz=toneMusic4_Tonei; playtime=Music4_Tonei*200; TIMSK=0X00; i=i+1; /播放DIYvoid diymusic()

12、 TIMSK=0X00; if(!(key=20) t=key; TIMSK=(120)playn=0;void resh1() /显示hz:00000 t:00000 lcd1602_adr(0x00); lcd1602_writenumber(h); lcd1602_adr(0x01); lcd1602_writenumber(z); lcd1602_adr(0x02); lcd1602_writenumber(:); lcd1602_adr(0x03); lcd1602_writenumber(0x30+playhz/10000); lcd1602_adr(0x04); lcd1602_writenumber(0x30+playhz%10000/1000); lcd1602_adr(0x05); lcd1602_writenumber(0x30+playhz%1000/100); lcd1602_adr(0x06); lcd1602_writenumber(0x30+playhz%100/10); lcd1602_adr(0x07); lcd1602_writenumber(0x30+playhz%10); lcd1602_adr(0x09

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

当前位置:首页 > 建筑/环境 > 综合/其它

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