课程设计可存储式电子琴系统设计学生姓名李真,谢伟志,武光霞,孙宏杰,郑悦,周锦波,学号200723502147所在专业机械设计制造及其自动化所在班级机071-6指导教师刘鹏负责内容同组人员可存储式电子琴一、任务书本设计利用8051单片机的控制程序结合LCD设计一台数字式可存储是电子琴。基本功能为:1、使用LCD显示器来显示音节输入的相关信息;2、当按下键盘组相对按键,压电喇叭会发出相对音节单音,共有两个八度音阶;3、所有单音会存入8051内而保存起来;4、至多可以输入64个单音,可以一起演奏出来;演奏时可以按键中断;可以实时显示目前正演奏的单音码.二、原理说明A8051单片机介绍2.1基本特性8051单片机主要功能特点如下:(1)8位CPU;片内128BRAM(2)片内4KBROM/EPROM;特殊功能寄存器区(3)2个优先级的5个中断源结构;4个8位并行I/O口(P0、P1、P2、P3)(4)2个16位定时/计数器(MCS-52子系列为3个);全双工串行口(5)布尔处理器;64KB外部数据存储器地址空间(6)64KB外部程序存储器地址空间;片内振荡器及时钟电路8051片内程序存储器为掩膜ROM,可根据特殊要求和用途在制造芯片是将专用程序固化进去,成为专用单片机。引脚功能MCS-51系列单片机大多都采用40条引脚双列直插式器件,引脚除+5V(VCC40脚)和电源地(VSS20引脚)外,按其功能主要由以下三大部分组成。右图为为8051的引脚图。复位后内部寄存器状态2.2时钟电路XTAL1(19脚)——芯片内部振荡电路(单极反相放大器)输入端。TAL2(18脚)——芯片内部振荡电路(单极反相放大器)输出端。MCS-51的时钟可由内部方式或外部方式产生。2.3控制信号2.3.1RST/VPD(9脚)复位信号时钟电路工作后,在此引脚上出现两个机器周期的高电平,芯片内部进行初始复位,复位后片内寄存器状态如下表所示。寄存器内容寄存器内容PC0000HTMOD00HACC00HTCON00HB00HTH000HPSW00HTL000HSP07HTH100HDPTR0000HTL100HP0~P30FFHSCON00HIP×××00000SBUF不定IE0××00000PCON0×××0000P0~P3口输出高电平,初值07H写入堆栈指针SP、清0程序计数器PC和其余特殊功能寄存器。但初始复位不影响片内RAM状态,只要该引脚保持高电平,MCS-51将循环复位。RST/VPD从高电平变成低电平时,单片机将从0号单元开始执行程序。另外该引脚还具有复用功能。只要将VPD接+5v电源,一旦VCC电位突然或断电,能保护片内RAM中的信息不会丢失,复电后能正常工作。2.3.2ALE/________PROG(30引脚)地址锁存信号当访问外部存储器时,P0口输出的低八位地址由ALE输出的控制信号锁存到片外地址锁存器,P0口输出地址低八位后,又能与片外地址/数据复用口,那么P0口上的信息究竟时地址还是数据完全又ALE来定义,ALE高电平期间,P0口上一般出现地址信息,在ALE下降沿是,将P0口上地址信息锁存到片外地址锁存器,在ALE低电平期间P0口上一般出现指令和数据信息。平时不访问片外存储器时,该端也以六分之一的时钟频率固定输出正脉冲。因而亦可作系统其它芯片的时钟源。ALE可驱动8个TTL门。2.3.3________PSEN(29脚)片外程序存储器读选通________PSEN低电平有效,8051访问片外程序存储器时,程序计数器PC通过P2口和P0口输出十六位指令地址,作为程序存储器读信号,________PSEN输出负脉冲将相应存储单元的指令读出并送到P0口上,供8051执行。________PSEN同样可驱动8个TTL门输入。2.3.4___EA/VPP(31脚)内部和外部程序存储器选择信号对于8051来说,内部有4K字节的程序存储器,当___EA为高时,CPU访问程序存储器有两种情况:a、地址小于4K时访问内部程序存储器。b、地址大于4K时访问外部程序存储器。若___EA接地,则不使用内部程序存储器,不管地址大小,取指时总是访问外部程序存储器。对于EPROM型的单片机,在EPROM编程时,此引脚用于施加21伏编程电压VPP。2.4I/O口8051单片机有4个双向8位I/O口P0~P3,P0口为三态双向口,负载能力为8个LSTTL门电路,P1~P3为准双向口(用作输入时,口锁存器必须先写“1”),负载能力为4个LSTTL门电路。2.58051定时/计数器一般单片机内部都设有定时/计数器,因为有的测控系统是按时间间隔定时控制的,如定时对物理过程(如温度)的采样测量等,虽然可以通过延时程序实现定时,但这会降低CPU的工作效率。如果能利用一个可编程的实时时钟获得延时定时,就可以提高CPU的工作效率。另外,也有一些测控系统时根据外部信号的计数结果来实现控制的,必须对外部随机时间(往往为脉冲信号)进行计数。因此,单片机内部一般都设置可变成的定时/计数器,以简化系统设计,提高系统功能。所谓可编程就是指可通过指令来确定或改变其工作方式,应包括以下几个方面[5]:(1)确定其工作方式是定时还是计数;(2)预置定时或计数初值;(3)当定时时间到或家户终止时,要不要发中断请求;(4)如何启动定时或计数器工作。2.5.1定时/计数器结构与工作原理从图1-2(定时/计数器逻辑结构图)可以看出,2个16位定时/计数器T0和T1,分别由8位计数器TH0、TL0和TH1、TL1构成,他们都是以加“1”的方式完成计数。特殊功能寄存器TMOD控制定时/计数器的工作方式,TCON控制定时/计数器的启动运行并记录T0、T1的溢出标志。通过对TH0、TL0和TH1、TL1的初始化编程可以预置T0、T1的计数初值。通过对TMOD和TCON的初始化编程可以分别置入方式字和控制字,以指定其工作方式并控制T0、T1按规定的工作方式计数。T1T0a)工作原理a、定时器当设置为定时器工作方式时,计数输入信号来自内部振荡信号,在每个机器周期内定时器的计数器做一次“+1”运算。因此定时器亦可视为计算机机器周期的计数器。而每个机器周期又等于12个振荡脉冲,故定时器的计数速工作方式工作方式启动溢出启动溢出内总线(8AH)H(8CH)H(8BH)CPUTL1(8位)TH0(8位)TL0(8位)TCON(88H)TMOD(89H)(8DH)HTH1(8位)T0(P3.4)T1(P3.5)定时/计数器逻辑结构率为振荡频率的121(即12分频)。若单片机的晶振主频为12MHz,则计数周期为s1。如果定时器的计数器“+1”产生溢出,则标志着定时时间到。b、计数器当设置为计数器工作方式时,计数输入信号来自外部引脚T0(P3.4)、T1(P3.5)上的计数脉冲,外部每输入一个脉冲,计数器TH0、TL0(或TH1、TL1)做一次“+1”运算。而在实际工作中,计数器由计数脉冲的下降沿触发,及CPU在每个机器周期的S5P2期间对外部输入引脚T0(T1)采样,芮在一个机器周期中采样值位高电平,而在下一个机器周期中采样值为低电平,则紧跟着的再下一个机器周期的S3P1期间计数值就“+1”,完成一次计数操作。因此确认一次外部输入脉冲的有效跳变至少要花费2个机器周期,即24个振荡周期,所以最高计数频率为振荡频率的241。为了确保计数脉冲不被丢失,则脉冲的高电平及低电平均应保持一个机器周期以上。对外部计数脉冲的基本要求如上图所示,TCY为机器周期。不管时定时还是计数工作方式,定时器T0或T1再对内部时钟或外部脉冲计数时,不占用CPU的时间,除非产生溢出才可能中断CPU的当前操作。由此可见,定时/计数器是单片机内部效率高且工作灵活的部件。另外,每个定时/计数器还有四种工作方式,即有四种逻辑结构模式。其中工作方式0~2对T0和T1都是一样的,而方式3对两者是不同的[。计数器计数脉冲的基本要求TCYTCYT12.5.28051定时器模式的工作8051内含有2个16位的定时计数器,称为定时器0及定时器1,如同一般定时计数器的功能,其主要有两种作用:第一、执行一段特定时间长短的计时。第二、可以计算由T0或T1引脚输入的脉冲数。前者在应用上可以产生正确的时间延迟及定时去执行中断服务例程,这是单片机在软件控制程序上常用到的技巧,而后者的应用则是计数器或是计数器的设计。这两个定时器本身都有4种工作模式可供使用:(1)模式0:13位计时工作模式。(2)模式1:16位计时工作模式。(3)模式2:具有自动重新加载计数值的8位计时工作模式。(4)模式3:在此模式工作时,定时器1本身停止计时的工作。而定时器0分为两个独立的8位定时器由TL0及TH0来负责计时的任务。模式0到模式2中,定时器0和定时器1的使用方法都一样,只有在模式3时才不同。2.5.3定时计数器相关控制寄存器设计定时器相关控制寄存器说明如下表所示.(1)TCON寄存器每个位都可按位寻址,可分别设置或清除,适当地控制这些位便可控制定时器地动作。B7B6B5B4B3B2B1B0定时计数器相关控制寄存器及其说明TF1TR1TF0TR0IE1IT1IE0IE0其中有关符号说明如下:a.TF1:TCON.7,定时器1溢位标志,当定时器计时终止产生溢位时,硬件会自动设为1,而在执行过中断服务程序后,硬件会自动清除该位。b.TR1:TCON.6,定时器1计时启动位,通过软件来设置或清除做启动或停止计数的功能。c.TF0:TCON.5,定时器0溢位标志,其功能同TF1。d.TR0:TCON.4,定时器0定时启动位,其功能同TR1。e.IE1:TCON.3,外部中断1(引脚INT1)的中断设置标志。当INT1引脚由外部送入中断信号,而硬件检测到此信号时,会将此位设置。在执行过中断服务例程后,硬件会自动清除此位。f.IT1:TCON.2,外部中断1的中断信号类型设置,当IT1=1时,中断信号位负缘触发。若IT1=0时则为低电平触发。g.IE0:TCON.1,外部中断0(引脚INT0)的中断设置,当INT0引脚由外部送入中断信号,而硬件检测到此信号时将此位设置,在执行过中断服务程序后,硬件自动清除此位。h.IT0:TCON.0,外部中断0的中断信号类型设置,当IT0=1时,中断信号为负缘触发。若IT0=0时,则为低电平触发。定时器1定时器0(2)TMOD计时模式选择寄存器此寄存器不可按位寻址,其结构如下:B7B6B5B4B3B2B1B0GATEC/TM1M0GATEC/TM1M0其中的有关符号说明如下:a.GATE:定时器动作的开关控制位,当GATE=0时,定时器在TR0=1或TR1=1时会工作。而当GATE=1时,且TR0=1或TR1=1,定时器要在INT0或INT1引脚成为高电平时才会执行计时的工作。b.C/T:计时功能或计数功能的选择位,C/T=0执行计时工作,而C/T=1时才执行计数的功能。c.M0、M1:工作模式选择,其设置情况说明如表1-4所示。名称地址功能TCON88H定时器控制寄存器TMOD89H定时器工作模式选择寄存器TH08CH定时器0高8位计时寄存器TL08AH定时器0低8位计时寄存器TH18DH定时器1高8位计时寄存器TL18BH定时器1低8位计时寄存器TMOD寄存器的B1、B0位的设置及其说明(3)IE:中断启用寄存器可按位寻址,地址A8H,用来启用各种中断信号的产生,各个位说明如下:B7B6B5B4B3B2B1B0EA—ET2ESET1EX1ET0EX0其中的有关符号说明如下:a.EA(IE.7):EA=0时,所有中断禁用(中断不产生);EA=1时,各中断的产生由个别的启用位决定。b.—(IE.6):保留。c.ET2(IE.5):启用定时器2溢位的中断(8052用)。M1M0工作模式00模式001模式110模式211模式3d.ES(IE.4):启用串行端口的中断(ES=1启用,ES=0禁用)。e.ET1(IE.3):启用定时器1中断。f.EX1(IE.2):启用外部中断I