本文参考该博主而写,这位博主大大写的十分详细,大家有兴趣可以去参考

DS18B20驱动详解(蓝桥杯单片机)_WillPower-CSDN博客_蓝桥杯ds18b20程序https://willpower.blog.csdn.net/article/details/114339725

我之所以再 画蛇添足 写这个是因为我想记录一下我作为小白视角如何去使用


很多同学刚开始写的时候,看到ds18b20参数手册一定都是晕的,不知道怎么写,怎么办!其实我也是,我在写这篇文章的时候,依旧搞不清楚!!!但是,这不影响我参加比赛(除非规则改了),正常来说,我们能写出来就行,不用搞原理!!!如果你也是这种心态,那么就继续看下去叭。如果不是,请看上面的博客!!!

强调!有了这篇文章,你不需要再看 ds18b20介绍!!!你已经可以得到温度值了!!!

关于这个温度传感器,我们分为三部分进行学习!

(1)改官方驱动

(2)写自己驱动

(3)串口验证

(1)改官方驱动

这一步其实很简单,你就把这个背下来写上去就行,是吧,没有操作难度的!

如果你觉得麻烦,我直接把所有  onewire.c 代码我复制在这里了!!!

注意事项:(1) onewire.h里面的函数声明不全,记得补上!!!

/*程序说明: 单总线驱动程序软件环境: Keil uVision 4.10 硬件环境: CT107单片机综合实训平台(外部晶振12MHz) STC89C52RC单片机日    期: 2011-8-9
*/
#include "reg52.h"
#include "onewire.h"//单总线延时函数
void Delay_OneWire(unsigned int t)  //STC89C52RC
{t = t * 8;while(t--);
}//通过单总线向DS18B20写一个字节
void Write_DS18B20(unsigned char dat)
{unsigned char i;for(i=0;i<8;i++){DQ = 0;DQ = dat&0x01;Delay_OneWire(5);DQ = 1;dat >>= 1;}Delay_OneWire(5);
}//从DS18B20读取一个字节
unsigned char Read_DS18B20(void)
{unsigned char i;unsigned char dat;for(i=0;i<8;i++){EA = 0;DQ = 0;Delay_OneWire(1);dat >>= 1;DQ = 1;if(DQ){dat |= 0x80;}EA = 1;       Delay_OneWire(1);}return dat;
}bit init_ds18b20(void)
{bit initflag = 0;DQ = 1;Delay_OneWire(12);DQ = 0;Delay_OneWire(80);DQ = 1;Delay_OneWire(8);// initflag = DQ;     Delay_OneWire(5);  return initflag;
}

(2)写自己驱动

这里的驱动也很简单,因为不长,这边建议直接背下来!!因为真的不多!!!

代码已经放在下面!!,我会稍微解释一下,方便你理解记忆!!!

uint ReadTemp()
{uint tmpVal = 0;init_ds18b20();Write_DS18B20(0xcc);Write_DS18B20(0x44);while(!DQ);init_ds18b20();Write_DS18B20(0xcc);Write_DS18B20(0xbe);tmpVal = Read_DS18B20();tmpVal = ((uint)Read_DS18B20() << 8) |   tmpVal;tmpVal = tmpVal*0.0625;return   tmpVal;
}

1:定义温度值变量 tmpVal

2:ds18b20初始化

3:写入 0xcc 跳过rom指令(直接写,别管,都是死的)

4:写入 0x44 开始温度转换

5:等待温度转换完成

【开始重复】

6:ds18b20初始化

7:写入 0xcc 跳过rom指令(直接写,别管,都是死的)

8:写入 0xbe 读取转换的温度值

9:把读取值赋值给 tmpVal

10:把 tmpVal 进行转化,也就是第二次的高8位 和 第一次的 低八位结合(直接写,别管,都是死的)

11:温度值的精度*0.0625

很多小伙伴看到这个代码肯定也不懂是怎么回事!但是没关系!放心写!对于小白来说完全够了

补充说明:

求温度整数:

tmpVal = tmpVal*0.0625;
float tmpVal = ReadTemp();
printf("%.0f\r\n", tmpVal);

求温度两位小数:

tmpVal = tmpVal*6.25;
float tmpVal = ReadTemp();
tmpVal = tmpVal / 100;
printf("%.2f\r\n", tmpVal);

(3)串口验证

这里的话,就是把读取的数据放到串口上进行打印,方便我们在测试的时候用!

