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

📄 ds18b20成功版.txt

📁 温度传感器ds18b20的完整程序
💻 TXT
字号:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define point 0x80
#define nul 0

sbit dq= P2^2;
sbit we=P2^7;
sbit de=P2^6;
int temper;
uchar cc;

uchar code table[]={
	0x3f,0x06,0x5b,0x4f,
	0x66,0x6d,0x7d,0x07,
	0x7f,0x6f,0x77,0x7c,
	0x39,0x5e,0x79,0x71,0x02,0
};

void show0(uint);
void show1(uint);
void shuma(uint,uint);
void process(uchar,uchar);

void delay(uint us){ 
int s;
for(s=0;s<us;s++); 
}

void rst(){
dq=1;
delay(2);
dq=0;
delay(40); //精确延时 480~960us 
dq=1;
delay(18);
}

uint read(){
int i;
uint u=0;
for(i=0;i<8;i++){
	dq=1;
	delay(1);
	dq=0;
	u>>=1;
	dq=1;
	if(dq)u|=0x80;
	delay(4);
}
return(u);
}

void write(uchar ku){
int i;

for(i=0;i<8;i++){
	dq=0;
	dq=ku&0x01;
	delay(3);
	dq=1;
	ku>>=1;
}
}

void read0(){
uchar tpl;
uchar tph;
rst();
write(0xcc);
write(0x44);
rst();
write(0xcc);

cc=0xfe;

write(0xbe);
tpl=read();
tph=read();
process(tpl,tph);
}

void main(void){
while(1){
	read0();//读温度子程序读到的温度放在全局变量temper  
           //中可以直接显示这个的内容     
}
}

void process(uchar l,uchar h){
uchar b,c,d;
float a;
if(h&0xf0==0xf0){
	shuma(17,nul);
	cc=_crol_(cc,1);
}

else{
	shuma(18,nul);
	cc=_crol_(cc,1);}
d=h&0x0f;
c=l&0xf0;
b=_crol_(d,4)+_cror_(c,4);
shuma(b/10,nul);cc=_crol_(cc,1);
shuma(b%10,point);cc=_crol_(cc,1);
a=(l&0x0f)*0.625;
shuma((int)a,nul);cc=_crol_(cc,1);
shuma(((int)(a*10))%10,nul);
}

void shuma(uint aa,uint N_or_P){
we=1;
P0=cc;
we=0;
de=1;
P0=table[aa]+N_or_P;
delay(50);
}

⌨️ 快捷键说明

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