您当前的位置:五五电子网电子知识单片机-工控设备综合-其它MCS-51单片机与D/A转换器的接口和应用 正文
MCS-51单片机与D/A转换器的接口和应用

MCS-51单片机与D/A转换器的接口和应用

点击数:7993 次   录入时间:03-04 11:58:30   整理:http://www.55dianzi.com   综合-其它

    (2) 可通过循环程序段的机器周期数,计算出锯齿波的周期。并可根据需要,通过延时的方法来改变波形周期。若要改变锯齿波的频率,可在AJMP MM指令前加入延迟程序即可。延时较短时可用NOP指令实现(本程序就是如此),需要延时较长时,可以使用一个延长子程序。延迟时间不同,波形周期不同,锯齿波的斜率就不同。

    (3) 通过A加1,可得到正向的锯齿波,反之A减1可得到负向的锯齿波。

    (4) 程序中A的变化范围是0~255,因此得到的锯齿波是满幅度的。如要求得到非满幅锯齿波,可通过计算求的数字量的处置和终值,然后在程序中通过置初值和终值的方法实现。

【例9.2】 矩形波电压发生器

采用单缓冲方式,口地址设为FEFFH.

参考程序如下:

ORG 1100H

START: MOV DPTR , #00FEH ;送DAC0832口地址

LOOP: MOV A , #dataH ;送高电平数据

MOVX @ DPTR , A

LCALL DELAYH ;调用延时子程序

MOV A , #dataL ;送低电平数据

MOVX @ DPTR , A

LCALL DELAYL ;调用延时子程序

SJMP LCALL

    执行上述程序就可得到如图9.5所示的矩形波。

        图9.5 D/A转换产生的矩形波

几点说明:

(1) 以上程序产生的是矩形波,其低点平的宽度由延时子程序DELAYL所延时的时间来决定,高电平的宽度则由DELAYH所延时的时间决定。

(2) 改变延时子程序DELAYL和的DELAYH延时时间,就可改变矩形波上下沿的宽度。若DELAYL=DELAYH(两者延时一样),则输出的是方波。

(3) 改变上限值或下限值便可改变矩形波的幅值;单极性输出时为0~-5V或0~+5V;双极性输出时为-5V~+5V。

【例9.3】三角波电压发生器

利用DAC0832产生三角波的参考程序如下:

MOV A , #00H ;取下限值

MOVX DPTR , #FEFFH ;指向0832口地址

SS1: MOVX @DPTR , A ;输出

NOP ;延时

NOP

NOP

SS2: INC A ;转换值增量

JNZ SS1 ;未到峰值,则继续

SS3: DEC A ;已到峰值,则取后沿

MOVX @DPTR , A ;输出

NOP ;延时

NOP

NOP

JNZ SS3 ;未到谷值,则继续

SJMP SS2 ;已到谷值,则反复

几点说明:

本程序产生的是三角波,谷值为0,峰值为+5V(或-5V)。若改变下限值或上限值,那么三角波的谷值和峰值也随之改变。

    改变延时时间可改变三角波的斜率。

    若在谷值和峰值出延时时间较长时,则输出梯形波,延时时间的长短取决于梯形波上下边的宽度。

9.1.4 双缓冲方式的接口与应用

   在多路D/A转换的情况下,若要求同步转换输出,必须采用双缓冲方式。DAC0832采用双缓冲方式时,数字量的输入锁存和D/A转换输出是分两步进行的。

  1. CPU分时向各路D/A转换器输入要转换的数字量并锁存在各自的输入寄存器中。

  2. CPU对所有的D/A转换器发出控制信号,使各路输入寄存器中的数据进入DAC寄存器,实现同步转换输出。

   图9.6为两片DAC0832与8031的双缓冲方式连接电路,能实现两路同步输出。图中两片0832的数据线都连到8031的P0口;ALE固定接高电平,WR1,WR2都接到8031的WR端;CS分别接高位地址P2.5和P2.6,这样两片0832的输入寄存器具有不同的地址,可以分别输入不同的数据;XFEF都接到P2.7,使两片0832的DAC寄存器具有相同的地址,以便在CPU控制下同步进行D/A转换和输出。

9.6 8031与DAC0832双缓冲方式接口电路

       实现两路同步输出的程序如下:

MOV DPTR#0DFFFH ;送08321)输入锁存器地址

MOV A#data1 data108321)输入锁存器

上一页  [1] [2] [3] [4]  下一页


本文关键字:单片机  转换器  接口  综合-其它单片机-工控设备 - 综合-其它