温度传感器18B20程序案例

发布者:闪耀星空最新更新时间:2015-12-23 来源: eefocus关键字:温度传感器  18B20 手机看文章 扫描二维码
随时随地手机看文章

该程序为通过18B20,测量温度,并将温度的整数值在两个数码管中显示出来。

 

该程序只适用于系统只有一个18B20,没有检测多个18B20的功能。

 

另外,该程序未进行温度的正式判断,默认环境温度高于0度。

      

 #include

 #include

 #define uint unsigned int

 #define uchar unsigned char

 

 sbit DQ=P3^3;    // 18B20的数据位

 uint code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

 uint time=0;

 

//沿时1ms的函数

  void Delay1ms()

 {

    uint i,j;

    for(i=0;j<4;i++)

    {

       for(j=0;j<33;j++)

       {

          

       }

    }

 }

 

 

//沿时nms的函数

 void Delaynms(uint x)

 {

    uint i;

    for(i=0;i

    {

       Delay1ms();

    }

 }

 

 

//18B20初始化函数

 bit Init_18B20()

 {

    bit flag;

    DQ=1;

    for(time=0;time<2;time++)

    {

   

    }

    DQ=0;

    for(time=0;time<200;time++)

    {

   

    }

    DQ=1;

    for(time=0;time<15;time++)

    {

   

    }

    flag=DQ;

    for(time=0;time<200;time++)

    {

   

    }

    return flag;                   

 }

 

 

//从18B20里读出一个字节的函数

 uchar Read_18B20()

 {

    uchar i,result;

    for(i=0;i<8;i++)

    {

       DQ=1;

       _nop_();

       DQ=0;

       _nop_();

       DQ=1;

       for(time=0;time<2;time++)

       {

      

       }

       result>>=1;;

       if(DQ==1)

       {

           result|=0x80;

       }

       for(time=0;time<20;time++)

       {

      

       }

   

    }

    return result;

 

 }

 

 

//往18B20里写一个字节的函数

 void Write_18B20(uint cmd)

 {

    uint i;

    for(i=0;i<8;i++)

    {

       DQ=1;

       _nop_();

       DQ=0;

       _nop_();

       DQ=(cmd&0x01);

       for(time=0;time<15;time++)

       {

      

       }

       DQ=1;

       _nop_();

       _nop_();

       _nop_();

       _nop_();

       cmd>>=1;

       for(time=0;time<10;time++)

       {

      

       }

    }

 

 }

 

 

//18B20芯片进行温度转换的函数

 void Temp_Tran()

 {

    Init_18B20();

    Write_18B20(0xcc);//跳过读序列号的操作

    Write_18B20(0X44); //启动温度转化

    Delaynms(250);

 }

 

 

 //从18B20里读出温度值准备

 void TempGet_Ready()

 {

     Init_18B20();

     Write_18B20(0XCC);  //跳过读序列号的操作

     for(time=0;time<20;time++)

     {

     

     }

     Write_18B20(0XBE);    //读取温度寄存器,前两个分别为温度的低位与高位

     for(time=0;time<20;time++)

     {

     

     }

 }

 

 

 

//数码管显示函数

 void Dispaly(num1,num2)

 {

       P0=table[num2];     //P0为数码管的段选择

       P2=0xfe;      //P2为数码管的位选择

       Delaynms(30);

 

       P0=table[num1];

       P2=0XFD;

       Delaynms(5);

 

 }

 

 

 

 //主函数

 void main()

 {

    uint temp_tl;

    uint temp_th;

    uint th;

    //uint tl;

    uint gewei;

    uint shiwei;

 

    if(Init_18B20()==0)

    {

       P1=0X00;

    }

 

    while(1)

    {

       Temp_Tran();//调用温度转化函数

       _nop_();

       TempGet_Ready();//为读取温度值做准备

       temp_tl=Read_18B20(); // 温度值的低字节读取

       temp_th=Read_18B20(); //  温度值的高字节读取

 

       th=16*temp_th+temp_tl/16; //将温度值转化为十进制的值

       gewei=th%10;   // 十进制温度值的个位

 

       shiwei=th/10; //  十进制温度值的十位

      

       Dispaly(gewei,shiwei); //数码管显示温度值

    }

 }

 

将以上程序烧写入单片机中,数码管即可正常显示测量到的温度。

 

上面程序主要是说明18B20芯片的初始化,读取一个字节,写一个字节的过程。只要掌握了,其他的功能就很容易实现。

 

如系统有多个18B20,只需增加检测其序号号即可。

 

如设定18B20的温度报警值。

关键字:温度传感器  18B20 引用地址:温度传感器18B20程序案例

上一篇:存储芯片24C08程序开发案例
下一篇:时钟芯片DS1302程序案例

推荐阅读最新更新时间:2024-03-16 14:41

浅谈温度传感器
温度是一个基本的物理量,自然界中的一切过程无不与温度密切相关。温度传感器是最早开发,应用最广的一类传感器。温度传感器的市场份额大大超过了其他的传感器。从17世纪初人们开始利用温度进行测量。在半导体技术的支持下,本世纪相继开发了半导体热电偶传感器、PN结温度传感器和集成温度传感器。与之相应,根据波与物质的相互作用规律,相继开发了声学温度传感器、红外传感器和微波传感器。 两种不同材质的导体,如在某点互相连接在一起,对这个连接点加热,在它们不加热的部位就会出现电位差。这个电位差的数值与不加热部位测量点的温度有关,和这两种导体的材质有关。这种现象可以在很宽的温度范围内出现,如果精确测量这个电位差,再测出不加热部位的环境温度,就可
[工业控制]
温度传感器再度“升温”,震撼来袭
近年来,我国工业现代化的进程和电子信息产业连续的高速增长,带动了传感器市场的快速上升。温度传感器作为传感器中的重要一类,占整个传感器总需求量的40%以上。温度传感器用途十分广阔,可用于厨房设备、冷链运输、可穿戴设备、智能家居、工业控制、汽车等领域。 Silicon Labs(美国芯科实验室)拥有非常丰富的温湿度传感器,其特征为高度可靠性、小型化、高集成度和无与伦比的易用性,适用于各种应用。数字温度传感器Si705X采用创新的信号处理和混合信号设计技术,具有高精度和业界领先的低功耗功能。集成的模拟数字转换器,支持高达14位分辨率,适用于高精密应用。 世强代理的Si705X在高性能市场的应用 世强代理的
[传感器]
<font color='red'>温度传感器</font>再度“升温”,震撼来袭
ZTPl35S-R型红外温度传感器在体温计中的应用
1 引言   现在,人们对自己的身体健康状况十分关注.都希望自己有一个好的身体。体温是人体的重要生理参数之一,对它的监测十分重要。市场上最流行的体温计是电子体温计,特别是非接触式红外体温计。目前国内开发的红外体温计主要有华中科技大学研制的“慧眼:HW一05”人体温度红外热图像仪.其分辨率高达0.06℃;中科院上海物理研究所研制的红外测温仪和兰州大学合华技术应用开发中心开发的LHW—I型红外线测温仪。国外产品有德国博郎集团开发的只需1秒即可测出体温的红外体温计;日本欧姆龙研制的几款非接触式红外体温计和BJ40型非接触式医用红外线体温计(精度为±tO.2℃,其主要器件是红外温度传感器。本文给出了应用GE公司的ZTP135S—R型红外温
[工业控制]
LM135温度传感器及其应用电路
LM135温度传感器及其应用 LM135/LM235/LM335是美国国家半导体公司推出的精密温度传感器,它工作与齐纳二极管相似,其反向击穿电压随温度按+10mV/k的规律变化,可应用于精密的温度测量设备。它有三种封装形式适合于各类要求的仪器仪表要求,其主要功能特性如下: 直接在绝对温标校准 1℃的精确度 工作电流400uA—5mA 动态阻抗1Ω 便于校准 宽工作温度范围2001℃ 低成本 图2是LM135的内部原理图,V15和V16是感温元件,这两个三极管的物理结构有着特定的要求,V15的发射结面积是V16发射结面积的10倍。它们的集电极负载电阻完全一致,如果流过这两
[模拟电子]
LM135<font color='red'>温度传感器</font>及其应用电路
STM8 DS18B20温度传感器程序
软件设计 /********************************************************************* 目 的: 建立DS18B20操作库 目标系统: 基于STM8单片机 应用软件: Cosmic CxSTM8 *********************************************************************/ void _delay_us(u8 us) { while(--us); } //-----复位----- void resetOnewire(void) { OUT_DQ(); CLR_DQ(); _delay_
[单片机]
ST推出超小型高能效温度传感器STTS751
结合超小尺寸和低功耗设计及先进功能,为移动消费电子产品实现先进的温度管理功能ST(意法半导体),推出一款超小型高能效温度传感器STTS751,为便携设备提供智能温度管理等超值功能。 当今的消费者生活形态期望固态硬盘、笔记本电脑、电子阅读器、智能手机、基站以及数字式广告牌等便携设备提供前所未有的性能和便携性,当高负载运转的电子元器件被压缩到有限的空间内,产生的热量可能会导致系统发生故障和降低可靠性。通过将意法半导体的新款数字温度传感器(DTS)STTS751安装在电路板上,可为系统提供精确的温度数据,以执行相应的温度管理功能,例如,启动风扇或关闭电路。 新一代传感器的尺寸为2 x 2mm,比上一代产品更小;拥有50μA的极低
[模拟电子]
为医疗设计带来更简便设计—TI高精度传感器TMP117
德州仪器(TI)近日推出新的温度传感器系列,可在宽温度范围内实现高达±0.1°C的精度,有助于简化工业和医疗应用的系统设计。TMP117是第一款具有与Platinum RTD相似性能的单芯片温度传感器,同时显著降低设计复杂性和功耗。TMP117M是一款适合医疗应用的数字温度传感器,符合医疗温度计的要求。这些新型设备可帮助工程师能够更快地开发出具有高精度及超低功耗的患者监护仪、现场变送器以及计量应用。 无需校准即可实现高精度 新的传感器系列可在宽范围内实现高达 ±0.1°C 的精度,在制造过程中实现零校准,为需要高精度的系统节省了设计时间,降低了生产成本。 · 符合临床温度要求:对于医疗应用,TMP117M
[传感器]
为医疗设计带来更简便设计—TI高精度传感器TMP117
Galaxy Watch5系列搭载Melexis温度传感器芯片,引入生理周期跟踪功能
Galaxy Watch5系列搭载Melexis温度传感器芯片,引入生理周期跟踪功能 2023年2月22日,比利时泰森德洛——全球微电子工程公司Melexis今日宣布,为三星Galaxy Watch5和Galaxy Watch5 Pro提供其独特的温度传感器芯片MLX90632。 该产品提供的非接触式温度测量具有更高的精准度,可以跟踪生理周期。可靠的连续温度监测性能在运动、健康监测设备和其他领域开辟了广泛的新应用。 三星在最新的Galaxy Watch5系列中搭载了非接触式温度传感器芯片MLX90632。 相比于目前许多厂商使用的接触式传感器方案,需要手表与皮肤紧密接触才能准确收集数据,这不仅在实际应用中很难实现,而且会
[传感器]
Galaxy Watch5系列搭载Melexis<font color='red'>温度传感器</font>芯片,引入生理周期跟踪功能
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved