基于AT89S51单片机的电子琴设计Word文档格式.docx
- 文档编号:21951111
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:17
- 大小:233.99KB
基于AT89S51单片机的电子琴设计Word文档格式.docx
《基于AT89S51单片机的电子琴设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于AT89S51单片机的电子琴设计Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
音符
频率
T值
1
262
64582
523
65058
2
294
64685
578
65110
3
330
64778
659
65165
4
349
64819
698
65178
5
392
64898
784
65217
6
440
64968
880
65252
7
494
65030
988
65283
图2-1各音符T值图
另一方面是每个音符的发音长度,各节拍与时间的设定如图2-2
曲调值
1/4拍时间
1/8拍时间
调4/4
125ms
62ms
调3/4
187ms
94ms
调2/4
250ms
图2-2节拍与时间设定图
2.2按键选择方案
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键。
3硬件设计
本次设计是根据系统设计结构图来对每个部分的电路进行分析和说明,重点讲述微控制器AT89S51、七段数码管显示模块、扬声器。
3.1AT89S51
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写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
图3-2矩阵式键盘结构
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、段及小数点上加限流电阻
b、使用电压:
段:
根据发光颜色决定;
小数点:
根据发光颜色决定
c、使用电流:
静态:
总电流80mA(每段10mA);
动态:
平均电流4-5mA
峰值电流100mA上面这个只是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一样的。
(共阳管与共阴管的判断方法:
在公共端加高电平,段码端加低电平,看是否点亮二极管,若亮则为共阳管,不亮则为共阴管)
图3-3七段数码管引脚图
3.3.2数码管的分类
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);
按能显示多少个“8”可分为1位、2位、4位等等数码管;
按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
3.4功率放大器
功率放大器工作原理:
利用三极管的电流控制作用或场效应管的电压控制作用将电源的功率转换为按照输入信号变化的电流。
因为声音是不同振幅和不同频率的波,即交流信号电流,三极管的集电极电流永远是基极电流的β倍,β是三极管的交流放大倍数,应用这一点,若将小信号注入基极,则集电极流过的电流会等于基极电流的β倍,然后将这个信号用隔直电容隔离出来,就得到了电流(或电压)是原先的β倍的大信号,这现象成为三极管的放大作用。
经过不断的电流放大,就完成了功率放大,简称功放。
如图3-4所示。
图3-4功率放大器原理图
从能耗方面考虑,功放输出的功率最终是由电源提供的,例如收音机中功放耗电要占整机的2/3,因此要十分注意提高电路效率,即输出功率与耗电功率的比值。
功放电路的输入信号已经几级放大,有足够强度,这会使功放管工作点大幅度移动,所以要求功放电路有较大的动态范围。
功放管的工作点选择不当,输出会有严重失真。
为得到需要的输出功率,电路须选集电极功耗足够大的三极管,功放管的工作电流和集电极电压也较高。
电路设计使用中首先要考虑怎样充分地发挥三极管功能而又不损坏三极管。
由于电路中功放管工作状态常接近极限值,所以功放电流调整和使用时要小心,不宜超限使用。
选择是非常重要的。
我选择的是LM386功放。
LM386是专为低功耗电源设计的功率放大器集成电路,它的内建增益为20,透过Pin1和pin8脚位间电容的搭配,增益高达200。
LM386可使用电池供电。
其输入电压范围4V-12V,无动作是仅消耗4mA电流,且失真低。
其LM386内部电路如图3-1
图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)
图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.0----VIN1
OUTBITequ0e101h位控制口
INequ0e103h键盘入口
Pulseequ0
PulseCNTequ50h
ToneHighequ51h
ToneLowequ52h
LJMPSTAR
==========================================================================
MIAN:
DB00H,00H,00H,00H,00H,00H,00H,00H;
........
MIAN1:
DB02H,00H,0D0H;
...
INTS1:
MOVDPTR,#0E100HDPTR=0E100H
MOVA,#03HA=03H
MOVX@DPTR,ADPTR=03H
MOVTMOD,#01HTMOD=01H定时计数器
MOVIE,#82HIE=82H终端控制寄存器
INTS2:
MOVA,#0FFHA=0FFH
JZINTS2累加器为0时跳转到INTS2
LCALLKEY1绝对调用子程序到KEY1
MOVR4,07HR4=07H
MOVA,R4A=07H
CLRC进位标志位C清0
SUBBA,#01HA=07H-01H
JCINTS2进位标志位为1转到INTS2
SETBC进位标志位C置1
SUBBA,#07HA=07H-07H
JNCINTS2进位标志位为0时转移到INTS2
ADDA,ACCA=A+ACC
ADDA,#0C0HA=A+0C0H
MOVDPL,ADPL=A
CLRA累加A清0
ADDCA,#00HA=A+00H(带进位)
MOVDPH,ADPH=A
CLRA对累加器A清0
MOVCA,@A+DPTRA=A+DPTR
MOVR2,AR2=A
MOVA,#01HA=01H
MOVR3,AR3=A
MOVA,R2A=R2
MOV09H,A09H=A
MOV08H,#00H08H=00H
MOV0AH,#00H0AH=00H
MOV0BH,R3OBH=R3
MOVTH0,ATH0=A为计数器高位赋值
MOVTL0,0BHTL0=0BH为计数器低位赋值
SETBTR0启动定时器
MOV0CH,#0C8H0CH=0C8H
KEY:
MOVA,0CHA=0CH
JNZKEY累加器为1时转移到KEY
CLRTR0对TR0清0TR0=0时停止工作
SJMPINTS2段转移到INTS2
KEY1:
MOVR7,#06HR7=06H
MOVR6,#20HR6=20H
KEY2:
MOVA,R6A=20H
CPLA累加器A求反
MOVDPTR,#0E101HDPTR=0E101H
MOVX@DPTR,ADPTR=A
CLRC对C清0
RRCA经过进位标志位的累加器循环右移
MOVR6,AR6=A
MOVDPTR,#0E103HDPTR=0E103H
MOVXA,@DPTRA=DPTR
ANLA,#0FHA=A&
0FH
MOVR5,AR5=A
DECR7R7减1
MOVA,R7A=R7
JZKEY3累加器为0转移到KEY3
MOVA,R5A=R5
JZKEY2累加器为0转移到KEY2
KEY3:
JZTONE3为0则转移
ADDA,ACC加A到累加器ACC
MOVR7,A累加器内容传送到寄存器
MOVA,R5寄存器内容传送到累加器
JNBACC.1,TONEACC.1不为1则跳转到TONE标号处为1则向下顺序执行。
INCR7寄存器增1
SJMPTONE2短跳转到当前TONE2所指位置
==========================
TONE:
JNBACC.2,TONE1ACC.2不为1则跳转到TONE1标号处,为1则向下顺序执行
TONE1:
MOVA,R5A=R5
JNBACC.3,TONE2ACC.3不为1则跳转到TONE2标号处,为1则向下顺序执行。
TONE2:
MOVDPTR,#0E101HDPTR=0E101H
CLRA对A清0
MOVX@DPTR,ADPTR=A
MOVA,R7A=R7
MOVDPTR,#00AAHDPTR=00AAH
MOVCA,@A+DPTR程序存储器代码字节传送到累加器
MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89S51 单片机 电子琴 设计