基于AT89C51单片机的温度控制系统报警器 您所在的位置:网站首页 温度报警器怎么调试图解 基于AT89C51单片机的温度控制系统报警器

基于AT89C51单片机的温度控制系统报警器

2024-06-17 07:39| 来源: 网络整理| 查看: 265

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87771724?spm=1001.2014.3001.5503 在这里插入图片描述 源码获取 单片机读取温度传感器当前的温度值并在LCD液晶显示屏上的第一行显示当前的温度值,单片机读取按键状态并通过人为手动按键部分来设置最低温度到最高温度的温度范围后,由单片机内部进行转换并在LCD上显示出人为设定的正常时的温度范围。 基本要求: 1、认真完成系统需求分析,明确数据要求和处理要求; 2、设计出系统的概念模型,画出系统流程图; 3、设计的硬件电路图与程序流程图; 4、源程序代码; 5、系统运行结果符合课程设计要求; 主要参考资料: [1]李广弟等编著,《单片机基础》,北京航空航天大学出版社,2001. [2]周爱武,汪海威,肖云.数据库课程设计[M].北京:机械工业出版社,2016 [3]李光才,楼然笛《单片机课程设计实例指导》北京航空航天大学出版社,2017.

完 成 期 限 指 导 教师签名 课程负责人签名

摘要

随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中温度传感器就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。 本设计所介绍的温度传感器与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,该设计控制器使用单片机STC89S52,测温传感器使用DS18B20,用LCD实现温度显示,能准确达到以上要求。 随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的温度传感器。

关 键 词: 单片机,数字控制,温度传感器

目录 1 概述 1 1.1 课程设计目的 1 1.2 功能说明 1 2硬件电路 2 2.1 单片机概述 2 2.2 MCS-51 系列单片机介绍 2 2.5 复位电路 5 3 系统设计 6 3.1程序流程图 6 3.2部分硬件及管脚的功能 6 3.3 完整程序代码 7 4 仿真现象记录 17 总结 19 参考文献 20

1 概述 1.1 课程设计目的 通过基于MCS-51系列单片机AT89C51和DS18B20温度传感器检测温度,熟悉芯片的使用,温度传感器的功能,数码显示管的使用,汇编语言的设计:并且把我们这两年所学的数字和模拟电子技术、检测技术、单片机应用等知识通过理论联系实际,从题目分析、电路设计调试、程序编制调试到传感器的选定等这一完整的实验过程,培养了学生正确的设计思想,使学生充分发挥主观能动性,去独立解决实际问题,以达到提升学生的综合能力、动手能力、文献资料查阅能力的作用,为毕业设计和以后工作打下一个良好的基础。 1.2 功能说明 (1)单片机读取温度传感器当前的温度值并在LCD液晶显示屏上的第一行显示当前的温度值,如Temp:27.5℃。 (2)单片机读取按键状态并通过人为手动按键部分来设置最低温度到最高温度的温度范围后,由单片机内部进行转换并在LCD上显示出人为设定的正常时的温度范围。 (3)单片机把温度传感器当前值与人为设定的正常温度范围进行比较。若当前温度值低于人为设定的温度范围时,报警器部分的蜂鸣器会响以及报警指示灯会亮红色,同时升温电路的继电器闭合使得加热管开启工作达到加温功能,最终使得低温状态慢慢达到人为设定的正常温度范围内。若当前温度值高于人为设定的温度范围时,报警器部分的蜂鸣器会响以及报警指示灯会亮红色,同时降温电路的继电器闭合使得降温风扇开启工作达到降温功能,最终使得高温状态慢慢达到人为设定的正常温度范围内。若当前温度值等于人为设定的温度范围时,报警器部分的蜂鸣器不会响以及报警指示灯不会亮红色,同时升温电路和降温电路的继电器都不闭合,加热管和降温风扇都不工作,此时,已经达到人为设定的正常温度范围内的恒温状态。 (4)按下一次KEY1是在更改人为设置温度范围内的最低温度值,在LCD液晶显示屏的第二行的最低温度值前面显示一个“S”设置符号时,并通过多次按下KEY2或者KEY3来达到最低温度值增减的功能。按下两次KEY1是在更改人为设置温度范围内的最高温度值,在LCD液晶显示屏的第二行的最高温度值前面显示一个“S”设置符号时,并通过多次按下KEY2或者KEY3来达到最高温度值增减的功能。 (5)按下S1复位开关后,系统取消了原先人为设定的正常温度范围值,变成了代码最初设定的默认正常温度范围值并显示在LCD上。

