单总线驱动程序(DS18B20)

发布者:温暖梦想最新更新时间:2016-12-31 来源: eefocus关键字:单总线  驱动程序  DS18B20 手机看文章 扫描二维码
随时随地手机看文章

sbit DQ=P3^7;                    //DS18B20数据传输线接单片机的相应的引脚

 

void delaymm(uint z)

{

     uint x,y;

     for(x=z;x>0;x--)

     for(y=110;y>0;y--);

}

 

 //向DS18B20读一字节数据 ,从低位开始读

ReadOneChar(void)       

{

     unsigned char i=0;         

     unsigned char dat=0;

    for (i=8;i>0;i--)      

         {

                 DQ=1;

                delay(1);

                DQ=0;     

                dat>>=1;  //把读到的左移一位,形成了一个字节

                DQ=1;

            if(DQ)

              dat|=0x80;   //如果最DQ是1的话,最高位置1

         delay(4);

         }

    return(dat);

}

 

//向DS18B20写一字节数据,从最低位开始写

void WriteOneChar(unsigned char dat) 

{

     unsigned char i=0;         

     for(i=8;i>0;i--) 

     {

         DQ=0;   

         DQ=dat&0x01;  //如果最低位是1的话则写1

         delay(5);

         DQ=1;

         dat>>=1;  //左移一位,如把i = 8,经过比较,符合,i = 7是第一次左移一位,使之在下一个循环比较的是第二位&0X01

     }

     delay(4);

}

 

void Init_DS18B20(void)/*函数功能:DS18B20初始化子程序*/

{

     unsigned char x=0;

     DQ=1;                       //DQ先置高

     delay(8);              //延时

     DQ=0;                  //发送复位脉冲

     delay(85);             //延时(>480ms)

     DQ=1;                       //拉高数据线

     delay(14);             //等待(15~60ms)

}

 

//函数功能:向DS18B20读温度值

ReadTemperature(void) 

     Init_DS18B20();               //初始化

     WriteOneChar(0xcc);         //跳过读序列号的操作

     WriteOneChar(0x44);         //启动温度转换

     delaymm(125);                  //转换需要一点时间,延时

     Init_DS18B20();               //初始化

     WriteOneChar(0xcc);         //跳过读序列号的操作

     WriteOneChar(0xbe);         //读温度寄存器(头两个值分别为温度的低位和高位)

     delaymm(125);

     tempL=ReadOneChar();        //读出温度的低位LSB

     tempH=ReadOneChar();        //读出温度的高位MSB 

     //温度转换,把高低位做相应的运算转化为实际温度

     temperature=((tempH*256)+tempL)*0.0625;

     delay(200);

     return(temperature);

}


关键字:单总线  驱动程序  DS18B20 引用地址:单总线驱动程序(DS18B20)

上一篇:单片机小小常识
下一篇:串行通信采用奇偶校验方式发送数据

推荐阅读最新更新时间:2024-03-16 15:28

