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

📄 ds18b20.txt

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

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
};

void show(uint);
void shuma(uint);

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<4;i++)	u>>=1;
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(){
uint tp;
uint lsb;
rst();
write(0xCC);
write(0x44);
rst();
write(0xCC);
cc=0xfb;
write(0xBE);
tp=read();
lsb=read();
temper=lsb/100;
show(lsb);
show(tp);
}

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

void show(uint aa){
uint b,c;
b=aa/10;shuma(b);
cc=_crol_(cc,1);
c=aa%10;shuma(c);
cc=_crol_(cc,1);
}

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

⌨️ 快捷键说明

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