蓝桥杯-ds18b20使用(小白专享)相关推荐

  1. Java实现 蓝桥杯 算法提高 小X的购物计划

    试题 算法提高 小X的购物计划 问题描述 小X打算去超市shopping.小X没什么钱,只有N元.超市里有M种物品,每种物品都需要money,在小X心中有一个重要度.有的物品有无限件,有的物品只有几件 ...

  2. 第七届蓝桥杯大赛个人赛--小明被绑架到X星球的巫师W那里

    小明被绑架到X星球的巫师W那里. 其时,W正在玩弄两组数据 (2 3 5 8) 和 (1 4 6 7) 他命令小明从一组数据中分别取数与另一组中的数配对,共配成4对(组中的每个数必被用到). 小明的配 ...

  3. 【蓝桥杯】PREV-55 小计算器

    资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 模拟程序型计算器,依次输入指令,可能包含的指令有 1. 数字:'NUM X',X为一个只包含大写字母和数字的字符串,表示一个当前进制的 ...

  4. VMware虚拟机过检测详细教程,巨全面,小白专享教程

    虚拟机过检测就是几个步骤: 1.精简优化镜像,根据游戏所需要的功能来处理镜像文件,这样的好处就是安装好的虚拟机系统占用更小,运行游戏的时候也更流畅: 2.安装虚拟机系统: 3.修改底层,系统文件vmx ...

  5. 前端开发需要学python吗_2018为什么一定要学Python? 小白专享!1部电影的时间入门python!...

    我接触 Python 时已经很晚了,还记得自己第一次使用 Python 写生产系统的程序是2016年,现在这年头说早晚都不合适,昨天听到大牛说,他第一次使用编程是在2006年,我默默的感叹了一句,那年 ...

  6. 【蓝桥杯】第九届蓝桥杯单片机国赛 代码程序

    第九届蓝桥杯单片机国赛 程序 题目 hex文件 代码 工程文件 B站视频 更多资料 题目 历届的省赛和国赛的题目我已经在前面的文章(点击查看)里给大家分享了(网盘资源),需要的话,直接去下载,我在这里 ...

  7. HDU and 蓝桥杯 完全背包练习题

    题目链接请点击 我说一下题目的大意吧,第一行给出小猪存钱罐的重量和装满硬币的小猪钱罐的重量,那么能够装硬币的质量是(F-E)g ,(F-E)g中使装的硬币最少,把(F-E)当成容量,用完全背包解决求最 ...

  8. 第十四届蓝桥杯大赛软件赛省赛JavaB组解析

    目录 说在前面 试题 A: 阶乘求和 代码: 题目分析: 试题 B: 幸运数字 代码: 题目分析: 试题 D: 矩形总面积 代码: 题目分析: 试题 G: 买二赠一 代码: 题目分析: 试题 H: 合 ...

  9. 【蓝桥杯】第十三届蓝桥杯单片机国赛 代码程序

    第十三届蓝桥杯单片机国赛 程序 题目 hex文件 代码 工程文件 B站视频 更多资料 题目 历届的省赛和国赛的题目我已经在前面的文章(点击查看)里给大家分享了(网盘资源),需要的话,直接去下载,我在这 ...

  10. 每日一练蓝桥杯C/C++B组~什么是递归算法?

    在这里我给大家推荐一款不错刷算法学习网站:点击这处链接牛客网:牛客网作为国内内容超级丰富的 IT 题库,各种东西看的我眼花缭乱,题库+面试+学习+求职+讨论+大厂内推等等服务,堪称"互联网求 ...

最新文章

  1. Django-View中绕过RSCF验证
  2. 基于移位寄存器的序列密码
  3. 2小时撸完代码之后,所有程序员都逃不过的一天... (强共鸣)
  4. 如何在windows下使用linux命令
  5. SAP UI5 视图控制器 View Controller 的生命周期方法 - Lifecycle methods
  6. 磊科Netcore路由器无线无缝中继(桥接)设置方法
  7. gitter 卸载_最佳的Gitter渠道:数据科学和机器学习
  8. MSE(L2损失)与MAE(L1损失)的分析
  9. android tablayout放图片,Android TabLayout的Indicator如何设置为图片
  10. 如何用vm虚拟机当服务器,vm虚拟机如何做云服务器
  11. AlexeyAB中训练命令行中 -map 以及 -dont_show
  12. C#设置按钮鼠标进入时半透明样式
  13. 动软代码生成器基础使用
  14. 开发一款简单的百度小程序(由微信小程序迁移过来)
  15. 集合竞价如何买入_股票买入技巧:如何进行集合竞价?
  16. Win电源选项设置效果及意义(个人整理)(包含:电源设置,开启卓越模式,睡眠休眠的区别)
  17. 6 --> MAC层协议
  18. 万年历(1900年之后日历)
  19. 小程序发送通知-可重复多次发送
  20. [数据结构][Python]鸡尾酒排序、桶排序

热门文章

  1. namesilo续费
  2. ChemDraw怎么激活?ChemDraw激活教程
  3. 既是老师又是师兄的临别箴言 .
  4. mysql migration toolkit报错_MYSQL Migration Toolkit 安装
  5. 太湖之光超级计算机应用最高奖,世界最快超级计算机“神威·太湖之光”获得100多项应用成果...
  6. 超级计算机排名太湖之光,神威•太湖之光继续“称霸”超级计算机排行榜 美国无缘前三...
  7. iOS 名字按字母排序
  8. 信托公司消金小额贷款项目的现金流预测
  9. 数值优化学习十八——SQP
  10. 电子白板计算机培训心得,电子白板培训个人心得体会范文