项目9 信号发生器的设计(课件材料)

上传人:公**** 文档编号:567676952 上传时间:2024-07-22 格式:PPT 页数:77 大小:3.02MB
返回 下载 相关 举报
项目9 信号发生器的设计(课件材料)_第1页
第1页 / 共77页
项目9 信号发生器的设计(课件材料)_第2页
第2页 / 共77页
项目9 信号发生器的设计(课件材料)_第3页
第3页 / 共77页
项目9 信号发生器的设计(课件材料)_第4页
第4页 / 共77页
项目9 信号发生器的设计(课件材料)_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《项目9 信号发生器的设计(课件材料)》由会员分享,可在线阅读,更多相关《项目9 信号发生器的设计(课件材料)(77页珍藏版)》请在金锄头文库上搜索。

1、电子工业出版社单片机控制技术单片机控制技术 项目式教程项目式教程 (C C语言版)语言版)1相关知识电子工业出版社项目项目9 9 信号发生信号发生 器的设计器的设计2相关知识l 能了解能了解D/AD/A转换器的相关技术指标;转换器的相关技术指标; l 能理解能理解DAC0832DAC0832的工作原理与应用方法;的工作原理与应用方法; l 能掌握能掌握DAC0832DAC0832与与5151单片机的接口方法;单片机的接口方法;l 能掌握信号发生器的硬件电路的分析与设计方法;能掌握信号发生器的硬件电路的分析与设计方法;l 能熟练编写信号发生器产生各种波形信号的单片机控制能熟练编写信号发生器产生各

2、种波形信号的单片机控制程序。程序。 学习目标学习目标 3相关知识l 叙述叙述D/AD/A转换器的技术指标要求;转换器的技术指标要求;l 叙述叙述DAC0832DAC0832的工作原理;的工作原理;l 设计单片机控制的信号发生器的工作电路;设计单片机控制的信号发生器的工作电路;l 编写信号发生器产生各种波形信号的单片机控制程序。编写信号发生器产生各种波形信号的单片机控制程序。 工作任务工作任务 4相关知识任务任务9.1 灯光亮度调节器的设计灯光亮度调节器的设计任务任务9.2 信号发生器的设计信号发生器的设计项目拓展项目拓展 串行串行D/A转换芯片转换芯片PCF8591在实验板在实验板 上的应用上

3、的应用项目小结项目小结思考与训练思考与训练项目项目9 9 信号发生器的设计信号发生器的设计5相关知识任务任务9.1 灯光亮度调节器的设计灯光亮度调节器的设计lD/A转换的功能就是将数字量转换成模拟量。转换的功能就是将数字量转换成模拟量。l基本的基本的D/A转换器由电压基准或电流基准、精密电阻网络、转换器由电压基准或电流基准、精密电阻网络、电子开关及全电流求和电路构成。电子开关及全电流求和电路构成。9.1.1 9.1.1 D/AD/A转换转换器的基本原理器的基本原理1D/A 转换器的分类转换器的分类按工作方式分:按工作方式分:并行并行D/A转换器(权电阻转换器(权电阻D/A转换器、转换器、 R-

4、 2R T型型D/A转换器)转换器) 串行串行D/A转换器转换器 间接间接D/A转换器转换器6相关知识按按D/AD/A转换的分辨率分:转换的分辨率分:低分辨率低分辨率D/AD/A转换器转换器 中分辨率中分辨率D/AD/A转换器转换器 高分辨率高分辨率D/AD/A转换器转换器按模拟量输出方式分:按模拟量输出方式分:电流输出电流输出D/AD/A转换器转换器 电压输出电压输出D/AD/A转换器转换器按按模拟电子开关电路的不同模拟电子开关电路的不同分:分: CMOSCMOS开关型开关型D/AD/A转换器(速度要求不高转换器(速度要求不高) ) 双极型开关双极型开关D/AD/A转换器转换器 电流开关型(

5、速度要求较高)电流开关型(速度要求较高) ECL ECL电流开关型(转换速度更高)电流开关型(转换速度更高)7相关知识2D/A 转换器的组成转换器的组成 D/A转换器由数码寄存器、模拟电子开关电路、解码网转换器由数码寄存器、模拟电子开关电路、解码网络、求和电路及基准电压等几部分组成。络、求和电路及基准电压等几部分组成。 以以R-2R T型型D/A转换器为例,其由基准电压转换器为例,其由基准电压Vref、T型型(R-2R)电阻网络、位切换开关和运算放大器组成。)电阻网络、位切换开关和运算放大器组成。8相关知识3D/A 转换器的工作原理转换器的工作原理 数字量是用代码按数位组合起来表示的,对于有权

