php读取ds18b20,DS18B20_单总线协议

.H文件

#ifndef _ONEWIRE_H

#define _ONEWIRE_H

#include "STC15F2K60S2.H"

#include

#define OW_SKIP_ROM 0xcc

#define DS18B20_CONVERT 0x44

#define DS18B20_READ 0xbe

//IC引脚定义

sbit DQ = P1^4;

//函数声明

extern void Delay_OneWire(unsigned int t);

extern void Write_DS18B20(unsigned char dat);

extern bit Init_DS18B20(void);

extern unsigned char Read_DS18B20(void);

extern void Delay1ms();

extern unsigned char read_temp();

#endif

.C文件

#include "onewire.h"

//单总线延时函数

void Delay_OneWire(unsigned int t)

{

while(t--);

}

void Delay1ms()//@11.0592MHz

{

unsigned char i, j;

_nop_();

_nop_();

_nop_();

i = 11;

j = 190;

do

{

while (--j);

} while (--i);

}

//DS18B20芯片初始化

bit Init_DS18B20(void)

{

bit initflag = 0;

DQ = 1;

Delay_OneWire(12);

DQ = 0;

Delay_OneWire(80);

DQ = 1;

Delay_OneWire(10);

initflag = DQ;

Delay_OneWire(5);

return initflag;

}

//通过单总线向DS18B20写一个字节

void Write_DS18B20(unsigned char dat)

{

unsigned char i;

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

{

DQ = 0;

DQ = dat&0x01;

Delay_OneWire(5);

DQ = 1;

dat >>= 1;

}

Delay_OneWire(5);

}

//从DS18B20读取一个字节

unsigned char Read_DS18B20(void)

{

unsigned char i;

unsigned char dat;

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

{

DQ = 0;

dat >>= 1;

DQ = 1;

if(DQ)

{

dat |= 0x80;

}

Delay_OneWire(5);

}

return dat;

}

unsigned char read_temp()

{

unsigned char temp, high, low;

Init_DS18B20();

Write_DS18B20(0xcc);

Write_DS18B20(0x44);

Delay1ms();

Init_DS18B20();

Write_DS18B20(0xcc);

Write_DS18B20(0xbe);

low=Read_DS18B20();

high=Read_DS18B20();

temp=(high<<4)|(low>>4);

return temp;

}

本文分享 CSDN - KGback。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle官方文档查看方法,oracle官方文档_查看初始化参数(举例)

深蓝的blog&#xff1a;http://blog.csdn.net/huangyanlong/article/details/46864217记录了一下&#xff0c;使用oracle11g联机文档&#xff0c;查看初始化参数的步骤。如果想查看&#xff0c;可以修改的初始化参数的概念信息&#xff0c;可以点击“ChangingParameter Values …

matlab usewhitebg,Matlab的:geo​​show的網格和框架

對於問題1和問題2&#xff0c;原因是軸總是在圖的後面。因此&#xff0c;一種解決方案是在當前的軸上添加新軸並顯示網格&#xff0c;框和自定義刻度。對於問題3&#xff0c;我使用regexprep以取代S後綴負緯度(同上爲經度)。我唯一的問題是經度0將是0E&#xff0c;緯度0,0N。這…

oracle p l,使用P.A.L制作便携软件 (一) 基本原理 | 么么哒拥有者

因爱好自学所得&#xff0c;并非专业&#xff0c;此处只是抛砖引玉&#xff0c;欢迎相互交流、学习、提高&#xff0c;辛苦码字不易&#xff0c;如转载望保留链接出处。简单介绍&#xff1a;P.A.L是PortableApps.com Launcher的简称&#xff0c;它是PortableApps.com开发的便携…

oracle form执行后左上角没出现oracle标记,oracle form学习笔记

新增form步骤打开模板TEMPLATE&#xff0c;将其改成自己所要的名称&#xff0c;删除Data Blacks中的BLOCKNAME,DETAILBLOCK,删除Canvases中的BLOCKNAME,删除Windows中的BLOCKNAME,新增自己的Windows&#xff0c;Canvases&#xff0c;DateBlacks&#xff0c;在form级别的PRE-FOR…

linux 建oracle分区表,Oracle 10g 11g分区表创建举例

