DS18B20单总线多点式测温系统教学文案.docx

上传人:b****6 文档编号:7480096 上传时间:2023-05-11 格式:DOCX 页数:23 大小:21.03KB
下载 相关 举报
DS18B20单总线多点式测温系统教学文案.docx_第1页
第1页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第2页
第2页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第3页
第3页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第4页
第4页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第5页
第5页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第6页
第6页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第7页
第7页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第8页
第8页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第9页
第9页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第10页
第10页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第11页
第11页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第12页
第12页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第13页
第13页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第14页
第14页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第15页
第15页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第16页
第16页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第17页
第17页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第18页
第18页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第19页
第19页 / 共23页
DS18B20单总线多点式测温系统教学文案.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

DS18B20单总线多点式测温系统教学文案.docx

《DS18B20单总线多点式测温系统教学文案.docx》由会员分享,可在线阅读,更多相关《DS18B20单总线多点式测温系统教学文案.docx(23页珍藏版)》请在冰点文库上搜索。

DS18B20单总线多点式测温系统教学文案.docx

DS18B20单总线多点式测温系统教学文案

 

DS18B20单总线多点式测温系统

DS18B20单总线多点式测温系统1

(2011-01-1519:

53:

40)

转载

标签:

ds18b20

多点测量

分类:

DS18B20

主文件:

#include

#include

unsigned intshu[]={0x30,0x31,0x32,0x33,0x34,0X35,0x36,0x37,0x38,0x39};

unsignedlongt;

 voidflcd_1602()          //当为负温度时,液晶显示可以高位为0屏蔽.

 { 

  init(0x80);write_data(0x4e);//NO 

  init(0x81);write_data(0x4f);

  init(0x82);write_data(0x80);

  

  init(0x85);write_data(0x74);//temperature

  init(0x86);write_data(0x65);

  init(0x87);write_data(0x6d); 

  init(0x88);write_data(0x70); 

  init(0x89);write_data(0x65); 

  init(0x8a);write_data(0x72);

  init(0x8b);write_data(0x61); 

  init(0x8c);write_data(0x74); 

  init(0x8d);write_data(0x75); 

  init(0x8e);write_data(0x72);

  init(0x8f);write_data(0x65);

 

   init(0xc0);write_data(0x80);

  init(0xc1);write_data(0x80);

  init(0xc2);write_data(0x69);//is:

  init(0xc3);write_data(0x73); 

  init(0xc4);write_data(0x3a);

 

  if((t/1000)!

=0)

 {init(0xc5);write_data(0x2d); 

    init(0xc6);write_data(shu[t/1000]);

 init(0xc7);write_data(shu[t/100]); 

 }

 else

 {init(0xc5);write_data(0xfe); 

    init(0xc6);write_data(0x2d);

 init(0xc7);write_data(shu[t/100]); 

 }

 init(0xc8);write_data(0x2e);

   init(0xc9);write_data(shu[(t0)/10]);

 init(0xca);write_data(shu[t]);

 init(0xcb);write_data(0x27);

 init(0xcc);write_data(0x43);

 init(0xcd);write_data(0x80);

 init(0xce);write_data(0x80);

 init(0xcf);write_data(0x80);

 }

 voidlcd_1602()             //当为正温度时,液晶显示可以高位为0屏蔽.

 { init(0x80);write_data(0x4e);//NO 

  init(0x81);write_data(0x4f);

  init(0x82);write_data(0x80);

  init(0x84);write_data(0x80);

  init(0x85);write_data(0x74);//temperature

  init(0x86);write_data(0x65); 

  init(0x87);write_data(0x6d); 

  init(0x88);write_data(0x70); 

  init(0x89);write_data(0x65);

  init(0x8a);write_data(0x72); 

  init(0x8b);write_data(0x61); 

  init(0x8c);write_data(0x74); 

  init(0x8d);write_data(0x75);

  init(0x8e);write_data(0x72);

  init(0x8f);write_data(0x65);

  init(0xc0);write_data(0x80);

  init(0xc1);write_data(0x80);

  init(0xc2);write_data(0x69);//is:

  init(0xc3);write_data(0x73); 

  init(0xc4);write_data(0x3a);

 if(t/10000!

=0)

 {init(0xc5);write_data(shu[t/10000]); 

    init(0xc6);write_data(shu[t/1000]);

    init(0xc7);write_data(shu[t/100]);

 }

 else

   {if((t/1000)!

=0)

     {init(0xc5);write_data(0xfe);

   init(0xc6);write_data(shu[t/1000]);

  init(0xc7);write_data(shu[t/100]);

  }

  else

      {init(0xc5);write_data(0xfe);

   init(0xc6);write_data(0xfe);

      init(0xc7);write_data(shu[t/100]);}

    }

   

    

 init(0xc8);write_data(0x2e);

 init(0xc9);write_data(shu[(t0)/10]);

 init(0xca);write_data(shu[t]);

 init(0xcb);write_data(0x27);

 init(0xcc);write_data(0x43);

 init(0xcd);write_data(0x80);

 init(0xce);write_data(0x80);

 init(0xcf);write_data(0x80);

 }