6、码,数字量是用代码按数位组合起来表示的,对于有权码,每位代码都有一定的位权。为了将数字量转换成模拟量,必每位代码都有一定的位权。为了将数字量转换成模拟量,必须将每须将每1 1位的代码按其位权的大小转换成相应的模拟量,然位的代码按其位权的大小转换成相应的模拟量,然后将这些模拟量相加,即可得到与数字量成正比的总模拟量,后将这些模拟量相加,即可得到与数字量成正比的总模拟量,实现数字实现数字模拟转换。模拟转换。9相关知识R-2R TR-2R T型型D/AD/A转换器工作原理:转换器工作原理:图9.1 R-2R T型D/A转换器原理电路10相关知识 图示的电路是一个图示的电路是一个3位二进制数的位二进制

7、数的D/A转换电路,每位二转换电路,每位二进制数控制一个开关进制数控制一个开关S。当第。当第i位的数码为位的数码为“0”时,开关时,开关Si打打在左边;当第在左边;当第i位的数码为位的数码为“1”时,开关时,开关Si打在右边。当打在右边。当S0接通时,接通时, I0 I0 I0 , I1 I0+ I0 2I0同理同理 I1 I1 I1 , I2 2I1 I2 I2 I2 , I 2I2推出推出 I0 I/8 ,I1 I/4 ,I2 I/2 I I0 + I1 + I2 (1/8 + 1/4 + 1/2)I - Uref(1/8 + 1/4 + 1/2)/R11相关知识将上式推广到将上式推广到n

8、 n位二进制数的转换,可得一般表达式位二进制数的转换,可得一般表达式 II- U- Urefref(a a0 0/2/2n n + a + a1 1/2/2n-1n-1 + + + a + an-1n-1/2/21 1 +an/2 +an/20 0)/R/R则输出电压为则输出电压为 UoUo(I I)R Rf f-U-Urefref(a a0 0/2/2n n+ a+ a1 1/2/2n-1n-1+ +a+an-1n-1/2/21 1+a+an n/2/20 0)R Rf f/R/R 输出电压会因器件误差、集成运放的非理想特性而产生输出电压会因器件误差、集成运放的非理想特性而产生一定的转换误差

9、。一定的转换误差。12相关知识一般一般D/A转换器:转换器: OUT BUr其中:其中:Ur为常量,由参考为常量,由参考Uref决定。决定。 B为输入数字量,为二进制数。为输入数字量,为二进制数。B可为可为8位、位、12位、位、16 位等,由位等,由DAC芯片型号决定。芯片型号决定。当当B为为n位时位时: Bbn-1bn-2b1b0bn-12n-1+ bn-22n-2+ b121+b020 式中,式中,bn-1为最高位;为最高位;b0为最低位。为最低位。 13相关知识1分辨率分辨率 分辨率是分辨率是D/A转换器对输入量变化敏感程度的描述,与转换器对输入量变化敏感程度的描述,与输入数字量的位数有

10、关。如果数字量的位数为输入数字量的位数有关。如果数字量的位数为n,则,则D/A转转换器的分辨率为换器的分辨率为1/2n。即数。即数/模转换器能对满刻度的模转换器能对满刻度的1/2n输入输入量作出反应。量作出反应。 9.1.2 9.1.2 D/AD/A转换转换器的技器的技术术性能指性能指标标分辨率输出模拟量的满量程值分辨率输出模拟量的满量程值2n如:如:8位数的分辨率为位数的分辨率为1/256,10位数分辨率为位数分辨率为1/1024通常用通常用D/A转换器输入数字量的位数来表示分辨率。转换器输入数字量的位数来表示分辨率。D/A转换器转换器常可分为常可分为8位、位、10位、位、12位三种。位三种

11、。14相关知识2精度精度 如果不考虑如果不考虑D/AD/A的转换误差,的转换误差,D/AD/A转换的精度为其分辨转换的精度为其分辨率的大小。因此,要获得一定精度的率的大小。因此,要获得一定精度的D/AD/A转换结果,首要条转换结果,首要条件是选择有足够分辨率的件是选择有足够分辨率的D/AD/A转换器。转换器。 转换速度是转换速度是DAC每秒可以转换的次数,其倒数为转换每秒可以转换的次数,其倒数为转换时间。时间。转换时间转换时间是指从输入数字量到转换为模拟量输出所是指从输入数字量到转换为模拟量输出所需的时间。当需的时间。当D/A转换器的输出形式为电流时,转换时间较转换器的输出形式为电流时,转换时

12、间较短;当短;当D/A转换器的输出形式为电压时,转换时间要加上运转换器的输出形式为电压时,转换时间要加上运算放大器的延迟时间算放大器的延迟时间而长一点,一般在几十微秒内。而长一点,一般在几十微秒内。3转换速度转换速度 15相关知识4建立时间建立时间 建立时间是指从输入数字量变化到输出达到终值误差建立时间是指从输入数字量变化到输出达到终值误差(1/2)LSB(1/2)LSB(最低有效位最低有效位) )时所需的时间,即输入的数字量变化时所需的时间,即输入的数字量变化后,输出模拟量稳定到相应的数字范围内所需的时间。后,输出模拟量稳定到相应的数字范围内所需的时间。 通常以建立时间来表示转换速度。通常以

