完整版基于单片机的电子琴设计与仿真毕业设计.docx
《完整版基于单片机的电子琴设计与仿真毕业设计.docx》由会员分享,可在线阅读,更多相关《完整版基于单片机的电子琴设计与仿真毕业设计.docx(26页珍藏版)》请在冰豆网上搜索。
完整版基于单片机的电子琴设计与仿真毕业设计
基于单片机的电子琴设计与仿真
作者:
任振环
专业名称:
电子科学与技术
指导教师:
兰英讲师
摘要
当今世界,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高。
电子琴是我们常见的电子产品,它是一种键盘乐器,是现代电子科技与音乐的结合。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
该系统是以51系列单片机为主控制器,附有矩阵键盘、LED数码管、扬声器等。
系统完成显示输入信息、播放相应音符等基本功能。
本文设计的电子琴,体积小,重量轻,使用方便,并有一定的商业价值。
关键词:
STC89C52单片机矩阵键盘LED数码管扬声器
Abstract
Intoday'sworld,electronictechnologyelectronicproductsintoalmosteveryfieldofthesociety,astrongimpetustothedevelopmentofsocialproductivityandtheimprovementofsocialinformation-baseddegree.Electronicorganisourcommonelectronicproducts,itisakeyboardinstrument,iscombinedwithmodernelectronictechnologyandmusic.
Atpresent,SCMisa,smallvolume,largecapacity,severalaspectsofdevelopment.Microcontrollerpenetratedintoeveryaspectofourlives,whichisalmostdifficulttofindtracesofthefieldwithoutmcu.Missilenavigationequipment,aircraftcontrolonavarietyofinstruments,computernetworkcommunicationsanddatatransmission,real-timecontrolanddataprocessingofindustrialautomationprocess,extensiveuseofvarioussmartICcard,civilianluxurycarsecuritysystem,videorecorder,cameracontrol,fullautomaticwashingmachine,andprogram-controlledtoys,electronicpetandsoon,theseallcannotdowithoutmcu.
Thesystemisbasedonthe51SeriesMCUbasedcontroller,amatrixkeyboard,LEDdigitaltube,speakers,etc..Tocompletethesystemshowstheinputinformation,thebasicfunctionsuchasplaycorrespondingnotes.Electronicorgan,thisdesigncommercialvalue.
Keywords:
STC89C52microcontroller,matrixkeyboard,digitaltubeLED,speaker
前言
近几十年来,单片机技术迅猛发展,在工农业生产,交通运输,国防建设和航空、航天事业等领域中获得广泛的应用。
单片机技术至今已渗透到各种科学领域,成为促进当今生产发展和科学技术进步的重要因素。
随着科学技术的进步和社会的发展,人类所接触的信息也在不断增加并且日益复杂。
面对浩如烟海的信息,人们已经能够利用计算机等工具高效准确地对之进行处理,但要想将处理完的信息及时,清晰地传递给别人,还必须通过寻求更加卓越的显示技术来实现。
单片机技术与液晶显示技术的结合,使信息传输交流向着智能可视化方向迅速发展。
本文的主要内容是用单片机为核心控制元件,设计一个电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。
利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。
并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。
本系统是简易电子琴的设计,按下键盘矩阵中的按键会使数码管显示当前按键,扬声器播放器对应的音符。
1总体方案介绍
依据任务书要求,需要设计一个系统,共需要以下几个模块:
供电模块、主控模块、显示模块、按键模块、功率放大模块、声音播放模块等,以下就针对这几个模块的选型和论证进行讨论。
1.1方案一
供电模块:
采用电池供电,需要三节1.5V电池(常用南孚电池即可),携带时比较麻烦。
主控模块:
采用MSP430系列单片机,该单片机是TI公司1996年开始推向市场的一种16位超低功耗的混合信号处理器。
其内部集成了很多模拟电路、数字电路和微处理器,提供强大的功能。
不过该芯片昂贵不适合一般的设计开发。
显示模块:
采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是LCD相对价格较贵,而且本设计只需显示简单字符即可。
按键模块:
采用常见的独立按键输入模式,根据需要一共要用16个按键进行功能输入,而所选用的单片机只有32个IO,占用了总IO数的一般,不利于后续的功能扩展。
功率放大模块:
利用三极管做一个分立的功率放大器,有点是成本低廉,但是分立元件搭建的电路一般调试麻烦,而且元件较多,因此为了调试方便不适合使用分立元件进行搭建。
声音播放模块:
采用常见的蜂鸣器,但是声音不真实,易损坏。
1.2方案二
供电模块:
采用USB借口供电,可在电脑、移动电源等设备上使用,携带方便,操作简洁。
主控模块:
采用51系列的单片机,该单片机是一个高可靠性,超低价,无法解密,高性能的8位单片机,32个IO口,且STC系列的单片机可以在线编程、调试,方便地实现程序的下载与整机的调试。
显示模块:
采用LED数码管动态扫描,LED数码管价格虽适中,对于显示数字也最合适,而且采用动态扫描法与单片机连接时,占用单片机口线少。
按键模块:
采用矩阵键盘作为输入,矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组.在键盘中按键数量较多时,为了减少IO口的占用,通常将按键排列成矩阵形式,如图1.1所示。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
图1.2矩阵键盘电路结构框图
功率放大模块:
使用集成芯片LM386,该芯片是一种音频集成功放,具有自身功耗低、更新内链增益可调整、电源电压范围大、外接元件少等优点的功率放大器,广泛应用于录音机和收音机之中。
声音播放模块:
采用扬声器(喇叭)作为声音播放器,声音响亮、真实。
综上所述,方案二成本低,操作简单方便且性能稳定,所以我选择方案二。
1.3系统设计概述
系统以STC89C52单片机为控制核心,对系统进行初始化,主要完成对键盘的响应、数码管显示等功能的控制,起到总控和协调各模块之间工作的作用。
单片机通过检测键盘输出对应频率的方波,后级通过LM386对功率进行扩大从而驱动扬声器发响。
图1.3系统结构框图
2系统硬件介绍
2.1主控模块(STC89C52)
主控模块模块在整个系统中起着统筹的作用,需要检测键盘,温度传感器等各种参数,同时驱动液晶显示相关参数,在这里我们选用了51系列单片机中的STC89C52单片机作为系统的主控芯片。
51系列单片机最初是由In公司开发设计的,但后来In公司把51核的设计方案卖给了几家大的电子设计生产商,譬如SST、Philip、Atmel等大公司。
因此市面上出现了各式各样的均以51为内核的单片机。
这些各大电子生产商推出的单片机都兼容51指令、并在51的基础上扩展一些功能而内部结构是与51一致的。
STC89C52有40个引脚,4个8位并行IO口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时计数器。
STC89C52的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。
STC89C52单片机的基本组成框图见图2.1。
图2.1单片机最小系统
2.1.1STC89C52的主要特性
1.一个8位的微处理器(CPU)。
2.片内数据存储器RAM(128B),用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据等,SST89系列单片机最多提供1K的RAM。
3.片内程序存储器ROM(4KB),用以存放程序、一些原始数据和表格。
但也有一些单片机内部不带ROMEPROM,如8031,8032,80C31等。
目前单片机的发展趋势是将RAM和ROM都集成在单片机里面,这样既方便了用户进行设计又提高了系统的抗干扰性。
SST公司推出的89系列单片机分别集成了16K、32K、64KFlash存储器,可供用户根据需要选用。
4.四个8位并行IO接口P0~P3,每个口既可以用作输入,也可以用作输出。
5.两个定时器计数器,每个定时器计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。
为方便设计串行通信,目前的52系列单片机都会提供3个16位定时器计数器。
6.五个中断源的中断控制系统。
现在新推出的单片机都不只5个中断源,例如SST89E58RD就有9个中断源。
7.一个全双工UART(通用异步接收发送器)的串行IO口,用于实现单片机之间或单机与微机之间的串行通信。
8.片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。
最高允许振荡频率为12MHz。
SST89V58RD最高允许振荡频率达40MHz,因而大大的提高了指令的执行速度。
图2.2STC89C52单片机管脚图
部分引脚说明:
时钟电路引脚XTAL1和XTAL2:
XTAL2(18脚):
接外部晶体和微调电容的一端;片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固有频率。
若需采用外部时钟电路时,该引脚输入外部时钟脉冲。
要检查振荡电路是否正常工作,可用示波器查看XTAL2端是否有脉冲信号输出。
XTAL1(19脚):
接外部晶体和微调电容的另一端;在片内它是振荡电路反相放大器的输入端。
在采用外部时钟时,该引脚必须接地。
2.控制信号引脚RST,ALE,PSEN和EA:
RSTVPD(9脚):
RST是复位信号输入端,高电平有效。
当此输入端保持备用电源的输入端。
当主电源Vcc发生故障,降低到低电平规定值时,将+5V电源自动两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。
RST引脚的第二功能是VPD,即接入RST端,为RAM提供备用电源,以保证存储在RAM中的信息不丢失,从而合复位后能继续正常运行。
ALEPROG(30脚):
地址锁存允许信号端。
当8051上电正常上电正常工作后,ALE引脚不断向外输出正脉冲信号,此频率为振荡器频率fOSC的16。
CPU访问片外存储器时,ALE输出信号作为锁存低8位地址的控制信号。
平时不访问片外存储器时,ALE端也以振荡频率的16固定输出正脉冲,因而ALE信号可以用作对外输出时钟或定时信上是好的。
ALE端的负载驱动能力为8个LS型TTL(低功耗甚高速TTL)负载。
此引脚的第二功能PROG在对片内带有4KBEPROM的8751编程写入(固化程序)时,作为编程脉冲输入端。
PSEN(29脚):
程序存储允许输出信号端。
在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。
此引肢接EPROM的OE端(见后面几章任何一个小系统硬件图)。
PSEN端有效,即允许读出EPROMROM中的指令码。
PSEN端同样可驱动8个LS型TTL负载。
要检查一个指令码,也可用示波器看PSEN端有无脉冲输出。
如有则说明基本上工作正常。
EAVpp(31脚):
外部程序存储器地址允许输入端固化编程电压输入端。
当EA引脚接高电平时,CPU只访问片内EPROMROM并执行内部程序存储器中的指令,但当PC(程序计片外程序存储器内的程序。
当输入信号EA引脚接低电平(接地)时,CPU只访问外部EPROMROM并执行外部程序存储器中的指令,而不管是否有片内程序存储器。
对于无片内ROM的8031或8032,需外扩EPROM,此时必须将EA引脚接地。
此引脚的第二功能是Vpp是对8751片内EPROM固化编程时,作为施加较高编程电压(一般12V~21V)的输入端。
3.输入输出端口P0P1P2P3:
P0口(P0.0~P0.7,39~32脚):
P0口是一个漏极开路的8位准双向IO口。
作为漏极开路的输出端口,每位能驱动8个LS型TTL负载。
当P0口作为输入口使用时,应先向口锁存器(地址80H)写入全1,此时P0口的全部引脚浮空,可作为高阻抗输入。
作输入口使用时要先写1,这就是准双向口的含义。
在CPU访问片外存储器时,P0口分时提供低8位地址和8位数据的复用总线。
在此期间,P0口内部上拉电阻有效。
P1口(P1.0~P1.7,1~8脚):
P1口是一个带内部上拉电阻的8位准双向IO口。
P1口每位能驱动4个LS型TTL负载。
在P1口作为输入口使用时,应先向P1口锁存地址(90H)写入全1,此时P1口引脚由内部上拉电阻拉成高电平。
P2口(P2.0~P2.7,21~28脚):
P2口是一个带内部上拉电阻的8位准双向IO口。
P口每位能驱动4个LS型TTL负载。
在访问片外EPROMRAM时,它输出高8位地址。
P3口(P3.0~P3.7,10~17脚):
P3口是一个带内部上拉电阻的8位准双向IO口。
P3口每位能驱动4个LS型TTL负载。
P3口与其它IO端口有很大的区别,它的每个引脚都有第二功能。
2.1.2STC89C52的中断系统
STC89C52系列单片机的中断系统有5个中断源,2个优先级,可以实现二级中断服务嵌套。
由片内特殊功能寄存器中的中断允许寄存器IE控制CPU是否响应中断请求;由中断优先级寄存器IP安排各中断源的优先级;同一优先级内各中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。
在单片机应用系统中,常常会有定时控制需求,如定时输出、定时检测、定时扫描等;也经常要对外部事件进行计数。
STC89C52单片机内集成有两个可编程的定时计数器:
T0和T1,它们既可以工作于定时模式,也可以工作于外部事件计数模式,此外,T1还可以作为串行口的波特率发生器。
2.1.3STC89C52的系统介绍
图2.3单片机最小系统电路图
图2.3为单片机最小系统电路图,单片机最小系统有单片机、时钟电路、复位电路组成,时钟电路选用了12MHZ的晶振提供时钟,作用为给单片机提供一个时间基准,其中执行一条基本指令需要的时间为一个机器周期,单片机的复位电路,按下复位按键之后可以使单片机进入刚上电的起始状态。
图中10K排阻为P0口的上拉电阻,由于P0口跟其他IO结构不一样为漏极开路的结构,因此要加上拉电阻才能正常使用。
2.2显示模块
2.2.1数码管原理
常见数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的IO端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用IO端口多,如驱动5个数码管静态显示则需要5×8=40根IO端口来驱动,要知道一个89S51单片机可用的IO端口才32个呢:
),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的IO线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的IO端口,而且功耗更低。
2.2.2显示模块电路设计
如下图所示为一位共阳数码管的硬件电路连接图,由于数码管内部实际为8个LED灯,如果把LED的阴级直接单片机的IO的口,会使LED通过的电流过大从而把数码管烧毁,因此在设计的时候在LED的阴级和单片机的IO之间加上了限流电阻从而起到限流作用。
根据经验,这里选取了1K电阻。
程序编写的时候我们预先根据要显示的字符,编写了个对应要显示的数组,这样可以使程序更加简化。
图2.4共阳数码管硬件电路连接图
2.3矩阵键盘模块
图2.5矩阵键盘模块电路图
硬件电路设计图如上图所示。
把单片机的P3.0-P3.7端口通过8联拨动拨码开关连接到“4*4行列式键盘”,其中P3.0-P3.3作为列线,P3.4-P3.7作为行线,系统首先通过CPU对全部键盘进行扫描,即把第一根行线置为“0”状态,其余行线置于“1”状态,读入输入缓冲器的状态,若其状态全为“1”表明该行无键按下,再将第二根行线置为“0”状态,同样读入输入缓冲器的状态,如其状态也全为“1”,则置第一根行线置为“0”状态,以此类推。
如读入输入缓冲器的状态不全为“1”,确定哪一根列线为“0”状态,当某个键的行线和列线都为“0”状态时,表明该键按下。
最常见的键盘布局如图2.5所示。
一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,本设计就采用这个键盘模式。
表2.1键盘布局
4
8
C
播放歌曲
3
7
B
F
2
6
A
E
1
5
9
D
矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。
2.4功率放大模块(LM386)
功率放大模块我们选用了LM386作为功率放大模块的主要芯片,LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。
为使外围元件最少,电压增益内置为20。
但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至200。
输入端以地位参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场合。
2.4.1LM386内部原理
图2.6LM386内部结构图
LM386内部电路原理图如图所示。
与通用型集成运放相类似,它是一个三级放大电路。
第一级为差分放大电路,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构成反馈网络,从而引入了深度电压串联负反馈,使整个电路具有稳定的电压增益。
图2.8LM386管脚图
LM386的外形和引脚的排列如上图所示。
引脚2为反相输入端,3为同相输入端;引脚5为输出端;引脚6和4分别为电源和地;引脚1和8为电压增益设定端;使用时在引脚7和地之间接旁路电容,通常取10μF。
查LM386的datasheet,电源电压4-12V或5-18V(LM386N-4);静态消耗电流为4mA;电压增益为20-200;在1、8脚开路时,带宽为300KHz;输入阻抗为50K;音频功率0.5W。
2.4.2功率放大器使用事项
尽管LM386的应用非常简单,但稍不注意,特别是器件上电、断电瞬间,甚至工作稳定后,一些操作(如插拔音频插头、旋音量调节钮)都会带来的瞬态冲击,在输出喇叭上会产生非常讨厌的噪声。
(1)通过接在1脚、8脚间的电容(1脚接电容+极)来改变增益,断开时增益为20。
因此用不到大的增益,电容就不要接了,不光省了成本,还会带来好处--噪音减少,何乐而不为?
(2)PCB设计时,所有外围元件尽可能靠近LM386;地线尽可能粗一些;输入音频信号