久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3487|回復: 2
打印 上一主題 下一主題
收起左側

基于proteus ds18b20的仿真

[復制鏈接]
跳轉到指定樓層
樓主
ID:89221 發表于 2015-9-1 16:18 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
  #include<reg51.h>

sbit  DQ=P1^2;

sbit  DQ1=P2^5;

sbit  DQ2=P2^7;
//sbit  DQ3=P1^3;  

#define uchar unsigned char

#define uint unsigned int

uchar temp_value,temp_value1,temp_value2;

uchar code table[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X40};









void delay_18B20(uint i)

{

while(i--);

}







void Init_DS18B20(void)

{

  uchar x=0;

  DQ = 1;          //DQ復位

  delay_18B20(8);  //稍做延時

  DQ = 0;          //單片機將DQ拉低

  delay_18B20(60); //精確延時 大于 480us

  DQ = 1;          //拉高總線

  delay_18B20(14);

  x=DQ;            //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗

  delay_18B20(20);

}







uchar ReadOneChar(void)

{

uchar i=0;

uchar dat = 0;

for (i=8;i>0;i--)

  {     DQ = 0; // 給脈沖信號

    dat>>=1;

    DQ = 1; // 給脈沖信號

    if(DQ)

    dat|=0x80;

    delay_18B20(4);

  }

  return(dat);

}







void WriteOneChar(uchar dat)

{

  uchar i=0;





  for (i=8; i>0; i--)

  {

    DQ = 0;

   DQ = dat&0x01;

     delay_18B20(5);

   DQ = 1;

     dat>>=1;

}

}

void Init_DS18B201(void)

{

  uchar x=0;

  DQ1 = 1;          //DQ復位

  delay_18B20(8);  //稍做延時

  DQ1 = 0;          //單片機將DQ拉低

  delay_18B20(80); //精確延時 大于 480us

  DQ1 = 1;          //拉高總線

  delay_18B20(14);

  x=DQ1;            //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗

  delay_18B20(20);

}







uchar ReadOneChar1(void)

{

uchar i=0;  uchar dat = 0;

for (i=8;i>0;i--)

  {

    DQ1 = 0; // 給脈沖信號

    dat>>=1;

    DQ1 = 1; // 給脈沖信號

    if(DQ1)

    dat|=0x80;

    delay_18B20(4);

  }

  return(dat);

}







void WriteOneChar1(uchar dat)

{

  uchar i=0;





  for (i=8; i>0; i--)

  {

    DQ1 = 0;

   DQ1 = dat&0x01;

     delay_18B20(5);

   DQ1 = 1;

     dat>>=1;

}

}

void Init_DS18B202(void)

{

  uchar x=0;

  DQ2 = 1;          //DQ復位

  delay_18B20(8);  //稍做延時

  DQ2 = 0;          //單片機將DQ拉低

  delay_18B20(80); //精確延時 大于 480us

  DQ2 = 1;          //拉高總線

  delay_18B20(14);

  //x=DQ1;            //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗

  delay_18B20(20);

}





uchar ReadOneChar2(void)

{

uchar i=0;

uchar dat = 0;

for (i=8;i>0;i--)

  {

    DQ2 = 0; // 給脈沖信號

    dat>>=1;

    DQ2 = 1; // 給脈沖信號

    if(DQ2)

    dat|=0x80;

    delay_18B20(4);

  }

  return(dat);

}







void WriteOneChar2(uchar dat)

{

  uchar i=0;





  for (i=8; i>0; i--)

  {

    DQ2 = 0;

   DQ2 = dat&0x01;

     delay_18B20(5);

   DQ2 = 1;

     dat>>=1;

}

}  



void ReadTemp(void)

{

uchar a=0;

uchar b=0;

uchar t=0;

float tt=0;

Init_DS18B20();

WriteOneChar(0xCC);     // 跳過讀序號列號的操作

WriteOneChar(0x44);  // 啟動溫度轉換



delay_18B20(100);       // this message is wery important  

Init_DS18B20();

WriteOneChar(0xCC);  //跳過讀序號列號的操作

WriteOneChar(0xBE);  //讀取溫度寄存器等共可讀9個寄存器 前兩個就是溫度



delay_18B20(100);



a=ReadOneChar();     //讀取溫度值低位

b=ReadOneChar();     //讀取溫度值高位

temp_value=b<<4;

temp_value+=(a&0xf0)>>4;  



}

void ReadTemp1(void)

