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

北京平台网站建设网站数据库开发

北京平台网站建设,网站数据库开发,佛山做网站公司,网站建设全网推广小程序DS18B20温度传感器 13.1DS18B20温度传感器基础知识1.DS18B20介绍2.引脚及应用电路3.内部结构框图4.存储器框图5.单总线介绍6.单总线电路规范7.单总线时序结构8.DS18B20操作流程9.DS18B20数据帧 13.2DS18B20温度读取和温度报警器代码1.DS18B20温度读取(1)…

DS18B20温度传感器

  • 13.1DS18B20温度传感器基础知识
    • 1.DS18B20介绍
    • 2.引脚及应用电路
    • 3.内部结构框图
    • 4.存储器框图
    • 5.单总线介绍
    • 6.单总线电路规范
    • 7.单总线时序结构
    • 8.DS18B20操作流程
    • 9.DS18B20数据帧
  • 13.2DS18B20温度读取和温度报警器代码
    • 1.DS18B20温度读取
      • (1)工程目录
      • (2)main.c函数
      • (3)DS18B20.c函数
      • (4)OneWire.c函数
    • 2.DS18B20温度报警器
      • (1)工程目录
      • (2)main.c函数

13.1DS18B20温度传感器基础知识

1.DS18B20介绍

DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点
测温范围:-55°℃到+125°℃
通信接口:1-Wire(单总线)·其它特征:可形成总线结构、内置温度报警功能、可寄生供电
在这里插入图片描述

2.引脚及应用电路

在这里插入图片描述

3.内部结构框图

在这里插入图片描述
64-BITROM:作为器件地址,用于总线通信的寻址
SCRATCHPAD(暂存器):用于总线的数据交互
EEPROM:用于保存温度触发阈值和配置参数

4.存储器框图

在这里插入图片描述

5.单总线介绍

单总线(1-WireBUS)是由Dallas公司开发的一种通用数据总线
一根通信线**:DQ**
异步、半双工
单总线只需要一根通信线即可实现数据的双向传输,当采用寄生供电时,还可以省去设备的VDD线路,此时,供电加通信只需要DQ和GND两根线

6.单总线电路规范

设备的DO均要配置成开漏输出模式
DO添加一个上拉电阻,阻值一般为4.7K左右
若此总线的从机采取寄生供电,则主机还应配一个强上拉输出电路
在这里插入图片描述

7.单总线时序结构

初始化:主机将总线拉低至少480us.然后释放总线,等待15-60us后,存在的从机会拉低总线60~240us以响应主机,之后从机将释放总线
在这里插入图片描述发送一位:主机将总线拉低60120us.然后释放总线,表示发送0;主机将总线拉低115us.然后释放总线,表示发送1。从机将在总线拉低30us后(典型值)读取电平,整个时间片应大于60us
在这里插入图片描述
发送一位:主机将总线拉低60120us.然后释放总线,表示发送0;主机将总线拉低115us.然后释放总线,表示发送1。从机将在总线拉低30us后(典型值)读取电平,整个时间片应大于60us
在这里插入图片描述
在这里插入图片描述

8.DS18B20操作流程

初始化:从机复位,主机判断从机是否响应
ROM操作:ROM指令+本指令需要的读写操作
功能操作:功能指令+本指令需要的读写操作

在这里插入图片描述

9.DS18B20数据帧

在这里插入图片描述

13.2DS18B20温度读取和温度报警器代码

1.DS18B20温度读取

(1)工程目录

在这里插入图片描述

(2)main.c函数

#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "DS18B20.h"float T;void main()
{LCD_Init();LCD_ShowString(1,1,"Temperature:");while(1){DS18B20_ConvertT();T=DS18B20_ReadT();if(T<0){LCD_ShowChar(2,1,'-');T=-T;}else{LCD_ShowChar(2,1,'+');}LCD_ShowNum(2,2,T,3);LCD_ShowChar(2,5,'.');LCD_ShowNum(2,6,(unsigned long)(T*10000)%10000,4);}
}

(3)DS18B20.c函数

#include <REGX52.H>
#include "OneWire.h"#define DS18B20_SKIP_ROM  0xCC
#define DS18B20_CONVERT_T 0x44
#define DS18B20_READ_SCRATCHPAD 0xBEvoid DS18B20_ConvertT(void)
{OneWire_Init();OneWire_SendByte(DS18B20_SKIP_ROM);OneWire_SendByte(DS18B20_CONVERT_T);
}float DS18B20_ReadT(void)
{unsigned char TLSB,TMSB;int Temp;float T;OneWire_Init();OneWire_SendByte(DS18B20_SKIP_ROM);OneWire_SendByte(DS18B20_READ_SCRATCHPAD);TLSB=OneWire_ReceiveByte();TMSB=OneWire_ReceiveByte();Temp=(TMSB<<8)|TLSB;T=Temp/16.0;return T;
}

