单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10554|回复: 43
收起左侧

开源STC51单片机+DS18B20精简温度计(只需三个元件)

  [复制链接]
刘海龙 发表于 2016-10-16 22:50 | 显示全部楼层 |阅读模式
本帖最后由 刘海龙 于 2016-10-22 13:08 编辑

硬件只需STC单片机+DS18B20+3位共阴数码管
单片机STC15W408AS(内部集成了高精度可调晶振)通过DS18B20读取温度,用推挽方式直接驱动3位共阴数
码管显示温度。(0-99.9摄氏度)
单片机和数码管叠罗汉(单片机插在面包板上后数码管插在面包板单片机引脚对应的位置)
照片 003.jpg 照片 002.jpg 照片 001.jpg DS18B20温度计.png
程序中DS18B20.H驱动不适合直接用于STC89/STC90系列及其他公司的单片机(延时时间不同需修改
  1. /*********************************************************************************************
  2. 程序名:    3位共阴数码管显示温度
  3. 编写人:    刘海龙(部分程序来自网络) 
  4. 编写时间:  2016年7月3日
  5. 硬件支持:  STC15W408AS单片机(12M晶振)+DS18B20+共阴数码管
  6. 接口说明:  P5.5接口接DS18B20单总线    
  7. /*********************************************************************************************/
  8. #include <STC15w.h>
  9. #include <intrins.h>
  10. #include <4LED_YIN.h>
  11. #include <DS18B20.h>
  12. /*******************************************/
  13. void delay1ms (unsigned int a){ // 1ms延时程序
  14.         unsigned int i;
  15.         while( --a != 0){
  16.                 for(i = 0; i < 630; i++);//STC单片机在晶振为12MHz时i值上限为630  
  17.         }                                                       //AT89C51单片机在外部晶振为12MHz时i值上限为125
  18. }
  19. /**********************************************************************************************/
  20. void main (void){
  21.         unsigned char i;
  22.         delay1ms(300); //
  23.         init();
  24.         
  25.         while(1){//主循环
  26.            
  27.                  disp(ReadTemperature());//刷新显示温度         
  28.         }        
  29. }
  30. /*****************************************************************************/
复制代码


3位共阴数码管温度计.rar

3.72 MB, 下载次数: 257, 下载积分: 黑币 -5

源程序

DS18B20温度计原理图.rar

31.68 KB, 下载次数: 108, 下载积分: 黑币 -5

PADS9.5画的

评分

参与人数 4黑币 +20 收起 理由
qq274255093 + 5 赞一个!
枝森 + 5 很给力!
darkly5251 + 5 很给力!
滴~电子小白 + 5 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 刘海龙 发表于 2016-10-22 10:45 | 显示全部楼层
下载程序时晶振选择12M
回复

使用道具 举报

HWL0541 发表于 2016-10-22 11:02 | 显示全部楼层
简洁实用,制作见到。楼主厉害
回复

使用道具 举报

七颗星星 发表于 2016-10-22 11:35 来自手机 | 显示全部楼层
我乱逛终于看到这里了
回复

使用道具 举报

zhkrid 发表于 2016-10-25 19:45 | 显示全部楼层
有办法测负温度吗,用4位,第一位控制负号
回复

使用道具 举报

 楼主| 刘海龙 发表于 2016-10-25 19:58 | 显示全部楼层
zhkrid 发表于 2016-10-25 19:45
有办法测负温度吗,用4位,第一位控制负号

DS18B20测温范围 -55℃~+125℃
温度的读取
DS18B20在出厂时以配置为11位,读取温度时共读取16位,前5个位为符号位,当前5位为1时,读取的温度为负数;当前5位为0时,读取的温度为正数。温度为正时读取方法为:将16进制数转换成10进制即可。温度为负时读取方法为:将16进制取反后加1,再转换成10进制即可。例:0550H = +85 度,FC90H = -55 度。
所以你只需把转化和显示负温度的程序加进去就可以了。
回复

使用道具 举报

zhkrid 发表于 2016-10-25 20:03 | 显示全部楼层
好的,我去拼凑试试
回复

使用道具 举报

越快乐越堕落 发表于 2016-10-26 12:44 | 显示全部楼层
zhkrid 发表于 2016-10-25 19:45
有办法测负温度吗,用4位,第一位控制负号

这种要用能测负温度的传感器,配以程序
回复

使用道具 举报

越快乐越堕落 发表于 2016-10-26 12:44 | 显示全部楼层
zhkrid 发表于 2016-10-25 19:45
有办法测负温度吗,用4位,第一位控制负号

这种要用能测负温度的传感器,配以程序。。。。。。。。。。
回复

使用道具 举报

 楼主| 刘海龙 发表于 2016-10-26 14:34 | 显示全部楼层
越快乐越堕落 发表于 2016-10-26 12:44
这种要用能测负温度的传感器,配以程序

DS18B20是可以测负温度的
回复

使用道具 举报

越快乐越堕落 发表于 2016-10-26 21:35 | 显示全部楼层
刘海龙 发表于 2016-10-26 14:34
DS18B20是可以测负温度的

我用这货没成功过
回复

使用道具 举报

 楼主| 刘海龙 发表于 2016-10-26 22:43 | 显示全部楼层

你有stc12C2052或者stc12c5A60S2或者stc15系列的单片机吗?有的话我可以保证你制作成功
回复

使用道具 举报

越快乐越堕落 发表于 2016-10-27 18:38 | 显示全部楼层
刘海龙 发表于 2016-10-26 22:43
你有stc12C2052或者stc12c5A60S2或者stc15系列的单片机吗?有的话我可以保证你制作成功

有 但是这货要求真心高 你保证也只能保证程序和原理图完全正确 但是在真正制作的时候因为元件差异,焊接布线等,甚至传感器的原因都会导致失败的
回复

使用道具 举报

wc86110 发表于 2016-10-27 20:17 | 显示全部楼层
越快乐越堕落 发表于 2016-10-27 18:38
有 但是这货要求真心高 你保证也只能保证程序和原理图完全正确 但是在真正制作的时候因为元件差异,焊接 ...

兴许是你用的 18B20 已经损坏了呢?
又或者是套用的程序并不合适你所使用的单片机型号呢?
回复

使用道具 举报

越快乐越堕落 发表于 2016-10-28 18:19 | 显示全部楼层
wc86110 发表于 2016-10-27 20:17
兴许是你用的 18B20 已经损坏了呢?
又或者是套用的程序并不合适你所使用的单片机型号呢?

都是全新的。。。没坏 我测过 程序是配套的
回复

使用道具 举报

wc86110 发表于 2016-10-28 19:44 | 显示全部楼层
越快乐越堕落 发表于 2016-10-28 18:19
都是全新的。。。没坏 我测过 程序是配套的

嗯,说明连新手这关你都还没闯过,还得有滴拼才行啦
回复

使用道具 举报

越快乐越堕落 发表于 2016-10-29 14:10 | 显示全部楼层
wc86110 发表于 2016-10-28 19:44
嗯,说明连新手这关你都还没闯过,还得有滴拼才行啦

。。。。。。不是吧 其他的都成功 就是这货
回复

使用道具 举报

guoqingaa 发表于 2016-12-1 17:39 | 显示全部楼层
简洁实用,制作见到。楼主厉害
回复

使用道具 举报

gshuxiao8 发表于 2016-12-8 23:37 | 显示全部楼层
超过100度,怎么办?
回复

使用道具 举报

 楼主| 刘海龙 发表于 2016-12-15 20:06 | 显示全部楼层
gshuxiao8 发表于 2016-12-8 23:37
超过100度,怎么办?

用四位数码管同时改程序
回复

使用道具 举报

kctim 发表于 2017-3-30 18:01 | 显示全部楼层
谢谢楼主分享~~
回复

使用道具 举报

22#
无效楼层,该帖已经被删除
mn6166 发表于 2017-5-18 10:36 | 显示全部楼层
非常感谢!正需要学习中。。
回复

使用道具 举报

24#
无效楼层,该帖已经被删除
ekumail 发表于 2017-5-24 20:29 | 显示全部楼层
看起来简单,
回复

使用道具 举报

ads2017 发表于 2017-6-16 11:05 | 显示全部楼层
感谢分享@@@@@@@@@@@@@@@@@
回复

使用道具 举报

iloveplc 发表于 2017-8-11 14:25 | 显示全部楼层
谢谢楼主分享,正好可以学习一下
回复

使用道具 举报

如果让他嘎斯 发表于 2017-9-21 16:56 | 显示全部楼层
谢谢楼主分享,正好可以学习一下
回复

使用道具 举报

gxlin 发表于 2017-9-27 23:06 | 显示全部楼层
谢谢楼主分享,我购STC15W408AS-35I-SOP20购了SOP20转接板,把3位0.56英寸数码管 贴上刚合,焊好,刷上程序,接上DS18B20成功显示温度,发现DS18B20偏高1度,在DS18B20程序修改一下,精确度很准。
回复

使用道具 举报

qq274255093 发表于 2017-10-18 22:41 | 显示全部楼层
好东西,学习了。。。
回复

使用道具 举报

woshishui22 发表于 2017-10-25 12:47 | 显示全部楼层
简单,直接,不愧是总工程师
回复

使用道具 举报

沫小然 发表于 2017-10-26 10:46 | 显示全部楼层
请问用STC15W408AS  20p的单片机和DS18B20温度传感器 测温度的代码怎么写
回复

使用道具 举报

xiesonny 发表于 2017-10-26 13:42 | 显示全部楼层
楼主的原理图是DX吗?玩得这么高大上?
回复

使用道具 举报

happiness1 发表于 2017-10-27 22:16 | 显示全部楼层
这个单片机能直接驱动数码管么? 不用三极管或者驱动芯片么
回复

使用道具 举报

35#
无效楼层,该帖已经被删除
pangdahai 发表于 2017-11-12 13:33 | 显示全部楼层
你好    求帮忙  以前使用过DS18B20   但用的是51单片机    这次换成STC15W408AS   时序修改了很长时间也不好使   能否帮我看看我的程序中的时序
回复

使用道具 举报

yangchao526 发表于 2017-12-18 19:31 | 显示全部楼层
学习一下,还要黑币。。。。
回复

使用道具 举报

nanning321 发表于 2018-1-4 23:18 | 显示全部楼层
我喜欢用NTC来做温度
回复

使用道具 举报

cai123 发表于 2018-3-9 14:44 | 显示全部楼层
NTC来做温度计,学习学习,
回复

使用道具 举报

ludaijin 发表于 2018-3-16 16:41 | 显示全部楼层

好的,我去拼凑试试
回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛单片机 联系QQ:125739409;技术交流QQ群582644647

Powered by 单片机教程网

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