单片机中使用DS18B20温度传感器C语言程序(参考4)

发布者:石头上种庄稼最新更新时间:2016-09-21 来源: eefocus关键字:单片机  DS18B20  温度传感器C 手机看文章 扫描二维码
随时随地手机看文章
#include

#include

sbit DQ = P2^2;      //定义DS18B20端口DQ  
sbit BEEP=P2^3 ;     //定义报警接口
unsigned char presence ;     //定义传感器初始化标志
unsigned char code   LEDData[ ]    = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0xff};
unsigned char data   temp_data[2] = {0x00,0x00};     //存储零时值
unsigned char data   display[2] =   {0x00,0x00};
unsigned char code   ditab[16] =    {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
void beep(); 
sbit DIN = P0^7;        //小数点
bit   flash=0;           //显示开关标记

/**********************************************************/
void Delay(unsigned int num)//延时函数
{
   while( --num );
}

/**********************************************************/
Init_DS18B20(void)//初始化ds1820
{
  
      DQ = 1;       //DQ复位
      _nop_();
    _nop_();    //稍做延时2ms
      DQ = 0;       //单片机将DQ拉低,发出复位脉冲(要求480us~960us)
      Delay(70);    //精确延时566us
      DQ = 1;        //拉高总线(要求16~60us)
      Delay(5);     //延时46us
           presence = DQ;     //如果=0则初始化成功 =1则初始化失败
    Delay(25);
      DQ = 1; 
     return(presence); //返回信号,0=presence,1= no presence
}
/**********************************************************/
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(4);
   }

     return (dat);
}

/**********************************************************/
WriteOneChar(unsigned char dat)//写一个字节
{
   unsigned char i = 0;
   for (i = 8; i > 0; i--)
   {
     DQ = 0;
     DQ = dat&0x01;
     Delay(5);

     DQ = 1;
     dat>>=1;
   }
}

/*********************************************************/

Read_Temperature(void)//读取温度
{
   Init_DS18B20();
   if(presence==1)        
    { beep();flash=1;}       //DS18B20不正常,蜂鸣器报警
    else 
    {
      flash=0;
      WriteOneChar(0xCC);   // 跳过读序号列号的操作
      WriteOneChar(0x44);   // 启动温度转换

      Init_DS18B20();
      WriteOneChar(0xCC);   //跳过读序号列号的操作
      WriteOneChar(0xBE);   //读取温度寄存器

      temp_data[0] = ReadOneChar();    //温度低8位
      temp_data[1] = ReadOneChar();    //温度高8位 
    }
}
/*********************************************************/
Disp_Temperature()//显示温度
{
   unsigned char   n=0;

   display[2]=temp_data[1]/10;
   display[1]=temp_data[0]%10;

P0 =LEDData[display[1]];   //显示个位
DIN = 0;
P2 = 0xef;
Delay(300);

P0 =LEDData[display[2]];   //显示十位
P2 = 0xdf;
Delay(300);


P2 = 0xff;                           //关闭显示
}

/*********************************************************/
void beep()
   {
     unsigned char i;
     for (i=0;i<100;i++)
     {
       Delay(60);
       BEEP=!BEEP;                  //BEEP取反
     } 
     BEEP=1;                           //关闭蜂鸣器
   }

/*********************************************************/
void main(void)
{
     while(1)
   {
     Read_Temperature();
if(flash==0)             
{Disp_Temperature();}
else P2 = 0xff ;            //DS18B20不正常,关闭显示
   }
}

关键字:单片机  DS18B20  温度传感器C 引用地址:单片机中使用DS18B20温度传感器C语言程序(参考4)

上一篇:单片机中使用DS18B20温度传感器C语言程序(参考5)
下一篇:单片机中使用DS18B20温度传感器C语言程序(参考3)

推荐阅读最新更新时间:2024-03-16 15:10

