一:传统使用方法
ICL7135精度高、抗干扰性能好、价格低,应用十分广泛。本文介绍ICL7135的引脚定义、主要特性及其与单片机的接口。
1. ICL7135的引脚功能及主要特性
ICL7135是双斜积分式4位半单片A/D转换器,28脚DIP封装。其引脚功能如下:{1}脚(V-)-5V电源端;{2}脚(VREF)基准电压输入端;{3}脚(AGND)模拟地;{4}脚(INT)积分器输入端,接积分电容;{5}脚(AZ)积分器和比较器反相输入端,接自零电容;{6}脚(BUF)缓冲器输出端,接积分电阻;{7}脚(CREF+)基准电容正端;{8}脚(CREF-)基准电容负端;{9}脚(IN-)被测信号负输入端;{10}脚(IN+)被测信号正输入端;{11}脚(V+)+5V电源端;{12}、{17}~{20}脚(D1~D5)位扫描输出端;{13}~{16}脚(B1~B4)BCD码输出端;{21}脚(BUSY)忙状态输出端;{22}脚(CLK)时钟信号输入端;{23}脚(POL)负极性信号输出端;{24}脚(DGND)数字地端;{25}脚(R/H)运行/读数控制端;{26}脚(STR)数据选通输出端;{27}脚(OR)超量程状态输出端;{28}脚(UR)欠量程状态输出端。
TCL7135的主要性能特点为:
1)输入阻抗达109Ω以上,对被测电路几乎没有影响;2)自动校零;3)有精确的差分输入电路;4)自动判别信号极性;5)有超、欠压输出信号6)采用位扫描与BCD码输出。
2. ICL7135与单片机的接口
1)电路原理 图1是ICL7135与单片机的接口电路。图中C1、R2是积分元件,C2是自零电容,C3是基准电容;R3、C5组成标准输入滤波网络;R4、C9、D1、D2组成输入过压保护电路;RP1为基准电压调整电位器,可根据要显示的满度值选择基准电压的大小,这里设计为1.0000V,它们的关系是:满度值为基准电压的两倍。IC4为六反相器,两个反相器组成振荡电路为ICL7135提供时钟信号,振荡频率f=0.45/(R6×C4)。ICL7135要求每秒钟至少进行3次A/D转换,每次转换需要40000个时钟脉冲,因此时钟频率应大于120kHz,这里取f=125kHz。STR为选通脉冲输出端。一次A/D转换结束后,在该端连续输出5个负脉冲,分别对应5组BCD码数据。74LS244是三态缓冲器,1G、2G分别选通两组信号:1G=0、2G=1时,选通第一组信号:1G=1、2G=0时,选通第二组信号。单片机的P3.1接1G,当P3.1为0时接通显示数码管;P3.7接2G,当P3.7为0时接通ICL7135的B1~B4。
2)ICL7135 STR端时序图 图2为ICL7135 STR端输出时序图。STR端在1秒内输出3 次,每次5个、共15个负脉冲,每次输出时间约333ms,连续负脉冲间的时间差远小于65ms。程序中设定T1中断时间间隔至少65ms,因而可准确检测出STR发出的5个连续的负脉冲,分别接收4位半A/D转换器输出的5个BCD码数据。
3)A/D转换相关软件工作原理 STR的负脉冲1号~5号、6号~10号、11号~15号,分别对应于数据1、数据2、数据3的BCD码的低位到高位……。ICL7135的STR接89C2051的P3.2。IDTB为取数中断(外中断IET0)程序。每次进入取数中断程序,接通74LS244第二组数据输入开关,读P1.3~P1.0口,送到以13H单元为指针的单元中(初始化时13H单元内容为1CH),然后13H单元数据指针减1。待5个BCD码取完,置位转换成功标志20H.6,将13H单元送1CH,调用子程序DTB将18H~1CH的BCD码数据转换为两个8位二进制数送6EH、6FH(高位存6EH单元)。IET1为T1中断程序,T1工作于方式1,不送入时间常数(即初始值为0000H),若晶振为12MHz,则每次中断的时间间隔为65.536ms。进入IET1中断时,如果20H.0=1,表示正在测量周期或频率;如果20H.0=1,且13H单元内容不为1CH、20H.7=0,表示是在连续取数过程中第一次进入IET1;如果20H.0=1,且13H单元内容不为1CH、20H.7=1,表示第二次进入IET1,在这两次进入IET1之间IDTB没有取过数据,则将13H单元送1CH,以便IDTB将低位BCD送入1CH单元。例如:由于干扰使第4个STR脉冲的对应的数据送入1CH,第5个STR脉冲对应的数据送入1BH,则第5个脉冲过后到第6个脉冲到来时,已过了大约333ms,已进入过五次T1中断,在第二次进入IET1时已将13H单元的内容置为1CH,这样,在STR第6个~第10个脉冲到来时,IDTB将对应的BCD码分别送入1CH~18H,使本次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脚)的波形如图1所示。“busy”输出端(ICL7135的21脚)高电平的宽度等于积分和反积分时间之和。ICL7135内部规定积
分时间固定为10001个时钟脉冲时间,反积分时间长度与被测电压的大小成比例。如果利用单片机内部的计数器对ICL7135的时钟脉冲计数,利用“busy”作为计数器门控信号,控制计数器只能在busy为高电平时计数,将这段busy高电平时间内计数器的内容减去10001,其余数便等于被测电压的数值。
图2是MCS-51定时器的逻辑框图,如果我们把T0规定为模式1定时器方式。定时器控制端(8031的12脚)接ICL7135的“busy”端。这样就能实现计数器由“busy”控制对单片机1/12时钟频率的计数要求。
图3是ICL7135与单片机MCS-51通过“busy”接口的电路图。若8031的时钟采用6MHz晶体,在不执行MOVX指令的情况下,ALE是稳定的1MHz频率,经过4分频可得到250kHz的稳定频率,传给ICL7135时钟输入端,使ICL7135的转换速率为每秒6.25次,选取这一转换速率,一方面照顾ICL7135A/D转换的精度,另一方面为了尽量少占用8031的资源。定时器为16位计数器,最大计数值65535。在6.25次/秒转换速率条件下,满度电压输入时,busy宽度为30001个时钟脉冲。再结合图1和图2可知,8031内部定时器的输入频率是500kHz,比ICL7135的时钟频率(250kHz)高1倍,在满度电压输入时,定时器计数值为30001x2=60002。不超过定时器最大值。在“busy”高电平期间定时器的数值除以2,再减去10001,余数便是被测电压的数值。具体程序如下:
|