资源描述
简易电子琴设计与实现
一、概 述
1.1 课题设计目及其意义
单片机(单片微型计算机)是大规模集成电路技术发展产物,具备高性能、高速度、体积小、价格低廉、稳定可靠等特点。单片机应用相称广泛,从寻常家用电器到航空航天系统和国防军事、尖端武器都能找到它身影。因而,单片机开发应用已成为高科技和工程领域一项重大课题。
随着社会发展进步,人们生活水平也逐渐提高,音乐已经成为了咱们生活中很重要一某些,在工作和学习之余,欣赏音乐不但使身心得到放松,同步也提高人们精神品质和个人素养。当代,兴趣音乐年轻人越来越多,也有不少人自己练习弹奏乐器,作为业余兴趣和一种放松手段,鉴于某些乐器学习难度大需耗费太多精力,且其价格太过于高昂,使得一某些有这种想法人不得不放弃这种想法,而电子琴又是一种新型键盘乐器,它是当代电子科技与音乐结合产物,价格相对便宜,可以满足普通兴趣者需求,因而,在当代音乐中扮演着重要角色。 故简易电子琴研制具备一定社会意义。
1.2 课题设计任务与重要内容
本文重要内容是用AT89C51单片机为核心控制元件,设计一种简朴电子琴。以单片机作为主控核心,与键盘、扬声器等模块构成核心主控制模块,在主控模块上设有16个按键和扬声器。定期器按设立定期参数产生中断,由于定期参数不同,就会发出不同频率脉冲,不同频率脉冲经喇叭驱动电路放大滤波后,就会发出不同音调。
先依照规定设计硬件电路和编写相应程序,然后进行仿真调试,最后细心焊接硬件电路图,将程序烤入芯片中,最后达到设计目。本系统运营稳定,其长处是硬件电路简朴,软件功能完善,控制系统可靠,性价比较高等,具备一定实用和参照价值。
详细实现功能:按下音符键可以发出相应音符。
二、基本构成和原理
2.1 音乐有关知识
在人类还没有产生语言时,就已经懂得运用声音高低、强弱等来表达自己思想和感情。声带、琴弦等物体振动时会发出声波,声波通过空气传播进入人耳,人们就听到了声音。声音有噪音和乐音之分振动有规律声音是乐音,音乐中所用声音重要是乐音。
乐音听起来有高、有低,这就叫做音高。音高是由发声物体振动频率高低决定,频率高声音就高,频率低声音就低。音持续时间长短即时值,普通用拍数表达。休止符表达暂停发音。
一首音乐是由许多不同音符构成,而每个音符相应着不同频率,这样就可以运用不同频率组合,加以拍数相应延时,构成音乐。如果单片机要自己播放音乐就必要考虑到节拍设立。
对于AT80C51而言要产生一定频率方波普通是先将某口线输出高电平,延迟一段时间后再输出低电平。通过变化延迟时间可以变化单片机输出频率。单片机延时重要有两种方式,即软件延时和使用定期/计数器延时。其中软件延时不是很精准,而电子琴电路由于每个音符频率值规定比较严格,因而咱们选用定期/计数器延时。
由于本课程设计是由顾客通过键盘输入弹奏乐曲,因此节拍由顾客掌握,不由程序控制。因而,咱们只需弄清晰音乐中音符和相应频率,运用单片机定期/计数器来产生方波频率信号即可。
要产生相应音频脉冲,只需要计算出某音频周期,再除以2。运用计数器计时半周期,计满时使P2.0反向,然后重复计时再反向。本例中,单片机工作在12MHz时钟,使用定期器/计数器T0,工作模式为1,变化计数初值TH0、TL0就可产生不同频率脉冲信号。
例如低3MI音,频率为330Hz,其周期T=1/f=1/330=3030us,计数值N=3030/2=1515,因此每计数1515次P2.0反向。计数初值T=65536-N=64021。C调各音符频率与计数值T对照表如表1所示。
表1 C调各音符频率与计数值T对照表
音符
频率(HZ)
简谱码(T值)
音符
频率(HZ)
简谱码(T值)
低 1 DO
262
63628
# 4 FA#
740
64860
# 1 DO#
277
63731
中 5 SO
784
64898
低 2 RE
294
63853
# 5 SO#
831
64934
# 2 RE#
311
63928
中 6 LA
880
64968
低 3 M
330
64021
# 6
932
64994
低 4 FA
349
64103
中 7 SI
988
65030
# 4 FA#
370
64185
高 1 DO
1046
65058
低 5 SO
392
64260
# 1 DO#
1109
65085
# 5 SO#
415
64331
高 2 RE
1175
65110
低 6 LA
440
64400
# 2 RE#
1245
65134
# 6
466
64463
高 3 M
1318
65157
低 7 SI
494
64524
高 4 FA
1397
65178
中1 DO
523
64580
# 4 FA#
1480
65198
# 1 DO#
554
64633
高 5 SO
1568
65217
中 2 RE
587
64684
# 5 SO#
1661
65235
# 2 RE#
622
64732
高 6 LA
1760
65252
中 3 M
659
64777
# 6
1865
65268
中 4 FA
698
64820
高 7 SI
1967
65283
2.2 简易电子琴基本原理及其框图
1、 基本思想:
简易电子琴系统重要是采用AT89C51单片机,单片机工作于12MHZ时钟频率,使用其定期/计数器T0,工作模式为1,设计4*4键盘矩阵,设立成16个音,可随意弹奏想要体现音乐,由于单片机产生音频脉冲没有足够驱动能力,因此用三极管放大电路实现音频放大,保证扬声器能产生所要实现音符声音。
2、硬件框图:
3、 软件设计流程图:
本设计采用AT89C51单片机作为核心解决器件,按下复位键,进入初始化,调用键盘扫面子程序,获得键值,查询音阶表,获取定期初值,向喇叭输入相应频率脉冲驱动,发出相应音调,若按键没有释放,则始终发声;若按键松开,则停止发声。当读到结束符时,停止播放音乐。
详细软件流程图如下:
1)中断服务子程序流程图:
2)主程序流程图:
三、系统硬件构造
硬件电路设计重要涉及芯片89C51,、4*4键盘电路、振荡电路、复位电路及音频电路构成。
简易电子琴硬件电路图:
3.1 单片机89C51简介
AT89C51是一种低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)可重复擦写1000次Flash只读程序存储器,器件采用ATMEL公司高密度、非易失性存储技术制造,兼容原则MCS-51指令系统及80C51引脚构造,芯片内集成了通用8位中央解决器和ISP Flash存储单元,功能强大微型计算机AT89S51可为许多嵌入式控制应用系统提供高性价比解决方案。
AT89S51具备如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定期计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,AT89S51设计和配备了振荡频率可为0Hz并可通过软件设立省电模式。空闲模式下,CPU暂停工作,而RAM定期计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM数据,停止芯片其他功能直至外中断激活或硬件复位。同步该芯片还具备PDIP、TQFP和PLCC等三种封装形式,以适应不同产品需求。
该系列单片机引脚与封装如下图所示:
重要引脚功能:
1、 RST(9):复位输入。当振荡器复位时,要保持RST引脚2个机器周期高电平时间;
2、 XTAL1(19):反向振荡器放大器输入及内部时钟工作电路输入;
3、 XTAL2(18):来自反向振荡器输出;
4、 P1口(1-8):P1口是从内部提供上拉电阻器8位双向I/O口,P1口缓冲器能接受和输出4个TTL门电流;
5、 /:当保持低电平时,单片机只访问外部程序存储器。为高电平时,单片机只访问内部程序存储器。
3.2 键盘电路
键盘是最惯用单片机输入设备,大体可以分为独立连接式键盘和矩阵式。独立连接式键盘是最简朴键盘电路,每个键独立接入一根数据线。这种键盘构造简朴,使用以便,但是占用I/O口线较多。矩阵式键盘由行线和列线构成,按键位于行列交叉点上,行列式键盘可节约I/O口,适合按键数较多场合。因此本设计4*4键盘采用矩阵式键盘。
3.3 振荡电路
单片机时钟信号用来提供单片机内各种位操作时间基准,时钟信号普通有两种电路形式得到:内部振荡方式和外部振荡方式。
在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部震荡方式。由于单片机内部有一种高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。晶振普通选用6MHz、12MHz或者24MHz。本设计中采用是12MHz。电容器C1、C2起稳定振荡频率、迅速起振作用,电容值普通5~30pF。内部振荡方式所得时钟信号比较稳定,电路中使用较多。振荡方式如下图:
3.4 复位电路
复位操作完毕单片机内电路初始化,是单片机从一种拟定状态开始运营。
当单片机复位引脚RET浮现5ms以上高电平时,单片机就完毕了复位操作。如果RST持续为高电平,单片机就处在循环复位状态,而无法执行程序。因而规定单片机复位后能脱离复位状态。
依照应用规定,复位操作普通有2种基本形式:上电复位、开关复位。
上电复位规定接通电源后,自动实现复位操作。开关复位规定在电源接通条件下,在单片机运营期间,如果发生死机,用按钮开关操作使单片机复位。
上电后,由于电容要充电,是RST持续一段时间高电平时间。当单片机已经在运营之中时,按下复位键也能使RST持续一段时间高电平,从而实现上电且开关复位操作。
普通选取C=10~30uF,R=10~1kᾨ
惯用复位电路如下图所示:
在单片机启动后,电容C两端电压持续充电为5V,这是时候10K电阻两端电压接近于0V,RST处在低电平因此系统正常工作。当按键按下时候,开关导通,这个时候电容两端形成了一种回路,电容被短路,因此在按键按下这个过程中,电容开始释放之前充电量。随着时间推移,电容电压从5V释放到变为了1.5V,甚至更小。依照串联电路电压为各处之和,这个时候10K电阻两端电压为3.5V,甚至更大,因此RST引脚又接受到高电平。单片机系统自动复位。
3.5 音频放大电路
使用PNP管来放大,其中发射极接5V电源,集电极接喇叭,电路中电容是用来隔离直流电用。
PNP管放大原理:当PNP管VC<VB<VE时,使得集电结反偏,发射结正偏时,管子发射极电流流入管子,基极电流和集电极电流流出管子,且集电极电流跟基极电流之间成β关系,三极电流满足IE=IB+IC=IB(1+β·IB)。即,基极电流可以控制集电极电流,这种控制作用就称为管子放大作用。
本课程设计音频放大电路图(三极管型号为9015):
四、系统软件设计
4.1 系统软件主程序:
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit P20 = P2^0; //P2.0外接扬声器
uint FTemp;
unsigned int code tab[] = { //定期半周期初始值
64021,64103,64260,64400, //低音3 4 5 6
64524,64580,64684,64777, //低音7,中音1 2 3
64820,64898,64968,65030, //中音4 5 6 7
65058,65110,65157,65178}; //高音1 2 3 4
/*************************************************************
* 函数功能 :用扫描法读 P1 外接 4×4 键盘
**************************************************************/
uchar Keyscan(void)
{
uchar i,j,temp,Buffer[4] = {0xfe,0xfd,0xfb,0xf7};
for(j = 0;j < 4;j++) //循环四次,扫描四行
{ P1 = Buffer[j]; //在低四位分别输出一种低电平
_nop_();
temp = 0x80; //筹划先读出P1.7位
for(i = 0;i < 4;i++) //循环四次,检查四列
{ if(!(P1 & temp)) //从高四位,截取1位
{ return (i + j * 4);//返回获得按键值
}
temp >>= 1; //换右边一位
} }
return 16; //没有键按下就返回16
}
主函数
***************************************************************/
void Main(void)
{
uchar Key_Value = 16,Key_Temp1,Key_Temp2;//读出键值
TMOD = 0x01; //T0定期方式1
ET0 = 1; //容许T0中断
EX0 = 1; //容许INT0中断
EA = 1;//开总中断
while(1)
{ TR0 = 0; //T0工作停,暂不发音
Key_Temp1 = Keyscan(); //第一次读入按键
if(Key_Temp1 != 16) { //有键按下
Key_Temp2 = Keyscan(); //再读一次
if (Key_Temp1 == Key_Temp2) //两次相等
{ Key_Value = Key_Temp1;//就确认下来
FTemp = tab[Key_Value];//依照键值,取出定期半周期初始值
TR0 = 1; //启动定期器T0,发音
while (Keyscan() < 16);//等待释放
P20 = 1; //停止发音
} } } }
//==============================================================
void T0_INT(void) interrupt 1
{
TL0 = FTemp; //载入定期半周期初始值
TH0 = FTemp >> 8;
P20 = ~P20; //发音
}
4.2 系统软件调试仿真
硬件电路制作完毕并调试好后,便可将程序编译好下载到单片机试运营。
这里咱们使用Proteus软件进行仿真,加载编译好.HEX即文献到单片机后,
点击运营按钮即可,仿真电路图如下:(当咱们按键时如果成功就会听到咱们想要音乐)
五、 全文总结
本次课程设计制作简易电子琴,虽然耗费了咱们诸多精力,但收获颇丰,一方面,将自己理论知识与实践相结合起来,进一步巩固了专业基本知识和有关专业课程知识;另一方面,也培养了自己独立自主、综合分析思维与创新能力,更让我懂得了团队力量是巨大。
设计过程不是一帆风顺,遇到过各种各样问题。特别是设计软件时,某些很细小问题都也许导致功能性错误,修改了多次才通过仿真。在设计过程中我发现自己对此前所学过知识理解得不够深刻,掌握得不够牢固,因此也运用图书馆、网络资源查阅了大量文献资料,也请教了教师和同窗。同步在详细制作过程中咱们发现某些课本上知识与实际应用存在着一定差距,课本上知识诸多都是抱负化后结论,忽视了诸多实际因素,或者涉及不全面,可在实际应用时这些是不能被忽视,咱们不得不考虑这方面问题,这也让我更深刻地体会到在此后学习工作中也要注重理论联系实际。
六、指引教师意见
七、参照书目
[1] 李群芳,肖看,《单片机原理、接口及应用》,北京,清华大学出版社,
[2] 戴佳,戴卫恒 ,《51单片机C语言应用程序设计实例精讲》 , 电子工业出版社,
[3] 刘海成,《单片机及应用系统设计原理与实践》,北京,北京航空航天大学出版社,
[4] 楼然苗,李光飞,《单片机课程设计指引》,北京,北京航空航天大学出版社,
[5] 吴金戌,沈庆阳,郭庭吉,《8051单片机实践与应用》,北京,清华大学出版社,
[6] 吴国经,《单片机应用技术》,北京,中华人民共和国电力出版社, .年
[7]高天康《音乐知识词典》甘肃人民出版社.08
展开阅读全文