单片机温度检测报警程序(ds18b20
程序采用数字温度采集芯片 ds18b20 获取温度 分辨率为12位 可以由此程序获的更低分辨率温度 ds18b20 只有三个i/o接口 其中两个为电源引脚 一个为数据总线 只需要一条口线通信 简化了分布式温度传感应用 无需外部元件 可用数据总线供电 电压范围为3.0 V至5.5 V 无需备用电源 测量温度范围为-55 ° C至+125 ℃ ds18b20 相关介绍: ds18b20 百度百科 Proteus 仿真: Code: #include reg51.h #include math.h #define uchar unsigned char // 宏定义uchar 为无符号字符 #define ui
[单片机]
单片机温度检测报警程序(<font color='red'>ds18b20</font>)
Windows98下硬件中断驱动程序的开发
摘 要: 介绍了Windows98的内核管理机制和应用程序权限级别,简述了在Windows98下进行虚拟驱动程序开发的几种工具和编程方法,并给出了借助VToolsD用C++语言编写的处理硬件中断的程序实例。 关键词: 虚拟设备驱动程序 VToolsD 中断服务例程 美国微软公司出品的Windows98以其友好的图形用户界面,在我国赢得了广泛的市场。在给广大办公环境工作人员带来方便的同时,也给不少工程技术人员带来了一些麻烦。一些原本在DOS下很容易编出的控制硬件的程序,现在在Windows98下就不那么容易实现了。作为一个完善的操作系统也必须能控制硬件,象DOS那样直接与硬件打交道是Windows98
[嵌入式]
带SPI接口的16位AD7705驱动程序
最近在做一个印度项目时,应用到16位AD转换器AD7705,此器件是AD公司推出的双通道16位 - (电荷平衡式)A/D转换器。具有高分辨率、宽动态范围、自校准,低功耗及优良的抗噪声性能,因此非常适用于仪表测量和工业控制等领域。16位无丢失代码;0.003%的非线性度;内部放大器可选择1,2,4,8,16,32,64,128;8种增益;输出数据更新速率可编程;具有自校准和系统校准功能,三线串行接口,可缓冲模拟输入;低功耗。经努力,目前已调通一个通道,现将驱动程序共享,愿起到抛砖引玉的作用。此程序在项目板上调试通过,而且测试精度极高,显示的电压值准确稳定。 #include iom16v.h #include macros.h #
[单片机]
基于STM32+ucos-II+DS18B20调试成功
前几天调试了一下DS18B20的程序,起初系统在裸奔的时候DS18B20可以很正常的读取数据。由于项目前期设计时添加了ucos实时操作系统。原以为把裸奔的程序移植过来就可以使用。结果悲剧发生了 如果做过这方面的朋友一定知道。添加后,你会发现系统不跑了,彻底的死掉了。原因在何处?经过一整天的查找,发现原来系统的时间片被占用了。导致ucos的ticks出现异常。 解决办法:一种方法是:修改OS_CPU_SysTickInit(void)函数,与delay函数进行兼容。在温度传感器延时的时候不影响操作系统的tick运行。这样就可以解决问题了。 还有一种方法就是,把18B20的延时定时器更换成TIM3或者是其他定时器。和系统的tick分开
[单片机]
STM32系列之LCD驱动接口与驱动程序介绍
STM32F103系列是没有内置LCD控制器接口的,如果要驱动LCD,需要一颗LCD图形驱动IC。STM32和LCD驱动IC的接口在STM32端是FSMC,FSMC接口提供各种存储器驱动信号也提供了驱动LCD驱动IC的各种信号。 一、FSMC简介 FSMC概览 如下图可以看到FSMC支持的存储器类型及提供的各种读写控制信号。 图1 2.FSMC 框图 图2 3.FSMC 内存地址空间分配 图3 二、LCD 接口 1.8080和6800接口 这两种接口类型是典型的LCD并行接口。接口信号分为:数据信号和控制信号。 数据信号支持8,9,16,18,24位等。 控制信号用来区分读、写及区分是向LCD寻址命令寄存器还是写L
[单片机]
STM32系列之LCD驱动接口与<font color='red'>驱动程序</font>介绍
MSP430与DS18B20数码管显示(中断法)
#include msp430x14x.h typedef unsigned char uchar; typedef unsigned int uint; /*****18B20部分的接口定义********/ #define DQ1 P1OUT |= BIT6 #define DQ0 P1OUT &= ~BIT6 #define DQ_in P1DIR &= ~BIT6 #define DQ_out P1DIR |= BIT6 #define DQ_val (P1IN & BIT6) /*****数码管部分的接口定义********/ #define wei_h P5OUT|= BIT5 #define wei_l P5OUT
[单片机]
51单片机DS18B20测量温度实验
实验任务 用一片DS18B20构成测温系统,测量的温度精度达到0.1度,测量的温度的范围在-20度到+50度之间,用4位数码管显示出来。 DPY-1实验板连接 用排线把JP-CODE连到JP8是,注意:a接P0.0;b接P0.1;c接P0.3…… 把JP-CS连到JP14上,注意:4H接P2.4;3H接P2.5;2H接P2.6;1H接P2.7; 连接好DS18B20注意极性不要弄反,否则可能烧坏。DS18B20的外型与常用的三极管一模一样,上图是它的管脚分布。用导线将JK—DS的DA端连到P3.1上。 硬件电路图 实验原理 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路
[单片机]
51单片机<font color='red'>DS18B20</font>测量温度实验
基于WinCE的CAN适配卡驱动程序的设计与实现
1 引言   WinCE是一种为多种嵌入式系统和产品设计的紧凑、高效、可升级的操作系统,WinCE 采用标准模式,其最主要的特征:为有限的硬件资源提供了多线程、多任务和完全优先级的计算环境。   WinCE操作系统支持两种类型的驱动程序:本地驱动程序(Build-In),是把设备驱动程序作为独立任务实现,直接在顶层任务中实现硬件操作,完成特有专用的驱动程序;流接口驱动程序,WinCE的I/O系统将设备程序作为内核过程实现,这种方式便于实现I/O子系统的层次模型,便于文件系统一起把设备作为特殊文件处理,提供统一的管理、统一的界面和统一的使用方法,并把设备、文件及网络通信组织成为一致的更高层次的抽象,为用户提供统一的系统服务和用户接口
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved