题目:基于S52单片机的温度测量与报警装置

1课题背景

温度计量学或称计温学是计量学的一个重要分支,它在国民经济各领域中占有一定的地位。人们的日常生活、工农业生产和科学实验等许多方面都与温度测量有着十分密切的关系。温度作为一个重要的物理量,是工业生产过程中最普遍、最重要的工艺参数之一。随着时代的进步、社会的发展、科学技术的不断更新,温度的测量范围要求不断扩大,同时温度的测量准确性要求不断提高。对温度测量的要求也越来越高,而且测量范围也越来越大,对温度的检测技术的要求也越来越高。因此,温度检测和温度检测技术的研究也是一个重要的研究课题。

针对目前各行业对温度测量和报警的需求大,设计了一种基于S52单片机的温度测量与报警装置,用单片机控制A/D转换电路采集温度,并使用单片机处理采集的温度数据,当采集温度大于预先设置的报警温度时,将控制蜂鸣器报警,本装置能够将设置的报警温度和采集温度实时显示在LCD1602液晶屏上,方便用户观察。本装置具有较高的集成度,增强了抗干扰性能,实验表明,其测量温度范围和精度都满足要求,全部功能稳定正常,具有很好的应用价值。

2课题目标

基于国内外各行业对温度测量和报警的巨大需求,本系统采用AT89S52单片机控制A/D转换电路、按键电路、蜂鸣器和LCD1602等完成对温度的实时采集显示并有条件的报警。温度传感器感应温度变化后,将温度转变成电阻的变化,也就转换成电压信号的变化,单片机控制A/D转换电路进行信号的采集,对采集的信号进行运算处理得到当前的温度值,并实时显示在LCD1602液晶屏上,方便用户观察,同时将当前温度值与预先设置的报警温度值比对判断,如果当前温度值大于预先设定的报警温度值时,单片机控制蜂鸣器发声报警。本系统能够测量的温度范围为-50℃-+150℃。

通过实验,由该系统可实时采集环境温度值并显示,且当环境温度大于预设报警温度时,系统将报警,验证了该系统的可行性及可靠性。测试结果表明,系统稳定性好,精度等级高,操作简单、方便,对温度测量和报警具有重要的实际意义。

3系统设计

3.1 系统硬件设计

本系统硬件部分包括温度传感器、A/D转换电路、时钟电路、复位电路、按键电路、程序下载电路、AT89S52单片机、电源模块、蜂鸣器和LCD1602等几部分。温度传感器用于感应温度变化,并将温度转换成电信号;A/D转换电路将温度传感器转换后的电信号进行采集量化,将模拟信号转换成单片机可以识别的数字信号;时钟电路和复位电路分别用于给单片机提供时钟和复位信号,是单片机工作所必须的;按键电路用于设置报警温度值,在设置时可以在LCD1602上显示当前设置的报警温度;程序下载电路是用于给单片机下载程序的,当开发者将本系统的软件设计好后,通过程序下载电路将程序下载到单片机中,是单片机按照预期情况工作;AT89S52单片机是本系统的核心,用于完成温度数据采集、处理和判断,并对外围电路进行协调控制;蜂鸣器是本系统的报警装置,当采集到的温度大于预先设定的报警温度时,单片机将控制蜂鸣器发声,以达到报警的目的;LCD1602主要用于本系统的显示,包括现在设置的报警温度值和当前采集的温度值等。本系统的硬件总体架构图如下图3-1所示:

图3-1  硬件总体架构图

温度传感器组成的电路如图3-2所示:

图3-2  温度传感器电路

该电路由R5、R7和C9组成,用于感应外界温度变化,其中C9是增加抗干扰能力的,R7是具有负温度系数的热敏电阻,型号为MF51C-3950-103,标称电阻值为10K,材料常数为3950K,热时间常数为小于10s,测量温度范围为-50℃-+150℃,当外界温度改变时,该电阻的阻值也将单调改变,典型的R-T曲线如图3-3所示:

图3-3  NTC热敏电阻R-T曲线

A/D转换电路如图3-4所示:

图3-4  A/D转换电路

A/D转换电路主要是选取了一颗ADC芯片,型号为PCF8591,它是单片集成、单独供电、低功耗、8-bit CMOS数据获取器件,具有4个模拟输入、1个模拟输出和1个串行I²C总线接口。PCF8591的3个地址引脚A0, A1和A2可用于硬件地址编程,允许在同一个I²C总线上接入8个PCF8591器件,而无需额外的硬件。在本系统中模拟输入选择了通道AIN2,即将温度传感器转换后的电压信号输入到该A/D转换的AIN2上,单片机通过I2C总线的SDA和SCL获取温度传感器的电压值,从而换算出电阻值,也即换算出温度值,在硬件设计时将EXT拉地,表示A/D转换使用内部时钟;对于PCF8591电源范围为2.5V-6V,在本系统中使用5V电源给PCF8591供电,并且将其基准电压也设置为5V。PCF8591芯片的内部框图如图3-5所示:

