首页 理论教育 8051单片机接口与DAC0832并行D-A转换器

8051单片机接口与DAC0832并行D-A转换器

时间:2023-11-02 理论教育 版权反馈
【摘要】:DAC0832内部包含两级锁存器,具有两级锁存控制功能。只要单片机执行如下2条指令,就可在CS和WR1上产生低电平信号,使DAC0832接收单片机输出的数字量。 DAC0832用作波形发生器。3)最后单片机通过A0和WR信号控制1#和2#DAC0832的LE2同时有效,并将8位输入寄存器的数字量送入DAC寄存器,同时启动D-A转换。

8051单片机接口与DAC0832并行D-A转换器

DAC0832内部包含两级锁存器,具有两级锁存控制功能。在同时使用多片DAC0832时,需要实现多个参数模拟量的同时执行输出,以便实现同步输出控制,这时的接口方式称为双缓冲连接方式,这在一些应用中很有用。如果应用系统只有一路D-A转换,或者多路D-A转换不需要同时输出模拟量时,可以采用单缓冲接口方式。下面详细介绍DAC0832单缓冲方式或双缓冲方式的应用。

1.单缓冲方式

单缓冲方式是指DAC0832内部的两个数据缓冲器一个处于直通方式,另外一个处于受单片机控制的锁存方式。如图14-17所示为单缓冲方式的接口电路。

978-7-111-51881-5-Chapter14-68.jpg

图14-17 STC15W4K32S4单片机与DAC0832的单缓冲接口电路

由图14-17中可见,WR2和XFER引脚接地,因此DAC0832内部的8位DAC寄存器工作于直通方式,8位DAC寄存器一直有效,只要有数据输入到8位输入寄存器就启动A-D转换。8位输入寄存器受CS和WR1端的信号控制,片选端CS由地址线A0控制。由于高8位地址线(P2)没有使用,实际只用了低8位的1根地址线A0,故DAC0832的编址为0FEH或00H。只要单片机执行如下2条指令,就可在CS和WR1上产生低电平信号,使DAC0832接收单片机输出的数字量。

978-7-111-51881-5-Chapter14-69.jpg

【例14-8】 DAC0832用作波形发生器。根据图14-17所示电路编程,使D-A转换器输出锯齿波、三角波和矩形波。

在图14-17中,运算放大器A用作电流变换,输出的模拟电压Vo直接反馈到Rfb,因此这种连接电路产生的模拟输出电压是单极性的。

(1)产生锯齿波

978-7-111-51881-5-Chapter14-70.jpg

程序从0开始逐次加1输入数字量进行D-A转换,输出的模拟量也成正比增大。当A=FFH时,再加1则为00H,模拟输出也为0V,然后又重复上述过程。不断循环,在运算放大器的输出端就能输出锯齿波,波形如图14-18所示。但实际上,这个波形的每个周期的上升斜边分成256个小台阶,每个小台阶暂留时间为执行程序中后3条指令的执行时间。因此,若在程序的INC A指令的前、后插入NOP指令延时,则可以改变锯齿波的频率。如果要提高波形频率,则需要通过提高系统的时钟频率或减少转换次数来实现。

(2)产生三角波

978-7-111-51881-5-Chapter14-71.jpg

输出的三角波如图14-19所示。

(3)产生矩形波

978-7-111-51881-5-Chapter14-72.jpg

DELAY1、DELAY2为两个延时子程序,分别决定输出矩形波的高、低电平的持续宽度。矩形波如图14-20所示。矩形波的频率也可采用调节延时时间长短的方法来改变。

978-7-111-51881-5-Chapter14-73.jpg(www.xing528.com)

图14-18 DAC产生锯齿波

978-7-111-51881-5-Chapter14-74.jpg

图14-19 DAC产生三角波

978-7-111-51881-5-Chapter14-75.jpg

图14-20 DAC产生矩形波

2.双缓冲方式

对多路的D-A转换,要求同步输出D-A转换信号时,必须采用双缓冲方式(如图14-21所示)。以双缓冲方式工作时,控制DAC0832的数字量输入锁存和D-A转换器的转换输出需要分两步完成:

978-7-111-51881-5-Chapter14-76.jpg

图14-21 两片DAC0832与单片机的双缓冲接口电路

1)首先单片机通过A2和WR信号控制1#DAC0832的LE1有效,并将X方向的数字量锁存到其内部的8位输入寄存器(参考图14-12所示的DAC0832的逻辑结构)。

2)然后单片机通过A1和WR信号控制2#DAC0832的LE1有效,并将Y方向的数字量锁存到其内部的8位输入寄存器。

3)最后单片机通过A0和WR信号控制1#和2#DAC0832的LE2同时有效,并将8位输入寄存器的数字量送入DAC寄存器,同时启动D-A转换。

采用图14-21所示的双缓冲接口,输出的模拟电压VXVY可以用来控制X-Y绘图,则应把VXVY分别加到X-Y绘图仪X通道和Y通道。而X-Y绘图仪由XY两个方向的步进电动机驱动,其中一个电动机控制绘笔沿X方向运动;另一个电动机控制绘笔沿Y方向运动。因此,对X-Y绘图仪的控制有两点基本要求:一是需要两个D-A转换器分别给X通道和Y通道提供模拟电压信号,使绘图笔能沿X-Y轴作平面运动;二是两路模拟信号要同步输出,使绘制的曲线光滑,否则绘制的曲线就会呈现阶梯状。采用双缓冲的编程思路即可实现控制绘图仪在平面上绘图的目的。

【例14-9】 假设STC15W4K32S4单片机内部RAM中存储有两个长度为20HB的数据块,其起始地址分别为Addr1和Addr2,根据图14-21,编程实现将Addr1和Addr2中数据分别从1#和2#DAC0832同步输出,模拟量控制绘图仪在平面上绘制出曲线上的XY坐标点。

图14-21所示接口电路采用的是总线接口方式,未使用高8位地址,只用到3根低位地址线,所以地址可采用16位或8位表示,未使用的地址可以当作“0”或“1”电平看待。因此,计算出DAC0832各端口地址。FBH或03H:1#DAC0832数字量输入控制端口;FDH或05H:2#DAC0832数字量输入控制端口;FEH或06H:同时对1#和2#DAC0832启动D-A转换器转换端口。

编程时用到的资源分配如下:R0作为X方向数据指针,R1作为Y方向数据指针;DPTR作为D-A寄存器端口寻址,R2存储数据块长度。

编写的相应程序段如下:

978-7-111-51881-5-Chapter14-77.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