打印
[应用方案]

DS18B20温度测试程序(51内核单片机数码管显示)+电路图

[复制链接]
1649|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
598330983|  楼主 | 2016-5-23 19:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  • 下面是电路图 采用4位数码管显示 程序一共有2个文件 :



沙发
598330983|  楼主 | 2016-5-23 19:57 | 只看该作者
/***********************************************************************************************************************
ds18b20.h 头文件
***********************************************************************************************************************/
#ifndef _DS18B20_H_
#define _DS18B20_H_
#include <reg51.h>
#define led P1
#define ledw P2

extern unsigned char f;
extern void ds18b20_reset();
extern void dela(unsigned char i);
extern void ds18b20_write(unsigned char dat);
extern unsigned char ds18b20_read();
extern unsigned char ds18b20_temp();
extern unsigned char ledtab[];

#endif

使用特权

评论回复
板凳
598330983|  楼主 | 2016-5-23 19:58 | 只看该作者
/********************************************************************************************************************
ds18b20.c 文件
********************************************************************************************************************/
#include"ds18b20.h"
#define uchar unsigned char
#define uint unsigned int
#define led P1
#define ledw P2

uchar ledtab[]={0xc0,0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbit dq=P3^7 ;
uchar delay,f;
//uchar f;            

void dela(uchar i)   //5us   t=5+i*2
{
while(--i);
}

void ds18b20_reset()
{
while(1)
{
dq=1;
dq=0;
delay=250;    //540us延时,当delay=1时延时为2us ,T=2*x
while(--delay);
dq=1;
delay=25;
while(--delay);
while(dq==0)
{
  delay=220;
  while(--delay);
  if(dq==1)
  break;   
}
delay=150;
while(--delay);
break;
   }
}

void ds18b20_write(uchar dat)
{
uchar i=0;
for(i=0;i<8;i++)
{
  dq=1;
  dq=0;
  delay=3;
  while(--delay);
  dq=dat&0x01;
  delay=35;
  while(--delay);
  dq=1;
  dat=dat>>1;
}
}

uchar ds18b20_read()
{
uchar i=0,m=0;
for(i=0;i<8;i++)
   {
    //m>>=1
    dq=1;
  dq=0;
  delay=4;
  while(--delay);
  dq=1;
  delay=4;
  while(--delay);
  if(dq==1)
  m|=0x01<<i;
  //m=m|0x80;
   delay=25;
   while(--delay);
   dq=1;
   delay=1;
   while(--delay);   
   }
   return m;
}
         
uchar ds18b20_temp()
{
uchar temp=0,temph=0,templ=0,k=0;
ds18b20_reset();
ds18b20_write(0xcc);
ds18b20_write(0x44);

ds18b20_reset();
ds18b20_write(0xcc);
ds18b20_write(0xbe);

templ=ds18b20_read();
temph=ds18b20_read();

if((temph&0xf80)!=0)
{
  f=1;
  templ=~templ;
  temph=~temph;
  k=templ+1;
  templ=k;
  if(templ>0xff)
  {
  temph++;
  }
}
else
f=0;
templ=templ>>4;
temph=temph<<4;
temp=templ|temph;
return temp;
}





使用特权

评论回复
地板
598330983|  楼主 | 2016-5-23 20:01 | 只看该作者
/******************************************************************************************************************
main.c 主文件
*******************************************************************************************************************/
#include<reg51.h>
#include"ds18b20.h"
#define uchar unsigned char
void main()
{
uchar a=0,b=0,c=0,temp=0;
while(1)
{   
temp=ds18b20_temp();
a=temp/100;
b=temp0/10;
c=temp;

if(f==1)
{
  led=0xbf;
  ledw=1;
  dela(5000);
  ledw=0;
  dela(600);
}
led=ledtab[c];
ledw=8;
dela(5000);
ledw=0;
dela(600) ;

  
  led=ledtab;
  ledw=4;
    dela(5000);
  ledw=0;
  dela(600) ;


  led=ledtab[a];
  ledw=2;
  dela(5000);
  ledw=0;
  dela(600) ;
  }
}



使用特权

评论回复
5
yiyigirl2014| | 2016-5-24 23:02 | 只看该作者
S18B20是常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。

使用特权

评论回复
6
yiyigirl2014| | 2016-5-24 23:02 | 只看该作者
DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢
封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。

使用特权

评论回复
7
yiyigirl2014| | 2016-5-24 23:04 | 只看该作者
技术性能描述:
①、 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
② 、测温范围 -55℃~+125℃,固有测温误差(注意,不是分辨率,这里之前是错误的)1℃。
③、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。
④、工作电源: 3.0~5.5V/DC (可以数据线寄生电源)
⑤ 、在使用中不需要任何外围元件
⑥、 测量结果以9~12位数字量方式串行传送
⑦ 、不锈钢保护管直径 Φ6
⑧ 、适用于DN15~25, DN40~DN250各种介质工业管道和狭小空间设备测温
⑨、 标准安装螺纹 M10X1, M12X1.5, G1/2”任选
⑩ 、PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。

使用特权

评论回复
8
yiyigirl2014| | 2016-5-24 23:07 | 只看该作者
DS18B20.pdf (1.47 MB)

18B20的科普贴,很不错。

使用特权

评论回复
9
orangebanana| | 2016-5-25 14:39 | 只看该作者
DS18B20是一个单线总线,能做完简单的温度检测使用

使用特权

评论回复
10
killer2014| | 2016-5-25 14:48 | 只看该作者
这个很好, 值得学习。

使用特权

评论回复
11
598330983|  楼主 | 2016-5-27 17:57 | 只看该作者
在实际应用中,要考虑驱动能力,比如三极管直接驱动是不行的,光照强就看不清了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

228

主题

5289

帖子

22

粉丝