13、建立时间来表示转换速度。 输入编码形式是指输入编码形式是指D/A转换电路输入的数字量的形式。转换电路输入的数字量的形式。如二进制码、如二进制码、BCD码等。码等。5输入编码形式输入编码形式 16相关知识6线性度线性度 线性度是指线性度是指D/AD/A转换器的实际转移特性与理想直线之间的转换器的实际转移特性与理想直线之间的最大误差,或最大偏移。通常给出在一定温度下的最大非线最大误差,或最大偏移。通常给出在一定温度下的最大非线性度,一般为性度,一般为0.01%0.01%0.030.03。 大部分大部分D/A转换芯片是电压型输出,一般为转换芯片是电压型输出,一般为510V;也;也有高压输出型的,为有

14、高压输出型的,为2430V。有一些是电流型的输出,低。有一些是电流型的输出,低者为者为20mA左右,高者可达左右,高者可达3A。7输出电平输出电平 8尖峰尖峰 尖峰是输入的数字量发生变化时产生的瞬时误差。通常尖峰是输入的数字量发生变化时产生的瞬时误差。通常尖峰的转换时间很短,但幅度很大。在许多场合是不允许尖峰的转换时间很短,但幅度很大。在许多场合是不允许有尖峰存在的,应采取措施予以消除。有尖峰存在的,应采取措施予以消除。17相关知识 正确了解正确了解D/A转换器件的技术性能参数,对于合理选用转换器件的技术性能参数,对于合理选用转换芯片、正确设计接口电路十分重要。转换芯片、正确设计接口电路十分重

15、要。 D/AD/A转换器的性能指标很多,但在选用合适的芯片型号转换器的性能指标很多,但在选用合适的芯片型号时主要考虑的是它的时主要考虑的是它的分辨率、精度和转换速度分辨率、精度和转换速度。18相关知识 目前单片机系统常用的D/A转换器的转换精度有8位、10位、12位等,与单片机的接口方式有并行接口、串行接口。9.1.3 9.1.3 DAC0832DAC0832芯片及其与芯片及其与单片机接口片机接口电路路 1 1DAC0832DAC0832芯片介绍芯片介绍(1 1)DAC0832DAC0832的性能的性能 8位D/A转换器,单电源供电,在+5+15 V范围均可正常工作。基准电压的范围为10V;电

16、流建立时间为1s;CMOS工艺,低功耗(仅为20 mW)。19相关知识DAC0832主要特性: 输出电流线性度可在满量程下调节; 转换时间(电流建立时间)为; 数据输入可采用双缓冲、单缓冲或直通方式; 增益温度补偿为0.02%FS/; 每次输入数字为8位二进制数; 低功耗,20mW; 逻辑电平输入与TTL兼容; 基准电压的范围为10V; 单电源供电,可在515V 内正常工作。20相关知识(2)DAC0832的内部结构的内部结构21相关知识 该转换器由输入寄存器和DAC寄存器构成两级数据输入锁存。使用时数据输入可以采用两级锁存(双锁存)形式,或单级锁存(一级锁存,一级直通)形式,或直接输入(两级

17、直通)形式。此外,由3个与门电路可组成寄存器输出控制逻辑电路,该逻辑电路的功能是进行数据锁存控制。当=0时,输入数据被锁存;当=1时,锁存器的输出跟随输入的数据。D/A转换电路是一个R-2R T型电阻网络,可实现8位数据的转换。22相关知识(3 3)DAC0832DAC0832的引脚的引脚 DAC0832为20引脚、双列直插式封装。Vcc:电源线。DAC0832的电源可以在515V内变化。典型使用时用+15V电源。AGND和和DGND:AGND为模拟量地线,DGND为数字量地线。使用时,这两个接地端应始终连在一起。CS:片选输入信号,低电平有效。只有当CS=0时,这片DAC0832才被选中。D

18、I0DI7:8位数字量输入端。应用时,如果数据不足8位,则不用的位一般接地。23相关知识ILE:输入锁存允许信号,高电平有效。只有当ILE=1时,输入数字量才可能进入8位输入寄存器。WR1:写信号1,低电平有效,控制输入寄存器的写入。ILE和WR1信号控制输入寄存器是数据直通方式还是数据锁存方式:当ILE=1且WR1=0时,为输入寄存器直通方式;当ILE=1且WR1=1时,为输入寄存器锁存方式。WR2:写信号2,低电平有效,控制DAC寄存器的写入。XFER:数据传送控制输入信号,低电平有效,控制数据从输入寄存器到DAC寄存器的传送。WR2和XFER信号控制DAC寄存器是数据直通方式还是数据锁存