{

uchar c=0;

uchar d=0;

uchar t=0;



Init_DS18B201();

WriteOneChar1(0xCC);     // 跳過讀序號列號的操作

WriteOneChar1(0x44);  // 啟動溫度轉換



delay_18B20(100);       // this message is wery important



Init_DS18B201();

WriteOneChar1(0xCC);  //跳過讀序號列號的操作

WriteOneChar1(0xBE);  //讀取溫度寄存器等共可讀9個寄存器 前兩個就是溫度



delay_18B20(100);



c=ReadOneChar1();     //讀取溫度值低位

d=ReadOneChar1();     //讀取溫度值高位

temp_value1=d<<4;

temp_value1+=(c&0xf0)>>4;               



}

void ReadTemp2(void)

{

uchar e=0;

uchar f=0;

uchar t=0;



Init_DS18B202();  WriteOneChar2(0xCC);     // 跳過讀序號列號的操作

WriteOneChar2(0x44);  // 啟動溫度轉換



delay_18B20(100);       // this message is wery important



Init_DS18B202();

WriteOneChar2(0xCC);  //跳過讀序號列號的操作

WriteOneChar2(0xBE);  //讀取溫度寄存器等共可讀9個寄存器 前兩個就是溫度



delay_18B20(100);



e=ReadOneChar2();     //讀取溫度值低位

f=ReadOneChar2();     //讀取溫度值高位

temp_value2=f<<4;

temp_value2+=(e&0xf0)>>4;               

}

//顯示延時 函數  

void delay(unsigned int z)

{

unsigned int x;

unsigned char y;

for(x=z;x>0;x--)

  for(y=200;y>0;y--);  

}

void display (uchar num0,uchar num1,uchar num2,uchar num3,uchar num4,uchar num5)

{ P2=0XFE;

  P0=0x00;

  P0=table[num1];

  delay(6);

  P2=0XFD;

P0=0x00;

  P0=table[num0];

delay(6);

P2=0XFB;

P0=0x00;

  P0=table[10];

  delay(6);

P2=0XF7;

P0=0x00;

  P0=table[num3];

  delay(6);

  P2=0XEF;

P0=0x00;

  P0=table[num2];  delay(6);

  P2=0XDF;

P0=0x00;

  P0=table[10];

delay(6);

  P2=0XBF;

P0=0x00;

  P0=table[num5];

  delay(6);

  P2=0X7F;

P0=0x00;

  P0=table[num4];

delay(6);

}



main()  

{ unsigned int i=0;

   uchar a ,b,c,d,e,f ;

     while(1)

   {   



    ReadTemp();

ReadTemp1();

ReadTemp2();

     b=temp_value/10;  //十位

     a=temp_value%10;  //個位



     d=temp_value1/10;  //十位

     c=temp_value1%10;  //個位

f=temp_value2/10;  //十位

     e=temp_value2%10;  //個位



display(b,a,d,c,f,e);





   }

}  

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

板凳
ID:77498 發表于 2017-5-3 19:15 | 只看該作者
這個論壇里有好多這種資料的
回復

使用道具 舉報

沙發
ID:60379 發表于 2015-9-2 20:32 | 只看該作者
已閱
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产美女精品视频 | 国产精品久久久久久久久久久新郎 | 亚洲成人精选 | 亚洲精品国产电影 | h网站在线观看 | 亚洲一区二区在线播放 | 成人伊人网 | 蜜臀久久 | 日韩在线电影 | 欧美一级免费看 | 国产jizz女人多喷水99 | 成人av在线播放 | 国产精品一区2区 | 人人鲁人人莫人人爱精品 | 98久久| 午夜99 | 精品国产欧美一区二区三区成人 | 欧美精品一区二区三区蜜桃视频 | 91精品国产综合久久精品图片 | 成人午夜在线 | 国产日韩精品视频 | 天天综合天天 | 日韩在线一区二区三区 | 国产成人精品一区二区三区网站观看 | 中文字幕免费在线 | 久久久久久久久99 | 国产高清视频一区 | 久久最新| 在线观看免费av网站 | 国产精品久久久久久久久免费桃花 | 欧美一区二区三区在线 | 精品三级在线观看 | 欧美一区二区三区在线播放 | 国产精品一区视频 | 粉嫩一区二区三区国产精品 | 欧美三区 | 在线色网站 | 免费精品| 国产精品入口 | 国产一区亚洲 | 国产福利91精品 |