⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 +-

📁 基于51单片机的智能温度报警模块化编程
💻
字号:
#include"pinlink.h"
#include"delay.h"
#include"display.h"
#include"includehead.h"
bit Init_ds18b20(void)
{	
	bit flag=1;
	DQ=0;
	delaynus(60);//大于600us
	DQ=1;
	delaynus(2);//20us	
	flag=DQ;
	delaynus(25);//250us
	return flag;
	
}

void write_byte(unchar i)
{	
	unchar j;
	for(j=0;j<8;j++)
	{	
		DQ=0;
		delaynus(1);
		DQ= (bit)(i&0x01);
		delaynus(12);
		DQ=1;
		_nop_();
		_nop_();
		i>>=1;
	}
	DQ=1;
}

unchar read_byte(void)
{	
	unchar j,i;
	for(j=0;j<8;j++)
	{
		DQ=0;
		i>>=1;
		DQ=1;
		delaynus(1);
		if(DQ)
		i=i|0x80;
		delaynus(4);
		//DQ=1;
		delaynus(1);
	
	}
	DQ=1;
	return i;


	
}
unchar ds18b20(void)
{  unchar temph,templ;
	unchar *bp;//负数标志位
	uchar flag=0;
	bp=&flag;
	l1:Init_ds18b20();
	write_byte(0xcc);
	write_byte(0x44);
	delaynus(700);//每一种操作都要重复下init_ds10820, write_byte(0xcc)
	Init_ds18b20();
	write_byte(0xcc);
	write_byte(0xbe);
	templ=read_byte();
	temph=read_byte();
	if(temph==0xff&&templ==0xff) 
	goto l1;
	if(temph>7)//是负数取其补码,在显示的时处理显示'-'
	{
		flag=1;
		templ=~templ+1;
		temph=~temph;
	}
	temph=temph<<4;
	temph=temph+(templ>>4);//这里我只取了整数部分值,小数部分可用查表来作,或者放大基数来作
	templ=(templ&0x0f)*10/16;
	display(temph,bp,templ);
	return temph;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -