基于51系列单片机的多功能波形发生器及特定波形幅值调节 精品.docx
《基于51系列单片机的多功能波形发生器及特定波形幅值调节 精品.docx》由会员分享,可在线阅读,更多相关《基于51系列单片机的多功能波形发生器及特定波形幅值调节 精品.docx(37页珍藏版)》请在冰豆网上搜索。
基于51系列单片机的多功能波形发生器及特定波形幅值调节精品
创新性实验研究报告
课程名称:
基于51系列单片机的波形发生器研究
实验项目名称多功能波形发生器及特定波形幅值调节
姓名XXX_学号_XXXXXX
手机XXXXXXXXXEmailXXXXXXXXXXXX
专业自动化_班级_XXXXXXX_
指导教师及职称___XXX__
开课学期2011至2012学年第一学期
提交时间2011年12月29日
一、实验摘要
波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。
例如在通信、广播、电视系统中都需要射频发射,这就需要信号发生器,在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振图像等,都需要功率或大或小、频率或高过低的信号。
在现代社会中,自动化技术早已渗透到社会生产的各个领域中,高精度、宽频率、高稳定性的信号发生器对于所属整体系统的性能改善和提高起着至关重要的作用。
多波形的函数信号发生器是电子实验室的基础设备之一,目前各类学校广泛使用的是标准产品,虽然功能齐全,性能指标高,但是价格昂贵,本文所研究的信号发生器采用单片机和DAC0832结合起来,通过数字电子电路向模拟电路转化,该系统虽然性能指标不如标准产品,但是它体积小,成本低,便于携带等特点,亦可作为电子随身设备之一。
本次创新性实验将由AT89C51单片机和DAC0832数模转换器构成波形发生器,此波形发生器可产生方波、三角波、锯齿波、梯形波、阶梯波等多种波形,波形的幅值可以用程序进行改变,并可根据需要选择单极性输出,具有线路简单、结构紧凑、价格低廉、性能优越等优点。
在本设计的基础上,加上按键用来更改不同波形之间的切换,实现不同波形的输出。
二、实验目的
在电子设备中,经常需要产生各种波形,本设计要求利用单片机和模数转换芯片组成波形发生器硬件系统,需要完成下列任务:
(1)能够通过按键控制,产生方波、三角波、锯齿波、梯形波、阶梯波五种波形。
(2)能够通过原理图调试进行改变各个波形的幅度。
三、实验场地及仪器、设备和材料:
(1)AT89C51芯片1个
(2)DAC0832芯片1个
(3)OPAMP放大器芯片1个
(4)电阻2个电容3个可调电阻1个排阻1个
(5)开关6个
(6)Protues软件
(7)晶振1个
(8)示波器1台
四、实验内容
1、实验原理
波形的产生是通过AT89C51单片机执行某一波形发生程序,向DAC0832转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。
AT89C51单片机的最小系统有三种联接方式。
一种是两级缓冲器型,即输入数据经过两级缓冲器型,即输入数据经过两级缓冲器后,送D/A转换电路。
第二种是单级缓冲器型,输入数据经输入寄存器直接送入DAC寄存器,然后送D/A转换电路。
第三种是两个缓冲器直通,输入数据直接送D/A转换电路进行转换,本设计采用单缓冲方式。
此次实验设计由硬件设计和软件设计两部分组成,硬件部分利用proteus软件进行模拟仿真验证设计的正确性并产生不同波形,软件设计将利用汇编语言进行编程,通过Protues软件进行编译调试仿真,通过模拟示波器观察输出波形。
实验原理框图如下所示:
图1.1实验原理框图
2、实验内容
2.1系统硬件设计
本系统提供了五种不同的波形输出,通过五个按键控制相应的方波,锯齿波,三角波、梯形波和阶梯波。
每次只能有一个键按下,没有按键按下时没有波形产生,按键输入信号给单片机,单片机对按键的情况进行处理,例如第一个按键按下时,系统需要产生一个方波,那么单片机循环输出0和1,那么通过DAC0832就通过运放循环输出高低电平,这样系统就能够输出方波,同样的道理,锯齿波、三角波、梯形波和阶梯波的产生也可以采用相似的道理。
本设计的硬件系统分为三个模块:
单片机系统模块,DA转换模块,软件设计模块。
2.2系统各个模块的设计
2.2.1单片机系统模块
(1)配置
●一个8位CPU,片内振荡器
●并行I/O口,32根I/O口线
●一个串行口
●两个定时/计数器
●4KByte的ROM
●128Byte的RAM
●5个中断源,两个中断优先级
●可寻址64KB外部数据存储器空间
单片机内部结构图如下所示:
图2.2-1单片机内部结构图
(2)单片机管脚图及管脚功能介绍
单片机管脚图如下:
图2.2-2AT89C51单片机管脚图及并行口分布
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。
P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(定时器0外部输入)
P3.5T1(定时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
2.2.2晶振时钟模块
单片机的工作过程是:
取一条指令、译码、进行微操作,再取一条指令、译码、进行微操作,这样自动的、一步一步的由微操作依序完成相应的指令规定的功能。
各指令的微操作在时间上有严格的次序,这种微操作的时间次序称作时序。
AT89C51单片机的时钟信号通常由两种方式产生。
一是内部时钟方式,二是外部时钟方式。
内部时钟方式如图2.2-3(a)所示。
只要在单片机的XTAL1和XTAL2引脚外接晶振即可。
图中,电容C1和C2的作用是稳定频率和快速起振,电容值在5-30pF,典型值为30pF。
晶振CYS的震荡频率要小于12MHz,典型值6MHz、12MHz或11.0592MHz。
外部时钟方式是把外部已有的时钟信号引入到单片机内,如图2.2-3(b)所示。
此方式用于多片AT89C51单片机同时工作,并要求各单片机同步运行的场合。
图2.2-389C51单片机时钟方式
实际应用中通常采用外接晶振的内部时钟方式,晶振的频率高一些时可以提高指令的执行速度,但相应的功耗和噪声也会增加,在满足系统功能的前提下,应选择低一些的晶振频率。
当系统要与PC机通信时,应选择11.0592MHz的晶振,这样便于将波特率设定为标称值。
2.2.3复位电路模块
复位是使单片机或系统中的其他部件处于某种确定的厨师状态。
单片机的工作就是从复位开始的。
当AT89C51的RST引脚加高电平复位信号(保持2个以上机器周期)时,单片机内部就执行复位操作。
复位信号变低时,单片机开始执行程序。
实际操作中,复位操作有两种基本形式:
一种是上电复位,另一种是上电与按键均有效的复位,如图2.2-4(a)所示
图2.2-4单片机复位电路
上电复位要求接通电源后,单片机自动实现复位操作。
常用的上电复位电路如图2.2-4(a)所示,上电瞬间RST引脚获得高电平,随着电容C1的充电,RST引脚的高电平将逐渐下降。
RST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。
该电路的典型的电阻和电容参数为:
晶振:
12MHz时,C1为10uF,R1为8.2KΩ;晶振为6MHz时,C1为22uF,R1为1KΩ,本电路选用C1为1nF,R1为10KΩ,R2为10KΩ。
按键与上电均有效的复位电路如图2.2-4(b)所示,上电复位原理与图2.2-4(a)相同,另外在单片机运行期间,还可以利用按键完成复位操作。
晶振为6MHz时,R2为200Ω。
实际应用中如果单片机断电后,有可能在较短的时间内再次加电,可以在R1上并接一个放电二极管,这样可以有效的提高此种情况下复位的可能性。
2.2.4数模转换模块
1.数模转换器的工作原理
数模转换器是将数字量信号转换成与此数值成正比的模拟量。
需要转换的数字量由一个二进制数字表示,每位二进制数字都有一定的权,在转换中,应将二进制数的每一位按照权的大小转换成相应的模拟量输出分量,然后将各个输出分量叠加,总和就是与数字量成正比的模拟量数值。
上述D/A的转换,常用如图2.2-5所示的倒T形解码网络加以实现。
图2.2-5倒T形电阻网络D/A转换器
电路设计如图2.2-5所示,包括由R-2R组成的电阻网络、模拟电子开关和集成运算放大器。
对于电阻网络,无论从哪个R-2R节点看,等效电阻都是R,因此,从参考电压端输入的电流为:
IR=VREF/R
根据分流公式,各支路电流为:
I7=I/21I6=I/22I5=I/23I4=I/24I3=I/25I2=I/26I1=I/27I0=I/28
于是,经过运算放大器输出的模拟电压VO为:
VO=-RF∑Ii=-RfbVREF/R×28(D7×27+D6×26+D5×25+
D4×24+D3×23+D2×22+D1×21+D0×20)
其中VREF进行D/A转换的系统提供的参考电压,Rfb为集成运算放大器的反馈电阻,D7~D0取值为0或1,0表示切换开关与地相连,1表示与参考电压相连。
通过上述电路,即完成了二进制数字信号到模拟电压信号的转换。
2.数模转换器的主要技术指标
D/A转换器的指标有很多,使用者最关心的几个指标如下。
(1)分辨率
分辨率指输入给D/A转换器的单位数字量引起的模拟量输出的变化,通常定义为输出满刻度值与2n之比(n为D/A转换器的二进制位数)。
显然,二进制位数越多,分辨率越高,即D/A转换器对输入量变化的敏感程度越高。
例如,8位的D/A转换器,若满量程输出为10V,根据分辨率定义,则分辨率为10V/2n,分辨率为10V/256=39.1mV,即输入的二进制最低位的变化可引起输出的模拟电压变化39.1mV,该值占满量程的0.391%,常用1LSB表示。
同理:
10位D/A转换1LSB=9.77mV=0.1%满量程
12位D/A转换1LSB=2.44mV=0.024%满量程
16位D/A转换1LSB=0.076Mv=0.00076%满量程
使用时,应根据对D/A转换器分辨率的需要来选定D/A转换器的位数。
(2)转换精度
转换精度以最大的静态转换误差的形式给出。
这个转换误差包含非线性误差、比例系数误差等综合误差。
应该注意,精度和分辨率是两个概念。
精度是指转换后所得的实际值对于理想值的接近程度,而分辨率是指能够对转换结果发生影响的最小输入量,分辨率很高的D/A转换器并不一定具有很高的精度。
(3)相对精度
相对精度是指在满刻度已经校准的前提下,在整个刻度范围内,对应于任一数码的模拟量输出与它的理论值之差。
通常用偏差几个LSB来表示和该偏差相对满刻度的百分比表示。
(4)建立时间
建立时间是描述D/A转换器转换快慢的一个参数,用于表明转换时间或转换速度。
其值为从输入数字量到输出达到种植误差±(1/2)LSB(最低有效位)时所需的时间。
电流输出的转换时间较短,而电压的转换器,由于要加上完成I-V转换的运算放大器的延迟时间,因此转换时间要长一些。
快速D/A转换器的转换时间可控制在1us以下。
(5)线性度
通常用非线性误差的大小表示D/A转换器的线性度,输入输出特性的偏差与满刻度输出之比的百分数表示非线性误差。
一定温度下的最大非线性误差一般为0.01%~0.03%.
3.DAC0832芯片主要特性与结构
DAC0832系列为美国国家半导体公司生产的具有2个数据寄存器的8位分辨率的D/A转换芯片。
此芯片与微处理器完全兼容,可以完全相互代换,并且价格低廉,接口简单,转换控制容易,在单片机应用系统中得到了广泛的应用。
(1).DAC0832的主要特性
●分辨率为8为;
●转换时间为1us;
●可单缓冲、双缓冲或者直接数字转换;
●只需在满量程下调整其线性度;
●逻辑电平输入与TTL兼容;
●单一电源供电(+5V~+15V);
●低功耗(0.2Mw);
●基准电压的范围为±10V。
(2).DAC0832的内部结构
DAC0832的内部结构框图如图2.2-6所示。
它由8为输入锁存器、8为DAC寄存器、8为D/A转换器电路及转换控制电路构成,通过两个输入寄存器构成两级数据输入锁存。
图2.2-6DAC0832内部逻辑框图
使用时,数据输入可以采用两级锁存(双锁存)、单级锁存(一级锁存,一级直通方式)或直接输入(两级直通)形式。
上图中,2个与门电路组成据存期输出控制逻辑电路,该逻辑电路得功能是进行数据锁存控制,当ILE1(ILE2)=1是,寄存器的输出跟输入数据变化。
3.DAC0832的引脚
各引脚功能如下:
DI0~DI7:
8位数据输入线。
:
片选信号输入,低电平有效。
ILE:
数据锁存允许控制信号,高
电平有效。
输入锁存器的锁存信号
LE1由ILE、
、
的逻辑组合产生。
当ILE=1,
=0,WR1输入负脉冲时,图3.6DAC0832外部引脚图
上产生正脉冲。
当
=1时,输入锁存器的状态随数据输入线的状态变化,
的负跳变将数据输入线上的信息锁入输入寄存器。
1:
输入寄存器写选通输入信号,低电平有效。
上述两个信号控制输入寄存器是数据直通方式还是数据锁存方式,当ILE=1和
1=1时,为输入寄存器锁存方式。
2:
DAC寄存器写选通输入信号(输入),低电平有效。
:
数据传送控制信号(输入),低电平有效。
上述两个信号控制DAC寄存器是数据直通方式,当
2=0和
=0时,为DAC寄存器直通方式;当
2=1或
=1时,为DAC寄存器锁存方式。
IOUT1、IOUT2:
电流输出,IOUT1+IOUT2=常数。
Rfb:
反馈电阻输入端。
内部接反馈电阻,外部通过该引脚接运放输出端。
为了取得电压输出,需要在电压输出端接运算放大器,Rfb即为预算放大器的反馈电阻端。
Vref:
基准电压,其值为-10V~+10V。
AGND:
模拟信号地。
DGND:
数字信号地,为工作电源地和数字逻辑地,可在基准电源处进行单点共地。
VCC:
电源输入端,其值为+5V~+15V。
4.DAC0832芯片与单片机的接口
DAC0832根据控制信号的接法可分为三种工作方式:
直通方式、单缓冲方式、双缓冲方式。
(1).单缓冲方式
此时输入锁存器和DAC寄存器相应的控制信号引脚分别在一起,是数据直接写入DAC寄存器,立即进行D/A转换,(这种情况下,输入锁存器不起锁存作用)。
此方式适用于只有一路模拟量输出,或有几路模拟量输出但是并不要求同步的系统。
图2.2-7为单极性单路模拟量输出的DAC0832与AT89C51的接口电路。
Vref接-5V时,IOUT1输出电流经运算放大器输出0~+5V单极性电压。
由于CS和XFER都与单片机的P2.7相连。
因此,输入锁存器和DAC寄存器的地址都为7FFFH。
CUP对DAC0832执行一次写操作,则将一个数据直接写入DAC寄存器,DAC0832的输出模拟量随之变化。
由于DAC0832具有数字量的输入锁存功能,所以数字量可以直接从从单片机的P0口送入到DAC0832。
执行下面几条指令就能完成一次D/A转换:
MOVDPTR,#07FFFH;指向DAC0832口地址(P2.7为0)
MOVA,#data
MOVX@DPTR,A;启动D/A转换
单极性输出V0的正负由Vref的极性确定。
当Vref的极性为正时,Vo为负;当Vref的极性为负时,Vo为正。
在本系统中需要输出双极性模拟电压,因此要在系统后面再加一级运放,由二级运放得到双极性电压。
图2.2-7DAC0832单缓冲模式接口电路
2.2.5波形显示模块
1、OPAMP放大器应用
图2.2-8OPAMP放大器原件示意图
运算放大器(OperationalAmplifier,简称OP、OPA、OPAMP)是一种直流耦合,差模(差动模式)输入、通常为单端输出(Differential-in,single-endedoutput)的高增益(gain)电压放大器,因为刚开始主要用于加法,乘法等运算电路中,因而得名。
通常使用运算放大器时,会将其输出端与其反相输入端(invertinginputnode)连接,形成一负反馈(negativefeedback)组态。
原因是运算放大器的电压增益非常大,范围从数百至数万倍不等,使用负回授方可保证电路的稳定运作。
但是这并不代表运算放大器不能连接成正反馈(positivefeedback)组态,相反地,在很多需要产生震荡讯号的系统中,正回授组态的运算放大器是很常见的组成元件。
运算放大器有许多的规格参数,例如:
低频增益、单位增益频率(unity-gainfrequency)、相位边限(phasemargin)、功耗、输出摆幅、共模抑制比(common-moderejectionratio)、电源抑制比(PSRR,power-supplyrejectionratio)、输入线性范围(inputcommonmoderange)、延迟率(slewrate)、输入失调电压还有噪声等。
2、运用Protues软件模拟示波器进行仿真
概述
Protues软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译。
功能特点
Protues软件具有其它EDA工具软件(例:
multisim)的功能。
这些功能是:
(1)原理布图
(2)PCB自动或人工布线
(3)SPICE电路仿真
革命性的特点:
(1)互动的电路仿真。
用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
(2)仿真处理器及其外围电路。
可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。
还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。
配合系统配置的虚拟逻辑分析仪、示波器等,Protues建立了完备的电子设计开发环境。
智能原理图设计(ISIS)
丰富的器件库:
超过27000种元器件,可方便地创建新元件;智能的器件搜索:
通过模糊搜索可以快速定位所需要的器件;智能化的连线功能:
自动连线功能使连接导线简单快捷,大大缩短绘图时间;支持总线结构:
使用总线器件和总线布线使电路设计简明清晰;可输出高质量图纸:
通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用。
(1)Protues可提供的仿真元器件资源:
仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。
(2)Protues可提供的仿真仪表资源:
示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。
理论上同一种仪器可以在一个电路中随意的调用。
(3)除了现实存在的仪器外,Protues还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。
这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。
这些都尽可能减少了仪器对测量结果的影响。
(4)Protues可提供的调试手段Protues提供了比较丰富的测试信号用于电路的测试。
这些测试信号包括模拟信号和数字信号。
软件仿真
支持当前的主流单片机,如51系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、6800