嵌入式工程师成长日记

https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484116&idx=1&sn=296e1e88a12f54734a1155325aba7f9d&chksm=cf43078cf8348e9a23a2cbed1d3bb065abef6d130295fafdc891d50371be40972087321b63f5&token=1620569802&lang=zh_CN#rdhttps://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484116&idx=1&sn=296e1e88a12f54734a1155325aba7f9d&chksm=cf43078cf8348e9a23a2cbed1d3bb065abef6d130295fafdc891d50371be40972087321b63f5&token=1620569802&lang=zh_CN#rd

具体功能实现

利用DS18B20实时检测温度并显示在LCD1602显示屏上,同时可以通过K1,K2,K3,K4设置最高温度和最低温度利用AT24C02可以实现掉电不丢失,最后当检测温度大于或小于最高温时,会在LCD1602显示屏上显示OV:H或OV:L。

使用器件:

AT89C52、LCD1602显示屏、4只按键、AT24C02、DS18B20

实际图和运行图 :

 

由测试图中的LCD1602显示屏可以得出:当前室温是24.18℃,最高温限制为21℃,最低温限制为-2℃。

 知识介绍:

AT24C02芯片介绍

AT24C02是一个2K位串行CMOS E2PROM, 内部含有256个8位字节,AT24C02是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息。
存储介质:EEPROM
通讯接口:I2C总线

DS18B20芯片介绍

DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。[1]  DS18B20数字温度传感器接线方便,封装成后可应用于多种场合。

通过单总线协议进行通信(One-Wire)

管脚定义图:

温度寄存器格式:

DS18B20功能命令:

初始化时序:

初始化代码:

unsigned char onewire_init(void)

{

unsigned char i;

unsigned char ackbit;

onewire_dq=1;

onewire_dq=0;

i = 247;while (--i);  //delay 500us

onewire_dq=1;

i = 32;while (--i);   //delay 70us

ackbit = onewire_dq;

i = 247;while (--i);  //delay 500us

return ackbit;

}

读/写时序:

读时序代码:

unsigned char onewire_receivebit(void)

{

unsigned char i;

unsigned char Bit;

onewire_dq=0;

i = 2;while (--i); //delay 9us

onewire_dq=1;

i = 2;while (--i); //delay 9us

Bit = onewire_dq;

i = 22;while (--i); //delay 50us

return Bit;

}

写时序代码:

unsigned char onewire_sendbit(unsigned char Bit)

{

unsigned char i;

onewire_dq=0;

i = 4;while (--i); //delay 14us

onewire_dq  =Bit;

i = 22;while (--i); //delay 50us

onewire_dq=1;

}

全双工,半双工,单工的区别

单工:只支持信号在一个方向上传输(正向或反向),任何时候不能改变信号的传输方向。

半双工:半双工通信允许信号在两个方向上传输,但某一时刻只允许信号在一个信道上单向传输。半双工通信实际上是一种可切换方向的单工通信。

全双工:全双工通信允许数据同时在两个方向上传输,即有两个信道,因此允许同时进行双向传输。

主函数代码(C语言)KEIL5实现:

#include <REGX52.H>#include "LCD1602.h"#include "onewire.h"#include "DS18B20.h"#include "key.h"#include "AT24C02.h"float t,tshow;char tlow,thigh;unsigned char keynum;void Delay5ms() //@11.0592MHz{unsigned char i, j;i = 54;j = 199;do{while (--j);} while (--i);}void main(){LCD_Init();LCD_ShowString(1,1,"T:");LCD_ShowString(2,1,"TH:");LCD_ShowString(2,9,"TL:");thigh = AT24C02_ReadByte(0);tlow = AT24C02_ReadByte(1);while(1){LCD_ShowSignedNum(2,4,thigh,3);LCD_ShowSignedNum(2,12,tlow,3);keynum = key();ds18b20_convert();t = ds18b20_readt();if(t<0){LCD_ShowChar(1,3,'-');tshow= -t;}else{LCD_ShowChar(1,3,'+');tshow = t;}LCD_ShowNum(1,4,tshow,3);LCD_ShowChar(1,7,'.');LCD_ShowNum(1,8,(unsigned long)(tshow*100)%100,2);if(keynum){if(keynum==1){thigh++;if(thigh>125){thigh=125;}}if(keynum==2){thigh--;if(thigh<=tlow){thigh++;}}if(keynum==3){tlow++;if(tlow>=thigh){tlow--;}}if(keynum==4){tlow-- ;if(tlow<-55){tlow = -55;}}if(tshow>thigh){LCD_ShowString(1,13,"OV:H");}else if(tshow<tlow){LCD_ShowString(1,13,"OV:L");}else{LCD_ShowString(1,13,"    ");}AT24C02_WriteByte(0,thigh);Delay5ms();AT24C02_WriteByte(1,tlow);Delay5ms();}}}

问题解答 :

Q:代码超出版本限制如何解决?如图:

A:用注册机对KEIL5软件进行重新破解,破解步骤链接:

Q:延时函数如何快速自动生成?

A:在STC-ISP中根据红色方框进行设计

Q:为什么使用AT24C02代码后还是会出现掉电丢失?

