单片机DS18B20温度计C语言程序

发布者:创意梦者最新更新时间:2015-10-15 来源: eefocus关键字:单片机  DS18B20  温度计 手机看文章 扫描二维码
随时随地手机看文章

  1. //功能:有负温度显示,高精度格度可以显示-9.99C到99.99C
    //      带有报警装置
    //      当温度为正时,显示十位 个位 十分位 百分位
    //      当温度为负时,显示负号 十位 个位 十分位
    //      缺点是上下限报警数值不能改变 
    //注明:数码管是CC—共阴型
    //读取温度
  2. sbit DQ = P3^0;   //定义通信端口
    bit fg=1;
    //晶振12MHz 
    void delay_18B20(unsigned int i)
    {
     while(i--); 
    }
    //初始化函数
    bit Init_DS18B20(void)
    {
      unsigned char x=0;
      DQ = 1;          //DQ复位
      delay_18B20(8);  //稍做延时
      DQ = 0;          //单片机将DQ拉低
      delay_18B20(80); //精确延时 大于 480us
      DQ = 1;          //拉高总线
      delay_18B20(14);
      x=DQ;            //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
      return(x); //Init_DS18B20(void) 被定义为   bit则要有返回值
      delay_18B20(20);
    }
       //while(DQ);
          //while(~DQ);  //检测到应答脉冲
       //
    //读一个字节 
    ReadOneChar(void)
    {
     unsigned char i=0;
     unsigned char dat = 0;
     for (i=8;i>0;i--)
      {
        DQ = 0; // 给脉冲信号
        dat>>=1;
        DQ = 1; // 给脉冲信号
        if(DQ)
        dat|=0x80;
        delay_18B20(4);
      }
      return(dat);
    }
    //写一个字节 
    WriteOneChar(unsigned char dat)
    {
     unsigned char i=0;
     for (i=8; i>0; i--)
     {
      DQ = 0;
      DQ = dat&0x01;
      delay_18B20(5);
      DQ = 1;
      dat>>=1;
     }
    }
    ReadTemperature(void)
    {
        unsigned char a=0;
        unsigned char b=0;
        unsigned int  t=0;
      
        Init_DS18B20();
        WriteOneChar(0xCC); // 跳过读序号列号的操作
        WriteOneChar(0x44); // 启动温度转换
        delay_18B20(100);//至少750ms
  3.   Init_DS18B20();
        WriteOneChar(0xCC); //跳过读序号列号的操作
        WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
        a=ReadOneChar();
        b=ReadOneChar();
        if((b&0xf8)==0xf8) //位为1 时温度是负
         {
         b=~b;
         a=~a+1; //补码转换,取反加一 
         (a==0)b++;
         fg=0; //读取温度为负时fg=0
         } 
     //传感器返回值除16得实际温度值
     //技巧处理后先乘25,再除4,除4用右移实现   
      t=((b*256+a)*25)>>2;
      //t=t+(t>0?0.5:-0.5); //四佘五入大于0加0.5, 小于0减0.5 前面要把t定义为float型才可以
      return(t);
    }
  4. 显示头文件:display()

  5. char disp[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//数字0-9和‘-’的共阴段码 
    char disp_dot[11]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xc0};
    void display(int tmp) 
       {
         if(fg==0)
            { 
      P2 = 0xff;        
      P1 = 0x40;//"-"
         P2 = 0xEF;
      delay_18B20(2000);            
             }   
      P2 = 0xff;
      P1 = 0x39;//"C"  //若先位选再段选, 由于IO口默认输出高电平, 所以当先位选会使数码管出现乱码
      P2 = 0xFE;
      delay_18B20(200);
  6.   P2 = 0xff;
      P1 = disp[tmp/10];
      P2 = 0xFD;
      delay_18B20(200);
  7.   P2 = 0xff;
      P1 =disp_dot[tmp/10];
      P2 = 0xFB;
      delay_18B20(200);
  8.  if(fg==1) 
  9.   {
  10.   P2 = 0xff;
      P1 = disp[tmp/100];
      P2 = 0xF7;
      delay_18B20(200);
       }
    }
关键字:单片机  DS18B20  温度计 引用地址:单片机DS18B20温度计C语言程序

上一篇:解读PIC和AVR单片机的自身抗干扰性能
下一篇:MSP430设置出错

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

51单片机实现光源的跟踪
AD采集两路电压,并比较,控制电机转动方向,并将数据传至上位机 西安理工大学--自动化与信息工程学院 邹艺良 编写(2014.08.25) 邮箱:262276047@qq.com //******************************* //西安理工大学--自动化与信息工程学院--邹艺良 //******************************* #include #include #include void ADC_init(); int get_ADC_result(char ch); unsigned int show_ADC_result_ch0(); unsigned in
[单片机]
瑞萨2007年年底盘点市场三大举措
  在中国庞大而仍在迅速成长的半导体市场中,面向MCU、通用半导体和汽车电子、消费电子、通讯等主攻领域,通过产能、设计和销售三大重要手段,以“全面合作”为关键词,全球半导体巨头瑞萨一改平日的低调,在2007年中强力奏响了充满中国元素的“战略进行曲”。   体制调整,战略先行   2007年伊始,瑞萨就做出了非常大的战略调整,其中最重要的就是制订了“中国事业新体制”和“全面的数码家电解决方案”的双管齐下战术。   2007年1月11日,瑞萨宣布重组在中国的销售和应用技术体制,新的事业体制于2007年1月正式实施。瑞萨自2003年设立以来,一直将中国地区作为最重要的市场之一,2004年7月1日设立了瑞萨半导体管理(中国)有限公司
