电子音乐发生器的设计毕业论文Word文档下载推荐.docx
《电子音乐发生器的设计毕业论文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《电子音乐发生器的设计毕业论文Word文档下载推荐.docx(30页珍藏版)》请在冰豆网上搜索。
参考文献:
................................................................12
致...................................................................13
附录:
...................................................................14
外文页:
..................................................................23
电子音乐发生器的设计
摘要电子音乐发生器的设计以STC89C52单片机作为系统的核心控制部分,由按键电路、时钟与复位电路、音频功放电路、扬声器和LCD液晶显示电路五部分组成。
各部分电路协调工作,然后进行软硬件的调试运行,最终达到设计电路的乐器演奏、播放乐曲及显示功能。
设计中应用中断系统和定时/计数原理控制演奏器发声,对音乐发生所必须确定的音符和节拍分别用程序语言实现。
可以用它来弹奏和播放乐曲。
特点是设计思路简单、清晰,成本低。
关键词音乐发生器单片机音符节拍
1序言
1.1音乐发生器的现状与发展
除了PC和大型计算机系统以外,今天每一个人都很熟悉的嵌入式电子设备如电饭褒、空调、洗衣机、热水器、遥控多功能风扇、冰箱、电视、DVD播放机、MP3播放机、充电器、手机、汽车、电动自行车、电梯、飞机、火车等都采用了不同性能档次、不同温度围和不同成本等级的单片机。
基于单片机的设计创新和产品创新看起来似乎永无止境,而且它们也的的确确在方方面面日益完善和丰富着我们每个人的日常生活和工作。
电子音乐发生器是现代电子科技与音乐结合的产物,它在现代音乐扮演者重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已融入现代人们的生活中,成为不可替代的一部分。
1.2课题的设计任务
本文的主要容是用STC89C52单片机为核心控制元件,设计一个电子音乐发生器。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控制模块上设有11个按键和扬声器。
本文主要对使用单片机设计简易电子音乐发生器进行了分析,并介绍了基于单片机电子音乐发生器硬件系统组成。
利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。
并且本文分别从原理图、主要芯片、各模块原理及各模块的程序的调试来详细阐述。
一首音乐是由许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了。
当然对于单片机来说,产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样频率的方波信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
2硬件系统设计
2.1系统结构和工作原理
2.1.1系统结构
该设计以STC89C52单片机为控制核心,时钟与复位电路、功能键盘、LM386驱动电路、1602液晶显示电路以及电源等部分组成。
系统结构框图如图1所示。
图1系统结构框图
2.1.2工作原理
声音是通过振动产生的。
单片机对某一I/O引脚以一定的频率循环置一清零,这一引脚便产生一定频率的方波,该方波通过放大后作用于扬声器便产生一定频率的声音。
若改变输出方波的频率,产生的声音也就改变了。
通过控制输出方波的时间长短,声音的长短也就得到控制。
因此,根据乐谱,单片机就可产生电子音乐。
音乐中最关键的两个要素就是音符和节拍。
每个音符对应一特定固定的频率,同时为了编程的方便,给每个音符设置简谱码,简谱码以十六进制数表示,音符的频率确定后,其倒数就是周期,该周期可用单片机的定时器实现。
在每个周期,高、低电平的时间各占一半,因此,输出脚在每个方波周期要动作两次,一次为高电平,一次为低电平。
音符频率和简谱码的对应关系如表1所示,音符和时间常数对应关系如表2所示。
表1音符频率和简谱码对应关系
音符
低5SO
低6LA
低7SI
中1DO
中2RE
中3MI
中4FA
中5SO
中6LA
中7SI
频率(HZ)
390
440
494
523
578
659
698
784
880
988
简谱码
1
2
3
4
5
6
7
8
9
A
N
64260
64400
64524
64580
64684
64777
64820
64898
64968
65030
表2音符和时间常数对应关系
将表中N的值送给定时器,启动定时后,在输出脚上便可产生对应的音符频率。
通过建立节拍码和节拍数的对应关系,然后在软件中利用延时便可实现相应的节拍。
节拍码用十六进制数表示,节拍码和节拍数的对应关系如表3
表3节拍码和节拍数的对应关系
节拍码
C
F
节拍数
1/4
2/4
3/4
5/4
3/2
5/2
15/4
2.2系统硬件设计
2.2.1单片机控制电路
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
图2STC89C52单片机芯片
2.2.2时钟与复位电路
STC89C52中有一个用于构成部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或者瓷谐振器一起构成自然振荡器。
外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性。
在此设计中选取:
12MHZ时钟频率。
图3单片机振荡电路
与其他计算机一样,MCS-51单片机系统的复位方法有上电自动复位、手动复位以及“看门狗”复位等。
此最小系统采用手动复位电路。
在系统运行过程中,有时可能对系统需要进行复位,为避免对硬件经常加电和断电造成的损害,我们可以采用手动复位。
这种方法是将一个开关串联一只电阻后,再并联于电容C的两端,在系统运行过程中需要复位时只要使开关闭合,在RST引脚上就会出现一定时间的高电平信号,从而使单片机实现复位。
图4复位电路
2.2.3功能键盘
本系统中用到11个独立按键完成对整个硬件电路系统的控制,其中,P3.2口完成发生器的工作模式选择功能。
在乐曲播放模式下,P3.3口实现乐曲的选择,P3.5口按键实现乐曲的暂停与播放功能。
在乐曲演奏模式下,设P1.3、P1.6、P1.7、P2.0-P2.3这7个按键,分别代表7个音符,包括中音段的全部音符。
用单片机的I/O口接独立键盘即可满足需要,软件消除抖动处理,并能准确判断所需执行的相应程序。
通过软硬件设计,按键触发外部中断(按键P3.2),中断使程序跳转,实现模式转换,启动电子琴。
P2.4按键是用来选择音调(低音-中音-高音)的。
然后通过查询电子琴所按下的按键,读取电子琴输入状态,跳转到对应的程序人口,实现各种琴键的声音。
表4键盘基本功能表
(1)
(哆)
(2)
(嘞)
(3)
(咪)
(4)
(发)
(5)
(唆)
(6)
(啦)
(7)
(嘻)
(8)
(换音调)
11个按键与单片机的连接电路图如下:
图5独立键盘模块
2.2.4LM386驱动电路
LM386是美国半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。
为使外围元件最少,电压增益置为20。
但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值直至200。
输入端以地为参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场合。
LM386是一种低电压通用型音频集成功率放大器,广泛应用于收音机、对讲机和信号发生器中;
LM386的外形与管脚图如图6所示,它采用8脚双列直插式塑料封装。
静态功耗低,约为4mA,可用于电池供电。
工作电压围宽,4-12Vor5-18V。
外围元件少。
电压增益可调,20-200。
低失真度。
LM386有两个信号输入端,2脚为反相输入端,3脚为同相输入端;
每个输入端的输入阻抗均为50kΩ,而且输入端对地的直流电位接近于零,即使输入端对地短路,输出端直流电平也不
会产生大的偏离。
图6LM386外形与管脚分配
用LM386组成的OTL功放电路如图7所示,信号从3脚同相输入端输入,从5脚经耦合电容(47μF)输出。
当1脚和8脚之间不介入任何器件时,电路的放大增益为20。
图7音乐发生器音频功放电路图
2.2.51602液晶显示电路
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
1602LCD是指显示的容为16×
2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
1602采用标准的16接口,其中:
第1脚:
VSS为电源地。
第2脚:
VDD接5V电源正极。
第3脚:
VEE液晶驱动电压。
第4脚:
RS为寄存器选择,高电平1时选择数据寄存器,低电平0时选择指令寄存器。
图8液晶显示接口电路
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
第6脚:
E端为使能端,高电平时读取信息,负跳变时执行指令。
第7~14脚:
D0~D7为八位双向数据端。
第15~16脚:
15脚背光正极,16脚背光负极。
LCD1602接口如图8所示。
3软件系统设计
3.1主程序功能:
图9主程序流程图
3.2音乐发生程序设计
音乐演奏控制器是通过单片机部的定时器T0来产生不同频率的方波,驱动喇叭发出不同音节的声音,再利用延迟来控制发音时间的长短,即可控制音调中的节拍。
把乐谱中的音符对应的频率转换为定时常数,把相应的节拍变换为延时常数,然后作成表格存放在存储器中,由程序查表得到定时常数和延时常数,分别用以控制定时器产生方波的频率和该方波的持续时间。
当延时时间到时,再查下一个音符的定时常数和延时常数。
依次下去,就可演奏悦耳动听的音乐。
其具体流程图如下图10所示。
图10音乐发生程序流程图
3.3发生器演奏功能下按键程序设计
判断是否有按键按下,没有则不停查询,如有则喇叭发出声调。
按键使用流程图如下:
图11按键扫描流程图
3.4LCD显示程序设计
LCD显示程序开始后首先设置LCD显示模式和输入方式,同时还要设置显示开关及光标位置,接着写入清屏命令并取预定义字符串,最后在写入DDRAM地址和显示字符的ASCII码程序返回。
这样每当按键按下一个功能键时,在LCD显示屏上就能显示相应歌曲的名称。
其流程图如下图12所示。
图12液晶显示流程图
4结束语
本文设计的以STC89C52单片机为控制核心的电子音乐发生器,在软硬件有机结合下,可以实现手动弹奏和音乐播放的双功能,单片机工作于12MHZ时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号。
该设计用8个按钮,设计成21个音,可以实现音阶在低音-中音-高音的变化。
比传统音阶变化围大,弹奏效果好。
用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。
由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。
用单片机产生的音频脉冲直接驱动扬声器并不能产生所要实现的音乐,因为它没有足够的驱动能力,这就需要音频功率放大电路。
同时,用户还可以选择音乐播放模式,从而欣赏预先存储的乐曲。
该发生器还可以通过液晶屏显示出正在播放乐曲的曲名以及次序。
该发生器具有设计简单、操作方便、价格低廉的特点,对于现代人们的生活具有广阔的应用前景和实用价值。
[1]忠平,单片机原理及接口[M].清华大学,2007。
[2]凤强,单片机语言C51应用实践集锦[M].电子工业,2006。
[3]毅刚,单片机原理及应用[M].高等教育,2010。
[4]徐爱卿,单片微型计算机应用和开发系统[M].航空航天大学,2008。
[5]广弟,朱月秀,王秀山,单片机基础[M].航空航天大学,2006。
[6]吴金戌,8051单片机实践与应用[M].清华大学大学,2003。
[7]V.Yu.Teplov,A.V.Anisimov.ThermostattingSystemUsingaSingle-ChipMicrocomputerandThermoelectricModulesBasedonthePeltierEffect[J].2002.
致
经过一个多月的毕业设计,我从中受到很大的教育和启迪。
不仅将大学所学的知识进行了实际应用,还学到了很多书上学不到的知识。
开阔了视野,增长了知识,积累了经验。
在本文即将完成之际,我要在此向所有关心过我,帮助过我的老师、同学和朋友们说一声衷心的
我的毕业论文(设计)撰写工作自始至终是在老师全面、具体的指导下进行的。
丽飞老师渊博的学识、敏锐的思维、而严谨的作风,使我受益匪浅,终生难忘。
老师严谨的治学态度和对工作兢兢业业、一丝不苟的精神将永远激励和鞭策我认真学习、努力工作。
源程序代码:
#include<
reg52.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
//*********液晶显示数组表*************//
ucharcodetable[8][16]={
{"
song1"
},
song2"
song3"
song4"
tongyishouge"
songbie"
shengrikuaile"
yueliangdaibiaow"
}
};
//*******子函数声明*************//
voidPlayMusic();
voidRun();
voidPlayKey();
voidKeyScan();
voidDisplay();
voidKeyScan1();
//ucharKeyScan2();
//********手动弹奏按键定义****************//
sbitBeep=P2^7;
sbitkey1=P1^3;
sbitkey2=P1^6;
sbitkey3=P1^7;
sbitkey4=P2^0;
sbitkey5=P2^1;
sbitkey6=P2^2;
sbitkey7=P2^3;
sbitkey8=P2^4;
//*******播放模式下按键定义***********//
sbits3=P3^5;
//暂停/播放键
//sbits2=P3^5;
//上一曲
//sbits3=P3^6;
//下一曲
//*******液晶控制端口定义*************//
sbitlcden=P1^2;
sbitlcdrw=P1^1;
sbitlcdrs=P1^0;
ucharTh0,Tl0;
ucharkey=0;
//按键代号
ucharyinfu,jiepai,i,j,m;
uchargaodi=0;
ucharflag=0;
//模式,0表示音乐,1表示按键
ucharflag1=0;
ucharnum;
//全局变量
uchars1num;
//暂停/播放键按下的次数
//歌曲音符
/*ucharcodeMusicCode[]={0xfc,0x0b,0xfc,0x43,0xfc,0xab,0xfd,0x08,0xfd,0x33,0xfd,0x81,0xfd,0xc7,0xfe,0x05,0xfe,0x21,0xfb,0x8f,0xfb,0x03};
*/
ucharcodeMusicCode[]={0xfc,0x44,0xfc,0xac,0xfd,0x09,0xfd,0x34,0xfd,0x82,0xfd,0xc8,0xfe,0x06,0xfb,0x04,0xfb,0x90,0xfc,0x0c,0xfe,0x22,0xf9,0x5b,0xfa,0x15};
//按键音符
ucharcodeKeyCode[]={0xf8,0x8b,0xf9,0x5b,0xfa,0x14,0xfa,0x66,0xfb,0x03,0xfb,0x8f,0xfc,0x0b,/*低音*/0xfc,0x43,0xfc,0xab,0xfd,0x08,0xfd,0x33,0xfd,0x81,0xfd,0xc7,0xfe,0x05,/*中音*/0xfe,0x21,0xfe,0x55,0xfe,0x84,0xfe,0x99,0xfe,0xc0,0xfe,0xe3,0xff,0x02/*高音*/};
//**********模式选择外部中断*************************//
voidinterrupt0()interrupt0//外部终端0
{
flag=~flag;
//************曲目选择外部中断**********************//
voidinterrupt1()interrupt2//外部终端1
flag1=1;
//********延时子程序*******************//
voiddelay_1ms(uinti)
{