电子琴论文.docx

上传人:b****7 文档编号:10812377 上传时间:2023-02-23 格式:DOCX 页数:59 大小:191.55KB
下载 相关 举报
电子琴论文.docx_第1页
第1页 / 共59页
电子琴论文.docx_第2页
第2页 / 共59页
电子琴论文.docx_第3页
第3页 / 共59页
电子琴论文.docx_第4页
第4页 / 共59页
电子琴论文.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

电子琴论文.docx

《电子琴论文.docx》由会员分享,可在线阅读,更多相关《电子琴论文.docx(59页珍藏版)》请在冰豆网上搜索。

电子琴论文.docx

电子琴论文

智能控制设计大赛

 

电子琴

 

所在单位:

华南理工大学

自动化学院自动化三班

作者:

陈日凡

 

摘要………………………………………………………………………………3

一、方案论证与比较……………………………………………………5

1.1控制器部分…………………………………………………………5

1.2显示部分……………………………………………………………5

1.3键盘部分……………………………………………………………5

1.4音量调节部分………………………………………………………6

1.5语音选择………………………………………………………6

二、系统的具体设计及实现……………………………………………6

2.1系统总框图…………………………………………………………6

2.2硬件设计……………………………………………………………7

2.2.112864液晶屏显示设计……………………………………7

2.2.2PS2键盘设计………………………………………………7

2.2.3喇叭放大电路设计…………………………………………8

2.3软件设计……………………………………………………………8

2.3.1主程序流程…………………………………………………8

2.3.2播放音乐程序流程………………………………………………9

2.3.3弹奏音乐流程…………………………………………9

2.3.4LCD控制流程………………………………………………10

三、测试、结果及分析…………………………………………………11

基本功能,发挥功能部分,其他发挥部分…………………………………11

四、总结…………………………………………………………………………12

参考文献………………………………………………………………………12

附录一、完整的系统原理图……………………………………………………13

附录二、部分的系统源代码……………………………………………………14

电子琴论文

设计任务与要求

一、设计任务

设计制作一个电子琴。

二、设计要求

1.基本要求:

1)可以通过按键控制发音,能够发出1、2、3、4、5、6、7、i等八个音符;

2)可以播放已存储的音乐;

3)能够自动演奏多首(两首以上)乐曲,且演奏方式可选择(如重复播放或者顺序播放等)。

2.扩展要求:

1)可以发出八个以上的音符;

2)进行音调、音量的选择;

3)可以对编奏乐曲进行录音,在按下放音键时能演奏出来;

4)其他。

摘要

随着大学生业余爱好的增强,DIY作品越来越受大学生喜爱。

如果自己能做出一款DIY作品,不仅可以锻炼自己的动手能力,而且还可将理论知识融入到实践中去。

本电子琴是基于Mega16单片机控制的小型娱乐学习作品,在业余生活中可以给我们带很多的乐趣!

让自己的生活更加绚丽!

该游戏机由单片机Mega16和一些外围原件组成,具有操作简单,显示明了的特点。

使用12864液晶作为显示器,可以显示汉字、数字、字母等,使系统信息一目了然;使用电脑键盘来进行操作和弹奏音乐,更加符合人们的操作习惯!

加上丰富的音乐,让您在不知不觉中享受音乐的乐趣,自己亲手弹奏美妙的音乐将不再是梦想!

关键字:

电子琴、Amega16芯片、PMW波形输出、LCD12864液晶、PS2键盘、音乐播放、弹奏音乐

Summary

Withtheenhancementofstudentshobby,DIYworkmoreandmorepopularamongcollegestudentslove.IfIcouldmakeaDIYworkcannotonlyexercisetheirownability,butalsothetheoreticalknowledgeintopractice.

ThekeyboardisbasedontheMega16MCUlearningworksforsmallentertainment,lifeintheamateurcanbringusalotoffun!

Maketheirlifemorecolorful!

ThegamebytheexternalmicrocontrollerMega16andsomeoriginalcomposition,issimple,showsclearfeatures.12864LCDasamonitortouse,youcandisplayChinesecharacters,numbers,letters,etc.,sothatsysteminformationataglance;usethecomputerkeyboardtooperateandplaymusic,moreinlinewithpeopleaccustomedtotheoperation!

Withawealthofmusic,letyouenjoymusicinthefununconsciously,hishandwillplaybeautifulmusicisnolongeradream!

Keywords:

