简易电子琴设计Word文件下载.docx

上传人:b****5 文档编号:18645502 上传时间:2022-12-30 格式:DOCX 页数:17 大小:339.26KB
下载 相关 举报
简易电子琴设计Word文件下载.docx_第1页
第1页 / 共17页
简易电子琴设计Word文件下载.docx_第2页
第2页 / 共17页
简易电子琴设计Word文件下载.docx_第3页
第3页 / 共17页
简易电子琴设计Word文件下载.docx_第4页
第4页 / 共17页
简易电子琴设计Word文件下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

简易电子琴设计Word文件下载.docx

《简易电子琴设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《简易电子琴设计Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。

简易电子琴设计Word文件下载.docx

本次设计为简易电子琴设计,利用8051单片机内定时器和I|O端口,设计一台简易电子琴,能通过按键进行简单的乐曲演奏。

每个不同的音符对应着不同的频率,利用单片机内部定时器TO结合I|O端口来产生不同频率的方波信号改变TO的计数值即可改变不同的音符。

关键词:

8501单片机音符频率内部定时器

基于单片机简易电子琴

一、概述

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所示。

表1C调各音符频率与计数值T对照表

音符

频率(HZ)

简谱码(T值)

低1DO

262

63628

#4FA#

740

64860

#1DO#

277

63731

中5SO

784

64898

低2RE

294

63853

#5SO#

831

64934

#2RE#

311

63928

中6LA

880

64968

低3M

330

64021

#6

932

64994

低4FA

349

64103

中7SI

988

65030

370

64185

高1DO

1046

65058

低5SO

392

64260

1109

65085

415

64331

高2RE

1175

65110

低6LA

440

64400

1245

65134

466

64463

高3M

1318

65157

低7SI

494

64524

高4FA

1397

65178

中1DO

523

64580

1480

65198

554

64633

高5SO

1568

65217

中2RE

587

64684

1661

65235

622

64732

高6LA

1760

65252

中3M

659

64777

1865

65268

中4FA

698

64820

高7SI

1967

65283

2.2简易电子琴基本原理及其框图

2.2.1基本思想

简易的电子琴系统主要是采用AT89C51单片机,单片机工作于12MHZ的时钟频率,使用其定时/计数器T0,工作模式为1,设计4*4键盘矩阵,设置成16个音,可随意弹奏想要表现的音乐,因为单片机产生的音频脉冲没有足够的驱动能力,所以用三极管放大电路实现音频的放大,保证扬声器能产生所要实现的音符声音。

2.2.2硬件框图

2.2.3软件设计流程图

本设计采用AT89C51单片机作为核心处理器件,按下复位键,进入初始化,调用键盘扫面子程序,获得键值,查询音阶表,获取定时初值,向喇叭输入相应频率的脉冲驱动,发出相应的音调,若按键没有释放,则一直发声;

若按键松开,则停止发声。

当读到结束符时,停止播放音乐。

具体软件流程图如下:

三、系统的硬件结构

3.1元器件清单及其电路图

Name

Comment

Designator

Quantity

瓷片电容

22pF

C1,C3

2

电解电容

10uF

C2

1

数码管

一位共阳

DS1

有源蜂鸣器

5V

LS1

排阻

10K

P1

排针

2Pin

P2

电阻

R1

普通按键

四脚

S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15,S16

16

单片机

AT89S52或STC89C52

U1

晶振

12MHz

Y1

简易电子琴硬件电路图:

3.2单片机89C51的简介

AT89C51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51具有如下特点:

