基于AT89C52单片机的温度检测及显示设计
扫描二维码
随时随地手机看文章
1 元器件的选择
1.1 核心芯片的选择
AT89C52单片机价格低廉,输入输出口丰富,无需再另外扩展,简化了外围电路。256 B内部RAM,8 kB内部ROM,程序存储空间大,防止由于字模过多而造成存储空间不够。另外由于前期开发需要多次的写入、擦除,而89C52可以完成1 000次写/擦,故满足要求。
1.2 模数转换芯片的选择
ADC0809是8位的A/D转换芯片,为逐次逼近型。由单一的+5 V电源供电,片内带有所存功能的8路模拟多路开关,可对8路0~5 V的输入模拟电压信号分时进行转换,完成一次转换约需100μs;片内的地址译码和锁存电路,将单片机的三条地址信号译码生成选择八路模拟通道。输出具有TTL三态锁存缓冲器,可以直接接到单片机的数据线上。
1.3 温度传感器的选择
温度传感器类型很多,目前出现的石英体温度传感器如AD590具有很高的稳定性、准确度和良好的线性,抗干扰能力强。单总线数字型的温度传感器DS18B20直接产生温度数字信号,不需要A/D转换,准确度、稳定性都相当高,但这些传感器的适用范围不广,不利于以后其他功能的扩展。所以本次采用TREND公司的铂热电阻温度传感器T/PI/HT,传感器的工作电压为24 V,输出电流为4~20 mA,外接250 Ω精确电阻用于提取电压时进行A/D转换,ADC0809的输入电压在1~5 V范围内对应的测量温度范围为-10~+160℃。
2 AT89C52的设计应用
2.1 硬件设计
根据设计仪表的功能要求,本设计要完成以下功能:
(1)数字化测量,显示及报警装置;
(2)显示指定位置温度的数值及其动态曲线图;
(3)多路模拟数据的采集、处理;
(4)温度值字体的放缩。
系统结构图如图1所示。
2.2 软件设计
用C语言进行单片机程序设计,采用结构化程序设计思想:在总体设计中采用“自顶而下”(TOP-DOWN)的方法,在程序设计中采用模块化编程。把整体任务分成一个个子任务,子任务再分子任务,逐层细分,每个子程序都完成其规定的功能,明确输入输出。将这些程序连接起来就构成整体流程图。模块化编程,每个模块结构完整,相互独立的程序段。如液晶模块的写控制指令、写显示数据、清屏;数据处理中的工程量转换,均值滤波等。这些程序可以任意调用、修改,使整个程序结构清晰,组合灵活,维护调试方便。
2.2.1 主流程图
主流程图如图2所示。主要包括程序初始化部分,主要完成的任务是初始化液晶显示屏,初始化单片机各口状态和设初始阈值,检测位置为第一路;按确定键后系统开始工作,显示第一路位置的温度及其动态显示图的主页面;当按下设置键时,液晶屏幕显示一个选择界面,可选择设置检测位置,检测位置阈值;通过上下键可进行选择,选择界面的箭头指向设置位置时,按确定就可进入位置的设置,设置完毕后,确定健返回;直接再按确定键可显示放大的温度字体。
2.2.2 测温流程图和曲线显示流程
启动ADC0809时需根据启动的检测位置不同查表选用不同的通道地址表;设定ADC0809转换时间,采用延时等待后,再读取它的转换数据;根据温度传感器的量程得出转换公式;为了便于显示,需要把各位数分离,分离出了百位数、十位、个位、十分位和百分位;建立一个0~9的数字字模表,取模显示。温度显示和曲线显示流程图分别如图3和图4所示。
2.2.3 阈值设置流程图
阈值温度ft为外部变量,在整个程序中都有效,每按一次“上”键ft=ft+1,按“下”键时ft=ft-1,检测位置的设定与其相似。阈值设置流程图如图5所示。
3 结语
本文对AT89c52单片机在智能温度检测中的应用进行了设计研究,该系统还可方便接人其他模拟量传感器,功能扩展性好。液晶模块显示和键盘操作设置系统参数,人机交互界面好。检测数据准确可靠,线性度好,降低了系统成本,增强了系统的通用性。软件设计采用C语言,可移植性好,结构严谨,开发速度快,大大减少了软件开发的时间,具有一定的实用价值。