基于dac0832的波形发生器设计与实现文档格式.docx
《基于dac0832的波形发生器设计与实现文档格式.docx》由会员分享,可在线阅读,更多相关《基于dac0832的波形发生器设计与实现文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
Theprofilegeneratoriscanproducethemassivestandardsignalsandtheuserdefinitionsignal,andguaranteesthehighaccuracy,highstable,therepeatabilityandtheeasyoperationalelectronicinstrumentation.Thefunctionprofilegeneratorhasthecontinualphasetransformation,andmeritsandsoonfrequencystability,notonlymaysimulateeachkindofcomplexsignal,butalsomaytothefrequency,thepeak—to—peakvalue,thephase-shift,theprofilecarryonthetendency,thepromptcontrol,andcancarryonthecommunicationwithotherinstruments,thecompositionautomatedtestsystem,thereforewidelyusesintheautomaticcontrolsystem,thevibrationdrive,thecommunicationandtheinstrumentmeasuringappliancedomain。
文档为个人收集整理,来源于网络本文为互联网收集,请勿用作商业用途
ThispaperisstudingonwaveformgeneratordesignandimplementationbasedontheDAC0832。
ThesystemisusedAT89S51asthecoreofthecontrolsystem,aperipheralcircuitusingdigital/analogconversioncircuit(DAC0832),operationalamplifiercircuit(TL082),keys,locator,LCDdisplayetc。
.Thesystemthroughthekeysandlocatorfortheentiresystemcontrol,Thekeycontrolswitchgeneratesasinewave,sawtooth,trianglewave,ladderwave,fourthwaveform,whiletheamplitudeanddutyratioisadjustedbythelocator.Thesystemdebuggingandthefinaltest,thesystemcanreachacharacteristic:
goodperformance,highstability,lowprice,easytooperate,hasacertainpracticality,thefinalproductcanbeusedincommonwithwaveformgeneratorfunctionrequirementsoftheapplicationofelectronicequipment。
个人收集整理,勿做商业用途文档为个人收集整理,来源于网络
Keywords:
MCUthewaveformgeneratorDAC0832
第1章绪论
1。
1波形发生器现状
波形发生器作为一种常用的应用电子仪器设备,传统的波形发生器可以完全用硬件电路搭建,如应用555振荡电路可以产生正弦波,三角波,方波等波形,传统的波形发生器多采用这种方式设计,这种方式不应用单片机,但是这种方式存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点,在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟震动等领域往往需要低频信号源,而由硬件搭建的波形发生器效果往往达不到好的效果,而且低频信号源所需要的RC很大,大电阻,大电容在制作上有困难,参数的精度也难以保证,而且体积大,漏电,体积大是该类波形发生器的显著缺点。
2单片机在波形发生器中的应用
随着电子技术的飞快发展,单片机的应用不断的深入,基于单片机的智能仪器的设计技术不断成熟。
单片机构成的仪器具有高可靠性,高性价比,单片机技术在智能仪表和自动化等诸多领域有了极为广泛的应用,并应用到各种家庭电器,单片机技术的广泛应用推动了社会的进步。
一块单片机芯片就是一台计算机,单片机的这种特殊的结构形式,使得其在某些应用领域,它承担了大中型计算机和通用微机无法完成的一些工作。
单片机有很多优点和特点,归纳有以下几个方面:
具有优异的性价比
单片机尽可能的把应用所需要的存储器,各种功能的I/O接口集成在一块芯片内,因而其性能优越,而价格性对低廉.
2.集成度搞,体积小,可靠性高
单片机把各种功能部件集成在一块芯片上,因而集成度高,为大规模集成电路或超大规模集成电路,又内部采用总线结构,因而大大减少了芯片内部之间的连线,这大大提高了单片机的可靠性和抗干扰能力,同时,体积小,对于强磁场环境易于采用屏蔽措施,适合于在恶劣环境下工作。
3.低电压和低功耗
单片机大量应用于便携式产品和家庭消费类产品,低电压和低功耗极为重要。
目前,单片机的功耗也越来越低,一枚纽扣电池就能使产品运行很长时间
5.控制功能强
单片机体积虽小,但五脏俱全,它非常适合专门的控制用途。
其指令系统中含有丰富的转移指令,容易通过编程实现相关控制
1.3课题研究目的,内容,和方案设计
利用DAC0832波形发生器设计一个能产生正弦波、方波、三角波、梯形波、锯齿波的波形发生器。
本题目中,方波信号是利用定时器中断产生的,每次中断时,将输出的信号按位取反即可。
设计一个能产生正弦波、方波、三角波、梯形波、锯齿波的波形发生器其他波形可以通过单片机控制DAC来实现。
三角波信号是将输出的二进制数字信号依次加1,达到0xff时依次减1,并实时将数字信号经D/A转换得到;
2。
锯齿波信号是将输出的二进制数字信号依次加1,达到0xff时置为0x00,并实时将数字信号经D/A转换得到的;
3。
方波信号是将输出二进制数字信号以1和0来显示在上面,还是在下面,并实时将数字信号经D/A转换得到的;
4。
正弦波是利用MATLAB将正弦曲线均匀取样后,得到等间隔时刻正弦波取样值,然后依次输出后经D/A转换得到。
采用单片机(AT89S51)和数模转换芯片(DAC0832)实现波形的产生,波形的产生由程序控制,向D/A的输入端按一定的规律发送数据,经过D/A产生波形,通过按键或中断控制不同波形的产生。
此方案通过编程简化了外部电路,原理简单,容易实现。
通过编程实现不同波型的产生,并且可以通过按键实现波形的切换。
该方案线路简单,结构紧凑,系统稳定,易控制,容易调试等优点。
第2章硬件电路的设计
2.1波形发生器系统框图
图2—1波形发生器系统框图
原理框图分析:
该波形发生器主要由单片机(AT89S51),数模转换电路(DAC0832),电流/电压转换电路(TL082),按键和ISP接口等组成.其工作原理为当按下通过按下按键来进行切换波形,而且占空比,幅值可调,然后就会产生相对应的波形.
1.本系统的通过按键(按键和定位器)来进行整个系统的控制,按键1是波形选择及占空比和频率的选择,按键2和按键3是调节占空比和频率的,按键4是确定以上的设置然后进行最后的确认.
LCD是用来显示当前的波形的名字,及波形的占空比和频率,在进行选择波形和波形参数的设置的时候需要用到的重要工具。
3.电源为整个系统供电,是整个系统的保障。
由跟USB线连接电脑和单片机。
A/D转换是整个系统的重点部分,它将单片机控制送来的数据转换成电压,为整个过程的重点,主要由DAC0832来完成。
5.数据通过DAC0832芯片转换后为电流信号,然后需要个外部功率放大器来实现电流和电压之间的转换。
6。
把转换后得到的电压信号输出到示波器进行显示,得到波形。
2各模块之间的相连
按键与AT89S51之间的相连
总共有四个控制按键,是整个系统的主要控制区,四个按键分别是KEY1,KEY2,KEY3,KEY4,分别于单片机的P24,P25,P26,P27(即单片机的25,26,27,28号四个引脚相连,)然后再分别通过一个4K的电阻和电源相连。
最后进行统一接地[1]。
图2-2按键与单片机的相连图
LCD显示器与AT89S51的相连
本系统采用是LCD1602液晶显示器,次液晶显示器总共有16各引脚,各引脚有各自的不同功能,LCD1602的4~6引脚与单片机的P10~P12(即单片机的1,2,3号引脚)这三个引脚是传输AT89S51与LCD1602液晶显示器的控制信号的.
LCD1602的7~14号八个引脚是与AT89S51的P01~P07(即单片机的39,38,37,36,35,34,33,32号引脚)相连,与之相应的连线为单片机与液晶显示器的数据传输线,在焊接电路板的时候,用的是排线来连接的。
图2—3LCD1602与单片机的相连图
DAC0832与AT89S51之间的相连
DAC0832是整个波形发生器的中专部分,实现的是数字信号转换成模拟电流信号,该芯片是由20各引脚组成,其中的DI0~DI7号引脚与单片机AT89S51的P30~P37(即AT89S51的11~17号)引脚相连,与之相应的联想便是是DAC0832与AT89S51的数据传输线,是DAC0832与AT89S51数据交换的渠道,AT89S51中的数据通过这条线把原始的数字量数据传到DAC0832进行转化,转化成电流模拟信号[2]。
其他的引脚中的1,2,3,10,12,17,18号引脚是接地的,REF(DAC0832芯片的9号)引脚是反馈电阻引出端,DAC0832内部已经有反馈电阻,所以REF端可以直接接到外部运算放大器的输出端,这样相当于将一个反馈电阻接在运算放大器的输出端和输入端之间.IOUT1(DAC0832芯片的11号)引脚是模拟电流输出端1,当DAC寄存器中数据全为1时,输出电流最大,当DAC寄存器中数据全为0时,输出电流为0.与功率放大器负极相连。
图2-4DAC0832与AT89S51之间的相连图
D/A转换电路与电流/电压转换电路的相连
D/A转换电路这里是指DAC0832芯片,前面我们也提到过REF(DAC0832芯片的9号)引脚是反馈电阻引出端,REF端直接接到外部运算放大器的输出端,IOUT1(DAC0832芯片的11号)引脚是模拟电流输出端1与功率放大器负极相连[3].
图2—5D/A转换电路与电流/电压转换电路的相连图
电流/电压转换电路与波形输出端之间的相连
波形输出端有两个引脚,1号引脚是接功率放大器的输出端,2号引脚是接地。
图2-6电流/电压转换电路与波形输出端之间的相连图
3各模块电路的设计
1D/A转换电路设计
图2—7中DAC0832的数字量B由单片机送来,AMPA和BAMP均为运算放大器,输出电压VOUT通过2个10K电阻反馈到运算放大器AMPA输入端,其他如图2—7,可由基尔霍夫定律列出方程组,并解得
VOUT=(B—128)•VREF/128
由上式在选用+VREF时,如果输入数字量最高位b7为“1”时,则输出模拟电压VOUT为正;
若输入数字量最高位b7为“0”时,则输出模拟电压VOUT为负.在选用—VREF时,输出值正好与+VREF选用时极性相反[4]。
图2-7D/A转换电路图
2.3.2复位电路设计
使CPU开始工作的方法就是给CPU一个复位信号,复位信号结束后,CPU从程序存储器“0000H”开始执行程序。
AT89S51高电平复位,复位的方式一般有三种[5]:
第一:
上电复位.接通电源时,单片机复位.
第二:
手动复位。
设置一个复位按钮,当操作者按下按钮时产生一个复位信号.
第三:
自动复位。
设计一个复位电路,当系统满足某一条件时自动产生一个复位信号。
而本系统采用的是手动复位,在系统需要出新设置,或者死机的时候,可以按下reset键得意还原系统的状态.
2.复位电路与单片机的相连
毫无疑问复位键是与单片机的9好引脚相连,与接地之间连了10k电阻,与电源之间相连10uf的微波电容。
图2—8复位电路图
2.4。
3按键电路设计
1.原理图如下
KEY1
图2-9采用查询方式对各类波的切换
2.说明:
KEY1:
波形之间的切换,及占空比,频率的切换。
KEY2:
在设置占空比和频率时,按下,数值会减少。
KEY3:
在设置占空比和频率时,按下,数值会增加。
KEY4:
确认键.
3.工作介绍
对于外部中断实现对波形的切换,当KEY1按下时,LCD显示波形的名字的下面开始闪烁光标,再次按下进行波形之间的切换,按下KEY4键进行,开始切换占空比和频率,当切换到占空比时或者频率时,按下KEY3或者KEY4进行空比时或者频率的增加减少设置,最后再按下KEY4进行最后的确认,这时示波器里的波形应该已经发生了变化[6]。
按键与单片机的相连
按键KEY1,KEY2,KEY3,KEY4分别和单片机的P24,P25,P26,P27引脚相连,然后再分别通过一个4K的电阻和电源相连。
最后进行统一接地。
4.4I/V转换电路设计
图2。
10I/V转换电路
1.说明:
实现I/V转换最简单的方法就是直接在1out1和Iout2之间跨界一电阻,这样就很容易的实现了I/V转换,但是这种方法忽略了一个阻抗问题。
对于DAC0832来说,R的取值应尽可能大,能够保证获得更多的电压,对于与输出电压相连的后续电路来说,R的取值应尽可能的小,以降低输出阻抗,这两方面是矛盾的,所以这种方式欠合理.而合理的方式是应用运算放大器实现I/V转换,也解决了阻抗的问题[7]。
2.I/V转换电路与DAC0832的相连
一级功率放大器TL082的负引脚与DAC0832的11号引脚相连,正极接地,而二级功率放大器TL082的负极通过10K的电阻与DAC0832的8号引脚相连,正极也接地[8].
第3章软件设计
根据功能,系统软件设计分成几个模块编程:
主程序模块,按键程序模块,锯齿波程序模块,三角波程序模块,正弦波程序模块,方波程序模块,延时程序模块[9]。
3.1程序
程序流程图
图3—1程序流程图
说明:
程序中主要实现利用按键来控制不同波形的输出。
3.2按键程序模块
按键程序主要是讲四个按键如何工作的,工作的过程基本相同,这里我们重点对按键1进行详细介绍,其他按键工作原理基本不变[10]。
首先是进行键盘扫描扫描前,接键盘的引脚口拉高,这样发生什么变换,信号不至于紊乱,然后判断按键1是否按下,如果按下,进行判断FunctionCount(就是功能次序)如果按键触发的是FunctionCount1(功能1)那么就是送到LCD上显示初始的频率,如果是FunctionCount2那是显示的是占空比,程序如下:
voidKeyScan(void)//独立键盘扫描子函数
{
KEYPORT|=0xf0;
//每次扫描前,先将接键盘的引脚口拉高
if(Key1==0)//如果检测到有键按下
{
Scan10MsDelay();
//延时10ms
if(Key1==0)//再次判断是否确实按下按键,进行消抖操作。
{//功能键
FunctionCount++;
//功能计数器增加
if(FunctionCount==3)//如果是FunctionCount==3那么显示//的是正弦波
{
LCDCursor();
//调入光标函数,光标写入
LCDDispString(8,1,”Sin"
);
//因为FunctionCount==3
}//所以LCD显示的是”Sin"
elseif(FunctionCount==4)//如果是FunctionCount==4那么
{//显示的是方波
LCDCursor();
//调入光标函数,光标写入
LCDDispString(8,1,”Squre"
);
//LCD显示的是”Squre"
}
elseif(FunctionCount==5)//如果是FunctionCount==5那么
{//显示的是三角波
LCDDispString(8,1,"
Triangle"
//LCD显示的是”Sin”
}//
elseif(FunctionCount==6)//如果是FunctionCount==6那么
{//LCD显示的是锯齿波
//调入光标函数,光标写入
LCDDispString(8,1,"
Sawtooth"
//LCD显示的是"
Sawtooth”
}
elseif(FunctionCount==1)//如果是FunctionCount==1那么
{//显示的是频率
LCDDispNum(5,2,(FREofALL/10%10));
//LCD显示的是FRE=?
//调入光标函数,光标写入
elseif(FunctionCount==2)//如果是FunctionCount==2那么
{//显示的是占空比
LCDDispNum(13,2,(DUTYofALL/10%10));
//LCD显示的是//DUTY=?
//调入光标函数,光标写入
while(!
Key1);
//未松手时,不跳出循环,避免误检测
}
}
}
FunctionCount3到6是分别进行lcd显示正弦波,方波,三角波和锯齿波。
通过按键控制整个系统,按键2和按键3是分别是增加和减少键,在设置占空比和频率的时候需要用到他们,而按键4是确认键,对于所以参数已经设置完毕的情况下按下确认键。
由于功能简单,不是本论文的重点而且原理基本相同在这里就不阐述。
3锯齿波程序模块
锯齿波是经过锯齿波函数进行SawtoothOut(unsignedcharfre)来进行转换成数据量,再输出道D/A转换电路输出到示波器进行显示的波形[11]。
锯齿波是和三角波比较相似,他是由两个三角波叠加而成,所以,我们可以把锯齿波,看成是两个三角波。
在处理锯齿波的时候,也是当三角波来处理,锯齿波是由函数来产生,我们只需要知道,最高点,和最低点以及占空比和频率,那么波形就能够实现。
锯齿波的详细程序如下.
锯齿波函数的定义
voidSawtoothOut(unsignedcharfre)//定义锯齿波函数
{
SawtoothIncrement=fre;
//锯齿波的参数增加值等于频率值
FlagSawtooth=1;
//锯齿波默认初始值为1
Count=255;
//锯齿波函数的初始值为255
}
锯齿波函数的实现
if(FlagSawtooth==1)//判断是否是锯齿波,如果是才能继续
{
CountNumber++;
//增加次数计数器
if(CountNumber==2)//就可以输出波
{CountNumber=0;
//再次置0
Count=Count-SawtoothIncrement;
//找到下一个点
if(Count〈0)//判断是否为0如果为0了那么自动
Count=255;
//变为255
DATAOUTPUT=Count;
//输出波
}
}
图3—2锯齿波图
3.4三角波程序模块
三角波是经过锯齿波函数进行TriangleOut(unsignedcharfre)来进行转换成数据量,再输出道D/A转换电路输出到示波器进行显示的波形[12]。
三角波,上面我们提过,与锯齿波原理相同,三角波是由函数来产生,我们只需要知道,最高点,和最低点以及占空比和频率,那么波形就能够实现。
三角波的详细程序如下.
1.三角波函数的定义
voidTriangleOut(unsignedcharfre)//1—-10HZ2-—20Hz5——50Hz10-—100Hz
{
TriangleIncrement=fre;
//三角波的参数增加值等于频率值
FlagTriangle=1;
//三角波默认初始值为1
2.三角波函数的实现
if(FlagTriangle==1)判断是