(二)接口与编程
ICL7135与MCS-51的连接可参照MCLl4433与处理器连接方法,依次读出万位到个位的BCD码.本节采用另外一种方法,重点推荐采用计数法进行A/D"转换"的方法.ICL7135与MCS-51连接如图4所示.
(1)硬件连接.设MCS-51的外接晶振fosc=6MHz,则ALE输出约为1MHz,将ALE信号输入CD4040的CLK引脚.CD4040是由12个T型触发器组成的串行二进制计数器/分频器,有12个分频输出端,Q1~Q12,最大分频系数为212=4096,由于CD4040的所有输入,输出端都设有缓冲器,所以有较好的噪声容限.CD4040的Q2输出是对ALE进行了22=4分频,故输入ICL7135的时钟为1MHz/4=250kHz,可得TCP=1/250ms=0.004mS,由于一次转换最多需(10001+10000+20001)=40002个脉冲,故转换一次需0.004×40002≈160ms,因此ICL7135的转换速度为6.25次/s.选择这一频率,以牺牲ICL7135抗工频干扰为代价,使MCS-51的16位计数器能一次计数A/D"转换"的CP脉冲数.在满电压输入时,BUSY宽度为正向积分10000个CP脉冲,反向积分20001个CP脉冲(总计30001个CP脉冲).在fosc=6MHz情况下,8031内部定时频率为6MHz/12=500kHz,比ICL7135时钟频率250kHz大了1倍.在满刻度电压输入时,定时器计数值应为30 001×2=60002,不超过MCS-51的16位计数的最大可计数值(216),故在BUSY高电平期间,计数器计数值除以2,再减去10000(2710H),余数就是被测电压的数值.
(2)程序设计.假定将转换的结果(二进制)存放在R3,R2寄存器中,其中R3存放高位.
程序清单如下:
JB P3.2,$ ;等待BUSY变低(A/D转换结束)
MOV TL0,#0
MOV THO,#0 ;16位计数器初值清0
MOV TMOD,#01H ;TO定时,方式1(16位定时)
JNB P3.2,$ ;等待BUSY变高(A/D转换开始)
SETB TR0 ;启动定时
JB P3.2,$ ;等待A/D结束
CLR TR0 ;停定时
CLR C
MOV A,THO
RRC A ;高位除以2
MOV R3,A ;存高位
MOV A,TL0
RRC A ;低位除以2
MOV R2,A ;存低位
CLR C
SUBB A,#10H ;低位减10H
MOV R2,A
MOV A,R3
SUBB A,#27H ;高位减27H
MOV R3,A
RET
提示:现在市场上许多常见的4位半数字万用表就是采用类似上述转换芯片
图5 UART接口电路
图6 UART接口电路
图7 典型应用示意图
图8 驱动液晶显示器电路图
图9 41/2位数的A/D复用共阳极LED显示屏电路
图10 ICL7135的8255,80C48接口电路 图11 LM311时钟源.jpg
图12 ICL7135的MC6800,MCS650X接口电路