基于dac0832的波形发生器设计与实现Word下载.docx
《基于dac0832的波形发生器设计与实现Word下载.docx》由会员分享,可在线阅读,更多相关《基于dac0832的波形发生器设计与实现Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
系统通过按键来和定位器进行整个系统的控制,按键控制切换产生正弦波,锯齿波,三角波,阶梯波,四中波形,而幅值和占空比是通过定位器来进行调节。
系统经过调试和最后的检测,可以得出本系统一下特点:
性能较好,稳定性强,价格便宜,容易操作,具有一定的实用性,最后的成品可以用在常用的有波形发生器功能要求的应用电子仪器设备上。
关键词:
单片机波形发生器DAC0832
ABSTRACT
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章绪论..............................................11.1波形发生器现状.....................................11.2单片机在波形发生器中的应用.........................11.3课题研究目的,内容,和方案设计.....................1
第2章硬件电路的设计....................................32.1波形发生器系统框图.................................32.2各模块之间的相连..................................32.3各模块电路的设计...................................62.3.1D/A转换电路设计.................................62.3.2复位电路设计.....................................72.4.3按键电路设计....................................72.4.4I/V转换电路设计.................................9
第3章软件设计.........................................103.1程序..............................................103.2按键程序模块......................................103.3锯齿波程序模块...................................123.4三角波程序模块....................................133.5正玄波程序模块....................................133.6方波程序模块......................................143.7延迟程序模块......................................16
第4章总结............................................17致谢....................................................18参考文献................................................19
第1章绪论
1.1波形发生器现状
波形发生器作为一种常用的应用电子仪器设备,传统的波形发生器可以完全用硬件电路搭建,如应用555振荡电路可以产生正弦波,三角波,方波等波形,传统的波形发生器多采用这种方式设计,这种方式不应用单片机,但是这种方式存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点,在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟震动等领域往往需要低频信号源,而由硬件搭建的波形发生器效果往往达不到好的效果,而且低频信号源所需要的RC很大,大电阻,大电容在制作上有困难,参数的精度也难以保证,而且体积大,漏电,体积大是该类波形发生器的显著缺点。
1.2单片机在波形发生器中的应用
随着电子技术的飞快发展,单片机的应用不断的深入,基于单片机的智能仪器的设计技术不断成熟。
单片机构成的仪器具有高可靠性,高性价比,单片机技术在智能仪表和自动化等诸多领域有了极为广泛的应用,并应用到各种家庭电器,单片机技术的广泛应用推动了社会的进步。
一块单片机芯片就是一台计算机,单片机的这种特殊的结构形式,使得其在某些应用领域,它承担了大中型计算机和通用微机无法完成的一些工作。
单片机有很多优点和特点,归纳有以下几个方面:
1.具有优异的性价比
单片机尽可能的把应用所需要的存储器,各种功能的I/O接口集成在一块芯片内,因而其性能优越,而价格性对低廉。
2.集成度搞,体积小,可靠性高
单片机把各种功能部件集成在一块芯片上,因而集成度高,为大规模集成电路或超大规模集成电路,又内部采用总线结构,因而大大减少了芯片内部之间的连线,这大大提高了单片机的可靠性和抗干扰能力,同时,体积小,对于强磁场环境易于采用屏蔽措施,适合于在恶劣环境下工作。
3.低电压和低功耗
单片机大量应用于便携式产品和家庭消费类产品,低电压和低功耗极为重要。
目前,单片机的功耗也越来越低,一枚纽扣电池就能使产品运行很长时间5.控制功能强
单片机体积虽小,但五脏俱全,它非常适合专门的控制用途。
其指令系统中含有丰富的转移指令,容易通过编程实现相关控制
1.3课题研究目的,内容,和方案设计
利用DAC0832波形发生器设计一个能产生正弦波、方波、三角波、梯形波、锯齿波的
波形发生器。
本题目中,方波信号是利用定时器中断产生的,每次中断时,将输出的信号按位取反即可。
设计一个能产生正弦波、方波、三角波、梯形波、锯齿波的波形发生器其他波形可以
通过单片机控制DAC来实现。
1.三角波信号是将输出的二进制数字信号依次加1,达到0xff时依次减1,并实时将数字
信号经D/A转换得到;
1
2.锯齿波信号是将输出的二进制数字信号依次加1,达到0xff时置为0x00,并实时将数字信号经D/A转换得到的;
3.方波信号是将输出二进制数字信号以1和0来显示在上面,还是在下面,并实时将数字信号经D/A转换得到的;
4.正弦波是利用MATLAB将正弦曲线均匀取样后,得到等间隔时刻正弦波取样值,然后依次输出后经D/A转换得到。
采用单片机(AT89S51)和数模转换芯片(DAC0832)实现波形的产生,波形的产生由程序控制,向D/A的输入端按一定的规律发送数据,经过D/A产生波形,通过按键或中断控制不同波形的产生。
此方案通过编程简化了外部电路,原理简单,容易实现。
通过编程实现不同波型的产生,并且可以通过按键实现波形的切换。
该方案线路简单,结构紧凑,系统稳定,易控制,容易调试等优点。
2
第2章硬件电路的设计
2.1波形发生器系统框图
LCD波形指示
A/D转换按键电流/电压转换输出AT89S51
电源
图2-1波形发生器系统框图
原理框图分析:
该波形发生器主要由单片机(AT89S51),数模转换电路(DAC0832),电流/电压转换电路(TL082),按键和ISP接口等组成。
其工作原理为当按下通过按下按键来进行切换波形,而且占空比,幅值可调,然后就会产生相对应的波形。
1.本系统的通过按键(按键和定位器)来进行整个系统的控制,按键1是波形选择及占空
键4是确定以上的设置然比和频率的选择,按键2和按键3是调节占空比和频率的,按
后进行最后的确认。
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号四个引[1]脚相连,)然后再分别通过一个4K的电阻和电源相连。
最后进行统一接地。
3
图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中的数据通过这条线把原始的数字[2]量数据传到DAC0832进行转化,转化成电流模拟信号。
4
其他的引脚中的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芯片[3]的11号)引脚是模拟电流输出端1与功率放大器负极相连。
图2-5D/A转换电路与电流/电压转换电路的相连图
5
电流/电压转换电路与波形输出端之间的相连
波形输出端有两个引脚,1号引脚是接功率放大器的输出端,2号引脚是接地。
图2-6电流/电压转换电路与波形输出端之间的相连图2.3各模块电路的设计
2.3.1D/A转换电路设计
图2-7中DAC0832的数字量B由单片机送来,AMPA和BAMP均为运算放大器,输出电压V通过2个10K电阻反馈到运算放大器AMPA输入端,其他如图2-7,可由基尔霍夫定OUT
律列出方程组,并解得
V,(B-128)•V/128OUTREF
由上式在选用+V时,如果输入数字量最高位b7为“1”时,则输出模拟电压V为正;
REFOUT若输入数字量最高位b7为“0”时,则输出模拟电压V为负。
在选用-V时,输出值正OUTREF[4]好与+V选用时极性相反。
REF
VOUT
图2-7D/A转换电路图
6
2.3.2复位电路设计
1.使CPU开始工作的方法就是给CPU一个复位信号,复位信号结束后,CPU从程序存储器[5]“0000H”开始执行程序。
AT89S51高电平复位,复位的方式一般有三种:
第一:
上电复位。
接通电源时,单片机复位。
第二:
手动复位。
设置一个复位按钮,当操作者按下按钮时产生一个复位信号。
自动复位。
设计一个复位电路,当系统满足某一条件时自动产生一个复位信号。
第三:
而本系统采用的是手动复位,在系统需要出新设置,或者死机的时候,可以按下reset键得意还原系统的状态。
2.复位电路与单片机的相连
毫无疑问复位键是与单片机的9好引脚相连,与接地之间连了10k电阻,与电源之间相连10uf的微波电容。
图2-8复位电路图
2.4.3按键电路设计
1.原理图如下
7
KEY1
KEY3
KEY2
图2-9采用查询方式对各类波的切换
2.说明:
KEY1:
波形之间的切换,及占空比,频率的切换。
KEY2:
在设置占空比和频率时,按下,数值会减少。
KEY3:
在设置占空比和频率时,按下,数值会增加。
KEY4:
确认键。
3.工作介绍
对于外部中断实现对波形的切换,当KEY1按下时,LCD显示波形的名字的下面开始闪烁光标,再次按下进行波形之间的切换,按下KEY4键进行,开始切换占空比和频率,当切换到占空比时或者频率时,按下KEY3或者KEY4进行空比时或者频率的增加减少设置,[6]最后再按下KEY4进行最后的确认,这时示波器里的波形应该已经发生了变化。
4.按键与单片机的相连
按键KEY1,KEY2,KEY3,KEY4分别和单片机的P24,P25,P26,P27引脚相连,然后再分别通过一个4K的电阻和电源相连。
8
2.4.4I/V转换电路设计
图2.10I/V转换电路
1.说明:
实现I/V转换最简单的方法就是直接在1out1和Iout2之间跨界一电阻,这样就很容易的实现了I/V转换,但是这种方法忽略了一个阻抗问题。
对于DAC0832来说,R的取值应尽可能大,能够保证获得更多的电压,对于与输出电压相连的后续电路来说,R的取值应尽可能的小,以降低输出阻抗,这两方面是矛盾的,所以这种方式欠合理。
而合理的方[7]式是应用运算放大器实现I/V转换,也解决了阻抗的问题。
2.I/V转换电路与DAC0832的相连
一级功率放大器TL082的负引脚与DAC0832的11号引脚相连,正极接地,而二级功[8]率放大器TL082的负极通过10K的电阻与DAC0832的8号引脚相连,正极也接地。
9
第3章软件设计
根据功能,系统软件设计分成几个模块编程:
主程序模块,按键程序模块,锯齿波程[9]序模块,三角波程序模块,正弦波程序模块,方波程序模块,延时程序模块。
3.1程序
1.程序流程图
开始执行经拷到单片机里的程序,一些初
始程序之类。
通过按键选择正弦波,方波,三角波和锯
齿波。
这部分也是需要结合按键和旋钮的,通过
按键选择波形之后可以设置占空比和频率
等参数,幅值而已通过旋钮来调的。
按下确认键进行确认,如果需要重新设置,
按下背部的reset键来进行重新设置。
一切准备就绪,把数据送到dac0832里进
行转换成电流,或者电压然后通过TL0832
和放大器进行功放。
把转换好的电压,送到示波器里进行最后
的显示。
图3-1程序流程图
程序中主要实现利用按键来控制不同波形的输出。
3.2按键程序模块
按键程序主要是讲四个按键如何工作的,工作的过程基本相同,这里我们重点对按键1进行详[10]细介绍,其他按键工作原理基本不变。
首先是进行键盘扫描扫描前,接键盘的引脚口拉高,这样发生什么变换,信号不至于紊乱,然后判断按键1是否按下,如果按下,进行判断FunctionCount(就是功能次序)如果按键触发的是FunctionCount1(功能1)那么就是送到LCD上显示初始的频率,如果
10
是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显示的是"
如果是FunctionCount==4那么elseif(FunctionCount==4)//
{//显示的是方波
Squre"
//LCD显示的是"
Squre"
}
elseif(FunctionCount==5)//如果是FunctionCount==5那么
{//显示的是三角波
Triangle"
}//
elseif(FunctionCount==6)//如果是FunctionCount==6那么
{//LCD显