19、方式:当WR2=0且XFER =0时,为DAC寄存器直通方式;当WR2=1或XFER =1时,为DAC寄存器锁存方式。24相关知识VrefVref:参考电压线。Vref接外部的标准电源,与芯片内的电阻网络相连接,该电压可正可负,范围为1010V。Iout1Iout1和和Iout2Iout2:电流输出端。Iout1为DAC电流输出1,当DAC寄存器中的数据为0xFF时,输出电流最大,当DAC寄存器中的数据为0x00时,输出电流为。Iout2为DAC电流输出2。DAC转换器的特性之一是Iout1Iout2=常数。在实际使用时,总是将电流转为电压来使用,即将Iout1和Iout2加到一个运算放大器的

20、输入端。25相关知识RfbRfb:运算放大器的反馈电阻端,电阻(15k)已固化在芯片中。因为DAC0832是电流输出型D/A转换器,为得到电压的转换输出,使用时需在两个电流输出端接运算放大器,Rfb即为运算放大器的反馈电阻。图9.5 运算放大器的接法26相关知识(4 4)DAC0832DAC0832的工作原理的工作原理 将数字量的每一位按权值分别转换成模拟量,再通过运算放大器求和相加,D/A转换器内部有一个解码网络,以实现按权值分别进行D/A转换。(5 5)DAC0832DAC0832的输出的输出 DAC0832是电流输出型D/A转换器。图9.6 DAC0832单极性电压输出电路单极性输出运放

21、:单极性输出运放:VoutVoutIout1Iout1RfbRfb B BVref/256Vref/25627相关知识双极性输出运放:双极性输出运放:Vout Vout ( Vout1/R ( Vout1/R Vref/2R )2RVref/2R )2R 2Vout12Vout1VrefVref 2BVref/2562BVref/256VrefVref BVref/128BVref/128VrefVref Vref(BVref(B128)/128128)/128图9.7 DAC0832双极性电压输出电路当当Vref为正,数字为正,数字量在量在0x010x7F之之间变化时,间变化时,Vout为为

22、负值;当数字量在负值;当数字量在0x800xFF之间之间变化时,变化时,Vout为正为正值。值。 28相关知识(1)直通方式下的接口电路直通方式下的接口电路 直通方式是数据直接输入直通方式是数据直接输入( (两级直通两级直通) )的形式。的形式。 两个两个8 8位数据寄存器都处于数据接收状态,位数据寄存器都处于数据接收状态,LE1=1LE1=1,LE2=1LE2=1,ILE=1ILE=1,而,而WR1WR1、WR2WR2、CSCS和和XFERXFER均为均为0 0。输入数据直。输入数据直接送到内部接送到内部D/AD/A转换器去转换。转换器去转换。 2 2DAC0832DAC0832与与5151

23、单片机的接口电路单片机的接口电路 DAC0832DAC0832的工作方式:直通方式、单缓冲方式和双缓冲方式的工作方式:直通方式、单缓冲方式和双缓冲方式 29相关知识图9.8 直通方式下89C51与DAC0832的连接图30相关知识(2)单缓冲方式下的接口电路单缓冲方式下的接口电路 单缓冲方式是单级锁存单缓冲方式是单级锁存( (一级锁存,一级直通一级锁存,一级直通) )形式,形式,就是使就是使DAC0832DAC0832的两个的两个8 8位数据寄存器中有一个处于直通方式,位数据寄存器中有一个处于直通方式,而另一个处于受控的锁存方式,或者两个而另一个处于受控的锁存方式,或者两个8 8位数据寄存器处

24、位数据寄存器处于同时受控的方式,即同时送数,同时锁存。于同时受控的方式,即同时送数,同时锁存。 在单缓冲工作方式下,可以将在单缓冲工作方式下,可以将8 8位位DACDAC寄存器置于直通寄存器置于直通方式。为此,应将方式。为此,应将WR2WR2和和XFERXFER接地,而输入寄存器的工作状接地,而输入寄存器的工作状态受单片机的控制。态受单片机的控制。 31相关知识 WR=0 WR=0,P2.7=0P2.7=0, DAC0832 DAC0832的地址为的地址为 0x7FFF 0x7FFF,将数字量将数字量0x080x08转换为模拟量的程序:转换为模拟量的程序:#define DAC0832 XBY

25、TE0x7FFF#define DAC0832 XBYTE0x7FFFDAC0832=0x08DAC0832=0x08;或或 output(0x7FFFoutput(0x7FFF,0x08)0x08); 32相关知识 两个输入寄存器同时受控的连接方法,WR1和WR2一起接89C51的WR,CS和XFER共同接89C51的P2.7,因此两个寄存器的地址相同。33相关知识(3 3)双缓冲方式下的接口电路)双缓冲方式下的接口电路 双缓冲方式的数据输入可以采用两级锁存(双锁存)的形式,就是把DAC0832的两个锁存器都接成受控锁存方式。DAC0832的WR1、WR2、CS和XFER都受单片机送来的信号

