IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 16.STC15W408AS单片机获取DS18B20温度 -> 正文阅读

[嵌入式]16.STC15W408AS单片机获取DS18B20温度

之前在树莓派系列的文章中写过DS18B20获取温度数据。当时树莓派有1-wire接口,可以直接以读文件的形式读取到温度。18.树莓派3B+ 1-wire获取DS18B20温度

现在在STC单片机里面没有这个接口,只能使用GPIO模拟单总线的时序来读取DS18B20的温度数据了。

DS18B20的特点

Unique 1-Wire interface requires only oneport pin for communication

Can be powered from data line. Power supplyrange is 3.0V to 5.5V

Measures temperatures from -55°C to+125°C. Fahrenheit equivalent is -67°F to+257°F

Converts 12-bit temperature to digital word in750 ms (max.)

(引用数据超过了300字,就截取了部分)

上面是DS18B20的主要特点。主要概括起来就是:

  1. 数据读写只需要一个端口;

  2. 电源电压3V~5.5V;

  3. 测量温度范围是-55℃~125℃;

  4. 温度数据可以是9位的,也可以是12位的,12位转换速度最快为750ms;

BS18B20的封装

图片

这里我使用的是To-92封装的,看起来就是一个普通的三极管样子。

关于DS18B20的其他知识大家可以具体去查看数据手册。

DS18B20时序图

1. 复位时序图

图片

主机先发送复位信号,总线拉低,维持480us~960us,再把主机把总线拉高维持15us~60us之后,DS18B20在接收到这个信号之后就会发送一个60us~240us的低电平信号。

2.读写时序

图片

有了上面的复位时序的说明,再看读写数据就好看一点了。需要注意的是哪些是主机发送,哪些是DS18B20发送的。关键的是要注意时间。

图片

// 从DS18B20读1字节数据
u8 DS18B20_ReadByte()
{
    u8 i;
    u8 dat = 0;
????for?(i=0;?i<8;?i++)???????
    {
      DQ = 0;     //拉低数据线
      delayus(4);
      dat>>=1;    //空出第一位
      DQ = 1;     //拉高数据线
      delayus(10);
      if(DQ)      //若为高电平,则最高位置一
        dat|=0x80;
      delayus(45);//延时45us
    }
    return dat;
}
// 向DS18B20写1字节数据
void DS18B20_WriteByte(u8 dat)
{
    u8 i;
    for (i=0; i<8; i++)             //8位计数器
    {
      DQ = 0;            //数据线拉低
      delayus(15);
      DQ = dat&0x01; //将数据最低位送入数据线
      delayus(60);      //延时10us
      DQ = 1;            //数据线拉高
      dat>>=1;  
    }
}

剩下的就是读取温度数据了。

//读取DS18B20的温度数据
u16 ReadTemp(void)
{
  u8 TL,TH;                    //TL:低八位 TH:高八位
  u16 wd;  
???????????
  DS18B20_Reset();                //设备复位
  DS18B20_WriteByte(0xCC);        //跳过ROM命令
  DS18B20_WriteByte(0x44);        //开始转换命令
  delayus(125);                   
  DS18B20_Reset();                //设备复位
  DS18B20_WriteByte(0xCC);        //跳过ROM命令
  DS18B20_WriteByte(0xBE);        //读暂存存储器命令
  TL= DS18B20_ReadByte();       //读温度低字节
  TH= DS18B20_ReadByte();       //读温度高字节
  wd = (b << 8) | a;
  wd = wd * 0.0625;
// wd = TL/16+TH*16;
  return(wd);
}

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:42:22  更:2021-09-04 17:43:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:42:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码