道。写入时序如图3-7所示。
图3-7 AD7226写入时序
由于4051没有专门的地址和读写控制引脚,此处可以通过普通的I/O引脚参考AD7226的写入时序,利用软件进行时序模拟。可以通过改变延时的时间来改变输出的频率。图3-8是利用4051的P3.0、P3.1口作为A0、A1的地址线,P3.5作为WR的写入控制线的硬件参考电路,相应的示例程序如下: ??..
MOV P1, A ;P1口置数 MOV P3, #0FCH ;选择通道A CLR P3.5 ;置P3.5 低电平
SETB P3.5 ;置P3.5 高电平,上升沿锁存数据 LCALL DELAY ;调用延时子程序 ??..
图3-8 单片机与D/A接口电路
3.3.3 偏移电路设计
AD7226的每一个通道都可以单独用来提供单极性或双极性的输出,要获得双极性的输出必须外加运算放大器和偏移电阻,输出电压的范围取决于参考电压的大小,如图3-9是在单极性电源供电情况下的双极性输出电路图,要注意偏移电阻的阻值匹配。
图3-9 AD7226双极性输出电路
3.3.4 放大电路设计
放大电路主要是对AD7226输出的双极性电压信号幅值进行处理,以达到使用的要求。放大电路的输入极增加一个一阶低通滤波器,以防止D/A输出的高频成分干扰;采用低频运放作为射随器以提高输入阻抗。放大电路部分如图3-10所示。
图 3-10 放大电路(部分)
3.5 软件程序
3.5.1 系统主要程序流程框图
主程序流程如图3-11所示。
初始化 显示设置数正弦波 选择输出 三角波 计算 方 波 输出 其 它 扫描键盘 Y N 有键按下
图3-11 主程序流程图
3.5.2 软件设计
本模块软件设计主要分三大块,首先,通过相应的计算程序,把键盘输入的频率数字为实际的频率,然后再把频率转化为计时器的初值,最后通过定时器产生方波。
先介绍算法程序。键盘输入的频率是五个毫无关系的数字,假设分别放在R5,R4,R3,R2,R1中,要想把它计算为实际的频率,应该有这样一个程序,R5乘10000,R4乘1000,依此类推,最后把所有的结果加起来,就是频率,频率暂时放在寄存器R2R3中。程序流程图如下:
图3-12 总计算程序流程图
其中,R3*1000和R4*10000的具体程序流程图如下所示: