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

📄 ds18b20.c

📁 温度传感器的C51源程序
💻 C
字号:
/*DS18b20温度传感器

p3.4作为数据传输口 
p1.0~3控制显示led的位选  共阳极  经过PNP后 低电平有效
p0口是led的字形码
晶振:11.0592M
设计者:陈仲库
设计日期:2006年3月29日
*/
#include<reg51.H>
//#include<math.h>
//#include<stdio.h>
//#include <ctype.h>

sbit DQ= P3^4;
sbit p13=  P1^3;
sbit p12= P1^2;
sbit p11= P1^1;
sbit p10= P1^0;
int flag;
unsigned char disp1, disp2,disp3,disp0;
unsigned char code ch[]={0xc0,0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82,0xf8,0x80,0x90};    /*0~9*/

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

void disp() 
  {  
       P0 = 0xff; 
       P0 = disp3;
       p13=0;
       delay(150);
       p13=1;   


       P0 = 0xff;
       P0= disp2;
       p12=0;
       delay(150);
       p12=1;

       P0 = 0xff;
       P0 = disp1;
       p11=0;
       delay(150);
       p11=1;

       P0 = 0xff;
       P0 = disp0;
       p10=0;
       delay(150);
       p10=1;
      }

void rst(void)           
{
 DQ = 1;   
 delay(2);  
 DQ = 0;    
 delay(30); //精确延时  480~960us
 DQ = 1;    
 delay(8); 
}

unsigned int read(void)              
{ 
int i=0;
unsigned int u=0;
 for (i=0;i<16;i++)
{                                                                      
  DQ=0;
  u>>=1;
  DQ=1;
  if(DQ) u|=0x8000;
  delay(4);
}
 return (u);
}

void write(unsigned char ku)          
{  
int i=0;
   for (i=0;i<8;i++)
{ 
  DQ=0;
  DQ =ku&0x01;
  delay(3);
  DQ=1;
  ku>>=1;
}
} 

void read0(void)                 
 {   
int t1,t2, t0;
unsigned int tp;
unsigned int lsb;
   rst();
   write(0xCC);
   write(0x44);
   rst();
   write(0xCC);
   write(0xBE);
   tp=read();    

lsb=(unsigned int)(tp*6.25);	//
   t0=lsb/1000;
   disp0 = ch[t0];   //第1位,最高位p1.2
   if(!t0) disp0 = 0xff; 
   t2= lsb%1000;
   t1=t2/100;
   disp1= ch[t1]&0x7f;
   t1=t2%100;
   t2=t1/10;
   disp2=ch[t2]; //第3位,最低位p1.2
   disp3=ch[t1%10];//第4位,最低位p1.3

}
   
void  main(void)  
{              
  while(1) 
{ 	                   
  read0();
  disp();
   }
}

⌨️ 快捷键说明

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