单片机原理及应用课程设计温度测量.docx
《单片机原理及应用课程设计温度测量.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用课程设计温度测量.docx(21页珍藏版)》请在冰豆网上搜索。
单片机原理及应用课程设计温度测量
河南理工大学
《单片机应用与仿真训练》设计报告
温度测量
姓名:
朱广军
学号:
专业班级:
12级自动化2班
指导老师:
余开江
所在学院:
电气工程与自动化学院
时间:
2015年6月20日
摘要
本系统是一个基于单片机AT89S51的数字温度计的设计,用来测量环境温度,测量范围为-20℃—70℃度。
整个设计系统分为4部分:
单片机控制、温度传感器、数码显示以及键盘控制电路。
整个设计是以AT89S52为核心,通过数字温度传感器DS18B20来实现环境温度的采集和A/D转换,同时因其输出为数字形式,且为串行输出,这就方便了单片机进行数据处理,但同时也对编程提出了更高的要求。
单片机把采集到的温度进行相应的转换后,使之能够方便地在数码管上输出。
采用1602液晶屏显示温度。
以AT89C51作为核心控制温度传感器DS18B20进行实时温度检测并显示,其能够测量环境温度,根据此温度设定上下限报警温度。
所以,我们在电路设置了三个按钮,其中两个按钮作于调控温度的值的大小,剩下的一个是设置按钮,利用它来切换到调控温度最高值与最低值的界面。
1概述………………………………………………………………………………
2系统总体方案及硬件设计
2.1系统总体设计方案
2.2系统分析与设计
3软件设计
4Proteus软件仿真
5课程设计体会
参考文献
附1:
源程序代码
附2:
系统原理图
一、设计功能要求
采用数字式温度传感器为检测器件,进行单点温度检测。
用数码管直接显示温度值,微机系统作为数字温度计的控制系统。
1.基本要求:
(1)检测的温度范围:
-20℃~70℃,检测分辨率
0.5℃。
(2)用1602液晶屏来显示温度值。
(3)超过警戒值(自己定义)要报警提示。
二、系统总体设计方案
本系统是一个基于单片机AT89S51的数字温度计的设计,用来测量环境温度,测量范围为-20℃—70℃度。
整个设计系统分为4部分:
单片机控制、温度传感器、数码显示以及键盘控制电路。
整个设计是以AT89S52为核心,通过数字温度传感器DS18B20来实现环境温度的采集和A/D转换,同时因其输出为数字形式,且为串行输出,这就方便了单片机进行数据处理,但同时也对编程提出了更高的要求。
单片机把采集到的温度进行相应的转换后,使之能够方便地在数码管上输出。
采用1602液晶屏显示温度。
三、系统分析与设计
1.基本工作原理
以AT89C51作为核心控制温度传感器DS18B20进行实时温度检测并显示,其能够测量环境温度,根据此温度设定上下限报警温度。
所以,我们在电路设置了三个按钮,其中两个按钮作于调控温度的值的大小,剩下的一个是设置按钮,利用它来切换到调控温度最高值与最低值的界面。
当温度值达到上限或下限值甚至超多它,马上触发报警系统,二极管会闪烁,发声器发声。
温度计工作原理图
2.基本框图及各个部分的组成
本电路的小系统主要由四部分组成,复位电路、脉冲电路、检温电路、显示电路。
2.1复位电路:
计算机在启动运行的时候都需要复位,使中央处理器CPU和系统中的其他部件都处于一个确定的初始状态,并且从这个初始状态开始工作。
单片机的复位是靠外部电路实现的,51单片机有一个复位引脚RST,高电平有效。
最常用的复位电路有两种一种是有极性电容和一个电阻串联,电容接电源端,电阻的一端接地,电容和电阻的公共端接复位端口;另外一种方法是一个按钮和极性电容并联,电容正极与按钮的公共端接复位电路,另外一个公共端接地。
在焊接硬件的时候我们是采用了第一种方法接复位电路的。
2.2脉冲电路:
计算机的正常运行是需要脉冲才能正常工作,一个12MHZ的晶振和两个电容并接一起接到单片机XTAL1和XTAL2的端口,根据自己程序的需要我们可以选择产生脉冲的大小,产生脉冲的大小与晶振和电容有关。
我们选择的是一个12MHZ的晶振和22pf的电容。
2.3检温电路:
DS18B20数字温度传感器
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的外形及管脚排列如下图1:
DS18B20引脚定义:
(1)DQ为数字信号输入/输出端;
(2)GND为电源地;
(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
DS18B20的管脚图
2.4测温工作:
温度传感器DS18B20连接时I/O口上要接一个上拉5K左右的电阻,这样可以保证温传感器工作时候的精度,还有抗干扰的作用。
温度传感器检测外界的温度,得到的数据,将进行数据的转换,转换完成的温度数字将会保留,然后在液晶上显示,同时也会与程序设计的温度的上限和下限进行比较,若超出设定的上限和下限的温度值,就报警。
显示电路:
第1脚:
VSS接地
第2脚:
VDD接5V正电源。
第3脚:
为液晶显示器对比度调整端,接电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K欧姆的电位器来调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时,可以写入指令或者显示地址,当RS为低电平RW为高电平时,可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15~16脚:
屏幕背光引脚
1602与单片机的I/O口电路连接如图5-5所示:
3.完整温度测量设计图:
4.程序流程图:
开始
初始化显示及DS18B20
按键检测并对状态记数
读取温度值并显示实时温度
无键按下或状态为0
有键按下状态为1或为2
显示上限或下限温度值并开启外部中断
检测温度值并判断
是否高出上限或低于下限温度
否
中断?
否
上限加
上限减
报警
是
返回
四、源码清单
#include"reg52.h"
#include"absacc.h"
unsignedcharcodetab[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X40};
sbitDQ=0xb7;
sbitP07=0x87;
sbitRED=0x97;
sbitGREEN=0x96;
sbitSET=0x90;
sbitNEXT=0x91;
sbitREDUCE=0x92;
sbitADD=0x93;
unsignedchartempL=0;
unsignedchartempH=0;
floattemperature;
floattemperatureH=35,temperatureL=0;
inttH=1,tL=1;//报警状态,1为关闭
intm,k=1,l,keyon,keytype,out=0;
voiddelay(unsignedinttime)
{
unsignedintn;
n=0;
while(n