基于单片机的音乐发生器设计Word格式文档下载.docx
- 文档编号:16803962
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:20
- 大小:251.79KB
基于单片机的音乐发生器设计Word格式文档下载.docx
《基于单片机的音乐发生器设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的音乐发生器设计Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!
对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。
单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。
一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用PC上来运行,家用PC的也是承受不了的。
可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。
不过,这种电脑,通常是指个人计算机,简称PC机。
它由主机、键盘、显示器等组成。
还有一类计算机,大多数人却不怎么熟悉。
这种计算机就是把智能赋予各种机械的单片机。
顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。
因为它体积小,通常都藏在被控机械的“肚子”里。
它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。
现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。
现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。
究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。
1.2单片机历史
单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。
1)SCM即单片微型计算机(SingleChipMicrocomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。
“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。
在开创嵌入式系统独立发展道路上,Intel公司功不可没。
2)MCU即微控制器(MicroControllerUnit)阶段,主要的技术发展方向是:
不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。
它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。
从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。
在发展MCU方面,最著名的厂家当数Philips公司。
Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。
因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。
3)单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;
因此,专用单片机的发展自然形成了SoC(SystemonChip)化趋势。
随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。
因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。
第2章Intel51系列单片机
2.1
MCS-51单片机简述
MCS-51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。
INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。
MCS-51系列单片机分为两大系列,即51子系列与52子系列。
51子系列:
基本型,根据片内ROM的配置,对应的芯片为8031、8051、8751、8951;
52子系列:
增强型,根据片内ROM的配置,对应的芯片为8032、8052、8752、8952;
2.28051与80C51的区别
80C51单片机是在8051的基础上发展起来的,也就是说在单片机的发展过程中是先有8051,然后才有80C51的。
8051单片机与80C51单片机从外形看是完全一样的,其指令系统、引脚信号、总线等完全一致(完全兼容),也就是说在8051下开发的软件完全可以在80C51上应用,反过来,在89C51下开发的软件也可以在8051上应用。
这两种单片机是完全可移植的。
8051与80C51单片机的主要差别就在于芯片的制造工艺上。
80C51的制造工艺是在8051基础上进行了改进。
8051系列单片机采用的是HMOS工艺:
高速度、高密度;
80C51系列单片机采用的是CHMOS工艺:
高速度、高密度、低功耗;
也就是说80C51单片机是一种低功耗单片机。
2.38051单片机的引脚功能
图中给出了40引脚的8051单片机的引脚图,40个引脚按引脚功能大致可分为4个种类:
电源、时钟、控制和I/O引脚。
图2.18051单片机的引脚图
2.3.1电源
1)VCC-芯片电源,接+5V;
2)VSS-接地端;
注:
用万用表测试单片机引脚电压一般为0v或者5v,这是标准的TTL电平。
但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这是万用表的响应速度没这么快而已,在某一个瞬间单片机引脚电压仍保持在0v或者5v。
2.3.2时钟
时钟:
XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。
2.3.3控制线
1)ALE/PROG:
地址锁存允许/片内EPROM编程脉冲。
①ALE功能:
用来锁存P0口送出的低8位地址。
②PROG功能:
片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
2)PSEN:
外ROM读选通信号。
3)RST/VPD:
复位/备用电源。
①RST(Reset)功能:
复位信号输入端。
②VPD功能:
在Vcc掉电情况下,接备用电源。
4)EA/Vpp:
内外ROM选择/片内EPROM编程电源。
①EA功能:
内外ROM选择端。
②Vpp功能:
片内有EPROM芯片,在EPROM编程期间,施加编程电源Vpp。
2.3.4I/O线
80C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线),
P3口第二功能为:
P30RXD串行输入口
P31TXD串行输出口
P32INT0外部中断0(低电平有效)
P33INT1外部中断1(低电平有效)
P34T0定时计数器0
P35T1定时计数器1
P36WR外部数据存储器写选通(低电平有效)
P37RD外部数据存储器读选通(低电平有效)
2.451单片机内部结构
图2.251单片机内部结构图
从内部结构简图可以看出,51单片机内部有以下主要部分:
1)CPU512)振荡器及定时电路
3)4KB程序存储器4)128B数据存储器
5)2个16位定时/计数器6)64KB总线扩展控制
7)可编程I/O8)可编程串行口
9)中断系统
2.551系列的特性
1)片内存储器容量较小,一般内部ROM:
8KB以下,内部RAM:
256KB以下
2)可靠性高
3)易扩展
4)控制功能强
5)易于开发
2.6单片机相关常用名词解释
总线:
指能为多个部件服务的信息传送线,在微机系统中各个部件通过总线相互通信。
地址总线(AB):
地址总线是单向的,用于传送地址信息。
地址总线的宽度为16位,因此基外部存储器直接寻址64K,16位地址总线由P0口经地址锁存器提供低8位地址(A0~A7),P2口直接提供高8位地址(A8~A15)。
数据总线(DB):
一般为双向,用于CPU与存储器,CPU与外设、或外设与外设之间传送数据信息(包括实际意义的数据和指令码)。
数据总线宽度为8位,由P0口提供。
控制总线(CB):
是计算机系统中所有控制信号的总称,在控制总线中传送的是控制信息。
由P3口的第二功能状态和4根独立的控制总线,RESET、EA、ALE、PSEN组成。
存储器:
用来存放计算机中的所有信息:
包括程序、原始数据、运算的中间结果及最终结果等。
只读存储器(ROM):
只读存储器在使用时,只能读出而不能写入,断电后ROM中的信息不会丢失。
因此一般用来存放一些固定程序,如监控程序、子程序、字库及数据表等。
ROM按存储信息的方法又可分为以下几种:
掩膜ROM:
掩膜ROM也称固定ROM,它是由厂家编好程序写入ROM(称固化)供用户使用,用户不能更改内部程序,其特点是价格便宜。
可编程的只读存储器(PROM):
它的内容可由用户根据自已所编程序一次性写入,一旦写入,只能读出,而不能再进行更改,这类存储器现在也成为OTP(OnlyTimeProgrammable)。
可改写的只读存储器EPROM:
前两种ROM只能进行一次性写入,因而用户较少使用,目前较为流行的ROM芯片为EPROM。
因为它的内容可以通过紫外线照射而彻底擦除,擦除后又可重新写入新的程序。
可电改写只读存储器(EEPROM):
EEPROM可用电的方法写入和清除其内容,其编程电压和清除电压均与微机CPU的5V工作电压相同,不需另加电压。
它既有与RAM一样读写操作简便,又有数据不会因掉电而丢失的优点,因而使用极为方便。
现在这种存储器的使用最为广泛。
随机存储器(RAM):
这种存储器又叫读写存储器。
它不仅能读取存放在存储单元中的数据,还能随时写入新的数据,写入后原来的数据就丢失了。
断电后RAM中的信息全部丢失。
因此,RAM常用于存放经常要改变的程序或中间计算结果等信息。
RAM按照存储信息的方式,又可分为静态和动态两种。
静态SRAM:
其特点是只要有电源加于存储器,数据就能长期保存。
动态DRAM:
写入的信息只能保存若干ms时间,因此,每隔一定时间必须重新写入一次,以保持原来的信息不变。
可现场改写的非易失性存储器:
这种存储器的特点是:
从原理上看,它们属于ROM型存储器,从功能上看,它们又可以随时改写信息,作用又相当于RAM。
所以,ROM、RAM的定义和划分已逐渐的失去意义。
快擦写存储器(FLASH):
这种存储器是在EPROM和EEPROM的制造基础上产生的一种非易失性存储器。
其集成度高,制造成本低于DRAM,既具有SRAM读写的灵活性和较快的访问速度,又具有ROM在断电后可不丢失信息的特点,所以发展迅速。
铁电存储器FRAM:
它是利用铁电材料极化方向来存储数据的。
它的特点是集成度高,读写速度快,成本低,读写周期短。
时钟周期:
计算机在时钟信号的作用下,以节拍方式工作。
因此必须有一个时钟发生电路,输入微处理器的时钟信号的周期称为时钟周期。
机器周期:
机器完成一个动作所需的时间称为机器周期,一般由一个或一个以上的时钟周期组成。
在我们讲述的MCS-51系列单片机中,一个机器周期由12个时钟周期组成。
指令周期:
执行一条指令(如“MOV
A,#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。
指令:
是计算机所能执行的一种基本操作的描述,是计算机软件的基本单元。
字节:
8位二进制数组成一个字节,在存储器中以字节为单位存储信息。
字:
2个字节组成一个字。
双字:
2个字组成一个双字。
补码:
机器数可用不同的码制来表示,补码表示法是最常用的一种,正数采用符号+绝对值表示,即数的最高有效位为0,数的其余部分则表示数的绝对值;
负数的表示要麻烦一些,先写出与该负数相对应的正数的补码表示,然后将其按位求反,最后在末位加1,就可以得到该负数的补码表示了。
偏移地址:
存储单元距离段起始位置的偏移量简称偏移地址,由于限定每段不超过64KB,所以偏移地址也可以用16位数据表示。
物理地址:
在1M字节的存储器里,每一个存储单元都有一个唯一的20位地址,称为该存储单元的物理地址,把段地址左移4位再加上偏移地址就形成物理地址。
代码段:
程序员在编制程序时要把存储器划分成段,代码段用来存放程序的指令序列,代码段的段地址存放在CS中,指令指针寄存器IP指示代码段中指令的偏移地址,处理器利用CS:
IP取得下一条要执行的指令。
数据段:
数据段存放当前运行程序所用的数据,数据段的段地址存放在DS中。
附加段:
附加段是附加的数据段,也用于数据的保存,另外,串操作指令将附加段作为其目的操作数的存放区域。
附加段的段地址存放在ES中。
堆栈段:
堆栈段是堆栈所在的主存区域,堆栈段的段地址存放在SS中,堆栈指针寄存器SP指示堆栈栈顶的偏移地址,处理器利用SS:
SP操作堆栈中的数据。
堆栈:
堆栈是一个"
后进先出"
的主存区域,位于堆栈段中,使用SS段寄存器记录其段地址。
它只有一个出入口,即当前栈顶,栈顶是地址较小的一端(低端),它用堆栈指针寄存器SP指定。
堆栈有两种以字为单位的基本操作,对应两条基本指令:
进栈指令PUSH和出栈指令POP。
伪指令:
汇编语言程序的语句除指令外还包括伪指令和宏指令,伪指令又称为伪操作,它不象机器指令那样是在程序运行期间由计算机来执行的,它是在汇编程序对源程序汇编期间由汇编程序处理的操作,完成诸如数据定义、分配存储区、指示程序结束等功能。
宏指令:
宏是源程序中一段有独立功能的程序代码,它只需要在源程序中定义一次,就可以多次调用,调用时只需要用一个宏指令语句就可以了。
宏指令是用户自定义的指令,在编程时将多次使用的功能用一条宏指令来代替。
子程序:
子程序又称为过程,它相当于高级语言中的过程和函数。
在一个程序的不同部分,往往要用到类似的程序段,这些程序段的功能和结构形式都相同,只是某些变量的赋值不同,此时就可以把这些程序段写成子程序形式,以便需要时可以调用它;
某些常用的特定功能的程序段也可编制成子程序的形式供用户使用。
中断:
中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作,这些引起中断的事件称为中断源,它们可能是来自外设的输入输出请求,也可能是计算机的一些异常事故或其它内部原因。
中断处理程序:
当中断发生时,处理器中止当前正在运行的程序,而转到处理特殊事件的程序段中去执行,这种处理中断的子程序就是中断处理程序,又称为中断服务程序。
中断处理程序的入口地址被安排在中断向量表中。
BIOS中断:
在存储器系统中,从地址0FE000H开始的8KROM中装有BIOS(Basic
Input/Output
System)例行程序。
驻留在ROM中的基本输入输出程序BIOS提供了系统加电自检、引导装入、主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。
BIOS中断给程序员编程带来很大方便,程序员不必了解硬件I/O接口的特性,可直接用指令设置参数,然后中断调用BIOS中的程序。
暂存器:
用来暂存由数据总线或通用寄存器送来的操作数,并把它作为另一个操作数。
掉电保护:
指在正常供电电源掉电时,迅速用备用直流电源供电,以保证在一段时间内信息不会丢失,当主电源恢复供电时,又自动切换为主电源供电。
寄存器寻址:
操作数在寄存器中,由指令操作码中的rrr三位的值和PSW中RS1及RS0的状态,选中某个工作寄存器区的某个寄存器,然后进行相应的指令操作。
波特率:
即每秒钟传送二进制数的位数,波特率越高,数据传输的速度越快。
D/A转换:
即将二进制数量转换成与其量值成正比的电流信号或电压信号。
A/D转换:
即将模拟量转换成相应的数字量,然而送计算机处理。
串行方式:
指数据的各位分时传送,只需一条数据线,外加一条公共信号地线和若干条控制信号线。
并行方式:
指数据的各位同时传送,每一条数据都需要一条传输线。
SLEEP
MODI
睡觉模式:
保证程序内部运行,但与外部的传输等动作已停止的一种运行模式。
linking
连接:
把编译后生成的
*.obj
文件与其它
*.obj文件合并成机器能识别的机器文件。
I&
sup2;
C:
输入与输出共用一条传输线,而时钟由另一条线控制的一种串行传输方式。
SFR
特殊功能寄存器区:
8051
把
CPU
中的专用寄存器、并行端口锁存器、串行口与定时器/计数器内的控制寄存器集中安排到一个区域,离散地分布在地址从
80H
到
FFH
范围内,这个区域称为特殊功能寄存器区
SFR。
2.7并行I/O口
51单片机有四个并行I/O口:
P0,P1,P2,P3。
2.7.1P0端口的结构及工作原理
P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及V1、V2场效应管驱动电路构成。
在P0口中,有两个三态的缓冲器,在其的输出端可以是高电平、低电平,同时还有一种就是高阻状态(或称为禁止状态),上面一个是读锁存器的缓冲器,下面一个是读引脚的缓冲器,读取P0.X引脚上的数据,要使这个三态缓冲器有效,引脚上的数据才会传输到内部数据总线上。
在51单片机的32根I/O口线中都是用一个D触发器来构成锁存器的。
D端是数据输入端,CP是控制端(也就是时序控制信号输入端),Q是输出端,Q非是反向输出端。
在51单片机中,不需要外扩展存储器时,P0口可以作为通用的输入输出端口(即I/O)使用,对于8031(内部没有ROM)的单片机或者编写的程序超过了单片机内部的存储器容量,需要外扩存储器时,P0口就作为‘地址/数据’总线使用。
这个多路选择开关就是用于选择是做为普通I/O口使用还是作为‘数据/地址’总线使用的选择开关了。
当多路开关与下面接通时,P0口是作为普通的I/O口使用的,当多路开关是与上面接通时,P0口是作为‘地址/数据’总线使用的。
P0口的输出是由两个MOS管组成的推拉式结构,也就是说,这两个MOS管一次只能导通一个,当V1导通时,V2就截止,当V2导通时,V1截止。
P0口作为I/O端口使用时,多路开关的控制信号为‘0’(低电平),V1管截止,多路开关是与锁存器的Q非端相接的(即P0口作为I/O口线使用)。
作为地址/数据线使用时,多路开关的控制信号为‘1’,V1管由地址/数据线决定,多路开关与地址/数据线连接。
输出过程:
当写锁存器信号CP有效,数据总线的信号→锁存器的输入端D→锁存器的反向输出Q非端→多路开关→V2管的栅极→V2的漏极到输出端P0.X。
这时多路开关的控制信号为低电平0,V1管是截止的,所以作为输出口时,P0是漏极开路输出,类似于OC门,当驱动上接电流负载时,需要外接上拉电阻。
地址输出过程时,控制信号为‘1’,地址信号为‘0’时,与门输出低电平,V1管截止;
反相器输出高电平,V2管导通,输出引脚的地址信号为低电平。
反之,控制信号为‘0’、地址信号为‘1’,“与门”输出为高电平,V1管导通;
反相器输出低电平,V2管截止,输出引脚的地址信号为高电平。
可见,在输出“地址/数据”信息时,V1、V2管是交替导通的,负载能力很强,可以直接与外设存储器相连,无须增加总线驱动器。
作为数据总线的输出过程时,如果该指令是输出数据,如MOVX
@DPTR,A(将累加器的内容通过P0口数据总线传送到外部RAM中),则多路开关“控制”信号为‘1’,“与门”解锁,与输出地址信号的工作流程类似,数据据由“地址/数据”线→反相器→V2场效应管栅极→V2漏极输出。
输入过程:
读芯片引脚上的数据时,读引脚缓冲器打开,通过内部数据总线输入。
通过打开读锁存器三态缓冲器,读取锁存器输出端Q的状态。
作为数据总线使用时,在访问外部程序存储器时,P0口输出低8位地址信息后,将变为数据总线,以便读指令码(输入)。
在取指令期间,“控制”信号为“0”,V1管截止,多路开关也跟着转向锁存器反相输出端Q非;
CPU自动将0FFH(11111111,即向D锁存器写入一个高电平‘1’)写入P0口锁存器,使V2管截止,在读引脚信号控制下,通过读引脚三态门电路将指令码读到内部总线,这个过程和I/O读引脚过程是一样的。
在输入状态下,从锁存器和从引脚上读来的信号一般是一致的,但也有例外。
例如,当从内部总线输出低电平后,锁存器Q=0,Q非=1,场效应管T2开通,端口线呈低电平状态。
此时无论端口线上外接的信号是低电乎还是高电平,从引脚读入单片机的信号都是低电平,因而不能正确地读入端口引脚上的信号。
又如,当从内部总线输出高电平后,锁存器Q=1,Q非=0,场效应管T2截止。
如外接引脚信号为低电平,从引脚上读入的信号就与从锁存器读入的信号不同。
为此,8031单片机在对端口P0-P3的输入操作上,有如下约定:
凡属于读-修改-写方式的指令,从锁存器读入信号,其它指令则从端口引脚线上读入信号。
读-修改-写指令的特点是,从端口输入(读)信号,在单片机内加以运算(修改)后,再输出(写)到该端口上。
这样安排的原因在于读-修改-写指令需要得到端口原输出的状态,修改后再输出,读锁存器而不是读引脚,可以避免因外部电路的原因而使原端口的状态被读错。
当P
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 音乐 发生器 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)