找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2842|回复: 0
打印 上一主题 下一主题
收起左侧

DS18B20数字温度计单片机程序+Proteus仿真

[复制链接]
跳转到指定楼层
楼主
#include "ds18b20.h"

/*****延时子程序*****/
void Delay(uint i)
{  
while( i-- );
}

//DS18B20初始化
void Init_DS18B20(void)
{  
  unsigned char x=0;   
  DQ=1;   
        Delay(8);    //稍做延时
  DQ=0;         //单片机将DQ拉低  
        Delay(80);   //精确延时,大于480us
  DQ=1;         //拉高总线
  Delay(14);
  x=DQ;           //稍做延时后,如果x=0则初始化成功,x=1则初始化失败  
  Delay(20);
}  

/*****读一个字节*****/
unsigned char 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);
}  

/*****写一个字节*****/
void 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;
  }
}  

//发送温度转换命令
void Tmpchange(void)
{  
  Init_DS18B20();
  WriteOneChar(0xCC);  //跳过读序号列号的操作  
  WriteOneChar(0x44);  //启动温度转换
}

//读取温度值
uint ReadTemperature(void)
{   
        unsigned char a=0;
  unsigned char b=0;
  unsigned int t=0;  
  float tt=0;  
  Tmpchange();
  Init_DS18B20();  
  WriteOneChar(0xCC);  //跳过读序号列号的操作
  WriteOneChar(0xBE);  //读取温度寄存器  
  a=ReadOneChar();     //读低8位
  b=ReadOneChar();    //读高8位
  t=b;   
        t<<=8;   
        t=t|a;                                            //高8位左移与低8位相或得到温度值
        tt=t*0.0625;                    //温度在寄存器中为12位 分辨率位0.0625°C
        t= tt*100+0.5;     //放大10倍输出并四舍五入
  return t;
}     


KE3~I2U(GGYUFGP$O`ME[UJ.png (67.14 KB, 下载次数: 41)

KE3~I2U(GGYUFGP$O`ME[UJ.png

ds18b20数字温度计.rar

148.36 KB, 下载次数: 92, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表