keyboard,Amega16chip,PMWwaveformoutput,LCD12864LCD,PS2keyboard,musicplayer,playmusic

 

一、方案论证与比较

1.1控制器部分

方案一:

采用AT89S52单片机作为主控芯片。

优点:

AT89S52作为一种比较成熟的单片机型号,广范应用于各领域技术比较熟练,价格相对便宜。

缺点:

其内部集成资源偏少,功能不够强大,中断源和定时器较少,且没有PWM可调占空比波形输出。

方案二:

采用Amega16单片机作为主控芯片。

优点:

Amega16单片机功能强、高速度是其主要的优点,内部集成了较多的中断源和定时器资源及EEPROM的优点,多种模式的PWM波形输出,很好地满足了本系统设计的要求。

缺点:

价格较AT89S52单片机高。

考虑到以上两种方案的优缺点,因本系统需要方便的PWM可调占空比波形输出,需要采用高速和功能强大的单片机型号。

经比较,我们采用了方案二。

1.2显示部分

方案一使用LCD1602液晶显示。

优点:

价格便宜;操作简单。

缺点:

显示的内容少(16格*2行),介面呆板,不带中文字库,不能实现对图形和曲线的显示。

方案二应用128*64液晶显示模块。

128*64液晶可视面积大,介面美观,对图形和曲线的显示实现起来比较简单,自带中文字库,显示信息量大,便于设置多级菜单,和动态的显示歌词。

通过比较,并结合本系统要显示是内容较多的要求,我们选节方案二。

1.3键盘部分

方案一利用I/O口直接连接的独立式键盘,每键都有相应的I/O口对应,编程容易控制,实现方便;但拒于IO口有限,能接的按键不能太多,而本系统需用户根据需要调整的参数较多,用独立按键会使操作变得复杂。

方案二用4*4矩阵键盘。

优点:

利用8个IO口得到16个按键,可使操作介界变得简单,操作也方便;缺点:

软件处理比独立按键复杂。

方案三用PS2键盘。

优点:

只需要占有两个IO口就有数十个按键,使用外部中断接受数据,不会对其他程序有冲突,因为不需要扫描键盘,极大的节约了CPU的资源,而且用电脑键盘也更加符合人们的操作习惯,这对于需要熟悉指法的弹奏电子琴来说显得尤为重要;缺点:

软件处理比前两种复杂。

考虑到以上三种方案的优缺点,因本系统对按键的排布和人们的日常习惯要求比较高,

而且本系统需要按键比较多,为了简化电路,经比较,我们采用了方案三。

1.4音量调节部分

方案一使用DA输出再放大。

优点:

可以直接通过按键设置音量,调节精细准确;缺点:

需要外加芯片,成本高,使软、硬件都变复杂。

方案二使用电位器调节。

优点:

价格便宜,使用简单。

缺点:

调节不够精细,不能数字化的调节声音的大小。

方案三使用电位器调节加三极管放大,并用AVR自带的10位AD检测并显示音量。

优点:

与放案二同样价格便宜,使用简单,并且能够数字化的显示音量的大小。

缺点:

调节不够精细。

通过综合考虑,选用方案三。

1.5语音选择

方案一使用蜂鸣器。

优点:

操作简单,只用电平来驱动;缺点:

只能放一个音节,不能满足要求。

方案二使用喇叭。

优点:

能跟据输入的频率放出不同的音调;缺点:

需要方波来驱动。

通过比较,并结合本系统的要求,选方案二。

二系统的具体设计及实现

2.1系统总框图

本电子琴系统以Amega16单片机为系统核心,配合128*64液晶模组及PS2键盘和放大电路加喇叭等,很好地实现了电子琴功能,如上图所示。

2.2硬件设计

2.2.112864液晶屏显示设计

本系统采用金鹏电子公司出产的128*64液晶模块(带中文字库)作为显示部分,能够显示汉字和字符,只要把需要显示的内容发给液晶模块,其便会自动显示,不时要定时扫描。

连接图如下图2-2-2所示。

2.2.2PS2键盘设计

在本系统中,针对用户对弹奏的需要,结合人们的操作习惯,我们采用了PS2键盘,只占用2个IO口(外部中断0加一个数据口),使操作界面更加人性化,操作过程更加简单、方便,极大的简化了弹奏音乐时对指法的要求。

键盘的原理图如下图所示。

2.2.3喇叭放大电路设计

用NPN型三极管9013来放大电路,其中JP3接喇叭,Port40为AD采集信号接口,三极管b级为频率输入,喇叭额定功率为0.25W,内阻为8欧,原理图如下所示。

2.3软件设计

2.3.1

主程序流程

 

 

 

2.3.2播放音乐程序流程

2.3.3弹奏音乐流程

2.3.4LCD控制流程

三测试、结果及分析

基本功能和发挥功能

 

项目

完成情况

基本要求

设计与总结报告:

方案比较、设计与论证,理论分析与计算,电路图及有关设计文件,测试方法与仪器,测试数据及测试结果分析。

完成

可以通过按键控制发音,能够发出1、2、3、4、5、6、7、i等八个音符

可以通过按键控制发音,能够发出高、中、低的1、2、3、4、5、6、7、i音符,共24个音符。

可以播放已存储的音乐

实现。

能够自动演奏多首(两首以上)乐曲,且演奏方式可选择(如重复播放或者顺序播放等)。

可演奏总共13首歌,5种演奏方式可选:

1单曲播放,2单曲循环,3顺序播放,4循环播放,5随机播放。

发挥部分

可以发出八个以上的音符

可发出24个音符。

进行音调、音量的选择

音调初始值设为128,从0到248(对应音调低到高)依次可调;音量调节实现。

可以对编奏乐曲进行录音,在按下放音键时能演奏出来

可以自由设定是否录音,实现功能。

其他

见下表其他功能

其他功能:

功能

描述

使用12864液晶显示

开机时的图画显示,中文多级菜单,实现光标上下移动

,滚屏显示,菜单切换

使用PS2键盘

按照人们平时使用习惯和打字习惯设置按键操作,如回车是进入,Esc为退出等

动态显示歌词功能

其中有6首歌可以同步的显示动态歌词

在播放音乐的过程中实现随时暂停,继续,退出,上一首或下一首

在播放音乐的过程中实现随时暂停,继续也可以中途退出播放,还可以在播放过程中直接跳到下一首或上一首

可调节播放速度

正常初始值为13,可从1到255(由快到慢)大范围可依次调节

数字化显示音量

通过AD转换,将音调的大小用数字表达出来,方便调节

在弹奏过程中实时显示音符

在弹奏过程中显示按键对应音符,便于确认按键

帮助功能

用中文解释说明本电子琴的所有操作,按键功能等

在回放录音时可随时暂停或退出

在回放录音时可随时暂停,人性化设置,方便在回放录音时检验弹奏是否正确

四、总结

本系统完成电子琴的基本功能和发挥功能,采用12864液晶显示中文多级菜单,实现滚屏显示菜单,可视面积大,界面美观;共十三首音乐,五种播放模式,还扩展了动态歌词功能,使界面更加美观;可大范围调节音调,音速和音量,以满足不同使用者的爱好;使用PS2键盘,共24个音节按人们的打字习惯分布,并可以录音,经过反复调试录音和弹奏过程一模一样。

经过调试,系统运行稳定,各项功能都完美地实现了。

经过本次设计,对mega16芯片功能以及其外围设备有了更深层次的理解。

在本次设计中还有来不及调试的模块如音频输出,SD卡读写等和一些欠缺的方面,今后的学习工作中会加以注意和改进。

参考文献:

[1]李垳《AltiumDesigner6电路设计实例与技巧》北京:

国防工业出版社2008

[2]周润景张丽娜《基于PROTEUS的电路及单片机系统设计仿真》北京:

北京航空航天大学出版社2006

[3]苏小红陈惠鹏孙志岗《C语言大学使用教程》北京:

电子工业出版社2007

[4]零点工作室张睿《AltiumDesigner6.0原理图与PCB设计》北京:

电子工业出版社2007

附录一

完整的系统原理图如下图所示:

附录二

部分的系统源代码:

#include"playing.h"

/*******************************************

函数名称:

main

功能:

/********************************************/

voidmain(void)

{

kb_init();//初始化PS2键盘接口

lcd_init();//液晶初始化

port_init();//音乐初始化

lcd_w_cmd(0x0c);//关光标

picture(picture_date_zhi);

delay_ms(2000);

wait_show();

while

(1)

{

if(kb_ready)

{

king_key(scancode);//

kb_ready=0;

}

}

}

/***************************************************************

*音乐模块头文件

*控制芯片:

ATMEGA16

***************************************************************/

#ifndef_avr_music_H_

#define_avr_music_H_//定义标记防止被重复引用

#include"PS2.h"

#include"music_date.h"

