当前位置:首页 > 技术学院 > 热搜器件
[导读]#include#include#include "Delay.h"sbit DS18b20_DataPort=P1^7; //引脚选择bit DS18b20_reset(void) //返回0-有设备连接1-无设备连接{unsigned char i;bit RstFlag;RstFlag=1;DS18b20_DataPort=0;delay_us(600);//

#include

#include

#include "Delay.h"

sbit DS18b20_DataPort=P1^7; //引脚选择

bit DS18b20_reset(void) //返回0-有设备连接1-无设备连接

{

unsigned char i;

bit RstFlag;

RstFlag=1;

DS18b20_DataPort=0;

delay_us(600);//器件反应时间最少480us

DS18b20_DataPort=1;

delay_us(60); //15us-60us

for (i=0;i<16;i++) //60us-240us

{

delay_us(15);

if (DS18b20_DataPort==0)

RstFlag=0;

}

delay_us(240);// 低电平持续时间最少240us

return RstFlag;

}

void DS1820_write(unsigned char command)

{

unsigned char i;

DS18b20_DataPort=1;

delay_us(1);

for (i=0;i<8;i++)

{

EA=0;

DS18b20_DataPort=0;

delay_us(15);

DS18b20_DataPort=ch&0x1;

EA=1;

delay_us(50);

DS18b20_DataPort=1;

command=command>>1;

delay_us(1);

}

}

unsigned char DS1820_read(void)

{

unsigned char i,date = 0;

DS18b20_DataPort = 1;

delay_us(1);

for (i = 0;i < 8;i++)

{

EA = 0;

DS18b20_DataPort = 0;

delay_us(10);

DS18b20_DataPort = 1;

delay_us(2);

date = date>>1;

if (DS18b20_DataPort == 1)

{

date += 0x80;

}

EA = 1;

delay_us(50);

}

return date;

}

void DS1820_skipROM(void) //主机发送跳过读序列号的操作指令

{

DS18b20_reset();

DS18b20_write(0xcc);

}

void DS1820_startADC(void)

{

DS18b20_reset(); //复位

DS18b20_write(0xcc); //广播

DS18b20_write(0x44); //启动AD转换 12bit700ms

}

unsigned int DS1820_getTempValue(void)

{

unsigned char i,j;

unsigned int T;

DS18b20_skipROM();

DS18b20_write(0xBE); //读取温度的命令

i=DS18b20_read();

j=DS18b20_read();

DS18b20_startADC();

T = i+j*256;

if (T==0xffff)

return 0xffff;

if (T>0x8000) //温度为负号

{

T = -T;

return (0x8000+T*5/80); // 计算温度的值

}

else //温度为正值

return (T*5/80);

}

//主函数

void main(void)

{

int w;

Init();//系统初始化

while(1)

{

w = DS1820_getTempValue(); //将温度值送出

_nop_;

_nop_;

_nop_;

}

//while(1);

}

//-------------------------------------------------------------

//程序结束

//---------------------------------

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型...

关键字: DS18B20 数字温度传感器

今天,我们来聊一道常见的考题,也出现在腾讯面试的三面环节,非常有意思。具体的题目如下:文件中有40亿个QQ号码,请设计算法对QQ号码去重,相同的QQ号码仅保留一个,内存限制1G.这个题目的意思应该很清楚了,比较直白。为了...

关键字: 腾讯 BITMAP UNSIGNED 内存

今天,我们来聊一道常见的考题,也出现在腾讯面试的三面环节,非常有意思。具体的题目如下:文件中有40亿个QQ号码,请设计算法对QQ号码去重,相同的QQ号码仅保留一个,内存限制1G. 这个题目的意思应该很清楚了,比较直白。为...

关键字: BITMAP UNSIGNED 内存 腾讯

一直觉得C语言较其他语言最伟大的地方就是C语言中的指针,有些人认为指针很简单,而有些人认为指针很难,当然这里的对简单和难并不是等价于对指针的理解程度。为此在这里对C语言中的指针进行全面的总结,从底层的内存分析,彻底让读者...

关键字: 微信 C语言 UNSIGNED INCLUDE

摘 要:介绍了以STC89C52单片机为主控制器的基于DS18B20的温度测控系统的硬件和软件设计方法,给出了完整的硬件电路及程序流程图。并根据串行通讯原理设计了单片机与PC机的接口电路,建立了单片机与PC机之间的串行通...

关键字: DS18B20 STC89C52 串行通讯 VB6.0

摘要:根据食品配送途中对温度的多测点、实时性、可追溯性等要求,选用DS18B20数字温度传感器为温度采集器件,结合车载GPS/北斗定位终端的串口透传功能,设计了一种应用于食品冷链配送途中的有线温度采集系统,从而实现了对配...

关键字: 温度采集 冷链 DS18B20 分组测试

摘 要 :婴儿床环境的舒适程度直接影响到婴儿的生活质量,为此文中提出设计一款基于嵌入式技术,以AT89S52 为核心的婴儿床智能风扇。系统采用主辅式结构设计,以数字温度传感器 AT89S52、电容式湿度传感器HS1101...

关键字: AT89S52 智能婴儿床 DS18B20 蓝牙 BLE4.0

摘 要:文章介绍了对传统R-T电阻温度系数仪的改进,将原本模拟式的温度测量仪器改为数字式恒温控制仪器。仪器基于STC89C51单片机数字式恒温控制系统,拥有控制灵活、操作简单等特点,能够自主设定仪器内部铜丝电阻的温度并维...

关键字: R-T温度系数测定仪 STC8951 DS18B20 数字式恒温控制仪器

摘要:基于美国DALLAS公司推出的数字温度传感器DS18B20,给出了一个温度测量与显示系统的设计方法。该系统由51单片机AT89C52控制,并由8位数码管显示实时温度,通过该系统可设置温度上限与下限,以便在温度超过限...

关键字: 单片机 AT89C52 DS18B20 温度测量

摘 要:介绍了单片无线收发器nRF2401的主要特点及工作模式。给出了利用DS18B20数字温度传感器、AT- megal6和nRF2401实现无线分布式温度测量系统的设计方法,同时给出了系统的硬件结构以及无线收发和温度...

关键字: nRF2401 DS18B20 无线通信 温度测量
关闭
关闭