当前位置: 首页 > news >正文

基于51单片机温度检测电子设计系统DS18B20(Proteus仿真+Keil源码+设计文档+原理图等)附下载链接!

提供对应的Proteus仿真电路图,Keil程序源码(C语言),原理图,模块资料、元件清单、程序流程图等电子资料参考学习。

1)项目完整资料获取链接:下载链接
2)Keil、Proteus各个版本安装包: 下载链接

01设计要求

设计一个基于51单片机温度检测报警系统:
1)采用51单片机搭配DS18B20温度传感器与4位数码管组成硬件系统;
2)测温量程范围-55.0~125.0摄氏度;
3)测温分辨率可达 0.1 摄氏度;
4)当温度低于设定下限或超出设定上限时,系统自动进行声光预警;
5)支持按键手动自定义设置温度上下限阈值。

02系统概述

传感器采用DS18B20,负责采集温度数据后发给单片机。显示设备采用4位共阴数码管,显示检测到的温度值。按键模块,主要是进行报警值的设置。报警模块采用蜂鸣器+LED的模式,超出报警范围则进行声光报警。

03Proteus仿真

04示例代码

/* 数码管的显示值: 0 1 2 3 4 5 6 7 8 9 - */uchar code Array1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};/* 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. */uchar code Array2[]={0xBf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};uchar Buff[4];//显示缓冲区uchar ShowID=1;//当前显示的是哪一个数码管intAlarmLow=200;//默认报警的温度下限值是20度intAlarmHig=350;//默认报警的温度上限值是35度/*********************************************************/// 毫秒级的延时函数,time是要延时的毫秒数/*********************************************************/voidDelayMs(uint time){uint i,j;for(i=0;i<time;i++)for(j=0;j<110;j++);}/*********************************************************/// 延时X*10us函数/*********************************************************/voidDelayX10us(unsignedchart){do{_nop_();//延时1us_nop_();//延时1us_nop_();//延时1us_nop_();//延时1us_nop_();//延时1us_nop_();//延时1us_nop_();//延时1us_nop_();//延时1us}while(--t);//t先自减,然后判断t的值是否大于0}/*********************************************************/// 复位18B20/*********************************************************/bitReset18B20(){bit ack;//定义一个bit型变量DQ=0;//数据引脚拉低DelayX10us(50);//延时500usDQ=1;//数据引脚拉高DelayX10us(6);//延时60usack=DQ;//读取复位值while(!DQ);//判断是否为高电平returnack;//返回复位值}/*********************************************************/// 向18B20写数据或命令/*********************************************************/voidWrite18B20(unsignedchardat){unsignedcharmask;//定义一个mask变量for(mask=0x01;mask!=0;mask<<=1)//循环8次,从低到高依次写入{DQ=0;//初始电平为0_nop_();//延时大约为1us_nop_();//延时大约为1usif((dat&mask)==0)//判断写入的一位是否为0DQ=0;//为0,数据位为0elseDQ=1;//否则,数据位为1DelayX10us(6);//延时60usDQ=1;//拉高数据位,为下次写作准备}}/*********************************************************/// 从18B20读数据或命令/*********************************************************/unsignedcharRead18B20(){unsignedcharmask;//定义一个mask变量unsignedchardat;//定义一个dat变量,用于保存读到的数据for(mask=0x01;mask!=0;mask<<=1)//循环8次,从低到高依次读出{DQ=0;//初始电平为0_nop_();//延时大约为1us_nop_();//延时大约为1usDQ=1;//数据电平拉高_nop_();//延时大约为1us_nop_();//延时大约为1usif(DQ==0)//判读数据引脚是否为0dat&=~mask;//若为0,dat按位与上0xfe,读出0elsedat|=mask;//否则,dat按位或上0x01,读出1DelayX10us(6);//延时60us}returndat;//返回读出数据dat}/*********************************************************/// 获取18B20温度数据/*********************************************************/intGet18B20Temp(){bit ack;//定义bit型变量inttemp;//定义有符号整形变量temp,用于保存温度数据unsignedcharLSB,MSB;//定义两个无符号字符型变量,用于保存从18B20中读出的两个数据ack=Reset18B20();//获取18B20复位位if(ack==0)//判读是否复位{Write18B20(0xcc);//跳过检测ROMWrite18B20(0x44);//启动温度转换指令}ack=Reset18B20();//获取18B20复位位if(ack==0)//判读是否复位{Write18B20(0xcc);//跳过检测ROMWrite18B20(0xbe);//读取温度指令LSB=Read18B20();//先读第8位MSB=Read18B20();//再读高8位temp=((int)MSB<<8)+LSB;//高8位,第8位整合成一个有符号的整型变量,并把值保存在temp中temp=temp*0.0625*10;//合成温度值并放大10倍}returntemp;//返回读到的温度数值}/*********************************************************/// 定时器初始化/*********************************************************/voidTimerInit(){TMOD=0x01;// 使用定时器0,工作方式1TH0=248;// 给定时器0的TH0装初值,定时2msTL0=48;// 给定时器0的TL0装初值ET0=1;// 定时器0中断使能EA=1;// 打开总中断TR0=1;// 启动定时器0}

05原理图

注:

  1. 源码使用Keil4或Keil5打开

  2. 仿真使用的是Proteus8.13及以上版本,版本过低可能会打不开。

06资料获取

1)项目完整资料获取链接:下载链接

2)Keil、Proteus各个版本安装包: 下载链接

http://www.cnnetsun.cn/news/3059665.html

相关文章:

  • Navicat重置工具:3种方法解决Mac版试用到期问题
  • 一文通,第三方接口如何实现批量上货,主流平台[淘宝|京东|1688|抖音)和跨境平台
  • 重构沐光而行数字人后端:双 Go 引擎驱动的新兴数据体系
  • AI Agent开发中外部工具连接的工程化解决方案:Agent-Reach框架解析
  • MySQL 事务锁冲突排查思路
  • GHelper终极教程:华硕笔记本性能控制神器完全指南
  • 每日安全情报报告 · 2026-06-29
  • 轻量化趋势下铝合金锻件在新能源汽车中的 5 大应用场景与技术突破
  • Unidbg逆向分析:从SO文件到加密算法还原实战
  • ChatGPT还是DeepSeek?——一线架构师用72小时压测结果告诉你:当并发超5000 QPS时,哪个模型不会突然“掉帧”或拒答
  • 【ROS2】Rate定频函数:从原理到实战,精准控制机器人循环节拍
  • 颜料添加量对流挂与流平性的影响分析
  • 揭秘OpCore-Simplify:让普通用户15分钟完成专业级黑苹果EFI配置
  • SQL注入攻防全解析:从原理到实战的Web安全必修课
  • Selenium自动化测试:从核心原理到实战框架构建
  • Go语言的sync.Map遍历性能
  • ChatGPT vs DeepSeek:2024年唯一值得收藏的对比矩阵表(覆盖12项核心指标|含本地化部署TCO测算模板下载)
  • Web端自动化测试全解析:从工具选型到框架搭建实战
  • BiliTools:打造个人B站资源库的完整解决方案
  • Codex CLI Windows 从 0 到 1 实战手册:安装、模型切换、提示词库与 Demo(国内模型)
  • 超轻滑漂竿哪个公司好
  • Python Web个人学习记录04
  • WorkshopDL终极指南:如何免费下载1000+游戏的Steam创意工坊模组
  • 简述:青蛙腹(长期久坐最典型)
  • 量子化学计算:从传统方法到量子启发算法
  • 不用配置环境!OpenClaw 2.7.9 Win11 一键安装故障合集
  • Appium与Selenium深度对比:跨平台自动化测试选型与实战指南
  • iTunes登录协议逆向全解析:从抓包到签名算法复现
  • 冥想第一千九百二十四天
  • ZS315D Type-C母座转DP 8K 双向互转方案