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

📄 text2.c

📁 DS18B20的51驱动。 用STC89C52成功测试。
💻 C
字号:
#include <reg52.h>
code unsigned char duma[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x63,0x39};
code unsigned char xuan[] = {0xfe,0xfd,0xfb,0xf7};
unsigned char dis[4];
unsigned int sdata;
sbit dat=P2^7;

void delay1(unsigned int t){
	unsigned int i;
	while (t--){
		for (i=0;i<125;i++){}
	}
}

void tmreset(void){
	unsigned int i;
	dat=0;
	i=103;while(i>0)i--;
	dat=1;
	i=4;while (i>0)i--;
}

void tmpre(){
	unsigned int i;
	while(dat);
	while(~dat);
	i=4;while(i>0)i--;
}

bit tmrbit(){
	unsigned int i;
	bit d;
	dat=0;i++;
	dat=1;i++;i++;
	d=dat;
	i=8;while(i>0)i--;
	return (d);
}
unsigned char tmrbyte(){
	unsigned char i,j,d;
	d=0;
	for(i=1;i<=8;i++){
		j=tmrbit();
		d=(j<<7)|(d>>1);
	}
	return(d);
}
void tmwbyte(unsigned char d){
	unsigned int i;
	unsigned char j;
	bit testb;
	for (j=1;j<=8;j++){
		testb=d&0x01;
 		d=d>>1;
 		if(testb){
			dat=0;
     		i++;i++;
     		dat=1;
     		i=8;while(i>0)i--;
 		}
 		else{
			dat=0;
 			i=8;while(i>0)i--;
 			dat=1;
 			i++;i++;
		}
	}
}

void tmstart(){
	tmreset();
	tmpre();
	delay1(1);
	tmwbyte(0xcc);
	tmwbyte(0x44);
}


unsigned int tmrtemp () {
	unsigned char a,b,y1;
	unsigned int y3,y2;
	tmreset();
	tmpre();
	delay1(1);
	tmwbyte(0xcc);
	tmwbyte(0xbe);
	a=tmrbyte();
	b=tmrbyte();
	y1=a;
	y2=b<<8;
	y3=y1|y2;
	y3=y3*10/16;
	return(y3);
}
void delay(){
	int i;
	for(i=0;i<100;i++);//100shanshuo
}
void bcd(){

	dis[0] = sdata/100;
	dis[1] = (sdata%100)/10;
    dis[2] = sdata%10;
	dis[3] = 0;
}
void show(){
	unsigned char s;
	for(s=0;s<4;s++){
		if(s==1)
			P0 = duma[dis[s]]|0x80;
		else
			P0= duma[dis[s]];
		P1= xuan[s];
		delay();
	   }
}

void main(){
	char i;
	sdata=0;
	while(1){
		tmstart();//zai si xunhuan yilei	
		sdata=tmrtemp();
		if(sdata>320)P3=0x07;
		else if(sdata>310)P3=0x8b;
		else if(sdata>300)P3=0x0e;		
		else P3=0x4d;
		for(i=0;i<30;i++){
			bcd();show();
		}
	}
}

⌨️ 快捷键说明

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