1.3. 创建其他类型分区表1.3.1. 用多列分区键创建范围分区表SQL> create table aning_mutilcol_range2 (aning_id number,3 aning_name varchar2(100),4 aning_year number,5 aning_month number,6 aning_day number,7 aning_amount number8 )9 partition by range (aning_y…

php carbon 连续日期,日期及时间处理包 Carbon 在 Laravel 中的简单使用

在编写 PHP 应用时经常需要处理日期和时间&#xff0c;这篇文章带你了解一下 Carbon – 继承自 PHP DateTime 类的 API 扩展&#xff0c;它使得处理日期和时间更加简单。Laravel 中默认使用的时间处理类就是 Carbon。namespace Carbon;class Carbon extends \DateTime{// code …

chmod g s oracle,chmod

chmod(1)名称chmod - 更改文件的权限模式用法概要chmod [-fR] absolute-mode file...chmod [-fR] symbolic-mode-list file...chmod [-fR] acl_operation file...chmod [-fR] [- named_attribute]...attribute_specification_list file...描述chmod 实用程序可更改或分配文件的…

linux lzo 压缩文件,Linux常用压缩和解压命令

.tar 解包 tar xvf filename.tar.tar 打包 tar cvf filename.tar dirname.gz 解压1 gunzip filename.gz.gz 解压2 gzip -d filename.gz.gz 压缩 gzip filename.tar.gz 和 .tgz 解压 tar zxvf filename.tar.gz.tar.gz 和 .tgz 压缩 tar zcvf filename.tar.gz dirname.bz2 解压1 …

linux进程cpu时间片,能讲一下在Linux系统中时间片是怎么分配的还有优先级的具体算法是...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼图 1 RT-Linux结构RT -Linux的关键技术是通过软件来模拟硬件的中断控制器。当Linux系统要封锁CPU的中断时时&#xff0c;RT-Linux中的实时子系统会截取到这个请求&#xff0c;把它记录下来&#xff0c;而实际上并不真正封锁硬件中断…

linux中进行远程服务器连机可以采用telnet,端口号为,使用telnet测试指定端口的连通性...

原标题&#xff1a;使用telnet测试指定端口的连通性telnet 是一个阉割版的 ssh &#xff0c;它数据不加密&#xff0c;数据容易被盗窃&#xff0c;也容易受中间人攻击&#xff0c;所以默认情况下 telnet 端口是必须要被关闭的。telnet为用户提供了在本地计算机上完成远程主机工…

linux xd命令,看Linux文件的内容:用cat,less,more,head,tail,nl,od,xxd,gv,xdvi命令

使用命令在Linux系统中查看文件的内容是Linux管理员的基本技能之一&#xff0c;在Linux中&#xff0c;有许多应用程序以不同的方式显示文件内容。您可以使用cat、less、more、head、tail、nl、od、xxd、gv、xdvi命令来查看文本文件或任何其他文件。为了对此进行测试&#xff0c…

linux远程拷贝免手动输入密码,scp远程拷贝避免输入密码

使用scp远程拷贝文件到指定服务器上&#xff0c;在客户端生成密钥放在需要验证的服务器上&#xff0c;这样再次连接后直接登陆&#xff0c;避免输入密码。设定场景我们需要将tomcat服务器(client1)192.168.30.20 上的catalina.out日志文件&#xff0c;每天使用指定用户拷贝到日…

玩转linux文件描述符和重定向,玩转Linux文件描述符和重定向

本文介绍linux中文件描述符与重定向的相关知识&#xff0c;文件描述符是与文件输入、输出相关联的整数&#xff0c;它们用来跟踪已打开的文件。有需要的朋友参考下。原文出处&#xff1a;linux下的文件描述符是与文件输入、输出相关联的整数。它们用来跟踪已打开的文件。最常见…

linux哪个指令可以设定使用者的密码,linux期末考试练习题 2

一、单项选择题1、下面不是对Linux操作系统特点描述的是()A、良好的可移植性B、单用户C、多用户D、设备独立性2、查看创建目录命令mkdir的帮助文档可以使用()A、mkdir -hB、man mkdirC、help mkdirD、info mkdir3、用标准的输出重定向(>)像”>file01”能使文件file01的数…

linux脚本格式模板,Linux Shell 常见的命令行格式简明总结

#在后台执行 cmd 指令cmd &#命令序列. 在同一行执行多个命令cmd1 ; cmd2#在当前 shell 中以一组的形式执行多个命令{ cmd1 ; cmd2 ; }#在子 shell 中以一组的形式执行多个命令(cmd1 ; cmd2)#管道. 以 cmd1 的执行输出作为 cmd2 的输入cmd1 | cmd2#命令替换. 以 cmd2 的执行…

linux怎么用命令打开wine,Linux系统运维:10分钟教你如何使用Wine在Linux下玩魔兽世界...

本文主要向大家介绍了Linux系统运维的如何使用Wine在Linux下玩魔兽世界&#xff0c;通过具体的步骤向大家展现&#xff0c;希望对大家学习Linux系统运维有所帮助。目标&#xff1a;在 Linux 中运行魔兽世界发行版&#xff1a;适用于几乎所有的 Linux 发行版。要求&#xff1a;具…

linux中如何查看某个端口是否被占用,LINUX中如何查看某个端口是否被占用

之前查询端口是否被占用一直搞不明白&#xff0c;问了好多人&#xff0c;终于搞懂了&#xff0c;现在总结下&#xff1a;1.netstat -anp |grep 端口号如下&#xff0c;我以3306为例&#xff0c;netstat -anp |grep 3306(此处备注下&#xff0c;我是以普通用户操作&#…

linux实现自己的write函数,Linux 内核源码阅读 - write 系统调用的实现

最近在看write系统调用的实现&#xff0c;虽然还有一下细节不是很清楚&#xff0c;但是大致的实现机理还是有一定的理解了。总结如下&#xff1a;这里假设最普通的情况&#xff0c;不考虑Direct IO 的情况。从全家的高度看&#xff0c;要往一个文件中写入内容&#xff0c;需要一…

linux7.0使用教程,CentOS7.0使用手册精编.pdf

CentOS7.0 手册第一部分&#xff1a;显卡驱动安装篇 (针对单显卡而言)或许CentOS7.0 版本是遇到的装显卡驱动最烦的一个&#xff0c;相比Ubuntu 、CentOS7.0 之前版本(如&#xff1a;CentOS6.5、CentOS6.4 )而言&#xff0c;操作步骤如下&#xff1a;由于笔者我的显卡是华硕圣骑…

linux中s权限大小写的区别,Linux中的权限

1.文件与目录权限1)UID与GIDUIDUID是一个数值&#xff0c;是Linux系统中唯一的用户标识&#xff0c;用于区别不同的用户。在系统内部管理进程和文件保护时使用UID字段。在Linux系统中&#xff0c;注册名和UID都可以用于标识用户&#xff0c;只不过对于系统来说UID更为重要&…