标题: 开源STC51单片机+DS18B20精简温度计(只需三个元件) [打印本页]

作者: 刘海龙    时间: 2016-10-16 22:50
标题: 开源STC51单片机+DS18B20精简温度计(只需三个元件)
本帖最后由 刘海龙 于 2016-10-22 13:08 编辑

硬件只需STC单片机+DS18B20+3位共阴数码管
单片机STC15W408AS(内部集成了高精度可调晶振)通过DS18B20读取温度,用推挽方式直接驱动3位共阴数
码管显示温度。(0-99.9摄氏度)
单片机和数码管叠罗汉(单片机插在面包板上后数码管插在面包板单片机引脚对应的位置)

程序中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, 下载次数: 458, 下载积分: 黑币 -5

源程序

DS18B20温度计原理图.rar

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

PADS9.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
越快乐越堕落 发表于 2016-10-26 21:35
我用这货没成功过

你有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
谢谢楼主分享~~
作者: mn6166    时间: 2017-5-18 10:36
非常感谢!正需要学习中。。
作者: 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
这个单片机能直接驱动数码管么? 不用三极管或者驱动芯片么
作者: 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

好的,我去拼凑试试
作者: zmotian    时间: 2018-3-19 07:41
谢谢楼主,楼主辛苦了
作者: wu-123    时间: 2018-4-15 14:56
学习中,楼主辛苦了
作者: slxsxy    时间: 2018-4-19 18:41
好资料,51黑有你更精彩!!!

作者: liuwenwu    时间: 2018-4-21 12:47
谢谢朋友,刚好用!
作者: 海记    时间: 2019-1-20 00:18
下载了,谢谢
作者: join22life    时间: 2019-3-3 13:35
多谢分享                  
作者: kbnsor    时间: 2019-4-7 16:03
能用STC12C5A60S2单片机,共阳数码管吗?程序要怎样改?
作者: huojunan    时间: 2019-9-27 21:53
第一个包用浏览器下显示文件受损 下了2次正常  
作者: ceflsh    时间: 2019-12-18 21:50
学习中,谢谢楼主分享。
作者: kxcuser    时间: 2019-12-21 13:52
下来学习下,多谢分享
作者: lsrly    时间: 2020-3-22 16:08
我的怎么误差三度,21度显示24度

作者: c20160526    时间: 2020-5-29 12:01
养成好的习惯
作者: 美琴的备胎    时间: 2021-5-18 21:36
越快乐越堕落 发表于 2016-10-27 18:38
有 但是这货要求真心高 你保证也只能保证程序和原理图完全正确 但是在真正制作的时候因为元件差异,焊接 ...

或许你的程序是8951的呢?我就踩过这个坑
作者: zxule    时间: 2021-6-14 10:11
能用16脚的吗,新手,不知道三种不同脚数的区别。谢谢!
作者: zxule    时间: 2021-6-14 10:13
看到引脚了,不行
作者: zxule    时间: 2021-8-23 22:20
你好,为什么我用一模一样的程序显示0.00没改过程序。谢谢!
作者: 有点慌    时间: 2021-8-24 10:25
大佬牛逼
作者: YQ888    时间: 2021-8-24 21:32
民间高手 非常漂亮
作者: lovejk8    时间: 2023-2-15 15:48
简单有效,好东西就应该这样




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1