voidjiance()     //初始化,即检测是否存在DS18B20.

{unsignedchark=0;

 loop:

DS=1;

     DS=0;      //主机将总线从高电平拉到低电平

      del(100); //持续400us~960us

     DS=1;      //然后释放总线

     del(10);  //DS18B20检测到总线上升沿后,等待15us~60u后发低电平。

   k=DS;

   del(20);    //低电平至少要持续60~240us

    if(k==1)  //60~240us内若为高电平则要重新检测。

    gotoloop;

}

 read()                     //从DS18B20中读出数据

{unsignedchari;

 unsignedlongdate=0;

 for(i=0;i<16;i++)

 {DS=0;       //主机在某一时刻将总线从高电平拉到低电平.

  date>>=1;

          

    

 DS=1;

 del(3);      //保持15us将总线拉到高电平,产生读时间隙

   if(DS)       

   date|=0x8000;

   del(8);         //读数据需要持续35us~60us.

  

  }

  return(date);

}

void main()

{unsignedlong flag=0;

   EA=0;

   SP=0X60;

  init(0x01);  //对液晶屏初始化

  init(0x38);

  init(0x0c);

  init(0x06);

  

 while

(1)

 { 

  jiance(); //对DS18B20初始化

   matchrom();

   write(0x44);//启动温度变换

 del(100); 

   jiance();

   matchrom();

 if(f==1)

   {f=0;}

 else

 { write(0xbe);//读暂存存储器

    t=read();

    flag=t&0x8000; //对读取的数据进行处理

   if(flag==0x8000)

    {t=~t;

      t=t+1;

      t=t*25;

    t>>=2;

      flcd_1602();

 }

  else

  { t=t*25;

     t>>=2;

     lcd_1602();

   }

  }

 }

 }

头文件:

#include

#ifndef__XUANZE_H__

#define__XUANZE_H__

unsignedchark,f=0;

sbitRS=P2^0;

sbitRW=P2^1;

sbitE=P2^2;

sbitDS=P1^1;

voiddel(intcount) //延时程序

{while(count--)

 ;

}

voiddelay(unsignedintcount)//延时程序

{intp;

 while(count--)

 for(p=0;p<125;p++);

}

voidwrite(unsignedchardate)//向DS18B20中写入数据

{inti;

 for(i=0;i<8;i++) //由于是单总线每次只能写一位,一个字节需循环8次

 {DS=0;             //主机在某一时刻将总线从高电平拉到低电平,产生写时间隙

  DS=date&0x01;//写入数据。

  del(15);            //写如数据要15us,ds18b20对数据采样需要15us~60us,共需35us~70us.

  DS=1;

  date>>=1;

  }

 }

  voidinit(unsignedintn)// RW=0,RS=0;向指令寄存器中写入命令,即对1602初始化。

{delay(10);

 E=0;

 RS=0;

 RW=0;

 E=1;

 P0=n;

 E=0;

 }

voidwrite_data(unsignedcharn)//RS=1,RW=0;向数据寄存器中写入数据,即显示的数符。

 {delay(10);

  E=0;

 RS=1;

 RW=0;

 E=1;

 P0=n;

   E=0;

 }

voidmatchrom() //匹配ROM