26、的控制。 当 WR=0,P2.7=0,P2.6=1,8位输入寄存器处于送数状态, 8位DAC寄存器处于锁存状态,不能进行D/A转换。 34相关知识双缓冲方式下双缓冲方式下89C51与两片与两片DAC0832的连接图的连接图35相关知识 如DAC0832DAC0832的的8 8位输入寄存器地址为位输入寄存器地址为0x7FFF0x7FFF, WR=0,P2.7=1,P2.6=0,8位DAC寄存器处于送数据状态,开始进行D/A转换。DAC0832DAC0832的的8 8位位DACDAC寄存器的地址为寄存器的地址为0xBFFF0xBFFF,将,将一个数字量转换为模拟量的程序:一个数字量转换为模拟量的程

27、序:#define DAC0832_1 XBYTE0xBFFF#define DAC0832_2 XBYTE0x7FFFDAC0832_1=0x08;DAC0832_2=0x08;或 output(0xBFFF, 0x08) ; output(0x7FFF, 0x08) ;36相关知识 1 1任务要求任务要求9.1.4 9.1.4 灯光亮度调节器的设计灯光亮度调节器的设计 用AT89C51单片机和DAC0832控制一个发光二极管,使发光二极管的亮度逐渐变暗,再逐渐变亮,不断循环。 2 2任务分析任务分析 改变发光二极管的亮度,就要改变通过发光二极管的电流。方法很多,利用AT89C51控制DAC

28、0832数模转换芯片,DAC0832的输出转换成电压去驱动发光二极管。当DAC0832的输入数字量变化时,输出电压改变,通过发光二极管的电流变化,发光二极管的亮度就改变。37相关知识 3 3任务设计任务设计 (1)器件选择器件名称数量(只)AT89C5116MHz 晶体122pF瓷片电容210uF电解电容110k电阻1470电阻1uA4711DAC08321发光二极管LED138相关知识(2)硬件原理图设计 DAC0832单缓冲方式, P2和P0决定地址,片选信号CS低电平有效,P2.7为0,DAC0832的地址为0x7FFF。 39相关知识(3 3)软件程序设计)软件程序设计:#includ

29、e #include #define uint unsigned int#define uchar unsigned char#define DAC0832 XBYTE0x7FFF/延时子程序void DelayMS(uint x) uchar t; while(x-) for(t=0;t0;i-) AC0832=i; DelayMS(1); for(i=0;i256;i+) AC0832=i; DelayMS(1); 40相关知识(4)软硬件联合调试 在Protus环境下,将编译好的软件下载到AT89C51中运行,可以看到LED灯如任务要求的一样先由亮逐渐变暗,再由暗逐渐变亮。41相关知识

30、1 1任务要求任务要求任任务务9.2 信号信号发发生器的生器的设计设计 用单片机AT89C51和D/A转换芯片DAC0832组成的信号发生器生成要求周期和幅度(0V+5V)的锯齿波、三角波、方波或正弦波。 2 2任务分析任务分析 锯齿波:向DAC0832反复送入0x000xFF数据,就会生成 幅度为0V+5V的锯齿波三角波:向DAC0832反复送入0x000xFF和0xFF 0x00数 据,就会生成幅度为0V+5V的三角波方波:向DAC0832送入一定时长的0x00和一定时长的0xFF, 就会生成幅度为0V+5V的方波42相关知识 波形的周期与单片机的机器周期和程序中的延时长短相关。正弦波:等

31、时间间隔分割正弦信号,计算出分割时刻的信 号幅值,将幅值对应的数字量存储到ROM中,然后 用查表的方法取出这些取样值,送到DAC0832转换 后输出,那么输出信号就是正弦波形。 如:波形频率为50Hz的正弦波信号, 正弦波信号以5作为1个阶梯, 则分成 360572份, 时间间隔为 20720.278ms。 当参考电压为5V时,72个采样值、输 出电压值、正弦值、角度如表9.2所示。43相关知识XsinX输出电压输入数字量0909018018027027036000.00002.500V0x7F0xFF0x7F0x0050.08722.718V0x8A0xFE0x750x01100.17362

32、.934V0x950xFD0x6A0x02150.25883.147V0xA00xFA0x5F0x04200.34203.355V0xAB0xF70x540x07250.42263.557V0xB50xF30x4A0x0C300.50003.750V0xBF0xED0x400x11350.57363.934V0xC80xE70x360x17400.64284.107V0xD10xE10x2D0x1E450.70714.268V0xD90xD90x250x25500.76604.415V0xE10xD10x1E0x2D550.81924.548V0xE70xC80x170x36600.86604

33、.665V0xED0xBF0x110x40650.90934.773V0xF30xB50x0C0x4A700.93974.849 V0XF70xAB0x070x54750.96594.915V0xFA0xA00x040x5F800.98484.962V0xFD0x950x020x6A850.99624.991V0xFE0x8A0x010x75901.00005.000V0xFF0x7F0x000x7F表表9.2 正弦波数据表正弦波数据表44相关知识 3 3任务设计任务设计 (1)器件选择器件名称数量(只)AT89C5116MHz 晶体122pF瓷片电容210uF电解电容110k电阻110k可变

