极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 31099|回复: 17

DS18B20 温度传感器测试

[复制链接]
发表于 2013-8-21 22:49:38 | 显示全部楼层 |阅读模式
本帖最后由 zhengzaifaya 于 2013-8-21 23:18 编辑

使用一块OLED屏幕来显示温度, 3.7V手机电池供电, 精度是0.125℃.



代码:
  1. #include <OneWire.h>
  2. #include <SSD1306.h>

  3. #define OLED_CLK 9
  4. #define OLED_MOSI 8
  5. #define OLED_RESET 7
  6. #define OLED_DC 6
  7. #define DS18B20_PIN 2

  8. SSD1306 oled(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, -1);
  9. OneWire ds(DS18B20_PIN);
  10. byte addr[8];

  11. void setup(void) {
  12.   Serial.begin(9600);
  13.   oled.ssd1306_init(SSD1306_SWITCHCAPVCC);
  14.   oled.clear();
  15.   oled.display();
  16.   while (!ds.search(addr))
  17.   {
  18.     ds.reset_search();
  19.     delay(250);
  20.   }
  21. }

  22. void loop(void) {
  23.   byte i;
  24.   byte present = 0;
  25.   byte data[12];
  26.   float celsius;

  27.   ds.reset();
  28.   ds.select(addr);
  29.   ds.write(0x44, 1);
  30.   
  31.   delay(800);
  32.   
  33.   present = ds.reset();
  34.   ds.select(addr);   
  35.   ds.write(0xBE);

  36.   for ( i = 0; i < 5; i++) data[i] = ds.read();

  37.   int16_t raw = (data[1] << 8) | data[0];
  38.   byte cfg = (data[4] & 0x60);
  39.   if (cfg == 0x00) raw = raw & ~7;  // 9 bit, 93.75 ms
  40.   else if (cfg == 0x20) raw = raw & ~3; // 10 bit, 187.5 ms
  41.   else if (cfg == 0x40) raw = raw & ~1; // 11 bit, 375 ms
  42.   //// default 12 bit, 750 ms
  43.   celsius = (float)raw / 16.0;

  44.   char temp[5];
  45.   dtostrf(celsius, 5, 2, temp);
  46.   strcat(temp, " Celsius.");
  47.   oled.clear();
  48.   oled.drawstring(22, 4, temp);
  49.   oled.display();
  50. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-8-22 00:47:14 | 显示全部楼层
连线很简单,LCD是5110吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-22 06:40:24 | 显示全部楼层
Fortware 发表于 2013-8-22 00:47
连线很简单,LCD是5110吧?

LCD是128*64的OLED, 使用4线SPI驱动.
回复 支持 反对

使用道具 举报

发表于 2013-8-22 07:55:52 | 显示全部楼层
OLED在哪儿买的,有某宝的链接没?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-22 08:15:20 | 显示全部楼层
Cupid 发表于 2013-8-22 07:55
OLED在哪儿买的,有某宝的链接没?

某宝地址 http://item.taobao.com/item.htm?id=17345035506
回复 支持 反对

使用道具 举报

发表于 2013-8-22 09:00:31 | 显示全部楼层
rtc板起什么作用?
回复 支持 反对

使用道具 举报

发表于 2013-8-22 09:07:00 | 显示全部楼层
屏是单色的?不是ADA那种彩屏么?
回复 支持 反对

使用道具 举报

发表于 2013-8-22 09:11:08 | 显示全部楼层
zhengzaifaya 发表于 2013-8-22 08:15
某宝地址 http://item.taobao.com/item.htm?id=17345035506

谢谢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-22 09:26:52 | 显示全部楼层
wing 发表于 2013-8-22 09:07
屏是单色的?不是ADA那种彩屏么?

是单色的屏幕.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-22 09:27:09 | 显示全部楼层
数字 发表于 2013-8-22 09:00
rtc板起什么作用?

DS18B20是焊在RTC板上的.
回复 支持 反对

使用道具 举报

发表于 2013-8-22 10:56:35 | 显示全部楼层
做起来应该很简单吧?
回复 支持 反对

使用道具 举报

发表于 2013-8-22 17:23:39 | 显示全部楼层
这个OLED屏不错!!
回复 支持 反对

使用道具 举报

发表于 2013-8-23 08:29:18 | 显示全部楼层
oled屏幕省电吧?
回复 支持 反对

使用道具 举报

发表于 2013-8-23 11:02:23 | 显示全部楼层
你真的是初一的学生么?天才!!
回复 支持 反对

使用道具 举报

发表于 2013-8-23 12:53:22 | 显示全部楼层
数字 发表于 2013-8-22 09:00
rtc板起什么作用?

同问,望解答
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 18:29 , Processed in 0.051706 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表