图2 基准电压电路 传统的ICL7135表头很多是使用4MHz晶振经CD4060分频获得125kHz频率,BCD输出用74LS48之类译码,最后再用三极管或达林顿驱动器驱动数码管,电路复杂不说,成本还高。既然要使用单片机,那么就要让其完成所有功能。STC10F04XE是增强型的8051单片机,拥有4kB的ROM,512B的RAM,5kB的EEPROM以及独立波特率发生器, IO口可设置为多种输出模式;可以实现时钟信号、数据读取、数码管驱动、状态指示、按键控制和串口通信等全部功能。其引脚定义如图3所示。
图3 STC10F04XE引脚图 考虑程序的复杂度,决定采用比较简单的读取BCD方式采集ICL7135数据。以前我也尝试使用Busy信号来采集数据,但并不成功,所以这次并不打算采用这种方式。ICL7135输出数据有5位数字,D5-D1端按顺序分别输出高电平脉冲进行不间断的扫描。B8、B4、B2、B1端输出当前位的BCD值。当一次正常的数据转换结束后,D5-D1重新开始不断扫描(超量程时不是)。每次数据转换后的D5-D1的第一遍扫描过程中的每个脉冲的中间,
图4 数字扫描和输出时序 将BCD输出端和D1-D4按顺序连接在单片机的P0口(D5悬空即可),用于采集ICL7135数据,端接到单片机中断0端(P3.2)。单片机的P1.0口是独立波特率发生器的可编程输出时钟端口,用该端口输出稳定的时钟信号给ICL7135。为了良好的抑制50Hz工频干扰,ICL7135的信号积分阶段周期应是工频周期的整数倍,信号积分阶段周期为10000个时钟周期,则最佳时钟频率=50×10000/N,N为整数。所以可选的时钟频率可为100kHz、125kHz等。STC10F04XE是1T单片机,所以可以选择4MHz、6Mhz等较低频率的晶振以减小功耗和干扰,但选择晶振频率要注意保证P1.0口能输出所需的时钟频率。使用6MHz的晶振能产生100kHz、120kHz、125kHz等多种频率,但4MHz晶振无法产生120kHz等频率。本来我是想选择4MHz晶振的,但是考虑到程序中要能设定多种时钟频率,所以最终使用了6MHz晶振。为了能够直接驱动数码管和8个LED,所以选择了这种IO口可设为推挽输出的单片机。数码管各段需要用电阻限流,以防烧坏数码管和单片机。ICL7135的其余端口根据PCB布线的方便性接在单片机的不同IO口上,在P4.0口设置一轻触开关,同时单片机引出串口、中断1、部分IO口以供通信、控制之用。 ICL7135通常需要±5V供电,提供双电源实在是不方便,所以采用手册推荐的ICL7660电荷泵负压电路,简单稳定。供电电路还额外增加了AMS1117-5.0稳压芯片,除使用5V外还可以使用6V-15V电压供电,扩展了供电范围,同时还设计了超压保护和反接保护电路,以保护芯片安全。不要小看这个超压保护和反接保护,在平时做一些实验调试时,各种线会很多很乱,各种电压也会有很多,接错线是很正常的事,如果没有这些保护,接错的后果往往很严重。我在修改测试这个表头的过程中,就有过将13V电源误接入5V供电输入上,幸好当时没偷懒,保护电路也焊上了,不然芯片肯定不保了。 (责任编辑:admin) |