34、电阻11k电阻1uA4711DAC08321数字电压表1示波器145相关知识(2)硬件原理图设计 DAC0832工作于单缓冲方式,地址为0x7FFF。Vref接5V电压,输出的单极性电压在05V之间变化。 46相关知识(3)软件程序设计: 产生锯齿波的源程序如下:#include #include #define uint unsigned int#define uchar unsigned char#define DAC0832 XBYTE0x7FFF/延时子程序void DelayMS(uint x) uchar t; while(x-) for(t=0;t120;t+);/ 主程序生成锯

35、齿波void main() uchar i; while(1) for(i=0;i256;i+) DAC0832=i; DelayMS(1); 47相关知识产生三角波的源程序如下: #include #include #define uint unsigned int#define uchar unsigned char#define DAC0832 XBYTE0x7FFF/延时子程序void DelayMS(uint x) uchar t; while(x-) for(t=0;t120;t+);/ 主程序生成三角波void main() uchar i; while(1) for(i=0;i

36、0;i-) DAC0832=i; DelayMS(1); 48相关知识产生正弦波的源程序如下:#include #include #define uint unsigned int#define uchar unsigned char#define DAC0832 XBYTE0x7FFF49相关知识/初始化正弦波波形数据数组uchar code data =0x7F,0x8A,0x95,0xA0,0xAB,0XB5, 0xBF,0xC8,0xD1,0xD9,0xE1,0xE7,0xED,0xF3, 0xF7,0xFA,0xFD,0xFE,0xFF,0xFE,0xFD,0xFA, 0xBF,0x

37、F3,0xED,0xE7,0xE1,0xD9,0xD1,0xC8, 0xBF,0xB5,0xAB,0xA0,0x95,0x8A,0x7F,0x75, 0x6A,0x5F,0x54,0x4A,0x40,0x36,0x2D,0x25, 0x1E,0x17,0x11,0x0C,0x07,0x04,0x02,0x01, 0x00,0x01,0x02,0x04,0x07,0x0C,0x11,0x17, 0x1E,0x25,0x2D,0x36,0x40,0x4A,0x54,0x5F, 0x6A,0x75;50相关知识/延时子程序void DelayMS(uint x) uchar t; while(x-)

38、 for(t=0;t120;t+);/主程序生成正弦波void main() uchar i; while(1) for(i=0;i72;i+) DAC0832= datai; DelayMS(1); 51相关知识(4)软硬件联合调试 将上面相应波形的程序编译为*.hex文件后,在Proteus绘制的原理图中,将*.hex文件加载到单片机AT89C51中运行,在虚拟示波器上可以看到对应的波形图。在Proteus仿真运行过程中可能会提示CPU过载,这时虚拟示波器可能会无法实时显示波形,可将虚拟示波器通道A中指向1的黄色旋钮从1开始先正向旋转一圈,再反向旋转一圈,这样会使虚拟示波器尽快刷新显示波形

39、。 52相关知识1 1PCF8591PCF8591简介简介项目拓展项目拓展 串行串行D/AD/A转换芯片转换芯片PCF8591PCF8591在实验板上的应用在实验板上的应用 PCF8591是一个单片集成的具有I2C总线接口的8位A/D及D/A转换器,有4路A/D输入,1路D/A输出。PCF8591的输入输出地址、控制和数据信号都是通过I2C总线以串行的方式进行传输。 53相关知识PCF8591的主要特性:的主要特性: 单独供独供电 PCF8591的操作的操作电压范范围+2.5V+6V 低待机低待机电流流 通通过I C总线串行串行输入入/输出出 PCF8591通通过3个硬件地址引脚个硬件地址引脚

40、寻址址 PCF8591的采的采样率由率由I C总线速率决定速率决定 4个模个模拟输入可入可编程程为单端型或差分端型或差分输入入 自自动增量增量频道道选择 PCF8591的模的模拟电压范范围从从VSS到到VDD PCF8591内置跟踪保持内置跟踪保持电路路 8-bit逐次逼近逐次逼近A/D转换器器 通通过1路模路模拟输出出实现DAC增益增益 54相关知识 2 2PCF8591PCF8591内部结构框图内部结构框图55相关知识3 3PCF8591PCF8591引脚功能引脚功能引脚序号引脚名称引脚功能1AIN0模拟量输入端口2AIN13AIN24AIN35A0模拟通道选择地址6A17A28VSS负电

