MCS-51高精度A/D接口电路--ICL7135
ICL7135具有±20000个数的分辨率,而且有BCD码和STB选通信号输出,与微机接口十分方便,因此有很多**介绍ICL7135作为微机的高精度A/D接口电路。本文与其他**不同之处是利用ICL7135的“busy”输出信号与单片机MCS-51衔接。
在小型化仪表中,应该以最少的元件完成尽可能多的任务,8031需外接EPROM,剩下的16个I/O口是十分宝贵的。如果利用ICL7135的BCD码和STB选通信号就要占5个I/O口,而利用ICL7135的“busy”端,只要一个I/O和8031内部的一个定时器就可以把ICL7135的数据送入单片机。
为了便于读者理解,首先介绍ICL7135的“busy”端的功能。ICL7135是以双积分方式进行A/D转换的电路。每个转换周期分为三个阶段:
1.自动调零阶段
2.被测电压积分阶段
3.对基准电压进行反积分阶段 以输入电压Vx为例,其积分器输出端(ICL7135的4脚)的波形,“busy”输出端(ICL7135的21脚)高电平的宽度等于积分和反积分时间之和。ICL7135内部规定积分时间固定为10001个时钟脉冲时间,反积分时间长度与被测电压的大小成比例。如果利用单片机内部的计数器对ICL7135的时钟脉冲计数,利用“busy”作为计数器门控信号,控制计数器只能在busy为高电平时计数,将这段busy高电平时间内计数器的内容减去10001,其余数便等于被测电压的数值 定时器控制端(8031的12脚)接ICL7135的“busy”端。这样就能实现计数器由“busy”控制对单片机1/12时钟频率的计数要求。 ICL7135与单片机MCS-51通过“busy”接口的,若8031的时钟采用6MHz晶体,在不执行MOVX指令的情况下,ALE是稳定的1MHz频率,经过4分频可得到250kHz的稳定频率,传给ICL7135时钟输入端,使ICL7135的转换速率为每秒6.25次,选取这一转换速率,一方面照顾ICL7135A/D转换的精度,另一方面为了尽量少占用8031的资源。定时器为16位计数器,最大计数值65535。在6.25次/秒转换速率条件下,满度电压输入时,busy宽度为30001个时钟脉冲。再结合图4.5-1和2可知,8031内部定时器的输入频率是500kHz,比ICL7135的时钟频率(250kHz)高1倍,在满度电压输入时,定时器计数值为30001x2=60002。不超过定时器最大值。在“busy”高电平期间定时器的数值除以2,再减去10001,余数便是被测电压的数值。具体程序如下:
|