基于51单片机的温度检测报警系统

目录

具体实现功能

设计背景

硬件设计

软件设计

原理图

程序

仿真实现

全部资料


具体实现功能

系统由STC89C51单片机+液晶1602显示+DS18B20温度传感器+按键模块+报警模块构成。

具体功能:

(1)采用DS18B20温度传感器测温并用LCD1602显示;

(2)按键为设置按键、加键和减键。可设置上下限温度报警值;

(3)当温度超过设定的上或下限时,相应的指示灯亮,蜂鸣器报警;

(4)温度测量范围0到99.9摄氏度,精度为0.1摄氏度。d555eed9258a8c5b880fa4101580e2f0.png

设计背景

随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与了解环境温度。特别地,高温情况下极易造成火灾,例如,在机房中,电脑等设备发热快,若在短时间内机房温度升高,超出了设备正常温度,就会导致系统瘫痪或产生火灾。在这种情况下,温度如果得到及时的检测与报警,就可以在一定程度上减少火灾的发生。

另一个方面,单片机技术已经普及到各个领域,已经成为一种比较成熟的技术。因此本文将利用单片机芯片,设计一种基于单片机的温度检测报警系统。通过仿真实验证明,本文设计的温度检测与报警系统工作时,液晶显示屏实时显示温度值并利用按键设定温度上下限范围,当所测温度超过设定的温度范围时,蜂鸣器发出报警信号。本设计实现的温控系统结构简单,可操作性强,具有一定的实用价值。

硬件设计

按照总体设计方案,本文的硬件由以下模块构成:

(1)单片机最小系统。用于驱动和控制其他模块,以实现整体功能,其以STC89C52单片机为核心芯片,并辅以复位电路和晶振电路。

(2)信号采集电路。负责采集需要监测的数据温度数据。

(4)按键和显示电路。显示电路用于显示相关数据,按键电路用于控制芯片实现相关功能,直接与单片机相连。

(5)报警及指示电路。用于实现温度报警及指示。

软件设计

根据本文设计需求,在硬件电路设计的基础上,需要通过软件编程实现的具体功能:

(1)驱动各个模块工作,实现LCD模块的显示、温度数据的采集及LED灯的点亮;

(2)按键设置功能。实现温度报警值的设置;

(3)温度报警功能实现。实现温度低报警与温度高报警。

原理图

本系统原理图设计采用Altium Designer19,具体如图。c22461d889c28e5b57804c1afefff8c0.png

程序

本设计利用KEIL5软件实现程序设计,具体如图。aac2404382b69023fdcd5cbb865d3702.png

仿真实现

本设计利用protues8.7软件实现仿真设计,具体如图。30b8cb9136d455ccffa1a66634acf35a.png

全部资料

全部资料包括程序(注释)、AD原理图、protues仿真、参考论文、程序讲解、仿真讲解、仿真视频、原理图讲解、资料使用介绍等,全网最全!

7d07e0e26f09779bf3bdf9aa701aab9c.png
696de0ebc8af216eaf44baf3f74e7417.png

资料请点击原文链接获取:基于51单片机的温度检测报警系统

资料获取请关注下方公众号,后台回复关键词“资料”! 

  • 8
    点赞
  • 168
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
以下是一个基于51单片机温度检测报警系统代码,使用了DS18B20数字温度传感器: ```c #include <reg52.h> #include <stdio.h> #include <string.h> #define uchar unsigned char #define uint unsigned int sbit DQ = P3 ^ 7; // DS18B20数据线 void delay_us(uint n) // 微秒延时函数 { while (n--) ; } void delay_ms(uint n) // 毫秒延时函数 { while (n--) delay_us(1000); } void write_DS18B20(uchar dat) // 写入一个字节的数据 { uchar i; for (i = 0; i < 8; i++) { DQ = 0; _nop_(); DQ = dat & 0x01; dat >>= 1; _nop_(); DQ = 1; } } uchar read_DS18B20() // 读取一个字节的数据 { uchar i, dat = 0; for (i = 0; i < 8; i++) { dat >>= 1; DQ = 0; _nop_(); DQ = 1; _nop_(); if (DQ) dat |= 0x80; } return dat; } void init_DS18B20() // 初始化DS18B20 { DQ = 1; delay_us(2); DQ = 0; delay_us(500); DQ = 1; delay_us(60); if (!DQ) { delay_us(500); } } void get_temp(uchar *temp) // 获取温度值 { uchar i; init_DS18B20(); write_DS18B20(0xCC); // 跳过ROM指令,跳过设备地址 write_DS18B20(0x44); // 启动温度转换指令 delay_ms(750); // 延时750ms等待温度转换完成 init_DS18B20(); write_DS18B20(0xCC); write_DS18B20(0xBE); // 读取温度指令 for (i = 0; i < 2; i++) // 读取温度数据 { temp[i] = read_DS18B20(); } } void main() { uchar temp[2]; uchar high_temp = 30; // 高温阈值 while (1) { get_temp(temp); if (temp[1] > high_temp) // 如果温度超过高温阈值,发出报警 { printf("Warning! High temperature: %d.%dC\n", temp[1], temp[0]); } delay_ms(1000); } } ``` 上述代码仅供参考,实际应用中还需要根据具体需求进行修改和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电子工程师成长日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值