图3-5  PCF8591芯片的内部框图

时钟电路如图3-6所示:

图3-6  时钟电路

时钟电路由C1、C2和Y1组成,该电路主要工作是给AT89S52单片机提供时钟节拍。利用AT89S52单片机内部的振荡器,在引脚XTAL1和XTAL2两端跨接晶体,就构成了稳定的自激振荡器,基于发出的脉冲直接送入内部时钟电路,本系统中外界晶体频率为11.0592MHz,电容C1和C2选择为30PF,其中C1和C2对频率有微调作用,能够在11.0592MHz附近调整晶体的输出频率,同时在实际使用中,为了减少寄生电容,更好地保护振荡器稳定、可靠工作,晶体Y1和电容C、C2应尽可能布局在单片机芯片附近。

复位电路如图3-7所示:

图3-7  复位电路

复位电路在系统设计中是必不可少的,主要作用是在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。在很多实际工程中,出现了“死机”、“程序走飞”等现象,大部分都是单片机的复位电路设计不可靠引起的。在本系统中设计了一种积分型上电复位电路,包括R4、K1和C7。系统上电时,由于电容C7的充电作用(电压不能突变),使RST持续一段时间的低电平,是单片机产生上电复位。当单片机已在运行当中时,按下复位键K1后松开,也能使RST为一段时间的低电平,从而实现开关复位的操作。 根据实际操作的经验,电阻R4选择51K,电容C7选择为0.1uF。

按键电路如图3-8所示:

图3-8  按键电路

按键电路在本系统中设计了三路,用于设置报警温度值等参数,包括R10、K2、R11、K3、R12、K4,在按键没有按下时,单片机将检测到高电平,但按键按下后,单片机将检测到低电平,单片机根据检测IO的电平,而判断出按键是否有按下。在按键设计中主要解决的问题是按键的去抖动,对于机械式按键在按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来,其抖动过程如图3-9所示:

图3-9  按键操作和按键抖动

对于按键抖动时间的长短和开关机械特性有关,一般为5~10ms,在触点抖动期间检测按键的通断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许的。因此对按键的检测必须采取去抖动措施,在硬件上可以在键输出端加双稳态触发器或者单稳态触发器构成去抖动电路,也可以加电容构成滤波去抖动电路,本系统设计过程中为了简单,没有进行硬件按键去抖动处理;在软件上可以采取检测到有按键按下时,执行一个10ms左右的延时程序,再次确认该按键电平是否仍然保持闭合状态电平,若保持闭合状态电平,则确认该按键处于闭合状态,同理在检测按键释放后,也应采取相同的步骤进行确认,从而从软件上消除抖动的影响,在本系统设计中就是采用的软件按键去抖。

程序下载电路如图3-10所示:

图3-10  程序下载电路

程序下载电路主要是给AT89S52单片机下载程序,AT89S52系列单片机下载程序时,计算机端可使用ProgISP等软件来下载。AT89S52系列单片机的ISP下载是通过P1^5、P1^6、P1^7、RST引脚来下载。P1^5是SPI的MOSI信号,P1^6是SPI的MISO信号,P1^7是SPI的SCK信号。

AT89S52单片机如图3-11所示:

图3-11  AT89S52单片机

AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。本系统中选择的主控芯片就是AT89S52单片机,EA管脚使用R3电阻上拉到高电平,使得单片机程序从内部ROM开始执行。

电源模块如图3-12所示:

图3-12  电源模块

电源模块的设计主要选择了三端集成稳压器芯片LM7805,这是一个输出正5V直流电压的稳压电源电路,C3、C4为输入端滤波电容,C5、C6为输出端滤波电容,当输出电流较大时,LM7805应安装足够大的散热器(当然小功率的条件下不用),当稳压管温度过高时,稳压性能将变差,甚至损坏。用LM7805三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。途中R2和LED1组成了电源指示灯,当接有电源时,LED1将点亮以提示后端电路有电源供给,否则LED1将熄灭。图中J1是交流适配器的接口,用于连接9V/1A的交流适配器。D1是一个二极管,型号为1N4007,主要用于保护,防止电源反插。L1是自恢复保险丝,主要是保护作用,当流经该器件的电流大于1A时,该器件的电阻将剧增,以达到保护后端电路的目的。

蜂鸣器如图3-13所示:

