目录 一、选题背景及研究意义 二、总体设计 2.1控制部分 2.2测量部分 2.3显示部分 2.4报警部分 三、硬件设计 四、软件设计 五、总结与展望 一、选题背景及研究意义 温度是一种最基本的环境参数,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。 温度是一个十分重要的物理量,对它的测量与控制有十分重要的意义。随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度:如大气及空调房中温度的高低,直接影响着人们的身体健康;粮仓温度的检测,防止粮食发霉,最大限度地保持粮食原有新鲜品质,达到粮食保质保鲜的目的;工业易燃品的存放。 测温技术在生产过程中,在产品质量控制和监测以及节约能源等方面发挥了着重要作用。本实验设计实现了工业测温基本功能,同时,在设计实验过程中,运用到单片机、模电、数电、传感器和C++程序设计等知识,这既能加强我们的理论知识与实践的结合,也能够提高我们应用交叉学科知识进行综合设计的能力。
二、总体设计 总体设计框图:
控制部分
显示部分温度采集部分
报警部分 2.1控制部分 控制部分是采用单片机STC89C52。 2.1.1 STC89C52简介 STC89C52是一种带8K字节闪烁可编程可檫除只读存储器的低电压,高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。 单片机总控制电路如下图4—1:
2.1.2 复位操作 复位操作有上电自动复位相按键手动复位两种方式。 上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图4-2(a)所示。这佯,只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。 按键手动复位有电平方式和脉冲方式两种。其中,按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的,其电路如图4-2(b)所示;而按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的, 其电路如图4-2(c)所示: (a)上电复位 (b)按键电平复位 (c)按键脉冲复位 图4-2复位电路 上述电路图中的电阻、电容参数适用于6MHz晶振,能保证复位信号高电平持续时间大于2个机器周期。 本系统的复位电路采用图4-2(b)上电复位方式。 2.1.3 STC89C52具体介绍如下: ① 主电源引脚(2根) VCC(Pin40):电源输入,接+5V电源 GND(Pin20):接地线 ②外接晶振引脚(2根) XTAL1(Pin19):片内振荡电路的输入端 XTAL2(Pin20):片内振荡电路的输出端 ③控制引脚(4根) RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。 ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号 EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。 ④可编程输入/输出引脚(32根) STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。 PO口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7 P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7 P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7 P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7 2.1.4 STC89C52主要功能,如下表所示。 STC89C52主要功能 主要功能特性 兼容MCS51指令系统 8K可反复擦写Flash ROM 32个双向I/O口 256x8bit内部RAM 3个16位可编程定时/计数器中断 时钟频率0-24MHz
2个串行中断 可编程UART串行通道 2个外部中断源 共6个中断源 2个读写中断口线 3级加密位 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能
2.2测量部分 测量部分我们采用美国DALLAS公司生产的DS18B20温度传感器。 2.2.1 DS18B20简介 DS18B20数字温度传感器,该产品采用美国DALLAS公司生产的 DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。 2.2.2封装及接线说明: DS18B20芯片封装结构:
特点:独特的一线接口,只需要一条口线通信 多点能力,简化了分布式温度传感应用 无需外部元件 可用数据总线供电,电压范围为3.0V至5.5V无需备用电源 测量温度范围为-55 °C至+125 ℃。华氏相当于是-67 °F到257华氏度 -10 °C至+85 °C范围内精度为±0.5 °C 2.2.3 DS18B20控制方法 DS18B20有六条控制命令: 温度转换 44H:启动DS18B20进行温度转换 读暂存器 BEH:读暂存器9个字节内容 写暂存器 4EH:将数据写入暂存器的TH、TL字节 复制暂存器 48H:把暂存器的TH、TL字节写到E2RAM中 读电源供电方式 B4H:启动DS18B20发送电源供电方式的信号给主CPU 2.2.4 DS18B20的初始化 2.2.5 DS18B20的写操作 2.2.6 DS18B20的读操作 2.3显示部分 显示部分是用LCD1602液晶显示 2.3.1 LCD1602引脚说明 2.4报警部分 见下面报警流程图模块及程序。
三、硬件设计 电路原理图如下:
DS18B20与单片机之间用单总线传输;DS18B20的数据口与单片机的P1^7相连;液晶LCD1602的RS、R/W和E分别于单片机的P^4、P2^5、P2^6相连; 四、软件设计 系统软件程序基于Keil uvsion3开发平台,采用C51语言编写。本程序采用模块化程序方法,主要分为以下三个模块: ◆ LCD初始化显示模块 ◆ DS18B20数据采集模块 ◆ 温度报警上下限设置模块 程序流程图:
初始化LCD1602调用DS18B20模块
主程序流程图
开始
调用报警模块温度显示 DS18B20是否响应?主机发出开始信号主机设置为输入模式
NY
DS18B20数据采集流程图等待480us
接收数据拉低总线,延时45us
释放总线
跳出 Temp>=TH||Temp<=TL?报警(LED亮,蜂鸣器响)
进入设置模式(按键)设置温度报警上下限TH与TL
NY
报警模块流程图
调用DS18B20模块
温度显示 源程序: #include #define uchar unsigned char #define uint unsigned int sbit DQ=P1^7; //ds18b20与单片机连接口 sbit RS=P2^4; sbit RW=P2^5; sbit EN=P2^6; sbit K1=P2^0; sbit K2=P2^1; sbit K3=P2^2; sbit LED=P1^0; sbit beep=P1^5; unsigned char code str1[]={"temperature is:"}; unsigned char code str2[]={" "}; uchar code LCD10[10]={"0123456789"}; uchar data disdata[16]={0x00,0x00,0x00,0x2E,0x00,0xDF,0x20, 0x48,0x3D,0x00,0x00,0x20,0x4C,0x3D,0x00,0x00}; uint tvalue; //温度值 uchar tflag; //温度正负标志 uchar flat,upnum,downnum,temp;
/**********************LCD显示模块***********************/ void delay1ms(unsigned int ms)//延时1毫秒 {unsigned int i,j; for(i=0;ifor(j=0;j<100;j++); } void delay1(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void wr_com(unsigned char com)//写指令// { delay1ms(1); RS=0; RW=0; EN=0; P0=com; /*-----------LCD数据传送口---------- */ delay1ms(1); EN=1; delay1ms(1); EN=0; } void wr_dat(unsigned char dat)//写数据//