本科毕业设计论文基于单片机温度检测报警器的设计.docx
- 文档编号:28764913
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:25
- 大小:612.18KB
本科毕业设计论文基于单片机温度检测报警器的设计.docx
《本科毕业设计论文基于单片机温度检测报警器的设计.docx》由会员分享,可在线阅读,更多相关《本科毕业设计论文基于单片机温度检测报警器的设计.docx(25页珍藏版)》请在冰豆网上搜索。
本科毕业设计论文基于单片机温度检测报警器的设计
洛阳理工学院
课程设计报告
课程名称单片机原理与应用技术
设计题目基于单片机温度检测报警器的设计
专业通信工程
班级
学号
姓名
完成日期2016年12月31日
课程设计任务书
设计题目:
基于单片机温度检测报警器的设计
设计内容与要求:
一、设计内容
利用STC89C51单片机、DS18B20数字温度采集器及LCD1602显示器件设计一个温度检测报警器,要求实现温度的实时测量与显示、温度上下限设定及报警功能;
二、设计要求
1.分析系统功能,确定系统设计方案,掌握总体设计的方法与思路。
2.系统硬件设计,确定外设与单片机的硬件接口。
掌握单片机系统外部接口的扩展设计方法
3.系统软件设计,结合硬件设计,编写相应控制程序,并进行Protuse仿真执行。
4.熟练掌握程序烧录及调试过程。
5.按照要求撰写课程设计论文。
指导教师:
2016年12月20日
课程设计评语
成绩:
指导教师:
_______________
年月日
基于单片机温度检测报警器的设计
摘要
随着时代的进步和发展,温度的测试已经影响到我们的生活、工作、科研、各个领域,已经成为了一种非常重要的事情,因此设计一个温度测试的系统势在必行。
本次课程论文主要介绍了一个基于STC89C51单片机的数字温度检测报警器系统。
详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现温度的采集和报警,并可以根据需要调节上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当做温度处理模块潜入其他系统中,作为其他主系统的辅助扩展。
DS18B20与STC89C51结合实现最简温度报警系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。
关键词:
STC单片机,DS18B20,LCD1602
前言
温度是工业对象中主要的被控参数之一,如冶金、机械、食品、化工各类工业生产中,广泛使用的各种加热炉、热处理炉、反应炉等,对工件的温度处理要求严格控制。
随着科学技术的发展,要求温度测量的范围向深度和广度发展,以满足工业生产和科学技术的要求。
以单片机为核心设计的温度报警器,具有安全可靠、操作简单方便、智能控制等优点。
温度对于工业生产如此重要,由此推进了温度传感器的发展。
温度传感器主要经过了三个发展阶段:
(1)模拟集成温度传感器。
该传感器是采用硅半导体集成工艺制成,因此亦称硅传感器或单片集成温度传感器。
此种传感器具有功能单一(仅测量温度)、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等特点,适合远距离测温、控温,不需要进行非线性校准,外围电路简单。
它是目前在国内外应用最为普遍的一种集成传感器,典型产品有AD590、AD592、TMP17、LM135等;
(2)模拟集成温度控制器。
模拟集成温度控制器主要包括温控开关、可编程温度控制器,典型产品有LM56、AD22105和MAX6509。
某些增强型集成温度控制器(例如TC652/653)中还包含了A/D转换器以及固化好的程序,这与智能温度传感器有某些相似之处。
但它自成系统,工作时并不受微处理器的控制,这是二者的主要区别;
(3)智能温度传感器(亦称数字温度传感器)。
智能温度传感器是在20世纪90年代中期问世的,其内部都包含温度传感器、A/D转换器、信号处理器、存储器(或寄存器)和接口电路。
有的产品还带多路选择器、中央控制器(CPU)、随机存取存储器(RAM)和只读存储器(ROM)。
智能温度传感器的特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU);并且它是在硬件的基础上通过软件来实现测试功能的,其智能化程度也取决于软件的开发水平。
现代信息技术的三大基础是信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)。
传感器属于信息技术的前沿尖端产品,尤其是温度传感器被广泛用于工农业生产、科学研究和生活等领域,数量高居各种传感器之首。
数字温度传感器可以直接将被检测的温度信息以数字化形式输出,与传统的模拟式温度传感器相比,具有测量精度高、功耗低、稳定性好、外围接口电路简单特点。
而单片机微处理器越来越丰富的外围功能模块,更加方便了数字式温度传感器输出信号的处理。
智能温度传感器内部都包含温度传感器、A/D转化器、信号处理器、存储器(或寄存器)和接口电路。
有的产品还带多路选择器、中央处理器(CPU)、随机存取存储器(RAM)和只读存储器(ROM)。
并且它是在硬件的基础上通过软件来实现测试功能的,其智能化程度也取决于软件的开发水平。
进入21世纪后,智能温度传感器正朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片机测温系统等的方向发展。
数字化温度传感器可以直接将温度量以数字脉冲信号形式输出,具有测量精度高、抗干扰能力强、传输距离远、外围接口电路简单等诸多优点。
同时数字温度传感器还可直接与微
处理器进行接口,大大方便了传感器输出信号的处理.数字单总线温度传感器是目前最新的测温器件,它集温度测量,A/D转换于一体,具有单总线结构,数字量输出,直接与微机接口等优点
本温度报警器以STC89C51单片机为控制核心,由一数字温度传感器DS18B20测量被控温度。
当被测量值超出预设范围1℃则发出警报,适用于大多数工业生产以及教育教学领域。
温度是一种最基本的环境参数,它是与人类的生活、工作关系最密切的物理量,也是各门学科与工程研究设计中经常遇到和必须精确测量的物理量。
从工业炉温、环境气温到人体温度;从空间、海洋到家用电器,各个技术领域都离不开测温和控温。
因此,研究温度的测量和控制方法具有重要的意义。
一、设计目标与内容
1.设计目标
课程设计的目的是使学生全面地熟悉和掌握本课程的主要知识,培养学生能系统地处理和解决本课程有关的技术问题,系统地掌握单片机技术应用的设计方法,为毕业设计和今后的工作奠定良好的基础。
本课程设计是学生在学完单片机原理及应用课程之后,进行的一个综合性和实践性很强的教学环节。
学生要按照课程设计任务书的要求,对电路进行设计、分析与计算,设计程序并调试执行。
2.设计内容
利用STC89C51单片机、DS18B20数字温度采集器及LCD1602显示器件设计一个温度检测报警器,要求实现温度的实时测量与显示、温度上下限设定及报警功能;
3.设计要求
(1)明确课程设计课题,明确设计任务和要求
(2)充分了解课程设计的的性能、指标,设计内容及要求,确定设计方案
(3)硬件设计
(4)软件设计根据电路工作过程,画出软件流程图,根据流程图编写相应的程序。
(6)原理图设计及仿真根据所确定的设计电路,利用Protel或EWB等有关工具软件绘制电路原理图、PCB板图、提供元器件清单;
(7)软件下载至硬件上调试执行。
(8)按规范和要求,撰写和打印课设报告,准备课设答辩。
二、系统设计
图1、系统设计框图
高低
正常
图2、程序流程图
三、功能模块设计
1主控制器
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
它的主要性能参数:
•8K字节可重擦写Flash闪速存储器
•1000次可擦写周期
•全静态操作:
0Hz-24MHz
•三级加密程序存储器
•256×8字节内部RAM
•32个可编程I/O口线
•3个16位定时/计数器
•8个中断源
•可编程串行UART通道
•低功耗空闲和掉电模式图3、AT89C52仿真图
2温度测量模块
DS18B20是常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。
DS18B20测温原理如图3所示。
图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。
主要根据应用场合的不同而改变其外观。
封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。
耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
1、技术性能描述:
①、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
②、测温范围-55℃~+125℃,固有测温误差(注意,不是分辨率,这里之前是错误的)1℃。
③、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。
④、工作电源:
3.0~5.5V/DC(可以数据线寄生电源)
⑤、在使用中不需要任何外围元件
⑥、测量结果以9~12位数字量方式串行传送
⑦、不锈钢保护管直径Φ6
⑧、适用于DN15~25,DN40~DN250各种介质工业管道和狭小空间设备测温
⑨、标准安装螺纹M10X1,M12X1.5,G1/2”任选
⑩、PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。
图4、DS18B20实物图图5、DS18B20图
3LCD显示模块
工业字符型液晶,能够同时显示16x02即32个字符。
(16列2行)
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
1602采用标准的16脚接口,其中:
第1脚:
GND为电源地
第2脚:
VCC接5V电源正极
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:
RW为读写信号线,高电平
(1)时进行读操作,
低电平(0)时进行写操作。
第6脚:
E(或EN)端为使能(enable)端,高电平
(1)时读取信息,负跳
变时执行指令。
第7~14脚:
D0~D7为8位双向数据端。
第15~16脚:
空脚或背灯电
源。
15脚背光正极,16脚背光负极。
特性
3.3V或5V工作电压,对比度可调
内含复位电路
提供各种控制命令,如:
清屏、字符闪烁、光标闪烁、显示移位等多种功能
有80字节显示数据存储器DDRAM
内建有192个5X7点阵的字型的字符发生器CGROM
8个可由用户自定义的5X7的字符发生器CGRAM
特征应用
微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。
操作控制
注:
关于E=H脉冲——开始时初始化E为0,然后置E为1。
字符集
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
图6、1602实物图
图7、1602仿真图
4上下限设定模块
设置好温度上下限后,我们要通过按键来改变上下限,按键在未按下之前,P1口全为高电平,为0xff,当其中按键按下后,电平发生改变,CPU检测到电平的跳变后就可判断出是哪个按键按下,如果是第一个按键按下,为0xfd,写命令使其为温度上限的增加按键,以此类推。
但按键有抖动,所以我们在设置按键时要进行消抖命令。
图8、调节温度上下限的按键仿真图
5报警模块
用判断语句将18B20读出的温度与设定的温度上下限进行比较。
如果不在此范围内则通过LED灯亮进行报警
图9、LED报警程序仿真图
四、仿真与实物演示
1系统仿真
图10、仿真运行图
2调试中遇到的问题
(1)程序与仿真图不符:
在进行二极管报警时,我们设定的是不良时为高电平,亮时为低电平,所以就要求仿真图中的两个二极管的阳极接高电平,阴极接低电平,不可接反,一旦接反就会导致仿真图无法运行或者无法报警。
(2)LCD引脚连接不正确:
LCD的RS、RW、E引脚和单片机的连接需要和电路板里的连接口一样,即RS连接P2.4,RW连接P2.5,E连接P2.6,不可随意连接,否则电路板在烧录程序后不能显示温度。
(3)DS18B20反接:
平的那一面,左负右正,一旦接反就会立刻发热,有可能烧毁!
同时,接反也是导致该传感器总是显示85℃的原因。
实际操作中将正负反接,传感器立即发热,液晶屏不能显示读数,正负接好后显示85℃。
另外,如果使用51单片机的话,那么中间那个引脚必须接上4.7K—10K的上拉电阻,否则,由于高电平不能正常输入/输出,要么通电后立即显示85℃,要么用几个月后温度在85℃与正常值上乱跳。
(4)粗心大意,将电路板上的杜邦线连接错误:
线路一旦连接错误,可能导致显示屏上的温度为-0.06摄氏度,并且不发生改变,或者不显示。
(5)忘记连接DS18B20的DQ接口
3实物演示效果
图11、实物演示效果
五、源程序
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitRS=P2^4;//1602连接口数据寄存器1,0是命令寄存器
sbitRW=P2^5;//读写,0写,1读
sbitEN=P2^6;//使能端
sbitDQ=P2^7;//数据单总线
sbitp3_6=P3^1;//定义报警LED灯
sbitp3_7=P3^7;
#defineDataPortP0
voidDelayUs2x(unsignedchart)//俩个延时函数
{
while(--t);
}
voidDelayMs(unsignedchart)
{
while(t--)//俩个延时函数
{
DelayUs2x(245);
DelayUs2x(245);
}
}
/*------------------------------------------------
18b20初始化//整体向18B20发送复位脉冲
------------------------------------------------*/
bitInit_DS18B20(void)
{
bitdat=0;
DQ=1;//DQ复位
DelayUs2x(5);//延时
DQ=0;//拉低总线
DelayUs2x(250);//不小于480us
DQ=1;//释放总线//单片机接收18B20发送的存在脉冲
DelayUs2x(50);//15~60us
dat=DQ;//读18b20响应
DelayUs2x(200);//延时使间隙不小于480us
returndat;
}
/*------------------------------------------------
读一个字节
------------------------------------------------*/
unsignedcharReadOneChar(void)
{
unsignedchari=0;
unsignedchardat=0;
for(i=8;i>0;i--)//一个字节有八位
{
DQ=0;//拉低
dat>>=1;//右移一位
DQ=1;//释放总线
DelayUs2x
(1);
if(DQ)//判断第一位有没有读完
dat|=0x80;
DelayUs2x(25);//读间隙不小于60us
}
return(dat);
}
/*------------------------------------------------
写一个字节
------------------------------------------------*/
voidWriteOneChar(unsignedchardat)
{
unsignedchari=0;
for(i=8;i>0;i--)
{
DQ=0;//拉低
DQ=dat&0x01;//写最低位
DelayUs2x(25);//延时
DQ=1;//释放
dat>>=1;
}
}
/*------------------------------------------------
读取温度
------------------------------------------------*/
unsignedintReadTemperature(void)
{
unsignedchara=0;
unsignedintb=0;
unsignedintt=0;
Init_DS18B20();//初始化
WriteOneChar(0xCC);//ROM忽略//写命令,初始化
WriteOneChar(0x44);//温度转换
Init_DS18B20();
WriteOneChar(0xCC);//ROM忽略//读命令
WriteOneChar(0xBE);//读暂存器
a=ReadOneChar();//第一个字节
b=ReadOneChar();//第二个字节
b<<=8;//使B变为高八位
t=a+b;
return(t);
}
//LCD写命令
voidLCD_Write_Com(unsignedcharcom)
{
//while(LCD_Check_Busy());
DelayMs(5);
RS=0;//命令寄存器
RW=0;//写
EN=1;//使能端1有效
DataPort=com;//命令复制给P0口
_nop_();
EN=0;//使能端无效
}
//LCD写数据
voidLCD_Write_Data(unsignedcharData)
{
DelayMs(5);
RS=1;//数据寄存器
RW=0;
EN=1;
DataPort=Data;//数据复制给P0口
_nop_();
EN=0;
}
//LCD初始化
voidLCD_Init(void)
{
LCD_Write_Com(0x38);//16个引脚,八个数据端口,俩行,一行16个字符
DelayMs(5);
LCD_Write_Com(0x38);
DelayMs(5);
LCD_Write_Com(0x38);
DelayMs(5);
LCD_Write_Com(0x38);
LCD_Write_Com(0x08);/*关显示*/
LCD_Write_Com(0x01);/*清屏*/
LCD_Write_Com(0x06);//字符不动,光标自动右移一位
DelayMs(5);
LCD_Write_Com(0x0C);//开显示,无光标,字符不闪烁
}
voidLCD_Clear(void)
{
LCD_Write_Com(0x01);
DelayMs(5);
}
//LCD写字符串, y表示第几行,x表示第几列
voidLCD_Write_String(unsignedcharx,unsignedchary,unsignedchar*s)
{
if(y==0)
{
LCD_Write_Com(0x80+x);//第一行第x列
}
else
{
LCD_Write_Com(0xC0+x);//第二行第x列
}
while(*s)//写字符串
{
LCD_Write_Data(*s);//字符串输入
s++;
}
}
//LCD写字符 y表示第几行,x表示第几列
voidLCD_Write_Char(unsignedcharx,unsignedchary,unsignedcharData)
{
if(y==0)
{
LCD_Write_Com(0x80+x);//最高位,第一行
}
else
{
LCD_Write_Com(0xC0+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 本科 毕业设计 论文 基于 单片机 温度 检测 报警器 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)