单总线上的所有处理均从初始化序列开始。初始化序列包括:
1、总线主机发出一复位脉冲,程序如下:
void Reset_18B20(void) //ds18b20复位程序
{
unsigned char i;
DS18B20=0;
i=110;
while(i>0)i--; //i循环减一,使循环结束的条件是i<=0
DS18B20=1;
i=6;
while(i>0)i--;
2、接着由从属器件送出存在脉冲,存在脉冲让总线控制器知道DS18B20 在总线上且已准备好操作,程序如下:
void Wait_18B20(viod) //等待程序,等待ds18b20应答
{
unsigned char i=255;
while(DS18B20)
{
i--;
if(i==0) return; //超时
}
while(~DS18B20)
{
i--;
if(i==0) return; //超时
}
i=6;
while(i>0)i--;
}
ds18b20的c语言程序
void dsreset(void) \/\/DS18B20初始化 { uint i;DS=0;i=103;
18b20初始化程序解释
首先需要明确的是,ds18B20作为单总线器件,它对时序要求比较高,否则是不能正常工作的。至于你问的程序注释,我说过了,本身写的已经很清楚了,大没有在去解释的必要。估计你有这样的问题,是本身对ds18b20的数据手册还不是很清楚,建议自己看看他的资料和用法,先把时序和一些概念搞清楚就好了。至于你...
急需用温度传感器ds18b20,数码管显示温度的单片机的C语言程序,运用的是...
0x0fd,0x0fb,0x0f7}; uchar data disdata[5]; uint tvalue; \/\/温度值 uchar tflag; \/\/温度正负标志 \/***ds1820程序***\/ void delay_18B20(unsigned int i) \/\/延时1微秒 { while(i--); }void ds1820rst() ...
DS18B20数字温度计
START: MOV SP,#60H ;开机初始化 MOV P0,#0FFH MOV P1,#0FEH MOV P2,#0FFH MOV P3,#0FFH MAIN: LCALL GET_TEMPER ;调用读温度子程序 LCALL DISP ;调用数码管显示子程序 AJMP MAIN ;重复循环 ;--- 读DS18B20传感器的温度值 --- GET_TEMPER:SETB P3.3 LCALL...
求STC89C52单片机与DS18B20传感器用Keil c语言设计程序
\/\/DS18B20单线温度检测的应用样例程序 \/ DS18B20处理的顺序:1.初始化 2.ROM操作命令 3.存储器操作命令 4.处理\/数据 \/ include<REG52.H> include<math.h> include<INTRINS.H> define uchar unsigned char define uint unsigned int;\/***\/ define duanx P0 \/\/数码管的段 sbit seg1=P2^0;...
求基于AT89C51单片机的DS18B20温度检测程序(用C语言)
\/\/DS18B20的读写程序,数据脚P3.3 \/\/ \/\/温度传感器18B20汇编程序,采用器件默认的12位转化 \/\/ \/\/最大转化时间750微秒,显示温度-55到+125度,显示精度 \/\/ \/\/为0.1度,显示采用4位LED共阳显示测温值 \/\/ \/\/P0口为段码输入,P24~P27为位选 \/\/ \/***\/ include "reg51.h"include...
用C语言制作基于单片机的数字温度计设计的原理图好程序 51单片机_百度...
18b20.h的原程序 define uchar unsigned char sbit DQ=P1^2;unsigned int temp2;unsigned int temp;unsigned temp1;int xs;int total;void delay_18B20(unsigned int i){ while(i--);} \/***ds18b20初始化函数***\/ void delay(unsigned int i)\/\/延时 1ms 子程序 { unsigned char j;while(i...
用LCD1602和DS18B20显示温度和时间C语言程序
DS18B20 ERROR PLEASE CHECK 蜂鸣器报警。DS18B20检测正常,LCD1602显示: DS18B20 OK TEMP: 100.8℃如果温度值高位为0,将不显示出来。你可以通过拔插DS18B20查看DS18B20的检测功能。\/* ME300B单片机开发系统演示程序 - DS18B20温度显示 *\/\/* LCD1602显示 *\/\/* 作者: gguoqing *\/\/*Copyright(C)伟纳电子 www.willar.co...
基于AT89C51单片机和DS18B20温度传感器、LCD1602液晶显示的高精度数字温...
temp_value+=(a&0xf0)>>4;value=a&0x0f;val=temp_value+value;return(val);} 以上是DS18B20的驱动程序。然后在主程序中直接调用函数就可以了。以上是在主程序中的调用,你看关于温度的那个就可以。include "reg51.h"include "18b20.h"define uchar unsigned char define uint unsigned int ...
怎么修改ds18b20的转换精度?最好有具体的C语言程序。
实际应用中精度不用设置,让其为最大12位,只需在程序中按需要的精度要求舍弃后面的位数即可。采用右移的办法舍弃,有个数码管显示的程序你可参考一下:uint16 temp;uint8 n=0; \/\/N=0符号为正 \/* if(tem>6348) \/\/温度值正负判断 { tem=65536-tem; \/\/负温度求补码 n=1; \/\/标志位置n=1...