#include"12864_mega16_show.h"

#include"avr_music.H"//引用自身头文件

ucharmusicstop=0,jp=0,getout=1;

uchargetend=0;//

#pragmadata:

data//设置回到数据存储器区

/************************************

*初始化函数*

************************************/

voidport_init(void)

{

DDRD|=BIT(5);//D口配置为输出,驱动蜂鸣器

TCCR1A=0x40;//将T/C1配置为比较匹配,OC1A取反

TCCR1B=0x09;

}

voiddelay_jp(unsignedintms)

{

unsignedchari;//循环变量i

while(ms--)

{

for(i=0;i<250;i++)

{

key_playing();

}

}

}

/***********************************

*长音乐播放函数*

*功能:

两数组音乐播放*

*范围:

n:

音乐曲目*

*输入:

n:

1-5

***********************************/

voidplay_long(uchar__flash*Soundss1,uchar__flash*Soundss2,ucharso,ucharsp)

{

play_onemusic(Soundss1,so,sp);

if(getend==0)

play_onemusic(Soundss2,so,sp);

}

/***********************************

*音调产生函数*

*功能:

输出频率为x的方波*

*范围:

x:

100-20000Hz,0:

不发声*

*输入:

i主音调,j为音调修改,正常为128,从0到127为低音调,129到255为高音调

***********************************/

voidsound(uintx,ucharj)

{

switch(x)

{

case0x0B:

//低1

{x=262;break;}

case0x0C:

{x=294;break;}

case0x0D:

{x=330;break;}

case0x0E:

{x=349;break;}

case0x0F:

{x=392;break;}

case0x10:

{x=440;break;}

case0x11:

{x=494;break;}

case0x12:

{x=509;break;}

case0x15:

//中1

{x=524;break;}

case0x16:

{x=588;break;}

case0x17:

{x=660;break;}

case0x18:

{x=698;break;}

case0x19:

{x=784;break;}

case0x1A:

{x=880;break;}

case0x1B:

{x=988;break;}

case0x1C:

{x=1018;break;}

case0x1F:

//高1

{x=1048;break;}

case0x20:

{x=1176;break;}

case0x21:

{x=1320;break;}

case0x22:

{x=1396;break;}

case0x23:

{x=1568;break;}

case0x24:

{x=1760;break;}

case0x25:

{x=1976;break;}

case0x26:

{x=2036;break;}

default:

{x=0;break;}

}

if(x!

=0)

{

x=4000000/(x+j*2-256);//8M时钟数据计算

OCR1A=x;//比较值赋值

TCCR1A=0x40;//允许比较反转输出

}

else

{

TCCR1A=0x00;//频率为0,休止符,不发声

}

}

#endif

/***************************************************************

*LCD12864液晶模块显示头文件(基于ST7920)

*控制芯片:

ATMEGA16

***************************************************************/

//接口命名:

类别_动作_对象

#ifndef_12864_mega16_show_H_

#define_12864_mega16_show_H_//定义标记防止被重复引用

/*引用非标准库头文件*/

#include"LCD12864.H"

#include"show_date.h"

#include"avr_music.h"

/*定义全局变量*/

ucharss[3]={0,0,0},kb;

externucharenter=1,//菜单等级

move=1,//主菜单光标

move1=1,//播放曲目

move2=1,//播放模式

move4=1,//系统设置

move5=1,//帮助

speedss=13,

soundturess=128,

save=1;

/*--------------------------------------------------------------

开机界面

功能:

显示一般模式时的界面

输入:

输入值域:

--------------------------------------------------------------*/

voidwait_show()

{

picture(picture_date_ej);

}

/*--------------------------------------------------------------

液晶屏控制函数

功能:

按键返回的数值对液晶屏的控制

输入:

输入值域:

--------------------------------------------------------------*/

voidking_key(uchark)//scancode

{

switch(k)

{

case0x5A:

{

enter++;

if(enter==5)

enter=4;

change_show();

break;

}

case0X75:

{

if(enter==2)

{

move--;

if(move==0)

move=6;

key_move();

}

if(enter==3)

{

if(move==1)

{

move1--;

if(move1==0)

move1=13;

key_move();

}

elseif(move==2)

{

move2--;

if(move2==0)

move2=1;

key_move();

}

elseif(move==5)

{

move4--;

if(move4==0)

move4=1;

key_move();

}

elseif(move==6)

{

move5--;

if(move5==0)

move5=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动物植物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1