单片机的 D/A 和 A/D

DAC

D/A(数/模)转换器输入的是数字量,经转换后输出的是模拟量。转换过程是先将D/A转换器的各位二进制数按其权值大小转换为相应的模拟分量,然后再以叠加方法把各模拟分量相加,其和就是D/A转换的结果。

D/A的结构原理图如下:

D/A的工作方式分类

1.单缓冲工作方式

2.双缓冲工作方式

3.直通工作方式

单片机的工作的原理是,CS与WR1控制着第一缓冲区的输入,WR2与XFER控制着第二缓冲区的输入。

    MOV DPTR ,#0DFFFH
    MOV A,#data1
    MOVX @DPTR,A
    MOV DPTR ,#7FFFH
    MOVX @DPTR,A

上述代码是用于双缓冲工作方式的,其中DPTR的两次赋值别是控制不同的缓冲区(这里是以0有效所编写的代码),DPTR第一次赋值为#0DFFFH是为了启动第一个缓冲区,将数据保存起来,第二赋值是启动第二个缓冲区,将数据进行转换。



###ADC的结构 ####ADC是一种8路模拟输入8路数字输出的逐次比较型A/D转换器。 ![](http://images2015.cnblogs.com/blog/1017814/201705/1017814-20170528152530188-861328304.png) ![](http://images2015.cnblogs.com/blog/1017814/201705/1017814-20170528153038078-1302269268.png)

单片机如何控制ADC?

首先选择ADC一个模拟输入通道,然后产生一个启动信号给ADC的START脚,对选中通道进行转换。当转换结束后,ADC发出转换结束信号EOC,该信号可供查询,也可作为单片机发出的中断请求信号;EOC信号有效后,执行读操作:MOVX A,@DPTR,,单片机发出RD信号加到OE端,把转换完毕的数字量读到单片机中。

个人总结:

在进行A/D转换还是D/A转换的时候,首先需要找到相应的"地址"(所谓的地址就是使相应组件进行工作的控制信号),例如:如果需要将一个数字量转换为一个模拟量,首先需要啊使一级缓冲和二级缓冲分别有效(一级缓冲用到的有CS和WR1,二级缓冲用到的有XFER和WR2),这里还是以0有效为例,启动第一缓存的DPTR为0DFFFH,启动第二缓冲的DPTR为7FFFH。就是将相应的控制开打开将数据存入到缓冲中去。

原文地址:https://www.cnblogs.com/gxcstyle/p/6915661.html