1 引言
针对传统测温元件(热电偶、热电阻)组成的温度测量电路复杂,软件调试繁琐等缺点,设计基于MSC-51单片机及ADC0809的温度采集控制系统。该系统利用单片机中空余的I/O接口,以中断的方式实现温度的实时采集与控制,充分利用CPU的资源空间,简化了测量电路以及程序调试的复杂过程,方便了技术人员在实际中的开发和应用。
2 硬件电路设计
2.1 系统组成
图1为系统硬件组成框图。外部传感器将与温度相对应的电信号传至A/D转换器,进行模数转换,完成后将数据传送至单片机,单片机进行数据处理后将数据送至译码器,最后在数码管上显示。当有键盘输入控制温度时,单片机内部比较此时得到的A/D转换数据与控制设定温度,若低于设定温度,外部装置加热,LED单色灯亮;反之,则不加热,LED单色灯熄灭。
2.2 系统模块设计
(1)主控制模块 选用单片机MSC-51的最小系统作为主控制器件,且采用MSC-51单片机的最小主控制模块,由于程序控制简单,器件内部空间足够存储程序,无需外扩存储器,选用P0、P1口作为输出接口,P2口作为输入接口。
(2)温度采集模块温度采集模块由外部传感器、电热器以及ADC0809器件组成。传感器的测量范同是0℃~50℃。在理想情况下,A/D转换器输出的数值D与输入的电压信号V之间有以下关系式成立
式中,Vmax为连接在器件Vref+引脚的“高基准电压值”;Vmin为连接在器件Vref-引脚的“低基准电压值”。DMAx为当输入电压为Vmax时,接口输出的转换数值。Dmin为当输入电压为Vmin时,接口输出的转换数值。
(3)温度显示模块 温度显示模块由8279器件与数码管组成,8279内部的OUTA0~OUTA3、OUTB0~OUTB3与译码器74LS138连接,控制七段数码管的显示。
(4)温度控制模块温度控制模块由键盘、MSC-51器件、电热器、A/D转换器等组成。键盘数值的输入也由8279器件通过行列扫描控制,再通过MSC-51的内部数值比较,电热器控制温度,进而达到保温的目的。
2.3 系统硬件连接
系统选用MSC-51单片机作为主控制器件,进行数据的处理与传输。设计中将74LS273的引脚P0.4与外部电热器的开关相连接,控制加热。同时将LED单色灯与74LS273的引脚P0.4口连接.以显示外部电热器的状态。A/D转换器ADC0809的引脚CS与编号为“8300H”的译码器输出端连接,EOC信号接MSC-51的引脚P1.7,IN1与温度传感器相连接。数码显示控制器件8279的引脚CS与编号为“8700H”的译码器输出端连接。图2为键盘及数码管显示电路,图3为A/D转换电路。
3软件设计
软件采用MSC-51的单片机汇编语言编写,运用单片机内部定时器的中断实现中断程序的调用以及5 s刷新数据的功能,从而大大节约CPU的资源,提高了工作效率。
3.1 主程序流程
在主程序开始之前设置伪指令,方便程序编写时查找各个器件地址及初始化命令。主程序中设置定时器1的中断程序,其定时产生中断并进入中断子程序。主程序入口地址是0000H,中断入口地址是001BH。为避免程序的存储位置与单片机预设的存储位置发生冲突,在各个入口地址中只放置跳转指令。主程序的存放地址从0500H开始。
主程序以“START”开始,经设置堆栈栈底以及各接口器件的初始化程序后.启动定时器1开始计时,当计数时间为50 ms时,定时器1产生中断,转入中断子程序运行。主程序流程如图4所示。
主程序部分代码如下:
3.2 系统中断子程序流程
图5是中断子程序流程,其程序步骤如下:单片机响应定时器1的中断,进入中断子程序“FRESH”,设置50 ms的定时时间循环100次后,得到5 s的刷新时间,当到达5 s定时,随即进人A/D转换器的读取数据。将A/D转换器得到的数值与预设温度值相比较。测量值低于预设温度则启动电热器,L=ED亮;反之,继续下一步。数码管初始化,并将A/D转换后的十六进制数值转换为十进制数值并显示输出。
4 结束语
该方案具有节约接口资源,CPU利用率高,执行速度快,简单易行等特点,具有推广价值。但基于系统本身及器件转换中存在误差的缺点,该设计还需进一步提高控制精度,减小误差,从而提高系统的整体性能。