0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于单片机DS18B20温度报警系统 无线蓝牙显示

bbxyliyang 来源:bbxyliyang 作者:bbxyliyang 2023-07-21 18:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


一、系统方案
随着科学技术的不断发展带动着电子行业的地位越来越重,现在电子产品几乎在社会的各个领域都可以见到。这些技术的发展有效的带动着社会生产力的发展和信息化的提高,同时电子产品也越来越智能。
本设计采用AT89C51单片机为主控芯片,采用数字型防水温度传感器DS18B20制作温度检测报警器,通过四位数码管显示温度值,系统设立几个按键,可以通过按键进行设置温度的上、下限值,当所采集温度超过设定值时,系统会控制蜂鸣器和对应LED发出声光报警。这个设计简单、成本低、具有实用性。

wKgaomS6V8GAFRAIAAAbkScxwko851.png


二、硬件设计
原理图如下:

wKgZomS6V8iAYsxdAABISBUIH3Y873.png

三、单片机软件设计
1、首先是串口初始化:
void Uart_init()
{

TMOD=0x20;//定时器0工作方式1

EA=1;//开总中断


TH1=0xfd;
TL1=0xfd;
TR1=1;
ET1=0;
SM0=0;
SM1=1;
REN=1;
EA=1;
ES=1;
}

2、中断服务程序
void Usart() interrupt 4
{
receiveData=SBUF;//出去接收到的数据
RI = 0;//清除接收中断标志位
ES=0;
SBUF=receiveData;//将接收到的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
ES=1;
}
3、按键检测程序
/*****外部中断0服务程序*****/
void int0(void) interrupt 0
{
EX0=0; //关外部中断0
if(DEC==0&&set_st==1)
{
BEEP=0;
Delay(2000);
BEEP=1;
do
{
Disp_alarm(shangxian);
}
while(DEC==0);
if(H_ZF==0&&L_ZF==0)
{
shangxian--;
if(shangxian<=xiaxian+1)
shangxian=xiaxian+1;
}
else if(H_ZF==0&&L_ZF==1)
{
shangxian--;
if(shangxian<0&&xiaxian==1)
{
shangxian=0;
H_ZF=0;
}
else if(shangxian<0&&xiaxian>1)
{
shangxian=1;
H_ZF=1;
}
}
else if(H_ZF==1)
{
shangxian++;
if(shangxian>=xiaxian-1)
shangxian=xiaxian-1;
}
}
else if(DEC==0&&set_st==2)
{
BEEP=0;
Delay(2000);
BEEP=1;
do
{
Disp_alarm(xiaxian);
}
while(DEC==0);
if(L_ZF==0)
{
xiaxian--;
if(xiaxian<0)
{
xiaxian=1;
L_ZF=1;
}
}
else if(L_ZF==1)
{
xiaxian++;
if(xiaxian>=55)
{
xiaxian=55;
}
}
}
}
/*****外部中断1服务程序*****/
void int1(void) interrupt 2
{
EX1=0; //关外部中断1
if(ADD==0&&set_st==1)
{
BEEP=0;
Delay(2000);
BEEP=1;
do
{
Disp_alarm(shangxian);
}
while(ADD==0);
if(H_ZF==0)
{
shangxian++;
if(shangxian>=125)shangxian=125;
}
else if(H_ZF==1)
{
shangxian--;
if(shangxian<=0)
{
shangxian=0;
H_ZF=0;
}
}
}
else if(ADD==0&&set_st==2)
{
BEEP=0;
Delay(2000);
BEEP=1;
do
{
Disp_alarm(xiaxian);
}
while(ADD==0);
if(L_ZF==0)
{
xiaxian++;
if(xiaxian>=shangxian-1)
xiaxian=shangxian-1;
}
else if(H_ZF==0&&L_ZF==1)
{
xiaxian--;
if(xiaxian<=0)
{
if(shangxian==0)
{
xiaxian=1;
L_ZF=1;
}
else
{
xiaxian=0;
L_ZF=0;
}
}
}
else if(H_ZF==1&&L_ZF==1)
{
xiaxian--;
if(xiaxian<=shangxian+1)
xiaxian=shangxian+1;
}
}
}
4、核心算法程序
/*****读取温度*****/
unsigned int ReadTemperature(void)
{
unsigned char a=0;
unsigned char b=0;
unsigned int t=0;
float tt=0;
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0x44); //启动温度转换
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取温度寄存器
a=ReadOneChar(); //读低8位
b=ReadOneChar(); //读高8位
t=b;
t<<=8;
t=t|a;
if(t&0xf800)
{
t=~t+1;
fuhao=1;
}
else
fuhao=0;
tt=t*0.0625;
t= tt*10+0.5; //放大10倍输出并四舍五入
return(t);
}
四、proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