2硬件电路 2.1 单片机概述 单片机因将其主要组成部分集成在一个芯片上而得名,具体说就是把中央处理器CPU(Central processing unit)。随机存储器RAM(Random access memory)。只读存储器ROM(Read only memory)。 中断系统、定时器/计数器以及I\O(Input/output)接口电路等主要微型机部件集成在一个芯片上。虽然单片机只是一个芯片,但从组成和功能上看,它已具有了计算机系统的属性。为此,称它为单片微型计算机SCMC(Single chip micro computer),简称单片机。 单片机主要应用与控制领域,用以实现各种测试和控制功能,为了强调起控制属性,也可以把单片机称为微控制器MCU(Micro controller unit)。在国际上,“微控制器”的叫法似乎更通用一些,而在我国则比较习惯与“单片机”这一名称。 单片机在应用时,通常是处于控制系统的核心地位并融入其中,即以嵌入的方式进行使用,为了强调其"嵌入"的特点,也常常将单片机称为嵌入式微控制器EMCU(Embedded micro controller unit)。在单片机的电路和结构中,有许多嵌入式应用的特点。 2.2 MCS-51 系列单片机介绍 80C51 芯片介绍 MCS-51的原生产厂商是Intel公司,最早推出80C51芯片的也是Intel公司,并且作为MCS-51的一部分,按原MCS-51芯片的规则命名,例如80C31、80C51、87C51和89C51,这样我们就能很容易地认识80C51的系列芯片。 但是后来愈来愈多的厂商生产80C51的系列芯片,例如PHILIPS,ATMEL,LG,华邦等公司。这些芯片都是以80C51为核心并且与MCS-51芯片兼容,但它们又各具特点。然而由于生产厂家多,芯片的类型也很多,使芯片的命名无法再遵循统一的规律,造成我们辨认上的困难。例如PHILIPS公司生产的80C51系列芯片名称分别为:80CXXX(ROM Less型),83CXXX(Mask ROM型);Siemens公司命名为C500系列,芯片型号以”C5“打头;而华邦公司则命名为W77C51系列和W78C51系列等等。 新一代80C51的兼容芯片,还在芯片中增加了一些外部接口功能单元,例如数/模转换器,可编程计数器阵列,监视定时器,高速I/O口,计数器的俘获/比较逻辑等,有些还在总线结构上也做了重大改进,出现了廉价的非总线型单片机芯片…。所有这些使新一代的兼容芯片已远非原来意义上的80C51了。 目前这些80C51的兼容芯片已开始在我国使用,其中尤以 PHILIPS公司的同名芯片80C51及其派生产品最受欢迎,而ATMEL公司的闪速存储器型单片机芯片AT89C51等更是后来居上,大有取代传统EPROM型芯片之势。 最小系统: 最小系统就是单片机在发挥具体测控功能时所必须的组成部分。如下图所示为最小系统方框图:

微 型 单 片 机

复位电路 输入、输出设备

振荡电路

电源