{

 k=P3;

 switch(k) 

 {case0:

{ f=1;

           init(0x80);write_data(0x57);//which

          init(0x81);write_data(0x68);

   init(0x82);write_data(0x69);

   init(0x83);write_data(0x63);

   init(0x84);write_data(0x68);

         init(0x85);write_data(0x80);

         init(0x86);write_data(0x4e);//NO 

         init(0x87);write_data(0x4f); 

         init(0x88);write_data(0x79);//you 

         init(0x89);write_data(0x6f);

         init(0x8a);write_data(0x75); 

         init(0x8b);write_data(0x80);

         init(0x8c);write_data(0x57);//want 

         init(0x8d);write_data(0x61);

   init(0x8e);write_data(0x6e);

   init(0x8f);write_data(0x74);

     

  init(0xc0);write_data(0x70);//press

         init(0xc1);write_data(0x72);

   init(0xc2);write_data(0x65);

   init(0xc3);write_data(0x73);

   init(0xc4);write_data(0x73);

         init(0xc5);write_data(0x80);

         init(0xc6);write_data(0x57);//which

         init(0xc7);write_data(0x68); 

         init(0xc8);write_data(0x69);

         init(0xc9);write_data(0x63);

         init(0xca);write_data(0x68); 

         init(0xcb);write_data(0x80);

         init(0xcc);write_data(0x6b);//key 

         init(0xcd);write_data(0x65);

   init(0xce);write_data(0x79);

   init(0xcf);write_data(0x80);  }break;

  

  case1:

 { init(0x83);write_data(0x31); //NO1

            write(0x55);      

               write(0x28);

               write(0x30);

               write(0xc5);

               write(0xb8);

               write(0x00);

               write(0x00);

               write(0x00);

               write(0x8e); }break;

 case2:

 { init(0x83);write_data(0x32);//NO2

         write(0x55);      

               write(0x28);

               write(0x31);

               write(0xc5);

               write(0xb8);

               write(0x00);

               write(0x00);

               write(0x00);

               write(0xb9);}break;

   case4:

 {  init(0x83);write_data(0x33);//NO3

         write(0x55);      

               write(0x28);

               write(0x32);

               write(0xc5);

               write(0xb8);

               write(0x00);

               write(0x00);

               write(0x00);

               write(0xe0);  }break;

    case8:

 { init(0x83);write_data(0x34); //NO4

         write(0x55);      

               write(0x28);

               write(0x33);

               write(0xc5);

               write(0xb8);

               write(0x00);

               write(0x00);

               write(0x00);

               write(0xd7);  } break;

    case16:

 {  init(0x83);write_data(0x35);//NO5

         write(0x55);      

               write(0x28);

               write(0x34);

               write(0xc5);

               write(0xb8);

               write(0x00);

               write(0x00);

               write(0x00);

               write(0x52);  } break;

     case32:

 { init(0x83);write_data(0x36); //NO6

          write(0x55);      

               write(0x28);

               write(0x35);

               write(0xc5);

               write(0xb8);

               write(0x00);

               write(0x00);

               write(0x00);

               write(0x65); }break;

     case64:

 {  init(0x83);write_data(0x37);//NO7

         write(0x55);      

               write(0x28);

               write(0x36);

               write(0xc5);

               write(0xb8);

               write(0x00);

               write(0x00);

               write(0x00);

               write(0x3c);}break;

    

    case128:

 {  init(0x83);write_data(0x38);//NO8

          write(0x55);      

               write(0x28);

               write(0x37);

               write(0xc5);

               write(0xb8);

               write(0x00);

               write(0x00);

               write(0x00);

               write(0x0b); }break;

  default:

{

     f=1;

      init(0x80);write_data(0x50);//please

         init(0x81);write_data(0x6c);

   init(0x82);write_data(0x65);

   init(0x83);write_data(0x61);

   init(0x84);write_data(0x73);

         init(0x85);write_data(0x65);

         init(0x86);write_data(0x80);

         init(0x87);write_data(0x70);//press

         init(0x88);write_data(0x72); 

         init(0x89);write_data(0x65);

         init(0x8a);write_data(0x73); 

         init(0x8b);write_data(0x73);

         init(0x8c);write_data(0x80);

         init(0x8d);write_data(0x6f);//one

   init(0x8e);write_data(0x6e);

   init(0x8f);write_data(0x65); 

  init(0xc0);write_data(0x80);

         init(0xc1);write_data(0x80);

   init(0xc2);write_data(0x80);

   init(0xc3);write_data(0x6b);//key

   init(0xc4);write_data(0x65);

         init(0xc5);write_data(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2