41、源电压9SDAIC总线数据信号10SCLIC总线时钟信号11OSC外部时钟输入端,内部时钟输出端12EXT内部、外部时钟选择线,使用内部时钟时 EXT 接地13AGND模拟信号地14Vref基准电源电压15AOUTD/A 转换模拟量输出端16VDD正电源电压56相关知识4 4PCF8591PCF8591工作原理工作原理 PCF8591采用典型的I2C总线接口器件寻址方法,即总线地址由器件地址(1001)、引脚地址(由A0A2接地或+5V来确定,接地代表0,接+5V代表1)、方向位(即R/W)组成。在I2C总线系统中最多可接8个这样的器件。D7D6D5D4D3D2D1D01001A2A1A0R/

42、W表9.5 PCF8591总线地址57相关知识 R/W=1表示读操作,R/W=0表示写操作。如果将A0A2接地,则读地址为91H;写地址为90H。 地址字节:由器件地址、引脚地址、方向位组成,它是通信时主机发送的第一字节数据。 控制字节:用于控制PCF8951的输入方式、输入通道、D/A转换等,是通信时主机发送的第二字节数据,其格式如下表。 D7D6D5D4D3D2D1D0未用 (写0)D/A输出允许位 0为禁止 1为允许A/D输入方式选择位00:4路单端输入 01:3路差分输10:单端与差分 11:2路差分输入 未用 (写0)自动增益选择位 0为禁用 1为启用AD通道选择位 00:选择通道0

43、 01:选择通道1 10:选择通道2 11:选择通道358相关知识 D/A转换的数据输入和A/D转换的数据输出都是通过I2C总线串行输入和输出的。因此PCF8951中I2C总线的通信格式包括写数据格式和读数据格式。PCF8591的I2C总线写数据格式:第一字节第二字节第三字节写入器件地址(90H)写入控制字节要写入的数据向PCF8591写入格式(高位在前)PCF8591的I2C总线读数据格式:第一字节第二字节第三字节第四字节写入器件地址(90H写)写入控制字节写入器件地址(91H读)读出一字节数据从PCF8591读数据格式(高位在前)59相关知识5 5I I2 2C C总线 (1)I2C总线数

44、据位的传输 I2C总线上每传输一个数据位必须产生一个时钟脉冲,I2C总线上数据传输的有效性要求SDA线上的数据必须在时钟线SCL的高电平期间保存稳定,数据线的改变只能在时钟线为低电平期间。 I2C总线由2根线:串行数据线(SDA)和串行时钟线(SCL)。总线上的每一个器件都有一个唯一的地址。60相关知识(2)I2C总线数据的传输数据传输中的应答:数据传输中的应答:相应的应答位由接收方(从机)产生,在应答的时钟脉冲期间,发送方(主机)应释放SDA线(使其为高电平)。在应答过程中,接收方(从机)必须将数据线SDA拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。数据传输的字节格式:数据传输的字

45、节格式:发送到SDA线上的每一个字节必须为8位,每次发送的字节数量不受限制,从机在接收完一个字节后向主机发送一个应答位,主机在收到从机应答后才会发送第二字节数据,发送数据时先发数据的最高位。61相关知识(3) I2C总线的传输协议主机写数据到从机的通信格式:1234567NN-1主机产生起始位发从机地址90H等待从机应答发送数据等待从机应答发送数据等待从机应答。停止位62相关知识主机从从机中读数据的通信格式:1234567NN-1主机产生起始位发从机地址91H等待从机应答接收从机发出的数据向从机应答接收从机发出的数据向从机应答。主机产生停止位63相关知识6. 6. 实验板上锯齿波信号的输出实验

46、板上锯齿波信号的输出(1)STC89C52控制PCF8591生成锯齿波信号的电路设计将U15的J23的19和20脚用杜邦线与J8的SDA和SCL脚连接。 64相关知识(2)生成锯齿波的软件设计 主程序main.c:/ PCF8591 的DA转换程序 #include #include i2c.h#define AddWr 0x90 /写数据地址 #define AddRd 0x91 /读数据地址/锯齿波数据表,表格数值越多,波形越平滑unsigned char code tab = 0,10,20,30,40,50,60,70,80,90, 100, 110,120,130,140,150,1

47、60,170,180, 190,200, 210,220,230,240,250 ; /定义全局变量extern bit ack;65相关知识/写入DA转换数值,dat表示需要输入转换的DA数值,从0-255bit WriteDAC(unsigned char dat,unsigned char num) unsigned char i; Start_I2c(); /启动总线 SendByte(AddWr); /发送器件地址 if(ack=0) return(0); SendByte(0x40); /发送器件子地址 if(ack=0) return(0); for(i=0;inum;i+) S

48、endByte(dat); /发送数据 if(ack=0) return(0); Stop_I2c(); 66相关知识/主程序main() unsigned char i; while (1) for(i=0;i26;i+) WriteDAC(tab1i,1); 67相关知识I2C头文件i2c.h:#ifndef _I2C_H_#define _I2C_H_ #include /头文件的包含#include #define _Nop() _nop_() /定义空指令/启动总线void Start_I2c();/结束总线void Stop_I2c();/字节数据传送函数 void SendByt