Microchip加倍LCD PIC18单片机闪存及RAM容量以降低成本
PIC18F85J90系列单片机可提供集成的LCD模块、32 KB闪存及内部电压控制器,瞄准成本敏感的嵌入式显示应用 全球领先的单片机和模拟半导体供应商——Microchip Technology Inc.(美国微芯科技公司)推出6款集成了液晶显示器(LCD)模块的8位PIC单片机系列新产品。PIC18F85J90系列的闪存及RAM存储器容量比现有的64及80引脚系列器件增加了1倍,适用于需要嵌入式控制的高成本效益的人机接口应用,包括恒温器、民用表具及医疗仪器。存储容量的增加有助于用户增加更多诸如语音回放的复杂功能,拥有更多的自编程存储器分配,同时利用3V PIC18 J系列的制造工艺技术节省了成本。 具有片上LCD模块的PI
[新品]
针对MCS96系列单片机的段式管理的大容量数据存储器扩展技术
MCS96系列单片机是一种16位字长,比MCS51系列单片机功能更全、性能更高的单片机,在仪器仪表、过程控制等领域应用极为广泛。在采用MCS96系列单片机的应用开发中,我们碰到一个难题:当需要大容量的数据存储时,数据存储器的扩展如采用与MCS51系列单片机同样的方法则无法工作。因为其内存体系结构采用程序存储器与数据存储器统一编址的普林斯顿结构,程序存储器的地址与数据存储器的地址不能相同;而MCS51系列单片机采用程序存储器与数据存储器分开编址的哈佛结构,程序存储器的地址与数据存储器的地址不冲突,可以相同,因而其数据存储器扩展容易,而且整个数据存储器地址空间连续。MCS96系列单片机的普林斯顿内存体系结构决定了不能简单采用与MC
[单片机]
中颖电子:贸易战影响不大,锂电池管理芯片应用增加
近日,中颖电子接待了来自海通证券、富春投资、六禾投资等18家机构的调研活动,披露了家电智能化产品研发、工控单芯片及锂电池管理芯片销量情况、AMOLED产品线的研发等相关情况。 对于当前中美贸易摩擦对公司的影响,中颖电子表示,美国的贸易对抗清单太广,对我们还是有产生些微影响,但是影响的比例不大,客户本来就有小比例的终端产品是销往美国的。主要体现在短期冲击上,中美贸易摩擦,让客户对未来市场判断趋于谨慎,减少备货订单,影响公司短期的营运增速。由于我国已发展成为全球最大的家电、电子产品制造基地,而且国家政策上积极支持芯片国产化,普遍对客户长期加大国产芯片的采购意愿有所鼓励,国内客户对公司工控单芯片、锂电池管理芯片的接受度不断提高。
[嵌入式]
中颖电子:贸易战影响不大,锂电池管理芯片应用增加
基于AVR单片机和组态王的陶瓷检测系统设计
摘要:针对国内的陶瓷性能检测仪自动化程度不高、检测精度低、检测范围比较窄,可视化差等情况,设计开发了一种基于AVR ATmega128单片机和北京亚控公司的组态软件的陶瓷检测实时控制系统。该系统运用虚拟仪器组态王作为上位机,辅以ATmega128单片机为核心的变参数的模糊神经网络PID控制器,对陶瓷性能进行检测。经现场使用表明,该系统检测精度高、范围广、可视化程度高,使用方便。 0 引言 在城市的建设进程中,越来越注重绿色环保理念,然而使用实心砖会造成资源的巨大浪费,因此空心砖的使用量急剧增长。生产空心砖需要大量的生态陶瓷材料,但相应的陶瓷材料的性能检测工具还很不完善。研制高性能生态陶瓷性能检测仪具有重要的现实意义。本文以陶
[单片机]
基于AVR<font color='red'>单片机</font>和组态王的陶瓷检测系统设计
比亚迪车规MCU再扩充 !全新8位通用MCU BS9000AMXX系列推出!
如果说IGBT解决了汽车电动化的瓶颈,那MCU就是解决汽车智能化的关键,对汽车智能化发展起着决定性的作用。 性能优势加持 车规级品质背书 比亚迪半导体不断攻克智能化关键技术,进一步扩大了车规级8位通用MCU系列产品阵容,于2022年3月全新推出车规级8位MCU BS9000AMXX系列,客户端应用开发项目已全面启动。这是比亚迪半导体在车规MCU市场上的又一重要突破。 BS9000-AM28芯片图 BS9000-AM20芯片图 BS9000AMXX系列是一款车规级高品质等级的8位通用MCU,该芯片采用S8051 内核,主频最高为24MHZ,基于标准8051指令流水线结构,包含31KB FLASH、2KB SRAM
[汽车电子]
比亚迪车规<font color='red'>MCU</font>再扩充 !全新8位通用<font color='red'>MCU</font> BS9000AMXX系列推出!
51单片机IO口模拟串口通讯C源程
51 IO口模拟串口通讯C源程 #include reg51.h sbit BT_SND =P1^0; sbit BT_REC =P1^1; #define MODE_QUICK #define F_TM F0 #define TIMER0_ENABLE TL0=TH0; TR0=1; #define TIMER0_DISABLE TR0=0; sbit ACC0= ACC^0; sbit ACC1= ACC^1; sbit ACC2= ACC^2; sbit ACC3= ACC^3; sbit ACC4= ACC^4; sbit ACC5= ACC^5; sbit ACC6= ACC^6; sbit ACC7= ACC^
[单片机]
变频传动细节观
要点 .变速传动通过调节电机速度以适应负载的要求,可节省能源费用,延长设备寿命。 .变频传动采用脉冲宽度调制方法,改变一个感应电机的电压和频率。 .电机传动应用要求在IGBT的栅极驱动与桥变频器和电机相电流检测之间有直流的隔离。 .整流后的直流电压再转回交流,采用是功率电子器件,如绝缘栅双极晶体管。 .输出电压以高频率开和关,将导通时间(或脉冲宽度)控制为近似于一个正弦波形。 电机传动控制电机的速度、转矩、方向,以及最后的马力,它分为两大类:交流与直流。交流传动用于控制交流感应电机,并且与直流传动一样,也控制速度、转矩和马力。直流传动通常是控制一台并联绕组的直流电机,它的转子电路和磁场电路是分开的。这次拆解
[嵌入式]
用PIC16F877单片机实现的IC卡读写器
引言 本设计的主要目的是介绍IC卡的数据存储技术和IC卡的数据通信,因而使用存储器卡。由于本设计中既可与IC卡进行串行同步通信,又要与上位机进行中行异步通信,因而需要选择一种同时具有这两种通信方式的单片机。因为PIC16F877不仅具有本设计所需要的两种通信方式,而且还具有运行速度快、低功耗、价格低等优点,所以选择PIC16F877单片机作为本设计的单片机。 图1是本设计的电路图,图中电源变换电路和发光二极管等指示电路没有画出。图中的二极管电路是单片机与IC卡通信数据线的保护电路。当数据线上的电压为负电压时,与地相连的二极管导通;当数据线上的电压大于+5V时,与+5V相连的二极管导通,从而保证数据线上的电压在0V~+5V之间
[单片机]
用PIC16F877<font color='red'>单片机</font>实现的IC卡读写器
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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