温度检测系统完整版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

温度检测系统设计

本设计测量的温度为环境温度,测量范围从0℃—50℃。 检测系统主要由硬件系统和软件系统两大部分组成。

硬件系统包括:集成温度传感器LM35,数据采集和转换模块(A/D 转换器ADC0809),主控器(AT89S51),点阵字符型液晶显示模块(RT1602C )。

软件系统包括:前置的各芯片管脚定义、函数声明、全局变量声明、主函数和实现各种功能的子程序:A/D 驱动程序、LCD 初始化程序、LCD 判忙程序、LCD 写数据命令程序、LCD 显示程序、延时程序。

系统设计原理:温度传感器输出0~1V 的线形电压信号,为了提高测量精度将温度传感器的输出电压通过调理电路输出0~3V 的线形电压信号,2路模拟信号通过A/D 转换器转换成数字信号然后由A/D 转换器把数字信号输入到单片机,单片机进行温度补偿后送入液晶显示模块中显示。

系统的硬件设计

系统的硬件主要由温湿度检测模块、ADC0809的A/D 转换模块、主控制模块、LCD 显示模块等组成。系统原理图如图所示。系统硬件设计电路图见附录A 。

温度传感器

温度传感器采用菲利浦公司生产的精密集成电路温度传感器LM35,功耗低,精度高,价格便宜。

LM35具有很高的工作精度和较宽的线性工作范围,他的输出电压与摄氏温度成线性比例,且无需外部校准或微调,可以提供±1/4℃的常用的室温精度。LM35的输出电压与摄氏温度的线形关系用公式表示,0℃时输出为0 V,每升高1℃,输出电压增加10 mV。

•工作电压:直流4~30V;

•工作电流:小于133μA

•输出电压:+6V~-1.0V

•输出阻抗:1mA负载时0.1Ω;

•精度:0.5℃精度(在+25℃时);

•漏泄电流:小于60μA;

•比例因数:线性+10.0mV/℃;

•非线性值:±1/4℃;

•校准方式:直接用摄氏温度校准;

•封装:密封TO-46晶体管封装或塑料TO-92晶体管封装;

•使用温度范围:-55~+150℃额定范围。

温度传感器信号调理电路

A/D转换

数据采集和转换通过A/D转换器实现,本次设计采用8位A/D转换器ADC0809来完成转换任务。

转换电路设计

根据ADC0809的特点和管脚特性设计其外围电路接口如图所示。

ADC0809与单片机接口电路

其中26管脚接收温度模拟电压信号。CLOCK为工作时钟,时钟信号由外

界提供,频率为1MHZ,由10管脚外接二进制计数器CD14024二分频得到。为了提高A/D转换精度,A/D转换器的基准电压调整为3V,由图2所示电路完成。

图1时钟信号分频电路

图2电压调制电路

液晶显示设计

字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,其显示美观、使用方便,故本设计采用点阵字符型液晶显示模块RT1602C。

液晶模块RT1602C简介

液晶模块RT1602C是一种用5×7点阵图形来显示字符的液晶显示器,根据显示的容量可分为1行16个字、2行16个字。

本系统的液晶显示模块与单片机接口电路如图3所示。

图3 液晶显示模块与单片机接口电路

A/D转换的软件设计

A/D转换由集成电路ADC0809完成,地址线(23~25脚)决定对哪一路模拟输入作A/D转换。ALE锁存地址控制,当输入为高电平时,对地址信号进行锁存。START为测试控制,当输入为一个2µs宽电平脉冲时,就开始A/D转换。EOC为A/D转换结束标志,当A/D转换结束时,EOC高电平。OE为A/D

转换数据输出允许控制,当OE为高电平时,A/D转换数据从P0端口输出。A/D 转换子函数R eadADC0809()的流程图如图4所示。

图4 A/D转换程序流程图

3.3 液晶显示软件设计

显示程序由各程序模块组成,LCD初始化程序、LCD判忙程序、LCD写数据命令程序、LCD显示程序,在主函数中我们只需要调用这些程序模块即可,这样既简单又实用。

LCD判忙程序:

void LcdBusy(void)

{

do

{

DataPort=0xff;

LCD_RS=0;

LCD_RW=1;

LCD_E =0;

_nop_();

LCD_E = 1;

}while(DataPort & 0x80);

LCD_E=0;

}

LCD写命令程序:

void LcdWriteCmd ( Uchar Command ) {

LCD_ME = 0;

LcdBusy();

LCD_RS = 0;

LCD_RW = 0;

DataPort = Command;

LCD_E = 1;

_nop_();

_nop_();

LCD_E = 0;

}

LCD写数据程序:

void LcdWriteData( Uchar DATA ) {

LcdBusy();

LCD_ME = 0;

LCD_RS = 1;

LCD_RW = 0;

LCD_E = 1;

DataPort=DATA;

_nop_();

LCD_E=0;

}

LCD初始化程序:

void Initialization_1602(void) {

LcdWriteCmd(0x01);

LcdWriteCmd(0x38);

相关文档
最新文档