40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(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.3键盘电路

键盘是最常用的单片机输入设备,大致可以分为独立连接式键盘和矩阵式。

独立连接式键盘是最简单的键盘电路,每个键独立接入一根数据线。

这种键盘结构简单,使用方便,但是占用的I/O口线较多。

矩阵式键盘由行线和列线组成,按键位于行列的交叉点上,行列式键盘可节省I/O口,适合按键数较多的场合。

所以本设计的4*4键盘采用矩阵式键盘。

3.4振荡电路

单片机的时钟信号用来提供单片机内各种位操作的时间基准,时钟信号通常有两种电路形式得到:

内部振荡方式和外部振荡方式。

在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部震荡方式。

由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。

晶振通常选用6MHz、12MHz或者24MHz。

本设计中采用的是12MHz。

电容器C1、C2起稳定振荡频率、快速起振的作用,电容值一般5~30pF。

内部振荡方式所得的时钟信号比较稳定,电路中使用较多。

振荡方式如下图:

3.5复位电路

复位操作完成单片机内电路的初始化,是单片机从一种确定的状态开始运行。

当单片机的复位引脚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.6音频放大电路

使用PNP管来放大,其中发射极接5V电源,集电极接喇叭,电路中的电容是用来隔离直流电用的。

PNP管放大原理:

当PNP管的VC<

VB<

VE时,使得集电结反偏,发射结正偏时,管子的发射极电流流入管子,基极电流和集电极电流流出管子,且集电极电流跟基极电流之间成β关系,三极电流满足IE=IB+IC=IB(1+β·

IB)。

即,基极电流可以控制集电极电流,这种控制作用就称为管子的放大作用。

本课程设计的音频放大电路图(三极管型号为9015):

四、系统软件的设计

4.1系统的软件主程序

/*

名称:

说明:

本程序运行时,按下矩阵键盘中的按键,数码管会显示当前的按键值,蜂鸣器会播放对应的音符

*/

#include<

reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

#defineSmgIOP0//数码管显示的控制IO

#defineKeyIOP1//矩阵键盘的控制IO

sbitBEEP=P2^7;

//蜂鸣器对应的控制IO

//共阳数码管编码数据

ucharcodeTable_Smg[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

//各音符对应的延时

uintcodeTable_Tone[]={

64021,64103,64260,64400,

64524,64580,64684,64777,

64820,64898,64968,65030,

65058,65110,65157,65178};

ucharKeyNo;

//按键序号

/**延时子函数**/

voidDelayMS(uchartime)

{

uchari;

while(time--)

for(i=0;

i<

120;

i++);

}

/**矩阵键盘的扫描子函数**/

voidKey_Scan(void)

ucharTemp,Num;

P1=0x0f;

//高四位置0,放入四列

DelayMS

(2);

//按键按下后00001111将变成0000XXXX,X中1个为0,3个仍为1

Temp=KeyIO^0x0f;

//异或操作会把3个1变成0,唯一的0变成1

switch(Temp)

case1:

Num=0;

break;

case2:

Num=1;

case4:

Num=2;

case8:

Num=3;

default:

return;

KeyIO=0xf0;

//低四位置0,放入四列

DelayMS

(2);

//按键按下后11110000将变成XXXX0000,X中1个为0,3个仍为1

Temp=(KeyIO>

>

4)^0x0f;

//将高四位移至低四位,并将其中唯一的0变为1,其余为0

switch(Temp)

Num+=0;

Num+=4;

Num+=8;

Num+=12;

KeyNo=Num;

/**定时器0中断服务程序,不同频率的声音由该中断产生**/

voidPlay_Tone()interrupt1

TH0=Table_Tone[KeyNo]/256;

TL0=Table_Tone[KeyNo]%256;

BEEP=~BEEP;

/**主函数**/

voidmain(void)

SmgIO=0xbf;

//初始显示"

-"

TMOD=0x01;

IE=0x82;

while

(1)

KeyIO=0xf0;

//发送扫描码

if(KeyIO!

=0xf0)//如果有按键按下

Key_Scan();

//矩阵键盘的扫描

SmgIO=Table_Smg[KeyNo];

//显示按键数值

TR0=1;

//启动定时器,并发出对应的声音

else

TR0=0;

//停止播放声音

 

4.2系统的软件的调试仿真

硬件电路制作完成并调试好后,便可将程序编译好下载到单片机试运行。

这里我们使用Proteus软件进行仿真,加载编译好的.HEX即文件到单片机后,点击运行按钮

即可,仿真电路图如下:

(当我们按键时如果成功就会听到我们想要的音乐)

总结

本次课程设计制作简易电子琴,虽然花费了我们很多精力,但收获颇丰,一方面,将自己的理论知识与实践相结合起来,进一步巩固了专业基础知识和相关专业课程知识;

另一方面,也培养了自己独立自主、综合分析的思维与创新能力,更让我知道了团队的力量是巨大的。

设计的过程不是一帆风顺,遇到过各种各样的问题。

特别是设计软件时,一些很细小的问题都可能导致功能性的错误,修改了多次才通过仿真。

在设计过程中我发现自己对以前所学过的知识理解得不够深刻,掌握得不够牢固,请教了老师和同学。

同时在具体的制作过程中我们发现一些书本上的知识与实际的应用存在着一定的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方面的问题,这也让我更深刻地体会到在今后的学习工作中也要注重理论联系实际。

参考文献

[1]《单片机原理与应用》,机械工业出版社,2013.8

[2]《电路》,等教育出版社,2006.5

[3]《Protel2004电路设计》,清华大学出版社,2006.8

[4]楼然苗,李光飞,《单片机课程设计指导》,北京,北京航空航天大学出版社,2007年

[5]吴金戌,沈庆阳,郭庭吉,《8051单片机实践与应用》,北京,清华大学出版社,2002年

[6]吴国经,《单片机应用技术》,北京,中国电力出版社,2004.年

[7]高天康《音乐知识词典》甘肃人民出版社2003.08

[8]董雷刚,崔晓微,程书伟.基于单片机的数字计算器的设计[J].电脑知识与技术,2012,10:

2386-2388+2414.

[9]张旭强.PIC单片机键盘电路应用四例[J].电子制作,2007,08:

20-24.

[10]童诗白.模拟子技术基础.北京:

高等教育出版社,2006.5

附录

附录1简易电子琴PCB二维图

附录2简易电子琴PCB三维图

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

当前位置:首页 > 成人教育 > 电大

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

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