图3-13  蜂鸣器电路

蜂鸣器电路主要是用于系统报警,当系统采集到的当前温度大于预先设置的报警温度值后,单片机将控制蜂鸣器电路发出声音报警。该电路主要包括R1、Q1和LS1,其中R1是用于限流的,Q1选择 的是PNP型三极管S8550,在本系统设计中作为开关管使用,LS1是蜂鸣器,在本系统中选择的是5V自激式蜂鸣器。当单片机控制P1.4输出高电平时,Q1关断,蜂鸣器LS1不响,当当配角控制P1.4输出低电平时,Q1导通,蜂鸣器LS1发出声音报警。

LCD1602如图3-14所示:

图3-14  LCD1602电路

LCD1602液晶是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好),LCD1602液晶可以显示两行,每行16个字符液晶模块(显示字符和数字)。市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶,包括本系统设计使用的LCD1602。图中LCDPOW1是使用来调整液晶显示器对比度,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”),本设计通过一个10K的电位器调整对比度。LCDLIGHT1是一个10K的电位器,是用于调节LCD1602的背光亮度的。图中的R6是上拉电阻,用来上拉单片机的P0口,使其能够正常输出高低电平。LCD1602液晶模块内部的控制器共有11条控制指令,如图3-15所示:

图3-15  LCD1602液晶模块内部的控制器控制指令

3.2 系统软件设计

本系统的A/D转换电路控制、按键电路检测、蜂鸣器控制和LCD1602显示控制均由AT89S52单片机控制实现。温度传感器感应温度变化后,将温度转变成电阻的变化,也就转换成电压信号的变化,单片机控制A/D转换电路进行信号的采集,对采集的信号进行运算处理得到当前的温度值,并实时显示在LCD1602液晶屏上,方便用户观察,同时将当前温度值与预先设置的报警温度值比对判断,如果当前温度值大于预先设定的报警温度值时,单片机控制蜂鸣器发声报警。按键电路检测,是单片机周期性的检测P2.0、P2.1和P2.2端口,当检测到对应IO口为高电平则说明按键未按下,当检测到对应IO口为低电平,软件延时去抖处理后确认为低电平,则判断按键按下,三个按键配合工作,完成报警温度的设置,在设置过程中,用户可以再LCD1602的界面上观看设置的报警温度值。这整个过程均由单片机编程完成,充分利用AT89S52单片机的控制与处理优势。对单片机的编程设计起着整个系统的控制中心的作用。

3.2.1 系统主程序设计

上电后首先系统初始化,主要是初始化LCD1602液晶屏,然后单片机开始检测加按键IO的电平,当为低电平时就加报警温度值,否则直接开始检测减按键IO的电平,当为低电平时就减报警温度值,否则开始检测默认值按键IO的电平,当为低电平时将报警温度值设置为默认值,否则开始采集温度传感器的温度,设置报警温度值和单片机采集温度后均实时显示对应参数,系统每采集完一次温度后则判断当前温度值是否大于预先设置的报警温度值,如果大于则控制蜂鸣器报警,否则系统回到加按键检测处开始新一轮的循环。本系统的程序总体流程图如下图3-16所示:

图3-16  软件总体流程图

4 装置实物图

图4-1  装置实物图

上图即是本系统的实物,在图中能够看到完成了温度采集并显示,当本装置采集到的温度大于预先设置的报警温度时,将控制蜂鸣器发声报警。

5 数据结果与处理

首先,为确定本装置是否达到预期测量范围,即温度测量范围-10℃-110℃,通过本装置采集回来的实时温度与标准值温度如表1所示:

表1  温度测量结果

温度编号

标准值/℃

测量值/℃

误差(%)

1

-10

2

0

3

10

4

20

5

30

6

40

7

50

8

60

9

70

10

80

11

90

12

100

13

110

从上表可以看出该装置初步达到了预期测量范围,(总结上表数据结论)

对于本装置对温度测量的稳定性,进行了在同一温度的重复性测量,如表2所示:

表2  温度重复性测量的结果

标准值/℃

测试1

测试2

测试3

测试4

平均误差

重复性

20

25

30

35

40

由上表测量结果可以看出该装置的重复性效果达到要求,(总结上表数据结论)。经修改程序相关参数和硬件优化,最终该装置的误差约束在1%[lj1] 以内。

6 结论

基于S52单片机的温度测量与报警装置,能够完成温度正确采集,并在采集温度大于预先设置的报警温度时,触发蜂鸣器报警。


[lj1]自己定

