李健强初级组E题.docx
- 文档编号:30188421
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:31
- 大小:253.70KB
李健强初级组E题.docx
《李健强初级组E题.docx》由会员分享,可在线阅读,更多相关《李健强初级组E题.docx(31页珍藏版)》请在冰豆网上搜索。
李健强初级组E题
华南理工大学第五届智能控制设计大赛
所在单位:
华南理工大学
作者:
李健强08自动化三班
占小说07食品质量与安全班
目录
摘要………………………………………………………………………………4
一、方案论证与比较……………………………………………………5
1.1控制器部分…………………………………………………………5
1.2显示部分……………………………………………………………5
1.3键盘部分……………………………………………………………6
1.4录音部分……………………………………………………………6
1.5音乐部分……………………………………………………………6
二、系统的具体设计及实现…………………………………………7
2.1系统总框图…………………………………………………………7
2.2硬件设计……………………………………………………………7
2.2.1128*64液晶屏显示设计……………………………………7
2.2.27*3键盘设计………………………………………………8
2.2.3语音芯片ISD17120模块………………………………8
2.2.4整板电路硬件设计原理图…………………………………9
2.2.5整板电路硬件设计PCB图…………………………………9
2.3软件设计……………………………………………………………10
2.3.1主程序流程图………………………………………………10
2.3.2软件实现………………………………………………10
2.3.2.1输入密码……………………………………………10
2.3.2.2液晶提示………………………………………………10
2.3.2.3语音提示………………………………………………11
2.3.2.421键电子琴……………………………………………11
2.3.2.5音乐播放………………………………………………11
2.3.2.6录音方式一……………………………………………11
2.3.2.7录音方式二……………………………………11
2.3.2.8功能选择………………………………………………11
2.3.2.9音乐播放方式…………………………………………12
2.3.2.10音调调节………………………………………………12
2.3.2.11音量调节………………………………………………12
三、测试、结果及分析………………………………………………12
3.1基本功能部分…………………………………………………………12
3.2发挥功能部分………………………………………………………12
3.3其他发挥部分………………………………………………………12
参考文献………………………………………………………………………13
附录完整的系统源代码…………………………………………14
设计任务与要求
一、设计任务
设计制作一个电子琴。
二、设计要求
1.基本要求:
1)可以通过按键控制发音,能够发出1、2、3、4、5、6、7、i等八个音符;
2)可以播放已存储的音乐;
3)能够自动演奏多首(两首以上)乐曲,且演奏方式可选择(如重复播放或者顺序播放等)。
2.扩展要求:
1)可以发出八个以上的音符;
2)进行音调、音量的选择;
3)可以对编奏乐曲进行录音,在按下放音键时能演奏出来;
4)其他。
摘要:
在现代社会中,单片机控制不仅应用在工厂生产方面,其作用也体现到了各个方面。
随着人们生活质量的提高,单片机控制器在从生活工具到工业应用的各个领域。
本作品是以ATMEGA16为主控制芯片,用编码器74HC148编制21个按键的电子琴,并用语音芯片ISD17120制作电子琴的语音提示及其中一种录音方式,还带有音乐播放功能。
关键字:
Amega16芯片;语音芯片ISD17120;编码器74HC148;
音频功放芯片LM386;录音;音乐播放
SUMMARY:
Inmodernsociety,thesingle-chipmicrocomputercontrolinproductionfactorynotonly,itsfunctionsalsoreflectoneachaspect.Aspeople’slifequality,microcomputercontrollerfromlifeinindustrialapplicationoftoolstoeachfield.ThisworkismainlycontrolchipMEGAAT16,withencoder74HC148compiling21button,andtheelectronickeyboardISD17120pronunciationchipmakingaspeechhintandrecordingmode,withmusicplaybackfunction.
KEYWORD:
AMEGA16CHIP;PRONUNCIATIONCHIPISD17120;74HC148ENCODERAUDIOPOWERAMPLIFIER;LM386CHIP,RECORDING;MUSICPLAYBACK
一、方案论证与比较
1、控制器部分
方案一:
采用AT89S52单片机作为主控芯片。
优点:
AT89S52作为一种比较成熟的单片机型号,广范应用于各领域技术比较熟练,价格相对便宜。
缺点:
其内部集成资源偏少,功能不够强大,最重要的是,其内存空间较小,程序量不能过大,因此对作品的功能有所限制。
方案二:
采用Amega16单片机作为主控芯片。
优点:
AVR是51的升级版。
Amega16单片机功能强、高速度是其主要的优点,内部集成了较多的中断源和定时器资源有较大的内存空间,很好地满足多功能的要求。
缺点:
价格较AT89S52单片机高。
考虑到以上两种方案的优缺点,因本系统对单片机内部硬件资源的要求比较高,需要内存空间较大的单片机型号。
经比较,我们采用了方案二。
2、显示部分
方案一使用LCD1602液晶显示。
优点:
介格便宜;操作简单。
缺点:
显示的内容少(16格*2行),介面呆板,不带中文字库,不能实现对图形和曲线的显示。
方案二应用128*64液晶显示模块。
128*64液晶可视面积大,介面美观,抗干扰能力强,调用方便简单,而且可以节省软件中断资源,应用串行连接,节省I/O口资源。
对图形和曲线的显示实现起来比较简单,自带中文字库,显示信息量大。
通过比较,并结合本系统要显示是内容较多的要求,我们选节方案二。
3、键盘部分
方案一利用PB口接成4*4键盘。
优点:
利用8个IO口得到16个按键,可使操作介界变得简单,操作也方便。
方案二利用编码器74HC148由3个I/0口拓展出7个I/O口,再由单片机上的另外3个I/O口组成一个7*3的21键盘,刚好组成电子琴的低7音、中7音和高7音;其控制方法和4*4的差不多,且比4*4接法还节省2个I/O口。
通过比较,方案二为最佳方案。
4、录音部分
方案一由单片机软件实现。
具体可在程序里面定义一个空数组,然后在满足条件的情况下可记录下按键相应的频率及按键被按下的时间。
播放录音由设计的功能按键控制。
此方式只录制电子琴的声音,没有把外界的声音录进,是一种单纯的电子琴录音。
方案二语音芯片ISD17120有录音及播放功能,可以用些芯片来组成录音电路,组播放等接口和单片机相连,其各功能可以由单片机来控制。
因此还可以设计语音提示。
此录音方式可以把外界的声音都一起录进去,因此可以做为一种边弹边唱的录音方式。
因为方案一和方案二是两种不同的录音方式,在不同的方面起作用,因此,在作品中两种方案都采用,以满足用户的不同需求。
5、音乐播放
方案一由单片机编程,设置音乐数组及定时器中断来播放音乐。
优点:
硬件简单,易行。
缺点:
只是播放简的音调,而音质较差。
方案二用TI公司的TMS320VC5402芯片和单片机一起构成一个简单的MP3音乐播放器。
优点:
具有普通MP3的功能,播放音乐的音质较好。
缺点:
硬件过于复杂,控制也复杂。
对比两种方案,考虑到我们制作的重点在于电子琴,音乐播放只是个附加功能,只需播放简音乐曲即可,因此我们选择方案一。
二、系统的具体设计及实现
2.1、系统总框图
主控芯片板
图2-1、系统主控芯片板总框图
本电子琴以Amega16单片机为系统核心,配合12864液晶模组及ISD17120语音模块和等,很好地实现了电子琴及其附加功能,如上图2-1所示。
2.2、硬件设计
2.2.1128*64液晶屏显示设计
本系统采用128*64中文液晶模块作为显示部分,能够显示汉字和字符,只要把需要显示的内容发给液晶模块。
接线图如:
2.2.27*3键盘设计
在本系统中,针对用户调整各项参数时的需要,我们采用74HC148编码器设计了7*3键盘,只占用6个IO口(PB口)就实现了21个按键,使操作界面更加人性化,操作过程更加简单、方便。
接线图如:
2.2.3语音芯片ISD17120模块
本系统采用ISD17120语音芯片。
ISD17120有两种控制模,一种是独立模式,另一种是单片机控制模式。
本设计综合了两种模式,既可独立录音放音,也可用单片机控制录放音。
由此设计了语音提示功能,外加按键控制电子琴的录音。
原理图如整板电路硬件设计原理图所示。
2.2.4整板电路硬件设计原理图
2.2.5整板电路硬件设计PCB图
2.3软件设计
2.3.1主程序流程图
音乐
2.3.2软件实现
2.3.2.1输入密码
通过在程序中定义一个密码数组实现。
打开电源时,要求用户通过电子琴按键输入密码,然后逐个与定义好的数组比较,全相同,则进入功能选择菜单;否则,要求重新输入密码。
此密码已在程序中设定,不能由用户设定。
具体程序见附录。
2.3.2.2液晶提示
输入密码及各菜单提示,都会在液晶屏里显示出来,并根据按键的情况实时跟踪显示。
具体程序见附录。
2.3.2.3语音提示
除了液晶提示外,还有语音提示。
这对于视力不好或不想看液晶提示的用户提供了极大的方便,同时,这也是本电子琴设计的一大特色。
语音提示是通过单片机控制语音芯片ISD17120的PLAY,FWD等引脚直接控制,操作较便捷。
同时还引按键,可手动控制。
具体程序见附录。
2.3.2.421键电子琴
一般的按键都为4*4矩阵键盘,不过为了更好地符合音律的高中低七音,本设计通一个编码器74HC148拓展出7*3的21键盘。
此设计只占用单片机的6个引脚,节省了单片机的资源,程序控制也较便捷可行。
具体程序见附录。
2.3.2.5音乐播放
本电子琴的音乐播放功能只能播简单的音律。
音乐是在程序中通过编写数组的形式写进,然后再由一个音乐播放函数将其播出。
由于没有外接存储器,单片机内存空间有限,存储的音乐也较少。
具体程序见附录。
2.3.2.6录音方式一
此录音方式是通过在程序里定义一个空数组,在满足录音的条件(按下录音方式一的按键)下,些数组记录下按键相对应的频率及按下的时间。
然后通过播放函数播放录音。
此录音方式只录下电子琴的声音,不受外界声音的干扰。
具体程序见附录。
2.3.2.7录音方式二
此录音方式是由语音芯片ISD17120的录音功能实现。
此功能独立于单片机,不受单片机的限制,按下相应的按键即可实现录音,完毕后再按下相应播放的按键,即可播放录音。
此方式录制的是外界的各声音,故可以用于边弹边唱,也可以用于其他录音。
2.3.2.8功能选择
此功能通过两个外部中断。
具体程序见附录。
2.3.2.9音乐播放方式
此功能是在功能选择的基础上实现的。
在选择相应的功能后,通过两个普通按键选择播放方式。
具体程序见附录。
2.3.2.10音调调节
此功能是在功能选择的基础上实现的。
在选择相应的功能后,通过两个普通按键调节音调。
具体程序见附录。
2.3.2.11音量调节
音量调节可以通过滑动变阻器来调节,也可以由按键控制语音芯片ISD17120的VOL管脚来实现。
三、测试结果分析
3.1基本功能部分
要求实现功能
测试结果
可以通过按键控制发音,能够发出1、2、3、4、5、6、7、i等八个音符;
能够发出21个音符,满足要求
可以播放已存储的音乐;
满足要求
能够自动演奏多首(两首以上)乐曲,且演奏方式可选择(如重复播放或者顺序播放等)。
满足要求
3.2发挥功能部分
功能
是否实现及描述
可以发出八个以上的音符;
可以发出21个音符,已实现
进行音调、音量的选择;
已实现
可以对编奏乐曲进行录音,在按下放音键时能演奏出来;
设有两种录音方式,已实现
3.3其他发挥部分
功能
是否实现
语音提示
已实现
密码验证
已实现
弹唱或其他录音
已实现
参考文献:
[1]C语言程序设计中国铁道出版社徐秋红编著
[2]AVR系列单片机C语言编程与应用实例清华大学出版社金春林邱慧芳张皆喜编著
[3]数字电子技术基础(第五版)高等教育出版社阎石主编
[4]ISD1700系列使用说明书
[5]用单片机制作简易电子琴刘建超电子制作2005年第7期
部分的系统源代码
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
//////////定义液晶的控制管脚/////////////
#defineRSLPORTB&=~BIT(0)
#defineRSHPORTB|=BIT(0)
#defineRWLPORTB&=~BIT
(1)
#defineRWHPORTB|=BIT
(1)
#defineENLPORTB&=~BIT
(2)
#defineENHPORTB|=BIT
(2)
////////////////定时器1和0中断函数声明///////////////////
#pragmainterrupt_handlerdianziqin:
9
#pragmainterrupt_handlergequ:
10
#pragmainterrupt_handlerwai0:
2
#pragmainterrupt_handlerwai1:
3
uchardaxuan,xiaoxuan,lut,yindiao,STH0,STL0,zd;
///////////////////////21键电子琴音调///////////////////
//#pragmadata:
code
consttab[]={63628,63835,64021,64103,64260,64400,64524,
64580,64671,64777,64820,64898,64968,65030,
65058,65110,65157,65178,65217,65252,65283,
};
////////////////////////////歌曲二维数组//////////////////
//#pragmadata:
code
constuintsound[3][200]={
///////////////////////梁祝
{0xff,
0x4c,0x30,0x40,0x30,0x39,0x30,0x39,0x30,0x30,0x30,0x2b,0x30,0x39,0x30,
0x30,0x30,0x40,0x30,0x40,0x30,0x20,0x30,0x18,0x30,0x1c,0x30,0x20,0x30,
0x26,0x30,0x20,0x30,0x20,0x30,0x2b,0x30,0x2b,0x30,0x2b,0x30,0xff,0x30,
0x2b,0x30,0x26,0x30,0x33,0x30,0x39,0x30,0x39,0x30,0x40,0x30,0x39,0x30,
0x30,0x30,0x2b,0x30,0x2b,0x30,0x4c,0x30,0x30,0x30,0x39,0x30,0x40,0x30,
0x39,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0xff,0x30,0x26,0x30,0x20,0x30,
0x33,0x30,0x2b,0x30,0x39,0x30,0x30,0x30,0x40,0x30,0x40,0x30,0xff,0x30,
0x4c,0x30,0x48,0x30,0x4c,0x30,0x40,0x30,0x39,0x30,0x33,0x30,0x2b,0x30,
0x39,0x30,0x39,0x30,0xff,0x30,0x40,0x30,0x39,0x30,0x39,0x30,0x30,0x30,
0x2b,0x30,0x20,0x30,0x26,0x30,0x26,0x30,0x2b,0x30,0x26,0x30,0x2b,0x30,
0x30,0x30,0x39,0x30,0x40,0x30,0x40,0x30,0x4c,0x30,0x4c,0x30,0x30,0x30,
0x30,0x30,0xff,0x30,0x39,0x30,0x30,0x30,0x39,0x30,0x40,0x30,0x4c,0x30,
0x40,0x30,0x39,0x30,0x30,0x30,0x40,0x30,0x40,0x30,0x40,0x30,0x00},
////////////生日歌
{0xff,
0x20,0x40,0x20,0x40,0x1c,0x40,0x20,0x40,0x18,0x40,0x19,0x40,0x19,0x40,
0xff,0x40,0x20,0x40,0x20,0x40,0x1c,0x40,0x20,0x40,0x15,0x40,0x18,0x40,
0x18,0x40,0xff,0x40,0x20,0x40,0x20,0x40,0x13,0x40,0x18,0x40,0x19,0x40,
0x1c,0x40,0x1c,0x40,0xff,0x40,0x12,0x40,0x12,0x40,0x13,0x40,0x18,0x40,
0x15,0x40,0x18,0x40,0x18,0x40,0xff,0x40,0x00},
////////////////////莫斯科郊外的晚上
{0xff,
0x39,0x30,0x30,0x30,0x26,0x30,0x30,0x30,0x2b,0x30,0xff,0x30,0x30,0x30,
0x33,0x30,0x26,0x30,0x2b,0x30,0x39,0x30,0x39,0x30,0xff,0x30,0x30,0x30,
0x2b,0x30,0x20,0x30,0x20,0x30,0x1c,0x30,0x20,0x30,0x24,0x30,0x26,0x30,
0x26,0x30,0xff,0x30,0x12,0x30,0x10,0x30,0x19,0x30,0x1c,0x30,0x26,0x30,
0xff,0x30,0x26,0x30,0x33,0x30,0x39,0x30,0x26,0x30,0x2b,0x30,0x24,0x30,
0xff,0x30,0x20,0x30,0x24,0x30,0x26,0x30,0x2b,0x30,0x30,0x30,0x26,0x30,
0x2b,0x30,0x39,0x30,0x39,0x30,0xff,0x30,0x00,0x00},
};
////////////////////////////////////////////////////
#pragmadata:
data
ucharluyin[40];
ucharmima[6]={0x30,0x31,0x32,0x33,0x34,0x35};//6位密码
///////////////////////////////////
voiddelay_us(unsignedintn)
{
if(n==0)
{
return;
}
while(--n);
}
//////////////////////////////////////
voiddelay(uintms)
{
uinti,j;
for(i=0;i { for(j=0;j<1141;j++); } } ////////////////////////////////////输入密码函数 voidshumima() { ucharmi,i=0,keyscan; DDRC=0XFF; PORTC=((PORTC&0XC0)|0X07);//发扫描码 while(i<6) { PORTC=((PORTC&0xC0)|0x07);//发全0行扫描码 delay(3); DDRC=0XF8;//改变PC口的输入输出特性 keyscan=PINC; if((keyscan&0x07)! =0x07)//若有键按下 { delay(3);//延时去抖动 keyscan=PINC; if((keyscan&0x07)! =0x07)//延时后再判断一次,去除抖动影响 { mi=getkey();//调用键盘扫描函数 } } i++; if(mima[i]! =mi) { i=0; //请重新输入密码 } } //密码正确 } ////////////////////////电子琴21按键扫描程序 uchargetkey(void) { ucharscancode,tmpcode,keyscan; scancode=0x30;//保持两管脚原来的值不变 while(scancode! =0x38)//逐行扫描 { PORTC=((PORTC&0xC0)|scancode|0x07);//输出行扫描码 delay (1); DDRC=0XF8;//改变PC口的输入输出特性 keyscan=PINC; if((keyscan&0x07)! =0x07)//本行有键按下 { tmpcode=keyscan&0x07;//读取P2^0到P2^2脚的数值 retu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 李健强 初级