例2 产生锯齿波
MOV A,#00H ;起始值
MOV DPTR,#0FEFFH
MM:MOVX @DPTR,A ;送转换
INC A
NOP
NOP
NOP
;决定坡度
SJMP MM
15
DAC0832编程应用举例:例3产生三角波
MOV A,#00H
MOV DPTR,#0FEFFH
SS1: MOVX @DPTR,A ;送转换
ALE
6
WR
P2.0
12MHz
INT1 RD
锁存器 74LS373
8D Q0
G
Q1 Q2
OE
≥1 ≥1
D0-D7 ADDA ADDB ADDC
CLK START ALE OE EOC
1、先送通道号地址到A、B、C,由ALE信号锁存通道号地址,然后让START有 效启动A/D转换。 即执行一条MOVX @DPTR, A指令产生WR信号,使ALE、START有效,锁存 通道号并启动A/D转换。A/D转换完毕,EOC端发出一正脉冲,表示转换结束。
NOP
NOP
NOP
SS2: INC A
;等速上升
JNZ SS1
SS3: DEC A
MOVX @DPTR,A
NOP
NOP
NOP
;等速下降
JNZ SS3
SJMP SS2
三角波
同样的编程思路,若要产生 如下的梯形波也很容易:
梯形波
16
例4
正弦波电压输出为双极性电压,最简单的办法是将一个周期内电压变化 的幅值(-5V~+5V)按8位D/A分辨率分为256个数值列成表格,然后依次 将这些数字量送入D/A转换输出。只要循环不断地送数,在输出端 就能获得正弦波输出。