PICl6F873简介
美国MicroChipTechnology公司推出的PICl6F87X中档系列单片机。该单片机内含有A/D、PWM、EEPROM等丰富的接口模块和FLASH程序存储器,由于采用在线串行编程、低压编程技术,其内部自带电荷泵升压电路,因而实现读写操作时不需外加高电压;同时PIC16F873具有IAP功能,可实现在应用中编程,PIC16F87X还可以方便地在线多次编程调试,特别适用于在产品的开发阶段使用,具有实用、低价、周期短、指令集小、低功耗、高速度、功能强和简单易学等特点。
PICl6F873构成的数字温度计
2、1硬件电路设计
由集成温度传感器AD590和PIC16F873单片机组成的数字温度计电路,如图1所示,所测温度由AD590温度传感器检测,经电压放大后直接送至单片机输入口,再将转换信号送数码管显示。
AD590温度传感器输出电流与温度成线性关系,为1μA/K,它以热力学温标零点作为零输出点,在25℃时的输出电流为29812μA。它将温度转换为相应的电流输出后,需要有电流电压转换电路。一般为提高测量准确度,还需要进行误差修正调整。而采用硬件电路进行误差调整的方法是用外部电阻器来实现的,最常用的方法有单点温度调整和双点温度调整。单点温度调整实质是端点平移的方法,是最简单的方法。这种方法仅在一点上调整,使得传感器在整个测量范围上仍有些误差。因此,在本数字温度计中我们采用双点温度调整。
如图1所示,双点温度调整实质为旋转和平移拟合法,与单点温度调整相比,它可以进一步提高AD590温度传感器的测温精确度。放大器采用了OP-07单片精密运算放大器,它具有低噪声、低漂移和高增益的特点,是一种通用性强的运算放大器,电容C4在这里起滤波的作用。通过R1给AD590传感器提供稳定的电压,所测温度由AD590温度传感器检测,给电压放大器提供电压信号,以供放大。这里用电位器W1起到调零点的作用,W2起到调增益的作用,通过调整W11和W2,使0℃时输出电压定为0V,温度每升高1℃输出电压上升50mV,这样100%时所对应的输出电压即为100%×50mV/℃=5V,这样就保证了使传感器的输出电压范围满足PIC16F873内部的ADC输入信号要求。由手使用10位的ADC,因此其分辨率是5mV,精确度为O1℃,测温范围为0~100℃。
如图1所示,电路的另一主要部分为PIC16F873单片机,系统时钟由4MHz的石英晶体经其内部振荡器提供,内部ADC的参考电压分别为VDD和地。测得的模拟温度值由数据线AN0输入,由于软件可以完成译码,因此不需译码器,而直接由SDO/RC5输出串行数据给移位寄存器74LS164(1),74LS164(1)--(4)的并行端口驱动数码管,74LS164的时钟脉冲由SCK/RC3提供。74LS164;(1)的A、B接单片机的SDO/RC5,其并行端口驱动百位;R741-S164(2)的A、B接74LS164(1)的Qh,其并行端口驱动十位;74LS164(3)的A、B接74LS164(2)的Qh,其并行端口驱动个位;74LS164(4)的A、B接74LS164(3)的Qh,其并行端口驱动十分位。小数点和“℃”符号分别直接经限流电阻R27、R34接电源。表1给出了五个温度值所对应的AD590输出和BCD码。
2、2软件设计
温度测量原理如下:首先由PIC16F873内部的10位ADC将传感器AD590输出的与实际温度相对应的电压值转化为10位的二进制码,然后由二-BCD码转换子程序将其转换成相应的BCD码,再由译码子程序将该BCD码转换为7段码,最后由显示子程序送出串行数据,通过LED显示。在图2中给出了该温度计的流程图。本程序中延时1秒的作用是每秒钟采样、显示一次所测温度,这样既消除了数码管的闪烁感,也能动态显示所测温度。
结束语
本文所介绍的数字式温度计充分利用了PIC单片机内部的A/D转换器、FLASH存储器和串行外围接口(SPI),并结合软件完成对温度的测量与数字显示,简单实用。经过简单改造,可以实现多路温度测量。