• 大小: 100KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-08-28
  • 语言: 其他
  • 标签: DS18B20  

资源简介

用DS18B20温度传感器检测温度并显示在数码管上,当温度超过32度时自动报警(蜂鸣器响)

资源截图

代码片段和文件信息

#include       			
#include   //包含_nop_()函数定义的头文件
#define uchar unsigned char
#define uint unsigned int
sbit beep=P3^4;
sbit JDQ=P2^4;
sbit we1=P2^0;
sbit we2=P2^1;
sbit we3=P2^2;
sbit we4=P2^3;
uchar shigex1x2;
uchar limith=32limitl=30temp;
uchar code tab[] = {0xc00xf90xa40xb00x990x920x820xf80x800x90};  //不带小数点
uchar code tab1[11]={0X400X790X240X300X190X120X020X780X000X100xc6};  //带点的     //0x39是C

uchar TL;     
uchar TH;    
uchar TN;      
uchar TD;       

 void delaynms(uchar n)
 {
   uchar ij;
for(i=0;i for(j=330;j>0;j--);
 }

sbit DQ=P3^5;
uchar time;   

bit Init_DS18B20(void)
{
 bit flag;     
 DQ = 1;       
 for(time=0;time<2;time++) 
     ;
 DQ = 0;       
 for(time=0;time<200;time++)  
     ;        
 DQ = 1;        
  for(time=0;time<10;time++)
     ;       
 flag=DQ;            
 for(time=0;time<200;time++)  
      ;
 return (flag);
}


uchar ReadOneChar(void)
 {
uchar i=0;
uchar dat;   
for (i=0;i<8;i++)
 {
   
   DQ =1;      
   _nop_();      
   DQ = 0;      
   dat>>=1;
   _nop_();        
   DQ = 1;       
   for(time=0;time<2;time++)
             ; 
if(DQ==1)          
      dat|=0x80; 
else
dat|=0x00;
        
   for(time=0;time<8;time++)
       ;        
    }                     
 return(dat);      
}

WriteOneChar(uchar dat)
{
uchar i=0;
for (i=0; i<8; i++)
 {
  DQ =1;        
  _nop_();     
  DQ=0;                 
  DQ=dat&0x01;  
                        
 for(time=0;time<10;time++)
     ;           
  DQ=1;              
  for(time=0;time<1;time++)
  ;          
  dat>>=1;      
 }
  for(time=0;time<4;time++)
              ;      
}

 
void ReadyReadTemp()
{
        Init_DS18B20();    
WriteOneChar(0xCC);
WriteOneChar(0x44);   
    for(time=0;time<100;time++)
            ;        
Init_DS18B20();    
WriteOneChar(0xCC); 
WriteOneChar(0xBE); 
}



void display_temp1(uchar x)
{
 uchar kl;     
k=x/10;            
l=x%10;             

P0=0xff;
we1=0;
P0=tab[k];
delaynms(10);
we1=1;

P0=0xff;
we2=0;
P0=tab1[l];
delaynms(10);
we2=1;
P0=0xff;

delaynms(50);              
 }

 void display_temp2(uchar x)
{
 uchar ab;
a=x/10;
b=x%10;

P0=0xff;
we3=0;
P0=tab[b];
delaynms(10);
we3=1;

P0=0xff;
we4=0;
P0=tab1[10];
delaynms(10);
we4=1;
P0=0xff;
delaynms(50);             
}


void tempdisplay()
{
uchar w0w1;
ReadyReadTemp();     
    TL=ReadOneChar();    
TH=ReadOneChar();    
TN=TH*16+TL/16;      
    TD=(TL%16)*10/16;   
w0=TN<<4;
w1=TD>>4;                  
temp=w0+w1;
    display_temp1(TN);   
    display_temp2(TD);   
        delaynms(10);   
}


 void main(void)
 {
JDQ=1;
  beep=0;   
  Init_DS18B20();
  delaynms(5);           
   while(1)   

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     186992  2010-07-17 08:01  程序-----设置温度上下限并报警(32)度\Backup Of STC89C52共阳实验板.DBK

     文件     191386  2010-07-17 09:03  程序-----设置温度上下限并报警(32)度\Last Loaded STC89C52共阳实验板.DBK

     文件     182058  2010-07-17 22:04  程序-----设置温度上下限并报警(32)度\STC89C52共阳实验板.DSN

     文件       1054  2010-07-19 17:17  程序-----设置温度上下限并报警(32)度\STC89C52共阳实验板.PWI

     文件       3322  2010-07-18 09:46  程序-----设置温度上下限并报警(32)度\设置温度上下限并报警

     文件       3209  2010-07-19 21:40  程序-----设置温度上下限并报警(32)度\设置温度上下限并报警.c

     文件       1843  2010-07-18 09:46  程序-----设置温度上下限并报警(32)度\设置温度上下限并报警.hex

     文件         72  2010-07-18 09:46  程序-----设置温度上下限并报警(32)度\设置温度上下限并报警.lnp

     文件       7070  2010-07-18 09:46  程序-----设置温度上下限并报警(32)度\设置温度上下限并报警.LST

     文件      14915  2010-07-18 09:46  程序-----设置温度上下限并报警(32)度\设置温度上下限并报警.M51

     文件       4969  2010-07-18 09:46  程序-----设置温度上下限并报警(32)度\设置温度上下限并报警.OBJ

     文件       1024  2010-07-19 21:40  程序-----设置温度上下限并报警(32)度\设置温度上下限并报警.Opt

     文件        218  2010-07-19 21:40  程序-----设置温度上下限并报警(32)度\设置温度上下限并报警.plg

     文件       2102  2010-07-19 21:38  程序-----设置温度上下限并报警(32)度\设置温度上下限并报警.Uv2

    .......      1203  2010-07-19 21:38  程序-----设置温度上下限并报警(32)度\设置温度上下限并报警_Opt.Bak

    .......      1694  2010-07-18 20:38  程序-----设置温度上下限并报警(32)度\设置温度上下限并报警_Uv2.Bak

     目录          0  2010-07-19 21:40  程序-----设置温度上下限并报警(32)度

----------- ---------  ---------- -----  ----

               603131                    17


评论

共有 条评论