《基于单片机的音乐发生器设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的音乐发生器设计.docx(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、天 津 大 学 网 络 教 育 学 院专科毕业论文题目:基于单片机的音乐发生器设计完成期限:2016年1月8日 至 2016年4月20日学习中心:嘉兴专业名称:电气自动化技术学生:徐斌学生学号:指导教师:李娜娜学习文档 仅供参考基于单片机的音乐发生器设计学习文档 仅供参考引 言音乐电声的一个重要内容就是电子音乐。电子琴的出现,开辟了音乐的一个新天地。但是自从电子合成器问世以来,电子音乐就又进入了一个更高的阶段。 目前,由于电子音乐的普及,电子合成器合成器实际上是一台声音的频率合成仪,可以制作各种声音,改变各种音色可以解决相当一部分的歌唱及舞厅的伴奏问题。可以事先制作伴奏音乐或背景音乐,而不需要
2、乐队,或者部分代替乐队。由于音乐合成器制作和修改方便,成本低,音乐饱满,所以市场需求量很大,因此,世界许多国家的厂商都不断地在发展并推出新的型号,每年都要更新换代。当前的发展趋势是不断的采用先进技术,以取得更多、更好的音色。如扩展容量,这包括扩展槽口,增加软盘驱动器或硬盘,增加最大发音数目,增大存贮量,扩展琴键等;使功能多样化,如一台合成器可以同时发二种、四种甚至八种音色,即一台当作几台使用,或者把鼓机的节奏发生器功能、音序器的编辑功能放入合成器,让合成器代替电脑的主机等;扩展功能,例如有的合成器有“跟随”功能,即经预置,每一个音后可以跟随一个二度或三度音,“重叠”功能,轻奏或重奏时可以发不同
3、音调或音色;另外,合成器还向轻便、使用操作方便等方向发展。随着以法、德、意为代表的欧洲和以美国为代表的电子音乐、电脑音乐早期的大力发展,国际上许多国家纷纷开始引入电子音乐研究与创作。因此,电子音乐创作作为音乐科技领域发展的重要标志,在风格上也表达出比以往任何时代都鲜明的个性化特征。 电脑音乐也许不会成为今后音乐的主流,但它在整个人类音乐史上的地位已经不容置疑地确立了,相信它会越来越深入地浸透到音乐创作和欣赏的领域中,并且将在一定程度上影响人们对音乐的理解和诠释。用单片机制作的音乐发生器也会越来越多,这将必然成为一种趋势。学习文档 仅供参考第1章 绪 论单片机也被称为微控制器Microcontr
4、oller,是因为它最早被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使电脑系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛
5、的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端1的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和 核心处理的高端单片机甚至可以直接使用专用的Windows和Li
6、nux操作系统。单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的电脑。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。 、 、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个电脑系统集成到一个芯片上。相当于一个微型的电脑,和电脑相比,单片机只缺少
7、了I/O设备。概括的讲:一块芯片就成了一台电脑。它的体积小、质量轻、价格廉价、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解电脑原理与结构的最正确选择。单片机内部也用和电脑功能类似的模块,比方CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元,用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影,它主要是作为控制部分的核心部件。 它是一种在线式实时控制电脑,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也
8、是和离线式电脑的比方家用PC的主要区别。 单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性! 由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级
9、为什么还要用呢?很多高级的语言已经到达了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用电脑那样的CPU,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会到达几十K的尺寸!对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。 单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型电脑上的操作系统和应用软件拿到家用PC上来运行,家用PC的也是承受不了的。可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人电脑,简称PC机。它由主机、键
10、盘、显示器等组成。还有一类电脑,大多数人却不怎么熟悉。这种电脑就是把智能赋予各种机械的单片机。顾名思义,这种电脑的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的成效,常在产品名称前冠以形容词“智能型”,如智能型洗衣机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可
11、能就卡在产品未使用单片机或其它可编程逻辑器件上。1.2 单片机历史单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。 1SCM即单片微型电脑Single Chip Microcomputer阶段,主要是寻求最正确的单片形态嵌入式系统的最正确体系结构。“创新模式”获得成功,奠定了SCM与通用电脑完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel公司功不可没。 2MCU即微控制器Micro Controller Unit阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相
12、关,因此,发展MCU的重任不可防止地落在电气、电子技术厂家。从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。在发展MCU方面,最著名的厂家当数Philips公司。 Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型电脑迅速发展到微控制器。因此,当我们回忆嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。 3单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoCSystem on Chip化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机
13、应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型电脑、单片微控制器延伸到单片应用系统。第2章 Intel 51系列单片机MCS-51单片机简述MCS-51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。INTEL公司将MCS51的核心技术授权给了很多其它公司,所以
14、有很多公司在做以8051为 核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就 是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。MCS-51系列单片机分为两大系列,即51子系列与52子系列。51子系列:基本型,根据片内ROM的配置,对应的芯片为8031、8051、8751、8951;52子系列:增强型,根据片内ROM的配置,对应的芯片为8032、8052、8752、8952;2.2 8051与80C51的区别 80C51单片机是在8051的基础上发展起来的,也就是说在单片机的发展过程中是先有8051,然后才有80C51的。8051单片机与80C51
15、单片机从外形看 是完全一样的,其指令系统、引脚信号、总线等完全一致完全兼容,也就是说在8051下开发的软件完全可以在80C51上应用,反过来,在89C51下开发的软件也可以在8051上应用。这两种单片机是完全可移植的。 8051与80C51单片机的主要差异就在于芯片的制造工艺上。80C51的制造工艺是在8051基础上进行了改良。 8051系列单片机采用的是HMOS工艺:高速度、高密度; 80C51系列单片机采用的是CHMOS工艺:高速度、高密度、低功耗;也就是说80C51单片机是一种低功耗单片机。2.3 8051单片机的引脚功能图中给出了40引脚的8051单片机的引脚图,40个引脚按引脚功能大
16、致可分为4个种类:电源、时钟、控制和I/O引脚。图2.1 8051单片机的引脚图 电源 1VCC - 芯片电源,接+5V; 2VSS - 接地端; 注:用万用表测试单片机引脚电压一般为0v或者5v,这是标准的TTL电平。但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这是万用表的响应速度没这么快而已,在某一个瞬间单片机引脚电压仍保持在0v或者5v。 时钟时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 控制线 1 ALE/PROG:地址锁存允许/片内EPROM编程脉冲。 ALE功能:用来锁存P0口送出的低8位地址。 PROG功能:片内有EPRO
17、M的芯片,在EPROM编程期间,此引脚输入编程脉冲。2 PSEN:外ROM读选通信号。3 RST/VPD:复位/备用电源。 RSTReset功能:复位信号输入端。 VPD功能:在Vcc掉电情况下,接备用电源。4 EA/Vpp:内外ROM选择/片内EPROM编程电源。 EA功能:内外ROM选择端。 Vpp功能:片内有EPROM芯片,在EPROM编程期间,施加编程电源Vpp。 I/O线80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号属控制总线,P3口第二功能为:P30 RXD 串行输入口P31 TXD 串行输出口P3
18、2 INT0 外部中断0低电平有效P33 INT1 外部中断1低电平有效P34 T0 定时计数器0P35 T1 定时计数器1P36 WR 外部数据存储器写选通低电平有效P37 RD 外部数据存储器读选通低电平有效2.4 51单片机内部结构振荡器及定时器电路CPU4K程序存储器128B数据存储器2个16位定时/计数器64K总线扩展控制可编程I/O可编程串行口中断系统图2.2 51单片机内部结构图从内部结构简图可以看出,51单片机内部有以下主要部分:1) CPU51 2) 振荡器及定时电路3)4KB程序存储器 4) 128B数据存储器5) 2个16位定时/计数器 6) 64KB总线扩展控制7) 可
19、编程I/O 8) 可编程串行口9) 中断系统 2.5 51系列的特性 1)片内存储器容量较小,一般内部ROM:8KB以下,内部RAM:256KB以下 2)可靠性高 3)易扩展4)控制功能强5)易于开发2.6 单片机相关常用名词解释总线:指能为多个部件服务的信息传送线,在微机系统中各个部件通过总线相互通 信。 地址总线AB:地址总线是单向的,用于传送地址信息。地址总线的宽度为16位,因此基外部存储器直接寻址64K,16位地址总线由P0口经地址锁存器提供低8位地址A0A7,P2口直接提供高8位地址A8A15。 数据总线DB:一般为双向,用于CPU与存储器,CPU与外设、或外设与外 设之间传送数据信
20、息包括实际意义的数据和指令码。数据总线宽度为8位,由P0口提供。 控制总线CB:是电脑系统中所有控制信号的总称,在控制总线中传送的是控制信息。由P3口的第二功能状态和4根独立的 控制总线,RESET、EA、ALE、PSEN组成。 存储器:用来存放电脑中的所有信息:包括程序、原始数据、运算的中间结果及最 终结果等。 只读存储器ROM:只读存 储器在使用时,只能读出而不能写入,断电后ROM中的信息不会丧失。因此一般用来存放一些固定程序,如监控程序、子程 序、字库及数据表等。ROM按存储信息的方法又可分为以下几种: 掩膜ROM:掩膜ROM也称固定ROM,它是由厂家编好程序写入ROM称固化供用户使 用
21、,用户不能更改内部程序,其特点是价格廉价。可编程的只读存储器PROM:它的内容可由用户根据自已所编程序一次性写入,一旦写入,只能读出,而不能再进行更改,这类存储器现在也成为OTPOnly Time Programmable。可改写的只读存储器EPROM:前两种ROM只能进行一次性写入,因而用户较少使用,目前较为流行的ROM芯片 为EPROM。因为它的内容可以通过紫外线照射而彻底擦除,擦除后又可重新写入新的程序。 可电改写只读存储器EEPROM:EEPROM可用电的方法写入和清除其内容,其编程电压和清除电压均与微机CPU的5V工作电压相同,不需另 加电压。它既有与RAM一样读写操作简便,又有数据
22、不会因掉电而丧失的优点,因而使用极为方 便。现在这种存储器的使用最为广泛。 随机存储器RAM:这种存储 器又叫读写存储器。它不仅能读取存放在存储单元中的数据,还能随时写入新的数据,写入后原来的数据就丧失了。断电后RAM中的信息全部丧失。因此,RAM常用 于存放经常要改变的程序或中间计算结果等信息。 RAM按照存储信息的方式,又可分为静态和动态两种。静态SRAM:其特点是只要有电源加于存储器,数据就能长期保存。动态DRAM:写入的信息只能保存假设干ms时间,因此,每隔一定时间必须重新写入一次,以保持原来的信息不变。 可现场改写的非易失性存储器:这种存储器的特点是:从原理上看,它们属于ROM型存储
23、器,从功能上看,它们又可以随时改写信息,作用又相当于RAM。所以,ROM、RAM的定义和划分已逐渐的失去意义。快擦写存储器FLASH:这种存储器是在EPROM和EEPROM的制造基础上产生的一种非易失性存储器。其集成度高,制造成本低于DRAM,既具有SRAM读写的灵活性和较快的访问速度,又具有ROM在断电后可不丧失信息的特点,所以发展迅速。铁电存储器FRAM:它是利用铁电材料极化方向来存储数据的。它的特点是集成度高,读写速度快,成本低,读写周期短。 时钟周期:电脑在时钟信号的作用下,以节拍方式工作。因此必须有一 个时钟发生电路,输入微处理器的时钟信号的周期称为时钟周期。 机器周期:机器完成一个
24、动作所需的时间称为机器周期,一般由一个或一个以上的时钟周期组成。在我们讲述的MCS-51系列单片机中,一个机器周期由12个时钟周期组成。 指令周 期:执行一条指令如“MOVA,#34H”,该指令的含义是将立即数34H传送到微处理器内的累加器A中所需时间称为指令周期,它由一个到数个机器周期组成。指令周期的长短取决于指令的类型,即指令将要进行的 操作步聚及复杂程度。 汇编:是能完成一定任务的机器指令的集合。 二进制数:只有0和1两个数码,基数为二。 16进制数:采用0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F等16个数码,其中A-F相应的十进数为10-15,基数是16。 指令:是
25、电脑所能执行的一种基本操作的描述,是电脑软件的基本单元。 字节:8位二进制数组成一个字节,在存储器中以字节为单位存储信息。 字:2个字节组成一个字。 双字:2个字组成一个双字。 补码:机器数可用不同的码制来表示,补码表示法是最常用的一种,正数采用符号+绝对值表示,即数的最高有效位为0,数的其余部分则表示数的绝对值;负数的表示要麻烦一些,先写出与该负数相对应的正数的补码表示,然后将其按位求反,最后在末位加1,就可以得到该负数的补码表示了。 偏移地址:存储单元距离段起始位置的偏移量简称偏移地址,由于限定每段不超过64KB,所以偏移地址也可以用16位数据表示。 物理地址:在1M字节的存储器里,每一个
26、存储单元都有一个唯一的20位地址,称为该存储单元的物理地址,把段地址左移4位再加上偏移地址就形成物理地址。代码段:程序员在编制程序时要把存储器划分成段,代码段用来存放程序的指令序列,代码段的段地址存放在CS中,指令指针寄存器IP指示代 码段中指令的偏移地址,处理器利用CS:IP取得下一条要执行的指令。 数据段:数据段存放当前运行程序所用的数据,数据段的段地址存放在DS中。 附加段: 附加段是附加的数据段,也用于数据的保存,另外,串操作指令将附加段作为其目的操作数的存放区域。附加段的段地址存放在ES中。 堆栈段: 堆栈段是堆栈所在的主存区域,堆栈段的段地址存放在SS中,堆栈指针寄存器SP指示堆栈
27、栈顶的偏移地址,处理器利用SS:SP操作堆栈中的数据。 堆栈:堆栈是一个后进先出的主存区域,位于堆栈段 中,使用SS段寄存器记录其段地址。它只有一个出入口,即当前栈顶,栈顶是地址较小的一端低端,它用堆栈指针寄存器SP指定。堆栈有两种以字为单位的基本操作,对应两条基本指令:进栈指令PUSH和出栈指令POP。 伪指令:汇编语言程序的语句除指令外还包括伪指令和宏指令,伪指令又称为伪操作,它不象机器指令那样是在程序运行期间由电脑来执行的,它是在汇编程序对源程序汇 编期间由汇编程序处理的操作,完成诸如数据定义、分配存储区、指示程序结束等功能。 宏指令:宏是源程序中一段有独立功能的程序代码,它只需要在源程
28、序中定义一次,就可以多次调用,调用时只需要用一个宏指令语句就可以了。宏指令是用户自定义的指令,在编程时将多次使用的功能用一条宏指令来代替。 子程序:子程序又称为过程,它相当于高级语言中的过程和函数。在一个程序的不同部分,往往要用到类似的程序段,这些程序段的功能和结构形式都相同,只是某些变量的赋值不同,此时就可以把这些程序段写成子程序形式,以便需要时可以调用它;某些常用的特定功能的程序段也可编制成子程序的形式供用户使用。 中断:中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作,这些引起中断的事件称为中断源,它们可能是来自外设的输入输出请求,也可能是电脑的一些异常事故或其它内部原因。
29、中断处理程序:当中断发生时,处理器中止当前正在运行的程序,而转到处理特殊事件的程序段中去执行,这种处理中断的子程序就是中断处理程序,又称为中断服务程序。 中断处理程序的入口地址被安排在中断向量表中。 BIOS中断:在存储器系统中,从地址0FE000H开始的8KROM中装有BIOSBasic Input/OutputSystem例行程序。驻留在ROM中的基本输入输出程序BIOS提 供了系统加电自检、引导装入、主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。BIOS中断给程序员编程带来很大方便,程序员不必了解硬件I/O接口的特性,可直接用指令设置参数,然后中断调用BIOS中的程
30、序。 暂存器:用来暂存由数据总线或通用寄存器送来的操作数,并把它作为另一个操作数。 掉电保护:指在正常供电电源掉电时,迅速用备用直流电源供电,以保证在一段时间内信息不会丧失,当主电源恢复供电时,又自动切换为主电源供电。 寄存器寻址:操作数在寄存器中,由指令操作码中的rrr三位的值和PSW中RS1及RS0的状态,选中某个工作寄存器区的某个寄存器,然后进行相应的指令操 作。 波特率:即每秒钟传送二进制数的位数,波特率越高,数据传输的速度越快。 D/A转换:即将二进制数量转换成与其量值成正比的电流信号或电压信号。 A/D转换:即将模拟量转换成相应的数字量,然而送电脑处理。 串行方式:指数据的各位分时
31、传送,只需一条数据线,外加一条公共信号地线和假设干条控制信号线。 并行方式:指数据的各位同时传送,每一条数据都需要一条传输线。SLEEPMODI睡觉模式:保证程序内部运行,但与外部的传输等动作已停止的一种运行模式。 linking连接:把编译后生成的*.obj文件与其它*.obj文件合并成机器能识别的机器文件。 I²C:输入与输出共用一条传输线,而时钟由另一条线控制的一种串行传输方 式。 SFR特殊功能寄存器区:8051把CPU中的专用寄存器、并行端口锁存器、串行口与定时器/计数器内 的控制寄存器集中安排到一个区域,离散地分布在地址从80H到FFH范围内,这个区域称为特殊功能寄存器区
32、SFR。2.7 并行I/O口51单片机有四个并行I/O口:P0,P1,P2,P3。.1 P0端口的结构及工作原理P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及V1、V2场效应管驱动电路构成。在P0口中,有两个三态的缓冲器,在其的输出端可以是高电平、低电平,同时还有一种就是高阻状态或称为禁止状态,上面一个是读锁存器的缓冲器,下面一个是读引脚的缓冲器,读取P0.X引脚上的数据,要使这个三态缓冲器有效,引脚上的数据才会传输到内部数据总线上。在51单片机的32根I/O口线中都是用一个D触发器来构成锁存器的。D端是数据输入端,CP是控制端也就是时序控制信号输入端,Q是输出端,Q非是反向输
33、出端。在51单片机中,不需要外扩展存储器时,P0口可以作为通用的输入输出端口即I/O使用,对于8031内部没有ROM的单片机或者编写的程序超过了单片机内部的存储器容量,需要外扩存储器时,P0口就作为地址/数据总线使用。这个多路选择开关就是用于选择是做为普通I/O口使用还是作为数据/地址总线使用的选择开关了。当多路开关与下面接通时,P0口是作为普通的I/O口使用的,当多路开关是与上面接通时,P0口是作为地址/数据总线使用的。P0口的输出是由两个MOS管组成的推拉式结构,也就是说,这两个MOS管一次只能导通一个,当V1导通时,V2就截止,当V2导通时,V1截止。P0口作为I/O端口使用时,多路开关
34、的控制信号为0低电平,V1管截止,多路开关是与锁存器的Q非端相接的即P0口作为I/O口线使用。作为地址/数据线使用时,多路开关的控制信号为1,V1管由地址/数据线决定,多路开关与地址/数据线连接。输出过程:当写锁存器信号CP有效,数据总线的信号锁存器的输入端D锁存器的反向输出Q非端多路开关V2管的栅极V2的漏极到输出端P0.X。这时多路开关的控制信号为低电平0,V1管是截止的,所以作为输出口时,P0是漏极开路输出,类似于OC门,当驱动上接电流负载时,需要外接上拉电阻。地址输出过程时,控制信号为1,地址信号为0时,与门输出低电平,V1管截止;反相器输出高电平,V2管导通,输出引脚的地址信号为低电
35、平。反之,控制信号为0、地址信号为1,“与门”输出为高电平,V1管导通;反相器输出低电平,V2管截止,输出引脚的地址信号为高电平。可见,在输出“地址/数据”信息时,V1、V2管是交替导通的,负载能力很强,可以直接与外设存储器相连,无须增加总线驱动器。作为数据总线的输出过程时,如果该指令是输出数据,如MOVX DPTR,A将累加器的内容通过P0口数据总线传送到外部RAM中,则多路开关“控制”信号为1,“与门”解锁,与输出地址信号的工作流程类似,数据据由“地址/数据”线反相器V2场效应管栅极V2漏极输出。输入过程:读芯片引脚上的数据时,读引脚缓冲器打开,通过内部数据总线输入。通过打开读锁存器三态缓
36、冲器,读取锁存器输出端Q的状态。作为数据总线使用时,在访问外部程序存储器时,P0口输出低8位地址信息后,将变为数据总线,以便读指令码输入。在取指令期间,“控制”信号为“0”,V1管截止,多路开关也跟着转向锁存器反相输出端Q非;CPU自动将0FFH11111111,即向D锁存器写入一个高电平1写入P0口锁存器,使V2管截止,在读引脚信号控制下,通过读引脚三态门电路将指令码读到内部总线,这个过程和I/O读引脚过程是一样的。在输入状态下,从锁存器和从引脚上读来的信号一般是一致的,但也有例外。例如,当从内部总线输出低电平后,锁存器Q0,Q非1,场效应管T2开通,端口线呈低电平状态。此时无论端口线上外接
37、的信号是低电乎还是高电平,从引脚读入单片机的信号都是低电平,因而不能正确地读入端口引脚上的信号。又如,当从内部总线输出高电平后,锁存器Q1,Q非0,场效应管T2截止。如外接引脚信号为低电平,从引脚上读入的信号就与从锁存器读入的信号不同。为此,8031单片机在对端口P0-P3的输入操作上,有如下约定:凡属于读-修改-写方式的指令,从锁存器读入信号,其它指令则从端口引脚线上读入信号。读-修改-写指令的特点是,从端口输入(读)信号,在单片机内加以运算(修改)后,再输出(写)到该端口上。这样安排的原因在于读-修改-写指令需要得到端口原输出的状态,修改后再输出,读锁存器而不是读引脚,可以防止因外部电路的
38、原因而使原端口的状态被读错。当P0作为地址/数据总线使用时,在读指令码或输入数据前,CPU自动向P0口锁存器写入0FFH,破坏了P0口原来的状态。因此,不能再作为通用的I/O端口。在系统设计时务必注意,即程序中不能再含有以P0口作为操作数包含源操作数和目的操作数的指令。.2 P1端口的结构及工作原理P1端口与P0端口的主要差异在于,P1端口用内部上拉电阻R代替了P0端口的场效应管T1,并且输出的信息仅来自内部总线。由内部总线输出的数据经锁存器反相和场效应管反相后,锁存在端口线上,所以,P1端口是具有输出锁存的静态口。要正确地从引脚上读入外部信息,必须先使场效应管关断,以便由外部输入的信息确定引
39、脚的状态。为此,在作引脚读入前,必须先对该端口写入l。具有这种操作特点的输入/输出端口,称为准双向I/O口。8051单片机的P1、P2、P3都是准双向口。P0端口由于输出有三态功能,输入前,端口线已处于高阻态,无需先写入l后再作读操作。单片机复位后,各个端口已自动地被写入了1,此时,可直接作输入操作。如果在应用端口的过程中,已向P1-P3端口线输出过0,则再要输入时,必须先写1后再读引脚,才能得到正确的信息。此外,随输入指令的不同,P1端口也有读锁存器与读引脚之分。2.7.3 P2端口的结构及工作原理P2端口在片内既有上拉电阻,又有切换开关MUX,所以P2端口在功能上兼有P0端口和P1端口的特
40、点。这主要表现在输出功能上,当切换开关向下接通时,从内部总线输出的一位数据经反相器和场效应管反相后,输出在端口引脚线上;当多路开关向上时,输出的一位地址信号也经反相器和场效应管反相后,输出在端口引脚线上。对于8031单片机必须外接程序存储器才能构成应用电路或者我们的应用电路扩展了外部存储器,而P2端口就是用来周期性地输出从外存中取指令的地址(高8位地址),因此,P2端口的多路开关总是在进行切换,分时地输出从内部总线来的数据和从地址信号线上来的地址。因此P2端口是动态的I/O端口。输出数据虽被锁存,但不是稳定地出现在端口线上。其实,这里输出的数据往往也是一种地址,只不过是外部RAM的高8位地址。
41、 在输入功能方面,P2端口与P0和H端口相同,有读引脚和读锁存器之分,并且P2端口也是准双向口。 可见,P2端口的主要特点包括: 1不能输出静态的数据; 2自身输出外部程序存储器的高8位地址; 3执行MOVX指令时,还输出外部RAM的高位地址,故称P2端口为动态地址端口。P2作为I/O端口使用时的工作过程:当没有外部程序存储器或虽然有外部数据存储器,但容易不大于256B,即不需要高8位地址时在这种情况下,不能通过数据地址寄存器DPTR读写外部数据存储器,P2口可以I/O口使用。这时,控制信号为“0”,多路开关转向锁存器同相输出端Q,输出信号经内部总线锁存器同相输出端Q反相器V2管栅极V2管9漏
42、极输出。由于V2漏极带有上拉电阻,可以提供一定的上拉电流,负载能力约为8个TTL与非门;作为输出口前,同样需要向锁存器写入“1”,使反相器输出低电平,V2管截止,即引脚悬空时为高电平,防止引脚被钳位在低电平。读引脚有效后,输入信息经读引脚三态门电路到内部数据总线。P2作为地址总线使用时的工作过程:P2口作为地址总线时,“控制”信号为1,多路开关车向地址线即向上接通,地址信息经反相器V2管栅极漏极输出。由于P2口输出高8位地址,与P0口不同,无须分时使用,因此P2口上的地址信息程序存储器上的A15A8功数据地址寄存器高8位DPH保存时间长,无须锁存。.4 P3端口的结构及工作原理P3口是一个多功
43、能口,它除了可以作为I/O口外,还具有第二功能P3端口和Pl端口的结构相似,区别仅在于P3端口的各端口线有两种功能选择。当处于第一功能时,第二输出功能线为1,此时,内部总线信号经锁存器和场效应管输入/输出,其作用与P1端口作用相同,也是静态准双向I/O端口。当处于第二功能时,锁存器输出1,通过第二输出功能线输出特定的内含信号,在输入方面,即可以通过缓冲器读入引脚信号,还可以通过替代输入功能读入片内的特定第二功能信号。由于输出信号锁存并且有双重功能,故P3端口为静态双功能端口。使P3端口各线处于第二功能的条件是:1串行I/O处于运行状态(RXD,TXD);2打开了处部中断(INT0,INT1);
44、3定时器/计数器处于外部计数状态(T0,T1)4执行读写外部RAM的指令(RD,WR)在应用中,如不设定P3端口各位的第二功能(WR,RD信号的产生不用设置),则P3端口线自动处于第一功能状态,也就是静态IO端口的工作状态。在更多的场合是根据应用的需要,把几条端口线设置为第二功能,而另外几条端口线处于第一功能运行状态。在这种情况下,不宜对P3端口作字节操作,需采用位操作的形式。2.8 驱动能力P0端口能驱动8个LSTTL负载。如需增加负载能力,可在P0总线上增加总线驱动器。P1,P2,P3端口各能驱动4个LSTTL负载。由于P0-P3端口已映射成特殊功能寄存器中的P0-P3端口寄存器,所以对这
45、些端口寄存器的读写就实现了信息从相应端口的输入输出。第3章 系统硬件设计根据对8051系列单片机功能的了解,系统硬件设计也就有了依据。下面首先是对本系统设计中所用到的主要器材8051单片机开发板的介绍。3.1 8051单片机开发板简介实验板硬件部分主要由8051芯片及外围电路、LCD、键盘、串行接口驱动电路、IC插线及其他元件扩展槽、输出开关量接线排、输入开关量接线排等部分组成,其主要作用是通过8051芯片监控程序和电脑进行通信,完成芯片程序的写入、运行、断点调试。实际接线时,直接将220V交流电源接入模块化电源,模块化电源将220V交流电转为5V直流电给系统供电。电源部分对强弱电进行了物理隔
46、离。板上的串行接口为九芯标准串行接口,通过三芯发送、接收、地与电脑的串行接口相连,实现开发板与电脑通信。3.2 系统硬件设计需求 硬件设备本系统采用的是8051开发板。对于基于单片机的音乐发生器的设计,我们只需用到开发板里的一部分。选用的设备分别是:51单片机一片, LM386芯片一个, LED小灯一个,按键17个,电阻假设干个,电容假设干个,扬声器一个,串行接口一个,连线假设干。 设计目的通过基于单片机的音乐发生器的设计,了解51系列单片机,掌握51单片机的特性功能,为此课题的软件设计提供一个很好的运行平台, 同时培养我们的单片机开发能力。 设计任务与要求1设计任务设计一个能够控制扬声器产生不同音调的模拟电路,并且要求扬声器的音调可以通过键盘来控制。2设计要求音乐发生器系统利用单片机的输出功能,令扬声器产生不同的音调。整个系统使用一个4*4小键盘作为输入,不同键的输入产生不同