
1、单缓冲方式。单缓冲方式是控制输入寄存器和DAC寄存器同时接收资料,或者只用输入寄存器而把DAC寄存器接成直通方式。此方式适用只有一路模拟量输出或几路模拟量异步输出的情形。
2、双缓冲方式。双缓冲方式是先使输入寄存器接收资料,再控制输入寄存器的输出资料到DAC寄存器,即分两次锁存输入资料。此方式适用于多个D/A转换同步输出的情节。
3、直通方式。直通方式是资料不经两级锁存器锁存,即 CS*,XFER* ,WR1* ,WR2* 均接地,ILE接高电平。此方式适用于连续反馈控制线路和不带微机的控制系统,不过在使用时,必须通过另加I/O接口与CPU连接,以匹配CPU与D/A转换。[1]
DAC0832引脚功能电路应用原理图DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器,使DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。所以这个芯片的应用很广泛,关于DAC0832应用的一些重要资料见下图: D/A转换结果采用电流形式输出。若需要相应的模拟电压信号,可通过一个高输入阻抗的线性运算放大器实现。运放的反馈电阻可通过RFB端引用片内固有电阻,也可外接。DAC0832逻辑输入满足TTL电平,可直接与TTL电路或微机电路连接。
DAC0832是将单片机输入的数据转换为电流输出,不是接收数据的,接收数据的是AD转换芯片。XBYTE[]将外部的内存单元编程不同的地址,#define
DAC0832
XBYTE[OxFFFE]这个就可以 *** 作DAC0832来改变地址0xfffe的单元的值。0xfffe是DAC0832这个外部的内存单元的地址,既然是外部的内存单元,和单片机内存不是同一东西,他的地址和单片机的内存地址编码无关。
这个是DAC0832工作在双缓冲方式下.至于你说的数字量到模拟量的转换过程,这个其实就是DAC0832的工作原理,而且不管是直通方式,还是单缓冲方式还是你这次用到的双缓冲方式其实都是一样的.
简单说就是应用电阻解码网络,将N位数字量逐位转化为模拟量并求和,从而实现将N位数字量转化为模拟量(简单的说就是加权,比如十进制的1101=1*10^3+1*10^2+0*10^1+1*10^0,只是在这里应用的是二进制算法)
至于为何应用双缓冲方式,这个与你的需要有关,比如你现在用的是二路同步输出。引申一下:如果是多路同步输出,就必须采用双缓冲方式,你的信号从P0口进入DAC,两路信号相继通过输入寄存器、DAC寄存器和D/A转换器,你的P2.5选通DAC1的输入寄存器,P2.6选通2的输入寄存器,而P2.7同时选通DAC寄存器,工作时CPU先向DAC0832(1)输出X信号,然后向0832(2)输出Y信号,但此时信号均只能锁存在各自的输入寄存器内,而不能进入DAC寄存器,只有当P2.7同时选通两片DAC的DAC寄存器时,X,Y信号才能分别同步地通过各自DAC寄存器进入DAC转换器,所以这时候输出的信号也是同步的。
建议你去看一下:张志良编写的 《单片机原理与控制技术》第2版,在P243-P246页有比较详细的说明
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)