A:因为写字节AT24C02_WriteByte();还需要延时时间,最低时间要达到10ms,而单片机执行一条指令的时间为1us。

嵌入式工程师成长日记

https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484116&idx=1&sn=296e1e88a12f54734a1155325aba7f9d&chksm=cf43078cf8348e9a23a2cbed1d3bb065abef6d130295fafdc891d50371be40972087321b63f5&token=1620569802&lang=zh_CN#rdhttps://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484116&idx=1&sn=296e1e88a12f54734a1155325aba7f9d&chksm=cf43078cf8348e9a23a2cbed1d3bb065abef6d130295fafdc891d50371be40972087321b63f5&token=1620569802&lang=zh_CN#rd

设计分享 | 基于51单片机实现温度监测报警系统相关推荐

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

    目录 具体实现功能 设计背景 硬件设计 软件设计 原理图 程序 仿真实现 全部资料 具体实现功能 系统由STC89C51单片机+液晶1602显示+DS18B20温度传感器+按键模块+报警模块构成. 具 ...

  2. 基于51单片机的温度监测控制系统仿真程序原理图设计

    整体方案设计 3.1.1 系统概述 整个系统以STC89C52单片机为核心器件,配合电阻电容晶振等器件,构成单片机的最小系统.其它个模块围绕着单片机最小系统展开.其中包括,传感器采用DS18B20,负 ...

  3. 设计分享|基于51单片机的数字时钟(汇编)

    具体实现功能 具体功能: 上电后滚动显示年.月.日.时.分,最后进入秒计时,通过四个按键可对时间进行设置操作. 设计介绍 单片机介绍 51单片是一种低功耗.高性能CMOS8位微控制器,具有 8K 在系 ...

  4. 设计分享|基于51单片机的万年历(汇编)

    具体实现功能 具体功能: 实现年.月.日.时.分.秒.农历的显示,例如:如图显示的是2001年1月1日,农历12月7日,00点01分23秒. 设计介绍 单片机介绍 51单片是一种低功耗.高性能CMOS ...

  5. 设计分享 | 基于51单片机实现红外控制系统控制电机调速

    vx[嵌入式工程师成长日记] https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484124&idx=1&sn ...

  6. 综合小项目1--基于51单片机的温度检测报警系统

    目录 一. 系统简介 二. 系统设计 三. 实验设备 四. 实验过程 五. 系统测试 六. 总结 一. 系统简介   该系统是基于51单片机的温度监测报警系统.由主控模块.检测模块.显示模块以及报警模 ...

  7. 基于51单片机多路温度检测proteus仿真 ds18b20

    本设计是基于51单片机多路温度检测proteus仿真_ds18b20(仿真+程序+原理图) 仿真图proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:C0042 ...

  8. matlab ds18b20 单片机,基于51单片机ds18b20温度检测————设计报告.doc

    基于51单片机ds18b20温度检测----设计报告 课程名称: 微机原理课程设计 题 目: 温度检测课程设计 摘要 随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为 ...

  9. 水质检测c语言程序,基于51单片机的水质监测系统的设计.doc

    基于51单片机的水质监测系统的设计 基于AT89C51单片机的水质监测系统的设计 摘要:现在水源污染已经成了社会密切关注的话题,所以对水质进行监测成了保护水资源的一项重要措施,基于此本文设计了一款能够 ...

最新文章

  1. 负载均衡续:万亿流量场景下的负载均衡实践
  2. ec20 复位命令_《EC20 — AT指令》
  3. 环境变量path误删解决办法
  4. matlab 信号去直流,基于FIR滤波的ADC采样信号中直流信号的消除方法与流程
  5. boost::hana::is_convertible用法的测试程序
  6. java keysetview,Set——你真的了解吗?
  7. sessionStorage、localStorage存储api
  8. CentOS 6 系统启动流程
  9. Linux(一)-- Linux环境搭建
  10. Android Handler机制分析
  11. element 使用阿里图标变形了_2TB不限速的阿里网盘App来了 终于不再忍受众生平等盘...
  12. 游戏开发之使用类封装动态数组(vector)(C++基础)
  13. Java例15.13——使用MVC结构计算三角形面积
  14. python 爬取阳光电影资源
  15. 《蜘蛛侠1,2,3》
  16. 计算机一打开就卡在更新失败,Win10更新系统卡住不动怎么办 Win10系统更新卡住不动解决方法...
  17. C语言--指针之空指针(void *)
  18. [EULAR文摘] 超声腱鞘炎对RA早期诊断的价值
  19. python实现自动发送邮件,同时给多人发送,是工作变的简单(附源码)
  20. 【学习资料】数学资源

热门文章

  1. Android高仿网易云音乐播放界面
  2. RocksDB基本架构与原理介绍
  3. oracle例外使用
  4. 高新技术八大领域详细分类
  5. 只需+1s,GitHub代码一键转成VS Code
  6. 3DMax学习笔记【还在更新】
  7. mcafee自定义规则在系统中表示
  8. 关于PS新建(PS如何新建)
  9. ChinaSoft 论坛巡礼 | 群智化软件测试技术和方法
  10. docker与宿主机共享内存通信