MOV RO. #OFEH ;DAc的8位输入寄存器端口地址FEH→R0 MOVX @RO, A ;AT8951单片机将待转换的数字量送DAC, ;且和译码器FEH输出端有效 现举例说明单缓冲方式下DAc0832的应用。 【例10-1】DAc0832用作波形发生器。试根据图103的电路, 分别写出产生锯齿波、三角波和矩形波的程序段。 在图10-3中,运算放大器A输出端Vout直接反馈到Rfb,故 这种接线产生的模拟输出电压是单极性的
21 MOV R0,#0FEH ;DAC的8位输入寄存器端口地址FEH→R0 MOVX @R0,A ;AT89S51单片机将待转换的数字量送DAC, ;且和译码器FEH输出端有效 现举例说明单缓冲方式下DAC0832的应用。 【例10-1】 DAC0832用作波形发生器。试根据图10-3的电路, 分别写出产生锯齿波、三角波和矩形波的程序段。 在图10-3中,运算放大器A输出端Vout直接反馈到Rfb,故 这种接线产生的模拟输出电压是单极性的
①锯齿波的产生 ORG 2000H START MOVR0,#0 FEH DAC地址FEH→R0 Mov A,#oOH ;数字量→A L00P: MOVX @RO, A ;数字量→DA转换器 INC A ;数字量逐次加1 SJMP LOOP 当输入数字量从0开始,逐次加1进行DA转换,模拟量与其 成正比输出。当A=FFH时,再加1则溢出清0,模拟输出又为 0,然后又重新重复上述过程,如此循环,输出的波形就是锯 齿波,如图10-4所示
22 ① 锯齿波的产生 ORG 2000H START: MOV R0,#0FEH ;DAC地址FEH→ R0 MOV A,#00H ;数字量→A LOOP: MOVX @R0,A ;数字量→D/A转换器 INC A ;数字量逐次加1 SJMP LOOP 22 当输入数字量从0开始,逐次加1进行D/A转换,模拟量与其 成正比输出。当A = FFH时,再加1则溢出清0,模拟输出又为 0,然后又重新重复上述过程,如此循环,输出的波形就是锯 齿波,如图10-4所示
实际上,每一上升斜边要分成256个小台阶,每个小台阶 暂留时间为执行后三条指令所需要的时间。因此“INCA” 指令后插入NOP指令或延时程序,则可改变锯齿波频率。 图10-4DAc0832产生的锯齿波输出
23 实际上,每一上升斜边要分成256个小台阶,每个小台阶 暂留时间为执行后三条指令所需要的时间。因此 “INC A” 指令后插入NOP指令或延时程序,则可改变锯齿波频率。 23 图10-4 DAC0832产生的锯齿波输出
②三角波的产生 输出的三角波如图115所示。 5 0 图11-5DAc0832产生的三角波输出 参考程序如下
24 ② 三角波的产生 输出的三角波如图11-5所示。 24 图11-5 DAC0832产生的三角波输出 参考程序如下
ORG 0100H START: MOT RO, #oFEH MOV A, #ooH 三角波的上升边数字量初值送DAC UP MOTX Ro, A ;数字量送DAC,产生三角波的上升边 INC 数字量在A中增1, A非0,三角波上升边未完 DOWN: dec A ;A=0时再诚1又为FFH,开始产生三角波的下降边 aR, A 数字量送DAC,产生三角波的下降斜边 JNZ DOWN ;A非0,三角波的下降边未完,跳DOW SJMP UP ;重新开始三角波的上升边 ③矩形波的产生 输出的矩形波如图10-6所示
25 ③ 矩形波的产生 vO 输出的矩形波如图10-6所示