单片机波形发生器的设计.doc_第1页
单片机波形发生器的设计.doc_第2页
单片机波形发生器的设计.doc_第3页
单片机波形发生器的设计.doc_第4页
单片机波形发生器的设计.doc_第5页
免费预览已结束,剩余10页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机波形发生器的设计(一)17908 发表于 2005-7-10 16:34:00设计要求(1)具有产生正弦波、方波、三角波、锯齿波四种周期性波形的功能。(2)用按件控制波形的选择。(3)具有波形存储功能。(4)输出波形的频率范围为100Hz1MHz(非正弦波频率按10次谐波计算);重复频率可调,频率步进间隔100Hz。(5)输出波形幅度范围05V(峰-峰值),可按步进0.1V(峰-峰值)调整。(6)具有显示输出波形的类型、重复频率(周期)和幅度的功能。一、前言波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。目前使用波形发生器大部分是利用分立元件组成的起体积大,可靠性差,准确度低。本次课程设计使用的 8051 单片机构成的发生器可产生方波、三角波、锯齿波、正弦波等多种波形,波形的周期可以用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑、价格低廉、性能优越等优点。在本设计的基础上,加上键盘控制和LED显示器,则可通过键盘设定所需要的波形频率,并在LED上显示。二、总体方案设计方案一:方案一的原理方框图如下所示。波形的产生是通过 8031 执行某一波形发生程序,向D/A转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。图1 方案一原理框图在8031的P1口的接一转换开关K,通过软件编程来选择各种波形,其中电阻R1-R4的作用是保证转化开关的各种浮空接点为“0”,P3口用来驱动一组发光二极管,每组波形对应一个二极管作为波形的指示器。此方案的有点是电路原理比较简单,实现起来比较容易。缺点是,采样频率由单片机内部产生故使整个系统的频率降低。方案二:方案二汲取了方案一的优点并在方案一的基础上加以改进。方案二采用了8051单片机,并且采样频率由外部晶体震荡器产生,由晶体振动器产生脉冲,通过74161进行分频,并通过74151进行选频。74160十进制加计数器在本设计中承担地址发生器的功能,增加了外部数据存储器,从而使波形频率得到了较大的提高。所以我们选择方案二进行波形发生器的设计。三、单元模块设计:本项设计由_和_共同完成,其中硬件部分主要由_完成,我在本项设计中主要承担了_部分的设计.硬件部分 8051单片机外部存储器的扩展MCS-51单片机的片内结构:如果按功能划分,它由8个部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、I/O口(P0口、P1口、P2口、P3口)、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)的集中控制方式。各功能部件的介绍:1、数据存储器(RAM):片内为128个字节单元,片外最多可扩展至64K字节。2、程序存储器(ROM/EPROM):ROM为4K,片外最多可扩展至64K。3、中断系统:具有5个中断源,2级中断优先权。4、定时器/计数器:2个16位的定时器/计数器,具有四种工作方式。5、串行口:1个全双工的串行口,具有四种工作方式。6、特殊功能寄存器(SFR)共有21个,用于对片内各功能模块进行管理、监控、监视。7、微处理器:为8位CPU,且内含一个1位CPU(位处理器),不仅可处理字节数据,还可以进行位变量的处理。8、四个8位双向并行的I/O端口,每个端口都包括一个锁存器、一个输出驱动器和一个输入缓冲器。这四个端口的功能不完全相同。A、P0口既可作一般I/O端口使用,又可作地址/数据总线使用;B、P1口是一个准双向并行口,作通用并行I/O口使用;C、P2口除了可作为通用I/O使用外,还可在CPU访问外部存储器时作高八位地址线使用;D、P3口是一个多功能口除具有准双向I/O功能外,还具有第二功能。控制引脚介绍1、电源:单片机使用的是5V电源,其中正极接40引脚,负极(地)接20引脚。2、时钟引脚XTAL1、XTAL2时钟引脚外接晶体与片内反相放大器构成了振荡器,它提供单片机的时钟控制信号。时钟引脚也可外接晶体振荡器。振蒎电路:单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器3、RST:当振荡器运行时,在此引脚外加上两个机器周期的高电平将使单片机复位(RST)。我们在此引脚与VCC之间连接一个约8.2千欧的下拉电阻,与引脚之间连接一个约10微法的电容,以保证可靠复位。在单片机正常工作时,此引脚应为0。5V低电平。4、ALE:当访问单片机外部存储器时ALE(地址锁存允许)输出脉冲的负跳沿用于16位地址的底8位的锁存信号。即使不访问外部锁存器,ALE端仍有正脉冲信号输出,此频率约为时钟振荡器的1/6。但是每当访问外部数据存储器时,在两个机器周期中ALE只出现一次,即丢失一个ALE脉冲。因此,严格来说,用户不能用ALE做时钟源或定时。ALE端可以驱动8个TTL负载5、/PSEN(29脚):此脚的输出是单片机访问外部程序存储器的读选通信号。在由外部程序存储器取指令(或常数)期间,每个机器周期PSEN两次有效。但在此期间,每当访问外部数据存储器时,这两次有效的/PSEN信号不出现。/PSEN可以驱动(吸收或者输出电平)8个LSTTL负载。6、/EA/VPP(31脚):当EA端保持高电平时,单片机访问内部存储器,但在PC值超过0FFFH时,讲自动转向执行外部存储器内的程序。当/EA保持低电平时,则只访问外部程序存储器,不管是否有内部存储器。图3 8051单片机的各个引脚MCS-51单片机的这四个I/O端口有三种操作方式:输出方式、读端口数据方式、读端口引脚方式在数据输出方式下,CPU通过一条数据操作指令就可以把输出数据写入P0P3口端口锁存器,然后通过输出驱动器送到端口引脚线。因此,凡是端口操作指令都能达到从端口引脚线输出数据的目的,例如:MOV P0, A ;累加器A中的内容送P0口ORL P0,#data ; P0 data送P0口 ANL P0,A ;P0 A送P0口XOR P0,# data ;P0data送P0口SARM芯片的各个引脚及其功能:图4 SARM芯片的各个引脚A0A14:地址输入线。D0D7:双向三态数据线。/CE:片选信号输入线,低电平有效。对于6264芯片,当26脚(CS)为高电平,且/CE为低电平时才选中此片。/OE:读选信号输入线,低电平有效。/WE:写允许信号输入线,低电平有效。VCC:工作电源+5V。GND:地线。74LS377地址锁存器:74LS377是一个具有使能控制端的8D触发器,其引脚如图5所示:图5 74LS377引脚图D1D8为数据输入端,1Q8Q为数据输出端,CLK为时钟信号,/E为使能控制端,当它的使能控制端为低电平且时钟CLK端信号跳变信号时,输入端的数据被锁存到D触发器中,其它情况下输出端保持数据不变。74LS377作为地址锁存器在设计领域有广泛应用。 /CCLKDQ1 Q00100000Q0 表1 74LS377真值表如果把“”全置1的话,就是1011 1111 1111 1111B即BFFFH。由于MCS-51的/WR信号由低变高时,数据总线上的数据正是输出的数据,而此时P26也正输出低电平,/G有效,因此,数据就被锁存。有关程序如下:MOV DPTR,#0BFFFH ;地址MOV A, #DATA ;DATA为送出的数据MOVX DPTR,A ;P0口数据被74LS377锁存图6 74LS377扩展输出接口图 图7 8051扩展图8051读写外部存储器的过程:先读外部数据存储器,在单片机的第一个机器周期时S1,允许地址锁存器信号ALE由低电平变高电平,开始了读周期。在S2(第二个机器周期)状态,CPU把低8位地址送上P0总线,把高8位地址送上P2口。ALE的下降沿用来把低8位地址信息锁存到外部地址锁存器中,而高8位地址信息此后一直锁存在P2口上,无需再加外锁存。在S3(第三个机器周期)状态,P0总线驱动器进入高阻状态。在S4(第四个机器周期)状态,读控制信号/RD变为有效,它使得被寻址的数据存储器把有效的数据送上总线,当/RD回到高电平后,被寻址的存储器把本身的总线驱动器浮起来,使P0总线进入高阻状态。写外部数据存储器的时序与读基本相同。但写的过程是CPU主动把数据送上总线,故在时序上,CPU向P0总线送完被寻址存储器的低8位地址后,在S3(第三个机器周期)状态,就由送地址直接改为送数据上总线,期间,总线上不出现高阻悬浮状态。在S4(第四个机器周期)状态,写控制信号有效,选通被寻址的存储器,在此以后,P0上的数据就写到被寻址的存储器内了。软件系统系统软件由主程序和产生的子程序组成,软件设计主要是对产生各种波形的子程序编程,以得到各种波形。周期的改变可采用延时子程序的方法来实现。以下是各个子程序的流程图以及程序的设计。2 正弦波发生子程序的设计图8 正弦波发生子程序流程图正弦波发生子程序如下: MOV DPTR,#SINTAB ;正弦表写入内部RAM6DH-7FH MOV R0,#6DHLOOP: CLR A MOVC A,A+DPTR MOV R0,A INC DPTR INC R0 CJNE R0,#80H,LOOP MOV DPTR,#7FFFH ;设置D/A转换器的端口地址 MOV R0,#6DH ;设置正弦表指针LOOP1: MOV A,R0 ;查表 MOVX DPTR,A ;D/A转换 ACALL DELAY ;延时,等待转换结束 DEC R0 ;正弦表位移量增量 CJNE R0 #6DH,LOOP1 ;第一象限输出完?LOOP2: MOV A,R0 ;查表 MOVX DPTR,A ;D/A转换 ALCALL DELAY ;延时,等待转换结束 DEC R0 ;正弦表位移量减量 CJNE R0 #6DH,LOOP2 ;第二象限输出完?LOOP3: MOV A,R0 ;查表 CPLA ;表值取反 MOVX DPTR,A ;D/A转换 ACLALL DELAY ;延时,等待转换结束 INC R0 ;正弦表位移量增量 CJNE R0,#7FH,LOOP3 ;第三象限输出完?LOOP4:MOV A,R0 ;查表 CPL A ;表值取反 MOVX DPTR,A ;D/A转换 ALCALL DELAY ;延时,等待转换结束 DEC R0 ;正弦表位移量减量 CJNE R0,#6DH,LOOP4 ;第四象限输出完? SJMP LOOP1DELAY:MOV R7,#200 ; 延时50ms DEL1:MOVR6,#123 NOP DEL2:DJNZ R6,DEL2 DJNZ R7,DEL1 RETSINTAB: DB 7FH,89H,94H,9FH,0AAH,0B4H,0C8H,0D1H,0D9H DB 0E0H,0E7H,0EDH,0F2H,0F7H,0FAH,0FCH,OFEH,0FFHEND3 锯齿波发生子程序的设计 图9锯齿波发生子程序流程图锯此波发生子程序如下: MOV DPTR,#7FFFH ;端口地址7FFFH间址寄存器 MOV R7,#0 ;R7为0DASAW:MOV A,R7 ;A清零 MOVX DPTR,A ;写RAM INC R7 ;R7寄存器加一 NOP ;空操作 NOP NOP SJMP DASAW ;转移 END4 方波发生子程序的设计图10方波发生子程序流程图方波发生子程序:MOV DPTR,#7FFFH ; 设置D/A转换器的端口地址 MOV R7,#FFH ;将#FFH送R7FANGB:MOV A,R7 ;给A赋值 MOVX DPTR,A ;写RAM ACALL DELAY ;调用延时子程序 CPL A ;A取反 MOVX DPTR,A ;写RAM ACALL DELAY ;调用延时子程序 SJMP FANGB ;返回FANGBDELAY:MOV R7,#200 ; 延时50ms DEL1:MOVR6,#123 NOP DEL2:DJNZ R6,DEL2 DJNZ R7,DEL1 RETEND ;程序结束5 三角波发生子程序的设计 图11三角波发生子程序流程图三角波发生子程序如下: MOV DPTR,#7FFFH ; 设置D/A转换器的端口地址 L1:MOV R7,#00H ;A清零 MOV A,R7 L2: MOVX DPTR,A ;写外部存储器 NOP ;延时 NOP NOP INC A ;A加1 JNZ L1 ;不等与零则转L1 L3: MOVX DPTR,A ;写外部存储器四、系统调试通过软件ISIS仿真,我们对本设计的局部电路进行了仿真。图12为外部扩展存储器的仿真。由CPU对其进行读写操作。其中读操作由/RD(P3.7)写操作由/WR(P3.6)信号控制。 ORG 0 LOOP1: MOV DPTR,#1234hMOV A,#0AAhMOVX DPTR,AMOVX A,DPTRJMP LOOP1 END图12 外部扩展存储器仿真图图13 存储器内部时序图单片机控制DAC0832,产生正弦波。由于D/A转换器与8051接口时,8051是靠指令输出数字量供数模转换之用,而指令送出的数据在数据总线上的时间是短暂的,所以在DAC和8051之间,需要有数据寄存器来保持8051计算机输出的数据,供DAC转换使用。目前生产的DAC芯片分为两类,一类芯片内部设置有数据寄存器,不需要外加电路就可以直接与微型计算机接口。另一类芯片内部没有数据寄存器,输出信号随数据输入线的状态变化而变化,因此不能直接与微型计算机接口,必须通过并行接口与微型计算机接口。DAC0832X是具有20条引线的双列直插式CMOS器件,它内部具有两级数据寄存器,完成8位电流D/A转换。故不需要外加电路。正弦波产生原理8位D/A转换器对应05V的电压输出,其输入数字量应为00HFFH。在05V的电压范围内产生的如下图所示。通过D/A转换器方法得到的输出波形只能是阶梯状的。以5度为一个阶梯,则正弦波一个周期就有72个阶梯。把各阶梯D/A输入的数字量存入正弦表SINTAB,执行程序时通过查表方法依次取出,经过D/A转换后输出就可以得到正弦波。图14 正弦波形因为正弦波的图形是对称的,若把正弦波分成四个象限如上图所示,则正弦表SINTAB就可以只存0至90度中的19个阶梯的数字量。第一象限从0度开始查表,共查18个阶梯;第二象限从90度开始逆向查表,仅查18个阶梯;第三、四象限与第一、二象限的波形正好相反,把第一、二象限查表得到的数值取反后输出即得其波形。正弦波发生子程序流程图及程序上面已经给出,见P图15 正弦波仿真结果 图16 单片机与DAC0832

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论