基于AT89S51单片机的电子琴设计.docx
《基于AT89S51单片机的电子琴设计.docx》由会员分享,可在线阅读,更多相关《基于AT89S51单片机的电子琴设计.docx(21页珍藏版)》请在冰豆网上搜索。
基于AT89S51单片机的电子琴设计
基于AT89S51单片机地电子琴设计
摘要:
随着电子产业地发展和人民生活水平地提高,电子琴在人们生活中将扮演着越来越重要地角色,它改善人们地生活,给人们带来快乐和陶冶人地情操.本文设计是在
充分了解音乐音阶基础上,以Atmel公司地AT89S51单片机作为核心控制器件,通过程序控制与键盘,运放电路,扬声器等电路设计成地电子琴.
关键词:
AT89S51,电子琴,proteus仿真
Abstract:
Alongwiththedevelopmentoftheelectronicsindustryandtheimprovementofpeople'slivingstandard,thekeyboardwillplayamoreandmoreimportantroleinpeople'slife,improvepeople'slife,itbroughtpeoplejoyandedifyone'ssentiment.Thisarticleisdesignedonthebasisoffullyunderstandthemusicscales,takingAtmelAT89S51asthecorecontroldevice,throughprocesscontrolandkeyboard,op-ampcircuit,speakerscircuitdesign,includingthekeyboard.
Keywords:
AT89S51,electronicorgan,proteussimulation
1绪论
随着人们生活水平地提高和电子产业地高速发展,越来越多地电子产品融入到人们地生
活当中,电子琴也不例外,它作为一种陶冶人们情操,给人们生活增添乐趣地一种乐器,在生活中扮演比较重要地角色•
目前单片机渗透到我们生活地各个领域,几乎很难找到哪个领域没有单片机地踪迹•导
弹地导航装置,飞机上各种仪表地控制,计算机地网络通讯与数据传输,工业自动化过程地实时控制和数据处理,广泛使用地各种智能IC卡,民用豪华轿车地安全保障系统,录像机、
摄像机、全自动洗衣机地控制,以及程控玩具、电子宠物等等,这些都离不开单片机.单片机
广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备地智能化管理及过程控制等领域,
通过对单片机系统地学习和认识,我认识到通过AT89S51单片机pl输入到系统,可以完成
此简易电子琴地任务.单片机结构简单、价格低廉、原理简单、体积小,携带方便、性价比
高,使用AT89S51单片机做电子琴是我地不二选择.
2总体方案
本次设计重点主要是从系统结构框图来阐述了硬件地设计以及从方案上对比选择各个电路
部分地元件,目地是使系统达到一个低成本、高质量、稳定可靠地设计.包括硬件部分和软件
部分.总体设计框图如图1所示
图1总体设计框图
2.1控制模块选择方案
采用AT89C51单片机进行控制,由于AT89C51与MCS-51兼容,具有4K字节可编程
FLASH存储器;两个16位定时器/计数器;低功耗地闲置和掉电模式;片内振荡器和时钟
电路,使用方便,声音是有震动产生地,每个音符都对应了频率,利用定时计数器T0工作
方式定时方式,通过改变TH0和TL0地值,就可以产生不同频率地脉冲,例如像产生
523Hz地脉冲,其周期1/523=1912us•因此只要让定时T0定时956us后,使P1.0取反,就可
以在P1.0引脚输出一个频率为52Hz地脉冲,若晶振地频率飞为6MHz,则计数值为
956/2=478,而计数器地初值为65536-478H=65058=OFF22H,即THO=OFFH,TLO=22H.这样每
个音符都对应了一个T值.6MHz地晶振各音符T值如图2-1
音符
频率
T值
音符
频率
T值
1
262
64582
1
523
65058
2
294
64685
2
578
65110
3
330
64778
3
659
65165
4
349
64819
4
698
65178
5
392
64898
5
784
65217
6
440
64968
6
880
65252
7
494
65030
7
988
65283
图2-1各音符T值图
另一方面是每个音符地发音长度,各节拍与时间地设定如图2-2
曲调值
1/4拍时间
1/8拍时间
调4/4
125ms
62ms
调3/4
187ms
94ms
调2/4
250ms
125ms
图2-2节拍与时间设定图
22按键选择方案
在键盘中按键数量较多时,为了减少I/O口地占用,通常将按键排列成矩阵形式,在矩阵
式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接•这样,
个端口(如P1口)就可以构成4*4=16个按键•
3硬件设计
本次设计是根据系统设计结构图来对每个部分地电路进行分析和说明,重点讲述微控制
器AT89S51、七段数码管显示模块、扬声器•
3.1AT89S51
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-system
programmable)地可反复擦写1000次地Flash只读程序存储器,器件采用ATMEL公司地高密
度、非易失性存储技术制造,兼容标准MCS-51指令系统及80S51引脚结构,芯片内集成了
通用8位中央处理器和ISPFlash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用.AT89S51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)地低电压,高性能CMOS8位微处理器,俗称单片机.AT89S51是一种带4K字节闪烁可编程可擦除只读存储器地单片机.
图3-1AT89S51引脚图
主要功能特性
1、4kBytesFlash片内程序存储器;
2、128bytes地随机存取数据存储器(RAM);
3、32个外部双向输入/输出(I/O)口;
4、6个中断源;
5、2个16位可编程定时器/计数器;
6、2个全双工串行通信口;
3.2矩阵式键盘地识别和显示
3.2.1矩阵式键盘地结构与工作原理
在键盘中按键数量较多时,为了减少I/O口地占用,通常将按键排列成矩阵形式,在矩
阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接.这样,
一个端口(如P1口)就可以构成4*4=16个按键,比直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键地键盘,而直接用端口线则只能
多出一键(9键)矩阵式结构地键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接地单片机地I/O口作为输出端,而列线所接地I/O口则作为输入
这样,当按键没有按下时,所有地输出端都是高电平,代表无键按下.行线输出是低电平,一
旦有键按下,则输入线就会被拉低,这样,通过读入输入线地状态就可得知是否有键按下了
如图3-1
1
=4
L*~
itJi.
piJLL
―m1
i—q1
'■00*
EJXl
—
ELL―■—
KJ2_
plli[—
1J1
'|91
'1*■・=♦
Kii
JdL
KjT
pH-£
1
1I~~'
Ll1
F3+
3.2.2按键识别方法
确定矩阵式键盘上何键被按下介绍一种“行扫描法’行扫描法行扫描法又称为逐行(或列)扫描查询法,是一种最常用地按键识别方法.判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线地状态.只要有一列地电平为低,则
表示键盘中有键被按下,而且闭合地键位于低电平线与4根行线相交叉地4个按键之中.若所有列线均为高电平,则键盘中无键按下.判断闭合键所在地位置在确认有键按下后,即可进入确定具体闭合键地过程.其方法是:
依
次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平.在确定某根行线位置为
低电平后,再逐行检测各列线地电平状态.若某列为低,则该列线与置为低电平地行线交叉处
地按键就是闭合地按键.
3.2.3键盘口必须具有地四个功能
键盘接口必须具有去抖动、防串键、按键识别和键码产生4个基本功能.
(1)去抖动:
每个按键在按下或松开时,都会产生短时间地抖动.抖动地持续时间与键地质
量相关,一般为5—20mm.所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误.
(2)防串键:
防串键是为了解决多个键同时按下或者前一按键没有释放又有新地按键按下时产生地问题.常用地方法有双键锁定和N键轮回两种方法.双键锁定,是当有两个或两个
以上地按键按下时,只把最后释放地键当作有效键并产生相应地键码.N键轮回,是当检测到有多个键被按下时,能根据发现它们地顺序依次产生相应键地键码.
(3)被按键识别:
如何识别被按键是接口解决地主要问题,一般可通过软硬结合地方法完
成.常用地方法有行扫描法和线反转法两种.行扫描法地基本思想是,由程序对键盘逐行扫描,
通过检测到地列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用.线反转法地基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程地双向输入/输出端口.
(4)键码产生:
为了从键地行列坐标编码得到反映键功能地键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键地键码.
3.3七段数码管
3.3.1七段数码管简介(图3-3)
a、段及小数点上加限流电阻
c、使用电流:
静态:
总电流80mA(每段10mA);动态:
平均电流4-5mA峰值电流
(共
100mA上面这个只是七段数码管引脚图,其中共阳极数码管引脚图和共阴极地是一样地
阳管与共阴管地判断方法:
在公共端加高电平,段码端加低电平,看是否点亮二极管,若亮
则为共阳管,不亮则为共阴管)
图3-3七段数码管引脚图
332数码管地分类
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管
单元(多一个小数点显示);按能显示多少个“8可分为1位、2位、4位等等数码管;按发
光二极管单元连接方式分为共阳极数码管和共阴极数码管•共阳数码管是指将所有发光二极管
地阳极接到一起形成公共阳极(COM)地数码管•共阳数码管在应用时应将公共极COM接到
+5V,当某一字段发光二极管地阴极为低电平时,相应字段就点亮•当某一字段地阴极为高电
平时,相应字段就不亮•共阴数码管是指将所有发光二极管地阴极接到一起形成公共阴极
(COM)地数码管•共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光
二极管地阳极为高电平时,相应字段就点亮
3.4功率放大器
功率放大器工作原理:
利用三极管地电流控制作用或场效应管地电压控制作用将电源地
功率转换为按照输入信号变化地电流.因为声音是不同振幅和不同频率地波,即交流信号电
流,三极管地集电极电流永远是基极电流地B倍,B是三极管地交流放大倍数,应用这一
点,若将小信号注入基极,则集电极流过地电流会等于基极电流地B倍,然后将这个信号用
隔直电容隔离出来,就得到了电流(或电压)是原先地B倍地大信号,这现象成为三极管地放
.如图3-4所示.
大作用•经过不断地电流放大,就完成了功率放大,简称功放
动,所以要求功放
原理图
虑,功放输出地功率最地,例如收音机中功放2/3,因此要十分注意提出功率与耗电功率地比信号已经几级放大,有功放管工作点大幅度移
电路有较大地动态范围
功放管地工作点选择不当,输出会有严重失真•为得到需要地输出功率,电路须选集电极功耗
足够大地三极管,功放管地工作电流和集电极电压也较高•电路设计使用中首先要考虑怎样充
分地发挥三极管功能而又不损坏三极管•由于电路中功放管工作状态常接近极限值,所以功放
电流调整和使用时要小心,不宜超限使用•选择是非常重要地•
我选择地是LM386功放丄M386是专为低功耗电源设计地功率放大器集成电路,它地内建
增益为20,透过Pin1和pin8脚位间电容地搭配,增益高达200.LM386可使用电池供电•其输
入电压范围4V-12V,无动作是仅消耗4mA电流,且失真低•其LM386内部电路如图3-1
7—乜源
Tio
输出
2地
图3-5LM386内部电路图
第一级为差分放大电路,T1和T3、T2和T4分别构成复合管,作为差分放大电路地放大管;T5和T6组成镜像电流源作为T1和T2地有源负载;T3和T4信号从管地基极输入,从T2管地集电极输出,为双端输入单端输出差分电路•使用镜像电流源作为差分放大电路有
源负载,可使单端输出电路地增益近似等于双端输出电容地增益
第二级为共射放大电路,T7为放大管,恒流源作有源负载,以增大放大倍数
第三级中地T8和T9管复合成PNP型管,与NPN型管T10构成准互补输出级•二极管D1和D2为输出级提供合适地偏置电压,可以消除交越失真
引脚2为反相输入端,引脚3为同相输入端•电路由单电源供电,故为OTL电路输出端
(引脚5)应外接输出电容后再接负载•
电阻R7从输出端连接到T2地发射极,形成反馈通路,并与R5和R6构成反馈网络,从
而引入了深度电压串联负反馈,使整个电路具有稳定地电压增益
3.5基于单片机电子琴硬件电路图
电子琴地整体硬件电路,包括以上设计地各个分块电路•另外还包括矩阵按键电路,指示灯
只是电路等,完整地电路如图3-2所示•
图3-6电路硬件图
4软件设计
基于单片机地电子琴硬件电路已经确定,要实现其功能,需要软件支持,电子琴地工作
原理前文已论述,设计框图如图4所示
图4程序流程图
4.1电子琴总体软件设计
•它不但
电子琴是高科技在音乐领域地一个代表,它是古典文化与现代文明地一个浓缩体可以帮助我们地音乐教师进行传统音乐文化地教育教案工作,而且由于它又具备现代音乐,
特别是电子音乐、电脑音乐地基本结构、特征,因而使我们地教师在进行现代音乐、电子音
乐、电脑音乐地教案时,更直接、更简便
单片微型计算机是大规模集成电路技术发展地产物,属第四代电子计算机,它具有高性
能、高速度、体积小、价格低廉、稳定可靠、应用广泛地特点.它地应用必定导致传统地控制
技术从根本上发生变革.因此,单片机地开发应用已成为高科技和工程领域地一项重大课题
电子琴基本工作流程如图4-1所示:
图4-1基本工作流程图
(1)键盘扫描程序:
检测是否有按键按下,有按键按下则记录按下键地键值,并跳转至功能
转移程序;无按键按下,则返回键盘扫描程序继续检测
.图4-2
图4-2键盘扫描程序流程图
(2)功能转移程序:
对检测到地按键值进行判断,是琴键则跳转至琴键处理程序,是功能键
则跳转至相应地功能程序•
(3)琴键处理程序:
根据检测到地按键值,查询音调表,给定时计时器赋值,使发出相应
频率键地声音.
4.2电子琴按键软件设计
基于单片机电子琴地另一个重要功能就是要实现点击后发出类似钢琴那种管弦乐音•单片
机控制核心通过拾取按键信息,判断是哪个按键按下,并对按键进行相应地出来,然后调动
不同地频率输出,产生定时,去驱动蜂鸣器,实现电子弹奏功能•每一个音符对应一个频率•利
用实验仪上提供地键盘,使数字1、2、3、4、5、6、7作为电子琴按键,按下即发出相应地
音调,用P1.0口发出音频脉冲,驱动喇叭•
5调试结果(如图5)
电路连线图
通过键盘地按键1、2、3、4、5、6、7键发出声音,当我按下1键是发出声音duo.当按下键
2时发出声音re,当按下键3时发出声音mi,当按下键4时发出声音fa,当按下键5时发出声音shuo,当按下键6时发出声音na,当按下键7时发出声音xi.
达到本次设计地效果.
6结束语
通过这次地设计提高了我运用所学地专业基础知识来解决面临实际问题地能力,同时也
提高了我查阅各种文献资料、设计手册、设计规范以及软件编程排版地水平•対单片机课程设计地整个流程和设计要求都有了深刻地认识,对以后地学习和设计都有很大地帮助•本论文是在我地导师牟琳老师地亲切关怀和悉心指导下完成地•从课题地选择到最终完成,牟琳老师都
参考文献
[1]谭会生.张昌凡.EDA技术及应用(第二版)[M].西安电子科技大学出版社,2009年9月.
[2]徐志军.EDA技术与PLD设计[M].人民邮电出版社,2010年2月第1版.
[3]赵鑫..数字电路设计[M].北京机械工业出版社,2009年6月第一版.
[4]苏家健、曹柏荣、汪志锋.单片机原理及应用技术[M].高等教育出版社,2012年6月.
[5][美]AshishWilfredMeetaGuptaKartikBhatnagar著,刘永明,贺民译.php专业工程实例开发[J].水利水电出版社,2009.
[6]于海生.微型计算机控制技术选编[M].清华大学出版社,2009.
[7]李朝青.单片机原理及接口技术[M].北京:
北京航天航空大学出版色,2009.
[8]胡汉才.单片机原理及其接口技术[M].北京:
清华大学出版社,2009.
附录
源程序代码
。
连线P1.0VIN1
OUTBITequ0e101h位控制口
INequ0e103h键盘入口
Pulseequ0
PulseCNTequ50h
ToneHighequ51h
ToneLowequ52h
LJMPSTAR
MIAN:
DB00H,00H,00H,00H,00H,00H,00H,00H。
MIAN1:
DB02H,00H,0D0H。
...
o
INTS1:
MOVDPTR,#0E100HDPTR=0E100H
MOVA,#03H
MOVX@DPTR,A
MOVTMOD,#01H
MOVIE,#82H
INTS2:
MOVA,#0FFH
A=03H
DPTR=03H
TMOD=01H定时计数器
IE=82H终端控制寄存器
A=0FFH
JZINTS2
累加器为0时跳转到INTS2
MOVR4,07H
R4=07H
MOVA,R4
A=07H
CLRC
进位标志位C清0
SUBBA,#01H
A=07H-01H
JCINTS2
进位标志位为1转到INTS2
MOVA,R4
A=07H
SETBC
进位标志位C置1
SUBBA,#07H
A=07H-07H
JNCINTS2
进位标志位为0时转移到INTS2
MOVA,R4
A=07H
ADDA,ACC
A=A+ACC
ADDA,#0C0H
A=A+0C0H
MOVDPL,A
DPL=A
CLRA
累加A清0
ADDCA,#00H
A=A+00H(带进位)
MOVDPH,A
DPH=A
CLRA
对累加器A清0
LCALLKEY1
绝对调用子程序到KEY1
MOVCA,@A+DPTRA=A+DPTR
MOVR2,A
R2=A
MOVA,#01H
A=01H
MOVCA,@A+DPTRA=A+DPTR
MOVR3,A
R3=A
MOVA,R2
A=R2
MOV09H,A
09H=A
MOV08H,#00H
08H=00H
MOV0AH,#00H
0AH=00H
MOV0BH,R3
OBH=R3
MOVTH0,A
TH0=A为计数器高位赋值
MOVTL0,0BH
TL0=0BH为计数器低位赋值
SETBTR0
启动定时器
MOV0CH,#0C8H
0CH=0C8H
KEY:
MOVA,0CH
A=0CH
JNZKEY
累加器为1时转移到KEY
CLRTR0
对TR0清0TR0=0时停止工作
SJMPINTS2
段转移到INTS2
KEY1:
MOVR7,#06H
R7=06H
MOVR6,#20H
R6=20H
KEY2:
MOVA,R6
A=20H
CPLA累加器A求反
MOVDPTR,#0E101HDPTR=0E101H
MOVX@DPTR,ADPTR=A
MOVA,R6A=20H
CLRC对C清0
RRCA经过进位标志位地累加器循环右移
MOVR6,AR6=A
MOVDPTR,#0E103HDPTR=0E103H
MOVXA,@DPTRA=DPTR
CPL
A
累加器A求反
ANL
A,#0FH
A=A&0FH
MOV
R5,A
R5=A
DECR7
R7减1
MOVA,R7A=R7
JZKEY3累加器为0转移到KEY3
MOVA,R5A=R5
JZKEY2累加器为0转移到KEY2
KEY3:
MOVA,R5A=R5
MOV
A,R7
A=R7
ADD
A,ACC
加A到累加器ACC
ADD
A,ACC
加A到累加器ACC
MOV
R7,A
累加器内容传送到寄存器
MOV
A,R5
寄存器内容传送到累加器
JZTONE3
为0则转移
JNBACC.1,TONEACC.1不为1则跳转到TONE标号处为1则向下顺序执行
INCR7寄存器增1
SJMPTONE2短跳转到当前TONE2所指位置
TONE:
MOVA,R5
A=R5
JNBACC.2,TONE1
ACC.2不为1则跳转到TONE1标号处,为1则向下顺序
执行
INCR7
寄存器增1
INCR7
寄存器增1
SJMPTONE2
短跳转到当前TONE2所指位置
TONE1:
MOVA,R5
A=R5
JNBACC.3