51单片机DS18B20温度传感器驱动程序

  • K2_655091
    了解作者
  • C/C++
    开发工具
  • 1.5KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-02-24 07:18
    上传日期
51单片机DS18B20单总线温度传感器,附件包含一个DS18B20的例程,基于51单片机,利用12MHz晶振写的温度时序程序
_ds18b20.zip
  • ds18b20
  • ds18b20.c
    2.3KB
  • ds18b20.h
    122B
内容介绍
#include<reg52.h> #include<intrins.h> #include<math.h> #include<string.h> ///////////////////// #include"liquid_alarm.h" //sbit DQ=P3^2;//ds18b20与单片机连接口 sbit DQ=P3^4;//ds18b20与单片机连接口 uint tvalue; uchar tflag;//温度正负标志 /*************************DS1820程序****************************/ void delay_18B20(unsigned int i)//延时1微秒 { while(i--); } void ds1820rst(void)/*ds1820复位*/ { unsigned char x=0; DQ = 1; //DQ复位 delay_18B20(4); //延时 DQ = 0; //DQ拉低 TR0=0; delay_18B20(100); //精确延时大于 TR0=1; DQ = 1; //拉高 delay_18B20(40); } uchar ds1820rd(void)/*读数据*/ { unsigned char i=0; unsigned char dat = 0; TR0=0; for (i=8;i>0;i--) { DQ = 0; //给脉冲信号 dat>>=1; DQ = 1; //给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); } return(dat); } void ds1820wr(uchar wdata)/*写数据*/ { unsigned char i=0; TR0=0; for (i=8; i>0; i--) { DQ = 0; DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata>>=1; } } uint get_temper()//获取温度 { uchar a,b; ds1820rst(); ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0x44);//*启动温度转换*/ ds1820rst(); ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0xbe);//*读取温度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8; tvalue=tvalue|a; TR0=1; if(tvalue<0x0fff) tflag=0; else {tvalue=~tvalue+1;tflag=1;} tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数 temp=tvalue; return temp; } void dis_temp(int t)//显示温度 { uchar d0,d1,d2,d3; //t=26; if(tflag==0) { d0=t/1000+0x30; d1=t%1000/100+0x30; d2=t%100/10+0x30; d3=t%10+0x30; if(d0==0x30) { wr_com(0x80+9); wr_data(d1); wr_com(0x80+10); wr_data(d2); wr_com(0x80+11); wr_data(0x2e); wr_com(0x80+12); wr_data(d3); } else { wr_com(0x80+9); wr_data(d0); wr_com(0x80+10); wr_data(d1); wr_com(0x80+11); wr_data(d2); wr_com(0x80+12); wr_data(' '); } } else { wr_com(0x80+9); wr_data('-'); wr_com(0x80+10); wr_data(d1); wr_com(0x80+11); wr_data(d2); wr_com(0x80+12); wr_data(' '); //wr_com(0x80+12); //wr_data(d3); } wr_com(0x80+14); wr_data(0xdf); temper=t/10; }
评论
    相关推荐
    • 单片机课件
      单片机的课件及例题, 单片机的课件及例题, 单片机的课件及例题, 单片机的课 件及例题,
    • 爱上单片机
      一本电子爱好者都能看懂,会边看边笑的单片机入门书籍,作者杜洋曾在《无线电》上发表过“趣味单片机制作专题”、“单片机编程魔法学校”等深受读者喜爱、让无数单片机入门者热血沸腾的系列文章。本书通过生动的语言...
    • 单片机资料
      内含30个单片机应用开发的资料,包括配套单片机入门PPT。
    • 单片机课件
      单片机课的课件,对单片机的基础进行了全面的概述,也有非常精细的指导。
    • 单片机工具
      单片机工具 供单片机学习使用 免费资源 日后还会有更多资源 请联系我
    • 单片机
      单片机c 和汇编程序
    • 单片机课件
      单片机课件 ppt文件格式 介绍了单片机的结构、程序设计、定时器、中断等
    • 单片机教程
      这是一个单片机的教程,可以用于初次学习单片机的人学习。
    • 单片机入门
      很好的单片机学习资源,入门比较好适合对单片机的学习有兴趣的人,而且是名校的精彩讲解,
    • 单片机
      利用protues仿真实现基于51单片机的大棚温湿度检测系统设计