基于dac的波形发生器设计与实现Word格式文档下载.docx

上传人:b****5 文档编号:17658247 上传时间:2022-12-07 格式:DOCX 页数:22 大小:296.85KB
下载 相关 举报
基于dac的波形发生器设计与实现Word格式文档下载.docx_第1页
第1页 / 共22页
基于dac的波形发生器设计与实现Word格式文档下载.docx_第2页
第2页 / 共22页
基于dac的波形发生器设计与实现Word格式文档下载.docx_第3页
第3页 / 共22页
基于dac的波形发生器设计与实现Word格式文档下载.docx_第4页
第4页 / 共22页
基于dac的波形发生器设计与实现Word格式文档下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

基于dac的波形发生器设计与实现Word格式文档下载.docx

《基于dac的波形发生器设计与实现Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于dac的波形发生器设计与实现Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。

基于dac的波形发生器设计与实现Word格式文档下载.docx

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很大,大电阻,大电容在制作上有困难,参数的精度也难以保证,而且体积大,漏电,体积大是该类波形发生器的显著缺点。

1.2单片机在波形发生器中的应用

随着电子技术的飞快发展,单片机的应用不断的深入,基于单片机的智能仪器的设计技术不断成熟。

单片机构成的仪器具有高可靠性,高性价比,单片机技术在智能仪表和自动化等诸多领域有了极为广泛的应用,并应用到各种家庭电器,单片机技术的广泛应用推动了社会的进步。

一块单片机芯片就是一台计算机,单片机的这种特殊的结构形式,使得其在某些应用领域,它承担了大中型计算机和通用微机无法完成的一些工作。

单片机有很多优点和特点,归纳有以下几个方面:

1.具有优异的性价比

单片机尽可能的把应用所需要的存储器,各种功能的I/O接口集成在一块芯片内,因而其性能优越,而价格性对低廉。

2.集成度搞,体积小,可靠性高

单片机把各种功能部件集成在一块芯片上,因而集成度高,为大规模集成电路或超大规模集成电路,又内部采用总线结构,因而大大减少了芯片内部之间的连线,这大大提高了单片机的可靠性和抗干扰能力,同时,体积小,对于强磁场环境易于采用屏蔽措施,适合于在恶劣环境下工作。

3.低电压和低功耗

单片机大量应用于便携式产品和家庭消费类产品,低电压和低功耗极为重要。

目前,单片机的功耗也越来越低,一枚纽扣电池就能使产品运行很长时间

5.控制功能强

单片机体积虽小,但五脏俱全,它非常适合专门的控制用途。

其指令系统中含有丰富的转移指令,容易通过编程实现相关控制

1.3课题研究目的,内容,和方案设计

利用DAC0832波形发生器设计一个能产生正弦波、方波、三角波、梯形波、锯齿波的波形发生器。

本题目中,方波信号是利用定时器中断产生的,每次中断时,将输出的信号按位取反即可。

设计一个能产生正弦波、方波、三角波、梯形波、锯齿波的波形发生器其他波形可以通过单片机控制DAC来实现。

1.三角波信号是将输出的二进制数字信号依次加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是确定以上的设置然后进行最后的确认。

2.LCD是用来显示当前的波形的名字,及波形的占空比和频率,在进行选择波形和波形参数的设置的时候需要用到的重要工具。

3.电源为整个系统供电,是整个系统的保障。

由跟USB线连接电脑和单片机。

4.A/D转换是整个系统的重点部分,它将单片机控制送来的数据转换成电压,为整个过程的重点,主要由DAC0832来完成。

5.数据通过DAC0832芯片转换后为电流信号,然后需要个外部功率放大器来实现电流和电压之间的转换。

6.把转换后得到的电压信号输出到示波器进行显示,得到波形。

2.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电流/电压转换电路与波形输出端之间的相连图

2.3各模块电路的设计

2.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复位电路设计

1.使CPU开始工作的方法就是给CPU一个复位信号,复位信号结束后,CPU从程序存储器“0000H”开始执行程序。

AT89S51高电平复位,复位的方式一般有三种[5]:

第一:

上电复位。

接通电源时,单片机复位。

第二:

手动复位。

设置一个复位按钮,当操作者按下按钮时产生一个复位信号。

第三:

自动复位。

设计一个复位电路,当系统满足某一条件时自动产生一个复位信号。

而本系统采用的是手动复位,在系统需要出新设置,或者死机的时候,可以按下reset键得意还原系统的状态。

2.复位电路与单片机的相连

毫无疑问复位键是与单片机的9好引脚相连,与接地之间连了10k电阻,与电源之间相连10uf的微波电容。

图2-8复位电路图

2.4.3按键电路设计

1.原理图如下

图2-9采用查询方式对各类波的切换

2.说明:

KEY1:

波形之间的切换,及占空比,频率的切换。

KEY2:

在设置占空比和频率时,按下,数值会减少。

KEY3:

在设置占空比和频率时,按下,数值会增加。

KEY4:

确认键。

3.工作介绍

对于外部中断实现对波形的切换,当KEY1按下时,LCD显示波形的名字的下面开始闪烁光标,再次按下进行波形之间的切换,按下KEY4键进行,开始切换占空比和频率,当切换到占空比时或者频率时,按下KEY3或者KEY4进行空比时或者频率的增加减少设置,最后再按下KEY4进行最后的确认,这时示波器里的波形应该已经发生了变化[6]。

4.按键与单片机的相连

按键KEY1,KEY2,KEY3,KEY4分别和单片机的P24,P25,P26,P27引脚相连,然后再分别通过一个4K的电阻和电源相连。

最后进行统一接地。

2.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程序

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显示的是"

elseif(FunctionCount==4)//如果是FunctionCount==4那么

{//显示的是方波

Squre"

//LCD显示的是"

Squre"

}

elseif(FunctionCount==5)//如果是FunctionCount==5那么

{//显示的是三角波

Triangle"

}//

elseif(FunctionCount==6)//如果是FunctionCount==6那么

{//LCD显示的是锯齿波

//调入光标函数,光标写入

Sawtooth"

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.3锯齿波程序模块

锯齿波是经过锯齿波函数进行SawtoothOut(unsignedcharfre)来进行转换成数据量,再输出道D/A转换电路输出到示波器进行显示的波形[11]。

锯齿波是和三角波比较相似,他是由两个三角波叠加而成,所以,我们可以把锯齿波,看成是两个三角波。

在处理锯齿波的时候,也是当三角波来处理,锯齿波是由函数来产生,我们只需要知道,最高点,和最低点以及占空比和频率,那么波形就能够实现。

锯齿波的详细程序如下。

1.锯齿波函数的定义

voidSawtoothOut(unsignedcharfre)//定义锯齿波函数

{

SawtoothIncrement=fre。

//锯齿波的参数增加值等于频率值

FlagSawtooth=1。

//锯齿波默认初始值为1

Count=255。

//锯齿波函数的初始值为255

2.锯齿波函数的实现

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)判断是否是锯齿波,如果是才能继续

增加次数计数器

if(CountNumber==2)//输出三角波

{

CountNumber=0。

再次置0

Count=Count+TriangleIncrement。

if(Count>

=256)//判断是否为256如果为256了

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1