图2-1 最小系统方框图 定时与中断的概念 : 中断是一项重要的计算机技术,采用中断技术可以使多项任务共享一个资源,所以中断技术实质上就是一种资源共享技术。 向CPU发出中断请求的来源称之为中断源。MCS-51是一个多中断源的单片机,以80C51为例,有三类共五个中断源,分别是外部中断两个,定时中断两个和串行中断一个。 1.外中断。 外中断是由外部信号引起的,共有两个中断源,即外部中断“0”和外部中断“1”。它们的中断请求信号分别由引脚INT0(P3.2)和INT1(P3.3)引入。 外部中断请求有两种信号方式,即电平方式和脉冲方式,可通过有关控制位进行定义。 2. 定时中断 定时中断是为满足定时或计数的需要而设置的。 3. 串行中断 串行中断是为串行数据传送的需要而设置的。 4. 中断控制 这里所说的中断控制是指提供给用户使用的中断控制手段,实际上就是一些专用寄存器。在MCS-51单片机中,用于此目的的控制寄存器共有四个,即定时器控制寄存器、中断允许控制寄存器、中断优先控制寄存器以及串行口控制寄存器。 5. 定时器控制寄存器(TCON) 该寄存器用于保存外部中断请求和以及定时器的计数溢出。寄存器地址88H,位地址8FH~88H。 位地址8F 8E 8D 8C 8B 8A 89 88 位符号TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 这个寄存器既有定时器/计数器的控制功能又有中断控制功能,其中与中断有关的控制位共六位:IE0和IE1 、IT0和IT1 以及TF0和TF1 。 6. 中断允许控制寄存器(IE) 寄存器地址A8H,位地址AFH~A8H。 位地址AF AE AD AC AB AA A9 A8 位符号EA / / ES ET1 EX1 ET0 EX0 其中与中断有关的控制位共六位:EA、EX0和EX1 、ET0和ET1 、ES 7. 中断优先级控制寄存器(IP) MCS-51的中断优先级控制只定义了高、低两个优先级。各中断源的优先级由优先寄存器(IP)进行设定。IP寄存器地址B8H,位地址为BFH~B8H。寄存器的内容及位地址表示如下: 位地址 BF BE BD BC BB BA B9 B8 位符号 / / / PS PT1 PX1 PT0 PX0 PX0 外部中断0优先级设定位 PT0 定时中断0优先级设定位 PX1 外部中断1优先级设定位 PT1 定时中断1优先级设定位 PS 串行中断优先级设定位 为0的位优先级为低;为1的位优先级为高。 8. 定时器/计数器的控制寄存器 与定时器/计数器应用有关的控制寄存器有: (1) 定时器控制寄存器(TCON) TCON寄存器既参与中断控制又参与定时控制。其中有关定时的控 制位共有四位:TF0和TF1 、TR0和TR1 。 (2) 工作方式控制寄存器(TMOD) TMOD寄存器是一个专用寄存器,用于设定两个定时器/计数器的工作方式。但TMOD寄存器不能位寻址,只能用字节传送指令设置其内容。 2.3 DS18B20原理与分析 DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源子数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。以下是DS18B20的特点:(1)独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯 (2)在使用中不需要任何外围元件。(3)可用数据线供电,电压范围:+3.0~+5.5V。(4)测温范围:-55-+125℃。固有测温分辨率为0.5℃℃。(5)通过编程可实现9-12位的数字读数方式。(6)用户可自设定非易失性的报警上下限值。(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。 DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1:高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。 2.5 复位电路 复位电路产生复位信号,复位信号送入RST后还要送至片内的施密特触发器,由片内复位电路在每个机器周器的S5P2时刻对触发器输出采样信号,然后由内部复位电路产生复位操作所要的信号。一般的复位电路可分为上电自动复位和按键复位,我们在此选用的是上电复位。: 上电自动复位原理:RST引脚是复位信号的输入端,只要高电平的复位信号持续两个机器周期以上的有效时间,就可以使单片机上电复位。上电自动复位是通过电容充电实现的,上电瞬间,RST端电位与Vcc相同,随充电电流的减少,RST的电位逐渐下降,直到复位信号无效。按键复位在此不在作过多的介绍,其原理和上电复位是相同的。但其采用的是脉冲复位电路和电平复位电路两种。 复位电路如下图所示: 在这里插入图片描述

图2-3 复位电路图

3 系统设计 3.1程序流程图 在这里插入图片描述

图3-1 程序流程图 3.2部分硬件及管脚的功能 (1)PNP三极管作用:基级,低电平导通,高电平截止,相当于开关功能。 (2)继电器作用:当有电流时开关吸合使电路闭合工作,当没有电流时开关弹开,使电路断路不工作。 (3)上拉电阻(排阻)作用:P0口作为I/O口输出的时候时,当输出的低电平为0,输出高电平为高组态(并非5V,相当于悬空状态,也就是说P0口不能真正的输出高电平)。P0口没有办法给所接的负载提供电流,因此必须连接上拉电阻(上拉电阻一端连接到VCC),由电源通过这个上拉电阻给负载提供电流。由于P0口内部没有上拉电阻,当为开漏的,不管它的驱动能力多大,相当于它是没有电源的,因此需要外部的电路提供电源,绝大多数情况下P0口是必需加上拉电阻的。 (4)LCD1602部分管脚作用: VEE管脚作用:是液晶显示的偏压信号,VEE通过滑动变阻器接地,用来调整对比度,接正电源时对比度最弱,接地电源时对比度最高。RS是寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器;RW为读写信号线,高电平1时进行读操作,低电平0时进行写操作;E(EN)端是使能(enable)端,高电平1时读取信息,负跳变时执行指令。 (5)与温度传感器串联的10KΩ的电阻作用:由于单片机直接读出的是AD值,用10KΩ的电阻与温度传感器串联分压,单片机读取中间的分压AD。DS18B20是数字式单总线式温度传感器。 (6)与LED灯串联的电阻作用:分压(限流)作用,其阻值不宜过大过小,一般200到300多欧姆,阻值过大使得电路的电流太小达不到LED灯的开启电压值然后不亮或者亮不明显,阻值过小使得电路的电流太LED灯分到的电压太大导致烧坏。 (7)电源部分:提供给整个电路图的所有5V电源。 3.3 完整程序代码

18B20单线温度检测的应用样例程序: #include"delay.h" #include"18b20.h" bit Init_DS18B20(void) //18b20初始化 { bit dat=0; DQ = 1; //DQ复位 DelayUs2x(5); //稍做延时 DQ = 0; //单片机将DQ拉低 DelayUs2x(200); //精确延时 大于 480us 小于960us DelayUs2x(200); DQ = 1; //拉高总线 DelayUs2x(50); //15~60us 后 接收60-240us的存在脉冲 dat=DQ; //如果x=0则初始化成功, x=1则初始化失败 DelayUs2x(25); //稍作延时返回 return dat; } unsigned char ReadOneChar(void) { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) { DQ = 0; // 给脉冲信号 dat>>=1; DQ = 1; // 给脉冲信号 if(DQ) dat|=0x80; DelayUs2x(25); } return(dat); } void WriteOneChar(unsigned char dat) { unsigned char i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; DelayUs2x(25); DQ = 1; dat>>=1; } DelayUs2x(25); } unsigned int ReadTemperature(void) { unsigned char a=0; unsigned int b=0; unsigned int t=0; Init_DS18B20(); WriteOneChar(0xCC); // 跳过读序号列号的操作 WriteOneChar(0x44); // 启动温度转换 DelayMs(10); Init_DS18B20(); WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a=ReadOneChar(); //低位 b=ReadOneChar(); //高位 b while(t--) { //大致延时1mS DelayUs2x(245); DelayUs2x(245); } } #include "1602.h" #include "delay.h" #include #define uchar unsigned char #define uint unsigned int #define _NOP() _nop_() sbit RS = P2^4; //定义端口 sbit RW = P2^5; sbit EN = P2^6; #define DataPort P0 #define DataPIN P0 #define CLR_RS (RS=0) #define SET_RS (RS=1) #define CLR_RW (RW=0) #define SET_RW (RW=1) #define CLR_EN (EN=0) #define SET_EN (EN=1) /* LcdReset(); //LCD1602初始化 DelayMs(10); sprintf(temp,"1111111111111111");//更新显示 DispStr(0,0,(unsigned char *)temp);//打印显示 sprintf(temp,"1111111111111111");//更新显示 DispStr(0,1,(unsigned char *)temp);//打印显示 */ void DispStr(uchar x,uchar y,uchar *ptr) { uchar *temp; uchar i,n = 0; temp = ptr; while(*ptr++ != '\0') n++; //计算字符串有效字符的个数 for (i=0;i break; } } } void LocateXY(uchar x,uchar y) { uchar temp; temp = x&0x0f; y &= 0x01; if(y) temp |= 0x40; //如果在第2行 temp |= 0x80; LcdWriteCommand(temp,1); } void Disp1Char(uchar x,uchar y,uchar data1) { LocateXY( x, y ); LcdWriteData( data1 ); } void LcdReset(void) { // DataDir = 0xFF; //数据端口设为输出状态 LcdWriteCommand(0x38, 0); //规定的复位操作 DelayMs(5); LcdWriteCommand(0x38, 0); DelayMs(5); LcdWriteCommand(0x38, 0); DelayMs(5); LcdWriteCommand(0x38, 1); //显示模式设置 LcdWriteCommand(0x08, 1); //显示关闭 LcdWriteCommand(0x01, 1); //显示清屏 LcdWriteCommand(0x06, 1); //写字符时整体不移动 LcdWriteCommand(0x0c, 1); //显示开,不开游标,不闪烁 } void LcdClear(void) { LcdWriteCommand(0x01,1); DelayMs(5); } void LcdWriteCommand(uchar cmd,uchar chk) { if (chk) WaitForEnable(); // 检测忙信号 CLR_RS; CLR_RW; _NOP(); DataPort = cmd; //将命令字写入数据端口 _NOP(); SET_EN; //产生使能脉冲信号 _NOP(); _NOP(); CLR_EN; } void LcdWriteData( uchar data1 ) { WaitForEnable(); //等待液晶不忙 SET_RS; CLR_RW; SET_EN; _NOP(); DataPort = data1; //将显示数据写入数据端口 _NOP(); //产生使能脉冲信号 _NOP(); _NOP(); CLR_EN; } void WaitForEnable(void) { unsigned int later=0; DataPort=0xff; CLR_RS; SET_RW; _NOP(); SET_EN; _NOP(); _NOP(); // while((DataPIN&Busy)!=0); while(((DataPIN&0x80)!=0)&&(later relay_jiare=0; relay_zhileng=0; buzzer=0; Init_Timer0(); LCD_Init(); //初始化液晶 DelayMs(100); //延时有助于稳定 LCD_Clear(); //清屏 relay_jiare=1; // 原先是1 relay_zhileng=1; // 原先是1 buzzer=1; //原先是1 while (1) //主循环 { CheckKey(); //检测按键 if(ReadTempFlag==1) //读取温度标志 { ReadTempFlag=0; temp1=ReadTemperature(); //读取温度 temperature=(float)temp1*0.0625; //温度值转换 0.0625是转换精度 } if(DisFlag==1)

4 仿真现象记录 (1)24.5℃温度低于25-30℃正常温度范围时:加热管工作且指示灯亮黄色,报警器灯亮红色,蜂鸣器发声。 在这里插入图片描述

图 4-1 低于正常温度图 (2)32℃温度高于25-30℃正常温度范围时:降温风扇工作且指示灯亮黄色,报警器灯亮红色,蜂鸣器发声。

图 4-2 高于正常温度图 (3)人为通过按键设置正常恒温范围内的最高温度值:最高温度值前面显示一个“S”设置符号。 在这里插入图片描述

图 4-2 显示设置的最高温值图 在这里插入图片描述

总结 课程设计给我们带来的不只是一个项目的一系列学习,更重要的是我在这个设计过程中所锻炼的能力和培养的一种精神。在本次课程设计中,比起上学期,更多是靠自己,去查阅资料,去寻找解决办法,还有就是和同学们互相帮助学习。我们这次课题虽然不难,但要去做好它,让它实现正确的功能,也少不了不断的研究和探索,可能废痘忘食,可能绞尽脑汁。不仅是现在的学习,在以后的生活中工作也,以这样一种态度和精神去完成自己的梦想,实现自己的价值。 回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,能够说得是苦多于甜,但是能够学到很多很多的东西,同时不但能够巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提升自己的实际动手水平和独立思考的水平。在设计的过程中遇到问题,能够说得是困难重重,但可喜的是最终都得到了解决。

参考文献 [1]肖骁,戈文祺. 电气传动系统中单片机技术的应用解析[J]. 中国标准化,2017. [2]茅阳. 单片机技术在电气传动控制系统中的应用与研究[J]. 中国高新区,2018. [3]贾飞. 单片机技术课程中项目教学法的应用案例[J]. 张家口职业技术学院学报,2017. [4]罗东华. 互联网+背景下单片机技术课程改革与建设研究[J]. 教育现代化,2017.  [5]李建. 矿区智能勘测设备中单片机技术的应用[J]. 电子制作,2017. [6]闫璞,王贵锋. 基于单片机技术的室内照明光伏优化供电控制系统设计[J]. 中国新技术新产品,2018. [7]宋述林. 物联网电子产品中单片机技术的应用方式研究[J]. 现代工业经济和信息化,2017. [8]邵杰. 单片机技术在阀门电动执行机构中的逐步应用和发展[J]. 科技创新与应用,2018. [9]苏健. 电气传动控制系统中单片机技术的应用探讨[J]. 电子世界,2018.



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有