找回密码
 立即注册

QQ登录

只需一步,快速开始

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

DS18B20头文件

[复制链接]
跳转到指定楼层
楼主
ID:330187 发表于 2018-5-15 09:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#ifndef __DS18B20_H__
#define __DS18B20_H__
#define uchar unsigned char
#define uint unsigned int
sbit DQ = P1^5;
uchar tab[5];
uint temp;// 温度值
bit tflag;
/****************
延时1 微秒**********/
void delay_18B20(uint i)
{
while(i--);
}
/*******************
ds1820 复位************/
void ds1820rst()
{
uchar 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 则初始化失败
while(!DQ);
delay_18B20(20);
}
/********************
读一个字节********************/
uchar ds1820rd()
{
uchar i=0;
uchar dat=0;
for (i=8;i>0;i--)
{
DQ=0; // 给脉冲信号
dat>>=1;
DQ=1; // 给脉冲信号
if(DQ)
dat|=0x80;
delay_18B20(4);
}
return(dat);
}
/***************
写一个字节***************/
void ds1820wr(uchar dat)
{
uchar i=0;
for (i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay_18B20(5);
DQ=1;
dat>>=1;
}
}
/**************** 读取温度
值并转换***************/
read_temp()
{
uchar a,b;
ds1820rst();
ds1820wr(0xcc);// 跳过读序列号
ds1820wr(0x44);// 启动温度转换
delay_18B20(100);
ds1820rst();
ds1820wr(0xcc);// 跳过读序列号
ds1820wr(0xbe);// 读取温度
delay_18B20(100);
a=ds1820rd();
b=ds1820rd();
temp=b;
temp<<=8;
temp=temp|a;
if(temp<0x0fff)
tflag=0;
else
{
temp=~temp+1;
tflag=1;
}
temp=temp*(0.625);// 温度值扩大10倍,
//精确到1 位小数
return(temp);
}
/*****************
温度值显示****************/
void ds1820disp()
{
uchar flagdat;
read_temp();
tab[0]=temp%1000/100+0x30; //
//十位数
tab[1]=temp%100/10+0x30; //
//个位数
tab[2]=temp%10+0x30; //
//小数位
if(tflag==0)
flagdat=0x20;// 正温度不显示符号
else
flagdat=0x2d;// 负温度显示负号:-
if(tab[0]==0x30) { tab[0]=0x20; }// 如果十位为0,不显示
write_com(0x80+0x40+6);
write_dat(flagdat); // 显示正负
write_dat(tab[0]); // 显示十位
write_dat(tab[1]); // 显示个位
write_dat(0x2e); // 显示小数
//点
write_dat(tab[2]); // 显示小数位
write_dat(0xdf);
write_dat(0x43);
}
#endif

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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