基于S52单片机的温度测量与报警装置相关推荐

  1. 基于AT89C52单片机的温度检测报警设计

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87708680?spm=1001.20 ...

  2. 【单片机】温度感应报警装置的设计与制作(说明书)

    前   言 这是本人在大学期间的<单片机控制技术实训>课程中,所作的结课作业项目,该项目是制作一个温度感应形式的装置,而这种类似的装置,在生活中很常见,很多公共场合也有相关的装置,并且也有 ...

  3. 基于51单片机液位检测与报警

    该系统以AT89C51作为核心控制部件,外加传感器,一片A/D转换芯片和数码管来完成系统的预期任务,即液位的检测.显示和超限报警.传感器实现液位信号到电压信号的转换,再由8位A/D转换芯片ADC080 ...

  4. 基于51单片机的汽车灯光报警控制系统proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.模拟汽车灯光控制系统,支持双闪,转向灯光控制 2.上锁后,非法进入,灯光双闪,喇叭报警,报警电路采用的LED和蜂鸣器组成的声光报警系统 3.本系统 ...

  5. 【001】基于51单片机的DS18B20温度检测与报警装置的proteus仿真设计

    一.设计资料内容(私信获取) 1. 包含proteus仿真一份: 2. keil源代码一份: 3. 包含基于51单片机的DS18B20温度监测与报警的proteus仿真设计课程报告一份: 4. 包含基 ...

  6. 基于51单片机的MQ-5天然气监测报警系统设计

    基于51单片机的天然气监测报警系统设计 基于51单片机的天然气监测报警系统设计 视频 1 开发环境 2 功能说明介绍 3 仿真图 4 程序 5 原理图 6 视频讲解 7 设计报告 7.1 设计目的 7 ...

  7. 基于51单片机的烟雾火灾报警器proteus仿真设计

    基于51单片机的烟雾火灾报警器proteus仿真设计 1 开发环境 仿真图:proteus8.9以上 程序代码:KEIL4/KEIL5 原理图:AD 设计编号:A0004 代码讲解+仿真讲解+仿真演示 ...

  8. STC15W单片机防丢语音报警GPS北斗定位测距双机LORA无线手持可充电

    实践制作DIY- GC0091-防丢语音报警 一.功能说明: 基于STC15W单片机设计-防丢语音报警 功能介绍: 主机硬件: STC15W4K48S4(或者STM32F103CxT6)系列最小系统板 ...

  9. STM32单片机紫外线强度检测仪器蜂鸣器报警(程序+原理图+PCB)

    本设计: 基于STM32单片机紫外线强度检测仪器蜂鸣器报警(程序+原理图+PCB) 原理图:Altium Designer 程序编译器:keil 5 编程语言:C语言 编号C0023 完整下载链接: ...

最新文章

  1. 配置交换机端口聚合(思科)
  2. 点云分割 PointCloudSegmentation测试笔记
  3. 【Matlab 图像】灰度二值化处理
  4. 老夫疗法少年狂:微软中国CTO黎江:不要给区块链贴标签,也不要非黑即白区分谁是好人谁是坏人
  5. 使用FileSystemWatcher监视指定目录
  6. SSM项目使用GoEasy 获取客户端上下线实时状态变化及在线客户列表
  7. nodejs TCP服务器和客户端通信的socket结构
  8. plsql打开sql窗口快捷键_巧用Navicat for MySQL的快捷键
  9. Swift中文教程(十八) 类型检查
  10. [lct] Luogu P4219 大融合
  11. jQuery原理第一天
  12. css3 animate 和关键帧 @-webkit-keyframes
  13. android list 替换元素_Java学习之List集合
  14. 无锁编程(三) - 忙等待
  15. Swift - 继承UIView实现自定义可视化组件(附记分牌样例)
  16. centos里安装mysql有34_centos7安装mysql5.6.34遇到中的问题
  17. 想知道ios系统还有哪些比较好用的思维导图软件?
  18. java中的递归算法_java递归算法详解
  19. Eclipse环境变量配置!
  20. python 离散点 等高线_飞时达软件离散点高程、等高线高程、特征线高程等检查与处理...

热门文章

  1. 关于阿里云对象存储OSS流量包说明
  2. 基于SDN的访问控制模块实现
  3. Navicat Premium 数据库开发工具
  4. 华夏教师杂志华夏教师杂志社华夏教师编辑部2022年第24期目录
  5. Octane 2022 预览版来了 -设计师们的福音
  6. 函数重载导致的二义性
  7. Unity URP Rendering Path对比
  8. 2566420-12-8,TCO-PEG3-alcohol羟基允许发生额外反应以进一步衍生化合物
  9. 紫装の槍使い(トゥーヴァ) / 紫枪(异时层土法)
  10. 怎样使用1M的内存排序100万个8位数