49、e(unsigned char c);#endif68相关知识I2C程序i2c.c:/函数是采用软件延时的方法产生SCL脉冲, 晶振频率是12MHz,即机器周期为1us#include i2c.h#define _Nop() _nop_() /定义空指令bit ack; /应答标志位sbit SDA=P21;sbit SCL=P20;、/启动总线void Start_I2c() SDA=1; /发送起始条件的数据信号 _Nop(); SCL=1; _Nop(); /起始条件建立时间大于4.7us,延时 _Nop(); _Nop(); _Nop(); _Nop();69相关知识 SDA=0; /

50、发送起始信号 _Nop(); /起始条件锁定时间大于4 _Nop(); _Nop(); _Nop(); _Nop(); SCL=0; /钳住I2C总线,准备发送或接收数据 _Nop(); _Nop();/结束总线void Stop_I2c() SDA=0; /发送结束条件的数据信号 _Nop(); /发送结束条件的时钟信号 SCL=1; /结束条件建立时间大于4 _Nop(); _Nop(); _Nop(); _Nop(); _Nop(); SDA=1; /发送I2C总线结束信号 _Nop(); _Nop(); _Nop(); _Nop();70相关知识 /字节数据传送函数 void Send

51、Byte(unsigned char c) unsigned char BitCnt; for(BitCnt=0;BitCnt8;BitCnt+) /要传送的数据长度为8位 if(cBitCnt)&0x80) SDA=1; /判断发送位 else SDA=0; _Nop(); SCL=1; /置时钟线为高,通知被控器开始接收数据位 _Nop(); /保证时钟高电平周期大于4 _Nop(); _Nop(); _Nop(); _Nop(); SCL=0; 71相关知识 _Nop(); _Nop(); SDA=1; /8位发送完后释放数据线,准备接收应答位 _Nop(); _Nop(); SCL=1

52、; _Nop(); _Nop(); _Nop(); if(SDA=1) ack=0; else ack=1; /判断是否接收到应答信号 SCL=0; _Nop(); _Nop();72相关知识 将上面的几个程序放入Kiel C51的一个工程文件中进行编译,生成*.hex文件后,通过USB口下载到实验板中。程序运行之后,用示波器测量J33的上面一个OUT脚,调节示波器,可以清晰地看到锯齿波波形。注注意意:在在使使用用PCF8591PCF8591进进行行D/AD/A转转换换时时,硬硬件件电电路路连连接接非非常常简简单单,软软件件相相对对比比较较复复杂杂,单单片片机机通通过过I I2 2C C总总线

53、线发发送送数数字字信信号号,所所以以一一定定要要严严格格按按照照I I2 2C C总总线线的的通通信信格格式式要要求求发发送数据。送数据。73相关知识项目小结项目小结 l本项目介绍了单片机常用的外接8位并行D/A转换芯片DAC0832的原理和应用。通过两个任务学习了采用单片机和DAC0832实现各种信号发生器的设计方法。lDAC0832完成数字信号到模拟信号的转换后是以电流形式输出,必须外接运算放大器把电流转换成电压信号。DAC0832 与单片机根据接口方式不同有三种工作方式:直通方式、单缓冲方式和双缓冲方式。实际应用中根据实际情况选择合适的工作方式。l在介绍并行D/A转换芯片的应用之后,以P

54、CF8591为例介绍了串行D/A转换芯片的特点、工作原理以及在实验板上的应用方法。74相关知识思考与训练思考与训练(一)知识思考:1.在单片机应用系统中为什么要进行A/D和D/A转换,它们的作用是什么?2.DAC0832与8051单片机接口时有哪些控制信号?作用分别是什么?3.使用DAC0832时,单缓冲方式如何工作?双缓冲方式如何工作?它们各占用8051外部RAM的哪几个单元?软件编程有什么区别?4.怎样用DAC0832得到电压输出信号?有哪几种方法?5.多片D/A转换器为什么必须采用双缓冲接口方式?6.PCF8591的主要特点是什么?简述其工作原理。 7.PCF8591输入和输出数字信号的

55、格式各是怎样的?8.I2C总线的特点和通信格式是怎样的?75相关知识(二)项目训练:(二)项目训练:1 试用DAC0832芯片设计单缓冲方式的D/A转换器接口电路,并编写2个程序,分别使DAC0832输出负向锯齿波和15个正向阶梯波。2 根据图9.17的电路接法,判断DAC0832是工作在直通方式、单缓冲方式还是双缓冲方式?欲用DAC0832产生如图9.18所示波形,则如何编程?(设满量程电压5V,周期为2s)。3 参照任务2,将图9.18的硬件电路作修改,设计成一个完整的信号发生器,通过按键控制输出锯齿波、三角波、方波或正弦波,并写出完整的程序。76相关知识图9.17 DAC0832与单片机的连接电路图9.18 方波77相关知识

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 农业工程

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号