wKgaomS6V9KAfQCgAAEzy1a0TDw562.png

.
审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45340

    浏览量

    663431
  • 蓝牙
    +关注

    关注

    119

    文章

    6221

    浏览量

    177520
  • 报警系统
    +关注

    关注

    5

    文章

    656

    浏览量

    76876
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    要做一个DS18B20的读取程序,单总线需要配置为输入或者输出,怎么配置好?

    目前要做一个DS18B20的读取程序,单总线需要配置为输入或者输出。怎么配置好
    发表于 11-18 06:30

    使用18b20软件包报错怎么解决?

    In file included from ../packages/ds18b20-latest/src/dallas_ds18b20_sensor_v1.c:12:0: C
    发表于 10-14 06:49

    STM32项目分享:矿井环境监测系统

    01—项目简介1.功能详解STM32矿井环境监测系统功能如下:STM32F103C8T6单片机作为主控制器DS18B20测量环境温度
    的头像 发表于 08-16 10:03 702次阅读
    STM32项目分享:矿井环境监测<b class='flag-5'>系统</b>

    怎么测单片机系统频率

    单片机系统频率是指单片机工作时的时钟频率,它直接影响单片机的运行速度和处理能力,准确测量系统频率对单片机
    的头像 发表于 07-25 11:39 473次阅读

    给予单片机温度控制系统设计

    、执行机构、显示模块和电源模块组成。单片机系统的核心,负责处理温度信息并发出控制指令;温度传感器用于实时采集环境或物体的
    的头像 发表于 07-16 10:57 450次阅读

    单片机实例项目:DS18B20温度传感器

    单片机实例项目:DS18B20温度传感器,推荐下载!
    发表于 06-03 20:59

    基于51单片机的多功能万年历设计

    DS1302DS18B20DHT11PCF8574AT24C02LCD1602MAX7221级联等模块,代码功能实现部分:通过按键实现界面切换,按键选择和修改时间,开机显示当前时间(北京时间),闹钟时间存储具有记忆性,蜂鸣器闹钟报警
    发表于 06-03 17:17 1次下载

    可以满足不同的低功耗应用的PY32F002B单片机

    链接[/url] PY32F002B单片机特性: 内核 32 位ARM Cortex –M0+ 存储器 24Kbytes flash 存储器 3Kbytes SRAM 系统 支持HSI,LSI
    发表于 05-29 16:57

    最佳实践指南:Air780EPM的LuatOS二次开发——OneWire协议调试的注意事项

    在物联网设备开发中,精准且稳定的数据传输是构建智能系统的核心。 一、LuatOS 及 OneWire 说明   LuatOS 支持 OneWire 通信协议,本文以 DS18B20 温度传感器
    的头像 发表于 03-17 16:57 578次阅读
    最佳实践指南:Air780EPM的LuatOS二次开发——OneWire协议调试的注意事项

    基于FPGA的DS18B20数字温度传感器测温实例

    本文将使用三段式状态(Moore型)的写法来对DS18B20进行测温操作,以便了解DS18B20和熟悉三段式状态的写法。
    的头像 发表于 03-17 11:06 2084次阅读
    基于FPGA的<b class='flag-5'>DS18B20</b>数字<b class='flag-5'>温度</b>传感器测温实例

    DS18B20实时温度传感器中文资料

    DS18B20 是一种单总线数字温度传感器,它被广泛应用于各种领域,例如气象监测、室内温度控制、工业自动化等。DS18B20 采用了单总线接口(One-Wire Interface),
    发表于 02-28 17:02 5次下载

    基于FPGA的温度传感器(ds18b20)驱动设计

    本篇主要讨论基于FPGA的温度传感器(ds18b20)驱动设计---第一版 设计实现:利用FPGA驱动DS18b20,读取到温度数值显示到数
    的头像 发表于 01-16 14:08 2044次阅读
    基于FPGA的<b class='flag-5'>温度</b>传感器(<b class='flag-5'>ds18b20</b>)驱动设计

    【正点原子STM32H7R3开发套件试用体验】DS18B20、DHT11温湿度采集

    错误。 检测到 DS18B20 后,开始读取温度显示在 LCD,每隔 100ms 读取并显示,串口发送温度值。 LED0 闪烁,指示程序运
    发表于 01-01 11:16

    51单片机温度报警

    电子发烧友网站提供《51单片机温度报警器.zip》资料免费下载
    发表于 12-30 14:16 4次下载

    《DNESP32S3使用指南-IDF版_V1.6》第二十九章 DS18B20实验

    封装形式,从而使系统设置灵活、方便,设定分辨率以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。其内部结构如下图所示。 图29.1.1.1 DS18B20内部结构图ROM中的
    发表于 12-25 09:43