基于89C51单片机串行A/D驱动程序的设计
扫描二维码
随时随地手机看文章
串行A/D转换器转换后的结果是以串行方式输出,数字量以串行方式输出可简化系统的连线,缩小电路板的面积,节省系统的资源。下面以TLC2543为例,介绍串行A/D驱动程序的设计。
89C51单片机与TLC2543芯片的接口电路图如下图所示。TLC2543的3个控制输入端CS(的反)、I/OCLOCK、DATAINPUT和一个数据输出端DATAOUT分别与单片机的P1.4、Pl.l、P1.2和P1.3引脚相连,单片机采用的晶振频率为12MHz。
电路设计时,我们将TLC2543有两个基准电压输入REF+、REF-分别与电源(VCC)、GND相连,这样连接可保证数字输出的满度和零点,但在高精度的测量要求中,如果VCC的质量一般,应专门设计高精度的电压基准电路。由于TLC2543的转换速度很快,因此这里的转换结束标志接在单片机的Pl.0引脚,采用查询方式。
TLC2543通过串行接口与单片机通信,接口程序按照TLC2543的工作时序要求编写,根据图9-2中硬件连接关系,编写单片机89C51采样外部AINO通道模拟量的程序。主要包括用于实现读取TLC2543的A/D转换值子程序,具体C51程序如下。
根据上面的硬件原理图可以采用的延时(查询)方式来实现A/D转换的,也可以将EOC接反相器后再与外部中断输入端相连,在中断服务程序中启动下次转换并读取本次转换数据。
LC2543输入的是本次需要转换的通道地址,而输出的是上次转换后的结果,因此,启动转换后的第一个输出数据是随机数,必须丢弃。
在采集多路模拟量数据并且要求较高分辨率时是较好的一种可行方案。在高精度的场合,对于参考电压我们还要设计专门的精密基准电源。