(4)OneWire.c函数

#include <REGX52.H>
sbit OneWire_DQ=P3^7;unsigned char OneWire_Init(void)
{unsigned char  i;unsigned char AckBit;OneWire_DQ=1;OneWire_DQ=0;i = 227;while (--i);//Delay 500usOneWire_DQ=1;i = 29;while (--i);//Delay 70usAckBit=OneWire_DQ;i = 227;while (--i);//Delay 500usreturn AckBit;
}void OneWire_SendBit(unsigned char Bit)
{unsigned char i;OneWire_DQ=0;i = 3;while (--i);//Delay 10usOneWire_DQ=Bit;i = 22;while (--i);//Delay 50usOneWire_DQ=1;
}unsigned char OneWire_ReceiveBit(void)
{unsigned char i;unsigned char Bit;OneWire_DQ=0;i = 1;while (--i);//Delay 5usOneWire_DQ=1;i = 1;while (--i);//Delay 5us	Bit=OneWire_DQ;i = 22;while (--i);//Delay 50us	return Bit;
}void OneWire_SendByte(unsigned char Byte)
{unsigned char i;for(i=0;i<8;i++){OneWire_SendBit(Byte&(0x01<<i));}
}unsigned char OneWire_ReceiveByte(void)
{unsigned char i;unsigned char Byte=0x00;for(i=0;i<8;i++){if(OneWire_ReceiveBit()){Byte|=(0x01<<i);}}return Byte;
}

2.DS18B20温度报警器

(1)工程目录

在这里插入图片描述

(2)main.c函数

#include <REGX52.H>
#include "DS18B20.h"
#include "AT24C02.h"
#include "LCD1602.h"
#include "Key.h"
#include "Delay.h"float T,TShow;
char TLow,THigh;
unsigned char KeyNum;
void main()
{DS18B20_ConvertT();Delay(1000);THigh=AT24C02_ReadByte(0);TLow=AT24C02_ReadByte(1);if(THigh>125||TLow<-55||THigh<=TLow){THigh=20;TLow=15;}LCD_Init();LCD_ShowString(1,1,"T:");LCD_ShowString(2,1,"TH:");LCD_ShowString(2,9,"TL:");LCD_ShowSignedNum(2,4,THigh,3);LCD_ShowSignedNum(2,12,TLow,3);while(1){KeyNum=Key();/*温度读取及显示*/DS18B20_ConvertT();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 char)(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(THigh<-55){TLow=-55;}}LCD_ShowSignedNum(2,4,THigh,3);LCD_ShowSignedNum(2,12,TLow,3);AT24C02_WriteByte(0,THigh);Delay(5);AT24C02_WriteByte(0,TLow);Delay(5);}if(T>THigh){LCD_ShowString(1,13,"OV:H");}else if(T<TLow){LCD_ShowString(1,13,"OV:L");}else{LCD_ShowString(1,13,"    ");}}
}

只能先敲出程序,慢慢理解了

http://www.yayakq.cn/news/410015/

相关文章:

  • 自助小站重庆网站建设 优化
  • 企业网站会员功能个人社保缴费查询
  • 注册的空间网站排版设计专业
  • 微信网站制作方案中国广东手机网站建设
  • 网站文件名优化河南网站建设途径有什么
  • 网站蜘蛛记录器 v1.2wordpress en
  • 网站接任务来做妇科医院网站建设怎么做
  • 旅游后台网站公司注册网上核名时总是提示录入字号
  • 本地网站环境搭建果合gohe网站建设
  • 去视频网站做编辑网络营销运营
  • 人防pc网站开发计划书晋城市建设局网站
  • 怎样做淘宝联盟的网站企业解决方案图片
  • 番禺本地网站网站做微信链接怎么做的
  • 平价建网站公司架设网站费用怎么做分录
  • 做系统网站信息检索网站wordpress app下载失败
  • 帝国cms小说网站模板辽阳企业网站建设价格
  • 如何注册网站世界互联网乌镇峰会
  • 陕西省建设网三类人员成绩查询大连seo外包公司
  • 安徽网站建设方案服务wordpress 购物 手机站
  • 百度站长平台网页版游戏网页设计作品
  • 职业教育网站平台建设私人订制
  • 网站外部链接seo排名官网
  • 内涵吧网站wordpress插件源代码
  • 做pc端网站什么开头北京网站建设最便宜的公司哪家好
  • 做盗版电影网站违法吗wordpress 费用
  • 上海新站专家网络公司wordpress 源码 解读
  • 南京网站优化哪家好wordpress换数据库
  • 微信手机网站制作wordpress免费杂志模板
  • 网站建设安全需求淘宝做轮播广告哪个网站好
  • 青岛手机建站价格wordpress连接mysql拒绝