[焦点新闻]
采用μPD78F0034单片机的出租车计费器方案设计与实现
随着出租车行业的发展,对出租车计费器的要求也越来越高,用户不仅要求计费器性能稳定,计费准确,有防作弊功能;同时还要求其具有车票资料打印 、IC卡付费、语音报话、和电脑串行通信等功能。通常,设计出租车计费器面临以下三方面的问题: (1)不同国家和地区的计费方式存在差异。有些地区有夜间收费及郊区收费等,而有些地区则无夜间收费和郊区收费;即使同一地区,不同车型的出租车,其计费方式也有差别;另一方面,出租车还面临几年一次的调价或调整计费方式等问题。因此,所设计的计费器不仅要能满足不同国家和地区的要求,而且计费方式的调整也应当很方便。 (2)由于个别地区对计费器有特殊要求,有时必须修改软件;另外,计费器还面临软件的升级;因而,所设计
[单片机]
采用μPD78F0034<font color='red'>单片机</font>的出租车计费器方案设计与实现
51单片机-单独文件封装
1.再遇多文件编程 因为定时器经常在后面的教程中使用到,所以我们也把这部分功能代码单独使用文件封装起来。 在第六章的教程中已经教过大家多文件创建,这里点到为止。 创建好“timer.c”和“timer.h” 添加进工程中 2.timer.c的代码 #include reg52.h #include function.h //详见第六章第8讲 u8 T0RH,T0RL,T1RH,T1RL; void TIM0_Init(u32 us,int trim)//trim:微调 { u32 tmp; //临时变量 tmp = 11059200 / 12; //定时器计数频率
[单片机]
51<font color='red'>单片机</font>-单独文件封装
采用MSP430单片机的开关稳压电源设计方案
  MSP430系列单片机是美国TI公司生产的新一代16位单片机,是一种超低功耗的混合信号处理器(MixedSignal Processor),它具有低电压、超低功耗、强大的处理能力、系统工作稳定、丰富的片内外设、方便开发等优点,具有很高的性价比,在工程控制等领域有着极其广泛的应用范围。开关Boost稳压电源利用开关器件控制、无源磁性元件及电容元件的能量存储特性,从输入电压源获取分离的能量,暂时把能量以磁场的形式存储在电感器中,或以电场的形式存储在电容器中,然后将能量转换到负载。对DC-DC主回路采用Boost升压斩波电路。 系统结构和总设计方案   本开关稳压电源是以MSP430F449为主控制器件,它是 TI 公司生产的
[单片机]
采用MSP430<font color='red'>单片机</font>的开关稳压电源设计方案
基于51单片机的新型节能日光灯系统的设计
随着社会的发展和人口的增长,节能已成为一个重要的社会课题。日光灯是目前使用最为广泛的一种灯具,但同大多数灯具一样,一旦开启,无论外界光强多大,它们都只能发出单一光强的光,这造成了能源的浪费。针对这一现象,本文提出了基于单片机的新型日光灯系统,通过采集外界光强信息,采用AT89C51单片机控制日光灯输出光强的方式,使日光灯随外界光强的变化而自动调整照射光强,在满足使用者的用光要求的前提下,达到节约能源的目的。系统具有结构简单、可靠性高、成本低等特点,可广泛用于学校学习和家庭生活。 1 硬件电路组成及工作原理 1.1 系统硬件结构 系统构成如图1所示。系统分为光线采集、单片机控制和日光灯自动调整3部分。光线采集部分主要由光
[单片机]
基于51<font color='red'>单片机</font>的新型节能日光灯系统的设计
保证MCU低功耗 这五点很重要
低功耗是MCU的一项非常重要的指标,比如某些可穿戴的设备,其携带的电量有限,如果整个电路消耗的电量特别大的话,就会经常出现电量不足的情况,影响用户体验。   平时我们在做产品的时候,基本的功能实现很简单,但只要涉及低功耗的问题就比较棘手了,比如某些可以低到微安级的MCU,而自己设计的低功耗怎么测都是毫安级的,电流竟然能够高出标准几百到上千倍,遇到这种情况千万不要怕,只要认真你就赢了。下边咱们仔细分析一下这其中的原因。   第一条:掐断外设命脉——关闭外设时钟   先说最直观的,也是工程师都比较注意的方面,就是关闭MCU的外设时钟,对于现在市面上出现的大多数的MCU,其外设模块都对应着一个时钟开关。只需要打开这个外设的时钟,就可以正
[单片机]
保证<font color='red'>MCU</font>低功耗 这五点很重要
基于8051增强型单片机的RJM8L系列超低功耗MCU介绍
对于一些采用电池供电的产品需要长达数年不换电池情况下能连续工作,系统低功耗设计就尤为重要。MCU微控制器的低功耗设计决定系统的成败关键。MCU微控制器的低功耗技术涉及到软件、系统和底层的硬件工艺等。对于应用来说,在空闲的时候,可以将其时钟关闭以节省动态功耗,或小部分电路以低速低功耗的方式运行,SRAM的读写动态功耗相当可观,因此应该尽量减少读写SRAM。 瑞纳捷针对低功耗应用推出了RJM8L151S和RJM8L003系列产品,已大量应用到各领域,如:烟雾报警器,LoRa模组,智能门锁,灯控设备,GPS定位器,安防探测器,电子烟等应用领域。 RJM8L151S和RJM8L003系列产品是基于8051增强型单片机,工作电压2.
[单片机]
基于8051增强型<font color='red'>单片机</font>的RJM8L系列超低功耗<font color='red'>MCU</font>介绍
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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