📄 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 + -