资源描述
电子工业出版社,单片机控制技术 项目式教程 (C语言版),电子工业出版社,项目9 信号发生 器的设计,能了解D/A转换器的相关技术指标; 能理解DAC0832的工作原理与应用方法; 能掌握DAC0832与51单片机的接口方法; 能掌握信号发生器的硬件电路的分析与设计方法; 能熟练编写信号发生器产生各种波形信号的单片机控制程序。,学习目标,叙述D/A转换器的技术指标要求; 叙述DAC0832的工作原理; 设计单片机控制的信号发生器的工作电路; 编写信号发生器产生各种波形信号的单片机控制程序。,工作任务,任务9.1 灯光亮度调节器的设计 任务9.2 信号发生器的设计 项目拓展 串行D/A转换芯片PCF8591在实验板 上的应用 项目小结 思考与训练,项目9 信号发生器的设计,任务9.1 灯光亮度调节器的设计,D/A转换的功能就是将数字量转换成模拟量。 基本的D/A转换器由电压基准或电流基准、精密电阻网络、电子开关及全电流求和电路构成。,9.1.1 D/A转换器的基本原理,1D/A 转换器的分类 按工作方式分:并行D/A转换器(权电阻D/A转换器、 R- 2R T型D/A转换器) 串行D/A转换器 间接D/A转换器,按D/A转换的分辨率分:低分辨率D/A转换器 中分辨率D/A转换器 高分辨率D/A转换器,按模拟量输出方式分:电流输出D/A转换器 电压输出D/A转换器,按模拟电子开关电路的不同分: CMOS开关型D/A转换器(速度要求不高) 双极型开关D/A转换器 电流开关型(速度要求较高) ECL电流开关型(转换速度更高),2D/A 转换器的组成,D/A转换器由数码寄存器、模拟电子开关电路、解码网络、求和电路及基准电压等几部分组成。 以R-2R T型D/A转换器为例,其由基准电压Vref、T型(R-2R)电阻网络、位切换开关和运算放大器组成。,3D/A 转换器的工作原理,数字量是用代码按数位组合起来表示的,对于有权码,每位代码都有一定的位权。为了将数字量转换成模拟量,必须将每1位的代码按其位权的大小转换成相应的模拟量,然后将这些模拟量相加,即可得到与数字量成正比的总模拟量,实现数字模拟转换。,R-2R T型D/A转换器工作原理:,图9.1 R-2R T型D/A转换器原理电路,图示的电路是一个3位二进制数的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)/R,将上式推广到n位二进制数的转换,可得一般表达式 I- Uref(a0/2n + a1/2n-1 + + an-1/21 +an/20)/R 则输出电压为 Uo(I)Rf-Uref(a0/2n+ a1/2n-1+an-1/21+an/20)Rf/R,输出电压会因器件误差、集成运放的非理想特性而产生一定的转换误差。,一般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为最低位。,1分辨率 分辨率是D/A转换器对输入量变化敏感程度的描述,与输入数字量的位数有关。如果数字量的位数为n,则D/A转换器的分辨率为1/2n。即数/模转换器能对满刻度的1/2n输入量作出反应。,9.1.2 D/A转换器的技术性能指标,分辨率输出模拟量的满量程值2n,如:8位数的分辨率为1/256,10位数分辨率为1/1024,通常用D/A转换器输入数字量的位数来表示分辨率。,D/A转换器常可分为8位、10位、12位三种。,2精度,如果不考虑D/A的转换误差,D/A转换的精度为其分辨率的大小。因此,要获得一定精度的D/A转换结果,首要条件是选择有足够分辨率的D/A转换器。,转换速度是DAC每秒可以转换的次数,其倒数为转换时间。转换时间是指从输入数字量到转换为模拟量输出所需的时间。当D/A转换器的输出形式为电流时,转换时间较短;当D/A转换器的输出形式为电压时,转换时间要加上运算放大器的延迟时间而长一点,一般在几十微秒内。,3转换速度,4建立时间,建立时间是指从输入数字量变化到输出达到终值误差(1/2)LSB(最低有效位)时所需的时间,即输入的数字量变化后,输出模拟量稳定到相应的数字范围内所需的时间。 通常以建立时间来表示转换速度。,输入编码形式是指D/A转换电路输入的数字量的形式。如二进制码、BCD码等。,5输入编码形式,6线性度,线性度是指D/A转换器的实际转移特性与理想直线之间的最大误差,或最大偏移。通常给出在一定温度下的最大非线性度,一般为0.01%0.03。,大部分D/A转换芯片是电压型输出,一般为510V;也有高压输出型的,为2430V。有一些是电流型的输出,低者为20mA左右,高者可达3A。,7输出电平,8尖峰,尖峰是输入的数字量发生变化时产生的瞬时误差。通常尖峰的转换时间很短,但幅度很大。在许多场合是不允许有尖峰存在的,应采取措施予以消除。,正确了解D/A转换器件的技术性能参数,对于合理选用转换芯片、正确设计接口电路十分重要。,D/A转换器的性能指标很多,但在选用合适的芯片型号时主要考虑的是它的分辨率、精度和转换速度。,目前单片机系统常用的D/A转换器的转换精度有8位、10位、12位等,与单片机的接口方式有并行接口、串行接口。,9.1.3 DAC0832芯片及其与单片机接口电路,1DAC0832芯片介绍,(1)DAC0832的性能 8位D/A转换器,单电源供电,在+5+15 V范围均可正常工作。基准电压的范围为10V;电流建立时间为1s;CMOS工艺,低功耗(仅为20 mW)。,DAC0832主要特性: 输出电流线性度可在满量程下调节; 转换时间(电流建立时间)为; 数据输入可采用双缓冲、单缓冲或直通方式; 增益温度补偿为0.02%FS/; 每次输入数字为8位二进制数; 低功耗,20mW; 逻辑电平输入与TTL兼容; 基准电压的范围为10V; 单电源供电,可在515V 内正常工作。,(2)DAC0832的内部结构,该转换器由输入寄存器和DAC寄存器构成两级数据输入锁存。使用时数据输入可以采用两级锁存(双锁存)形式,或单级锁存(一级锁存,一级直通)形式,或直接输入(两级直通)形式。 此外,由3个与门电路可组成寄存器输出控制逻辑电路,该逻辑电路的功能是进行数据锁存控制。当 =0时,输入数据被锁存;当 =1时,锁存器的输出跟随输入的数据。 D/A转换电路是一个R-2R T型电阻网络,可实现8位数据的转换。,(3)DAC0832的引脚 DAC0832为20引脚、双列直插式封装。,Vcc:电源线。DAC0832的电源可以在515V内变化。典型使用时用+15V电源。 AGND和DGND:AGND为模拟量地线,DGND为数字量地线。使用时,这两个接地端应始终连在一起。,CS:片选输入信号,低电平有效。只有当CS=0时,这片DAC0832才被选中。 DI0DI7:8位数字量输入端。应用时,如果数据不足8位,则不用的位一般接地。,ILE:输入锁存允许信号,高电平有效。只有当ILE=1时,输入数字量才可能进入8位输入寄存器。 WR1:写信号1,低电平有效,控制输入寄存器的写入。ILE和WR1信号控制输入寄存器是数据直通方式还是数据锁存方式:当ILE=1且WR1=0时,为输入寄存器直通方式;当ILE=1且WR1=1时,为输入寄存器锁存方式。 WR2:写信号2,低电平有效,控制DAC寄存器的写入。 XFER:数据传送控制输入信号,低电平有效,控制数据从输入寄存器到DAC寄存器的传送。WR2和XFER信号控制DAC寄存器是数据直通方式还是数据锁存方式:当WR2=0且XFER =0时,为DAC寄存器直通方式;当WR2=1或XFER =1时,为DAC寄存器锁存方式。,Vref:参考电压线。Vref接外部的标准电源,与芯片内的电阻网络相连接,该电压可正可负,范围为1010V。 Iout1和Iout2:电流输出端。Iout1为DAC电流输出1,当DAC寄存器中的数据为0xFF时,输出电流最大,当DAC寄存器中的数据为0x00时,输出电流为。Iout2为DAC电流输出2。DAC转换器的特性之一是Iout1Iout2=常数。在实际使用时,总是将电流转为电压来使用,即将Iout1和Iout2加到一个运算放大器的输入端。,Rfb:运算放大器的反馈电阻端,电阻(15k)已固化在芯片中。因为DAC0832是电流输出型D/A转换器,为得到电压的转换输出,使用时需在两个电流输出端接运算放大器,Rfb即为运算放大器的反馈电阻。,图9.5 运算放大器的接法,(4)DAC0832的工作原理,将数字量的每一位按权值分别转换成模拟量,再通过运算放大器求和相加,D/A转换器内部有一个解码网络,以实现按权值分别进行D/A转换。,(5)DAC0832的输出,DAC0832是电流输出型D/A转换器。,图9.6 DAC0832单极性电压输出电路,单极性输出运放: VoutIout1Rfb BVref/256,双极性输出运放: Vout ( Vout1/R Vref/2R )2R 2Vout1Vref 2BVref/256Vref BVref/128Vref Vref(B128)/128,图9.7 DAC0832双极性电压输出电路,当Vref为正,数字量在0x010x7F之间变化时,Vout为负值;当数字量在0x800xFF之间变化时,Vout为正值。,(1)直通方式下的接口电路 直通方式是数据直接输入(两级直通)的形式。 两个8位数据寄存器都处于数据接收状态,LE1=1,LE2=1,ILE=1,而WR1、WR2、CS和XFER均为0。输入数据直接送到内部D/A转换器去转换。,2DAC0832与51单片机的接口电路,DAC0832的工作方式:直通方式、单缓冲方式和双缓冲方式,图9.8 直通方式下89C51与DAC0832的连接图,(2)单缓冲方式下的接口电路 单缓冲方式是单级锁存(一级锁存,一级直通)形式, 就是使DAC0832的两个8位数据寄存器中有一个处于直通方式,而另一个处于受控的锁存方式,或者两个8位数据寄存器处于同时受控的方式,即同时送数,同时锁存。, 在单缓冲工作方式下,可以将8位DAC寄存器置于直通方式。为此,应将WR2和XFER接地,而输入寄存器的工作状态受单片机的控制。,WR=0,P2.7=0, DAC0832的地址为 0x7FFF, 将数字量0x08转换为模拟量的程序: #define DAC0832 XBYTE0x7FFF DAC0832=0x08; 或 output(0x7FFF,0x08);,两个输入寄存器同时受控的连接方法,WR1和WR2一起接89C51的WR,CS和XFER共同接89C51的P2.7,因此两个寄存器的地址相同。,(3)双缓冲方式下的接口电路 双缓冲方式的数据输入可以采用两级锁存(双锁存)的形式,就是把DAC0832的两个锁存器都接成受控锁存方式。DAC0832的WR1、WR2、CS和XFER都受单片机送来的信号的控制。,当 WR=0,P2.7=0,P2.6=1,8位输入寄存器处于送数状态, 8位DAC寄存器处于锁存状态,不能进行D/A转换。,双缓冲方式下89C51与两片DAC0832的连接图,如DAC0832的8位输入寄存器地址为0x7FFF, WR=0,P2.7=1,P2.6=0,8位DAC寄存器处于送数据状态,开始进行D/A转换。DAC0832的8位DAC寄存器的地址为0xBFFF,将一个数字量转换为模拟量的程序:,#define DAC0832_1 XBYTE0xBFFF #define DAC0832_2 XBYTE0x7FFF DAC0832_1=0x08; DAC0832_2=0x08; 或 output(0xBFFF, 0x08) ; output(0x7FFF, 0x08) ;,1任务要求,9.1.4 灯光亮度调节器的设计,用AT89C51单片机和DAC0832控制一个发光二极管,使发光二极管的亮度逐渐变暗,再逐渐变亮,不断循环。,2任务分析,改变发光二极管的亮度,就要改变通过发光二极管的电流。方法很多,利用AT89C51控制DAC0832数模转换芯片,DAC0832的输出转换成电压去驱动发光二极管。当DAC0832的输入数字量变化时,输出电压改变,通过发光二极管的电流变化,发光二极管的亮度就改变。,3任务设计,(1)器件选择,(2)硬件原理图设计 DAC0832单缓冲方式, P2和P0决定地址,片选信号CS低电平有效,P2.7为0,DAC0832的地址为0x7FFF。,(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+); ,/主程序控制灯光亮度变化 void main() uchar i; while(1) for(i=256;i0;i-) AC0832=i; DelayMS(1); for(i=0;i256;i+) AC0832=i; DelayMS(1); ,(4)软硬件联合调试 在Protus环境下,将编译好的软件下载到AT89C51中运行,可以看到LED灯如任务要求的一样先由亮逐渐变暗,再由暗逐渐变亮。,1任务要求,任务9.2 信号发生器的设计,用单片机AT89C51和D/A转换芯片DAC0832组成的信号发生器生成要求周期和幅度(0V+5V)的锯齿波、三角波、方波或正弦波。,2任务分析,锯齿波:向DAC0832反复送入0x000xFF数据,就会生成 幅度为0V+5V的锯齿波 三角波:向DAC0832反复送入0x000xFF和0xFF 0x00数 据,就会生成幅度为0V+5V的三角波,方波:向DAC0832送入一定时长的0x00和一定时长的0xFF, 就会生成幅度为0V+5V的方波,波形的周期与单片机的机器周期和程序中的延时长短相关。,正弦波:等时间间隔分割正弦信号,计算出分割时刻的信 号幅值,将幅值对应的数字量存储到ROM中,然后 用查表的方法取出这些取样值,送到DAC0832转换 后输出,那么输出信号就是正弦波形。,如:波形频率为50Hz的正弦波信号, 正弦波信号以5作为1个阶梯, 则分成 360572份, 时间间隔为 20720.278ms。 当参考电压为5V时,72个采样值、输 出电压值、正弦值、角度如表9.2所示。,表9.2 正弦波数据表,3任务设计,(1)器件选择,(2)硬件原理图设计 DAC0832工作于单缓冲方式,地址为0x7FFF。Vref接5V电压,输出的单极性电压在05V之间变化。,(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+); ,/ 主程序生成锯齿波 void main() uchar i; while(1) for(i=0;i256;i+) DAC0832=i; DelayMS(1); ,产生三角波的源程序如下: #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;i0;i-) DAC0832=i; DelayMS(1); ,产生正弦波的源程序如下: #include #include #define uint unsigned int #define uchar unsigned char #define DAC0832 XBYTE0x7FFF,/初始化正弦波波形数据数组 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,0xF3,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;,/延时子程序 void DelayMS(uint x) uchar t; while(x-) for(t=0;t120;t+); /主程序生成正弦波 void main() uchar i; while(1) for(i=0;i72;i+) DAC0832= datai; DelayMS(1); ,(4)软硬件联合调试 将上面相应波形的程序编译为*.hex文件后,在Proteus绘制的原理图中,将*.hex文件加载到单片机AT89C51中运行,在虚拟示波器上可以看到对应的波形图。在Proteus仿真运行过程中可能会提示CPU过载,这时虚拟示波器可能会无法实时显示波形,可将虚拟示波器通道A中指向1的黄色旋钮从1开始先正向旋转一圈,再反向旋转一圈,这样会使虚拟示波器尽快刷新显示波形。,1PCF8591简介,项目拓展 串行D/A转换芯片PCF8591在实验板上的应用,PCF8591是一个单片集成的具有I2C总线接口的8位A/D及D/A转换器,有4路A/D输入,1路D/A输出。PCF8591的输入输出地址、控制和数据信号都是通过I2C总线以串行的方式进行传输。,PCF8591的主要特性: 单独供电 PCF8591的操作电压范围+2.5V+6V 低待机电流 通过IC总线串行输入/输出 PCF8591通过3个硬件地址引脚寻址 PCF8591的采样率由IC总线速率决定 4个模拟输入可编程为单端型或差分输入 自动增量频道选择 PCF8591的模拟电压范围从VSS到VDD PCF8591内置跟踪保持电路 8-bit逐次逼近A/D转换器 通过1路模拟输出实现DAC增益,2PCF8591内部结构框图,3PCF8591引脚功能,4PCF8591工作原理,PCF8591采用典型的I2C总线接口器件寻址方法,即总线地址由器件地址(1001)、引脚地址(由A0A2接地或+5V来确定,接地代表0,接+5V代表1)、方向位(即R/W)组成。在I2C总线系统中最多可接8个这样的器件。,表9.5 PCF8591总线地址,R/W=1表示读操作,R/W=0表示写操作。如果将A0A2接地,则读地址为91H;写地址为90H。 地址字节:由器件地址、引脚地址、方向位组成,它是通信时主机发送的第一字节数据。 控制字节:用于控制PCF8951的输入方式、输入通道、D/A转换等,是通信时主机发送的第二字节数据,其格式如下表。,D/A转换的数据输入和A/D转换的数据输出都是通过I2C总线串行输入和输出的。因此PCF8951中I2C总线的通信格式包括写数据格式和读数据格式。,PCF8591的I2C总线写数据格式:,PCF8591的I2C总线读数据格式:,5I2C总线,(1)I2C总线数据位的传输,I2C总线上每传输一个数据位必须产生一个时钟脉冲,I2C总线上数据传输的有效性要求SDA线上的数据必须在时钟线SCL的高电平期间保存稳定,数据线的改变只能在时钟线为低电平期间。,I2C总线由2根线:串行数据线(SDA)和串行时钟线(SCL)。,总线上的每一个器件都有一个唯一的地址。,(2)I2C总线数据的传输,数据传输中的应答:相应的应答位由接收方(从机)产生,在应答的时钟脉冲期间,发送方(主机)应释放SDA线(使其为高电平)。在应答过程中,接收方(从机)必须将数据线SDA拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。,数据传输的字节格式:发送到SDA线上的每一个字节必须为8位,每次发送的字节数量不受限制,从机在接收完一个字节后向主机发送一个应答位,主机在收到从机应答后才会发送第二字节数据,发送数据时先发数据的最高位。,(3) I2C总线的传输协议,主机写数据到从机的通信格式:,主机从从机中读数据的通信格式:,6. 实验板上锯齿波信号的输出,(1)STC89C52控制PCF8591生成锯齿波信号的电路设计,将U15的J23的19和20脚用杜邦线与J8的SDA和SCL脚连接。,(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,160,170,180, 190,200, 210,220,230,240,250 ; /定义全局变量 extern bit ack;,/写入DA转换数值,dat表示需要输入转换的DA数值,从0-255 bit 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+) SendByte(dat); /发送数据 if(ack=0) return(0); Stop_I2c(); ,/主程序 main() unsigned char i; while (1) for(i=0;i26;i+) WriteDAC(tab1i,1); ,I2C头文件i2c.h: #ifndef _I2C_H_ #define _I2C_H_ #include /头文件的包含 #include #define _Nop() _nop_() /定义空指令 /启动总线 void Start_I2c(); /结束总线 void Stop_I2c(); /字节数据传送函数 void SendByte(unsigned char c); #endif,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();,SDA=0; /发送起始信号 _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(); ,/字节数据传送函数 void SendByte(unsigned char c) unsigned char BitCnt; for(BitCnt=0;BitCnt8;BitCnt+) /要传送的数据长度为8位 if(cBitCnt) ,_Nop(); _Nop(); SDA=1; /8位发送完后释放数据线,准备接收应答位 _Nop(); _Nop(); SCL=1; _Nop(); _Nop(); _Nop(); if(SDA=1) ack=0; else ack=1; /判断是否接收到应答信号 SCL=0; _Nop(); _Nop(); ,将上面的几个程序放入Kiel C51的一个工程文件中进行编译,生成*.hex文件后,通过USB口下载到实验板中。程序运行之后,用示波器测量J33的上面一个OUT脚,调节示波器,可以清晰地看到锯齿波波形。,注意:在使用PCF8591进行D/A转换时,硬件电路连接非常简单,软件相对比较复杂,单片机通过I2C总线发送数字信号,所以一定要严格按照I2C总线的通信格式要求发送数据。,项目小结,本项目介绍了单片机常用的外接8位并行D/A转换芯片DAC0832的原理和应用。通过两个任务学习了采用单片机和DAC0832实现各种信号发生器的设计方法。 DAC0832完成数字信号到模拟信号的转换后是以电流形式输出,必须外接运算放大器把电流转换成电压信号。DAC0832 与单片机根据接口方式不同有三种工作方式:直通方式、单缓冲方式和双缓冲方式。实际应用中根据实际情况选择合适的工作方式。 在介绍并行D/A转换芯片的应用之后,以PCF8591为例介绍了串行D/A转换芯片的特点、工作原理以及在实验板上的应用方法。,思考与训练,(一)知识思考: 在单片机应用系统中为什么要进行A/D和D/A转换,它们的作用是什么? DAC0832与8051单片机接口时有哪些控制信号?作用分别是什么? 使用DAC0832时,单缓冲方式如何工作?双缓冲方式如何工作?它们各占用8051外部RAM的哪几个单元?软件编程有什么区别? 怎样用DAC0832得到电压输出信号?有哪几种方法? 多片D/A转换器为什么必须采用双缓冲接口方式? PCF8591的主要特点是什么?简述其工作原理。 PCF8591输入和输出数字信号的格式各是怎样的? I2C总线的特点和通信格式是怎样的?,(二)项目训练: 1 试用DAC0832芯片设计单缓冲方式的D/A转换器接口电路,并编写2个程序,分别使DAC0832输出负向锯齿波和15个正向阶梯波。 2 根据图9.17的电路接法,判断DAC0832是工作在直通方式、单缓冲方式还是双缓冲方式?欲用DAC0832产生如图9.18所示波形,则如何编程?(设满量程电压5V,周期为2s)。 3 参照任务2,将图9.18的硬件电路作修改,设计成一个完整的信号发生器,通过按键控制输出锯齿波、三角波、方波或正弦波,并写出完整的程序。,
展开阅读全文