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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1559|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

DS18B20上的溫度為什么無法正常顯示在顯示屏上

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:937909 發(fā)表于 2021-6-15 14:25 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
無論按那個開關(guān)  都這樣顯示  就是顯示不出來正確結(jié)果  求大佬幫忙看看


#include<reg51.h>
unsigned  intshu[]={0x30,0x31,0x32,0x33,0x34,0X35,0x36,0x37,0x38,0x39};
unsignedlong t;
unsignedchar k,f=0;
sbitRS=P2^0;
sbitRW=P2^1;
sbitE=P2^2;
sbitDS=P1^1;

void del(int count )  //延時程序
{while(count--);}

voiddelay(unsigned int count)//延時程序
{int p;
while(count--)
for(p=0;p<125;p++);
}

voidwrite(unsigned char date)//向DS18B20中寫入數(shù)據(jù)
{ int i;
  for(i=0;i<8;i++)
  {DS=0;      
   DS=date&0x01; // 寫入數(shù)據(jù)。
   del(15)
   DS=1;
   date>>=1;
   }
}

void init(unsigned int n)//       RW=0,RS=0;向指令寄存器中寫入命令,即對1602初始化。
{delay(10);
  E=0;
  RS=0;
  RW=0;
  E=1;
  P0=n;
  E=0;
}

voidwrite_data(unsigned char n)//RS=1,RW=0;向數(shù)據(jù)寄存器中寫入數(shù)據(jù),即顯示的數(shù)符。
{delay(10);
      E=0;
         RS=1;
         RW=0;
         E=1;
         P0=n;
    E=0;
  }

voidwrite2(unsigned char i)
{   i+=0x30;
    if(i==4){i=0;}
    write(0x55);      
    write(0x28);
    write(i);
    write(0xc5);
    write(0xb8);
    write(0x00);
    write(0x00);
    write(0x00);
}

voidmatchrom()      //匹配ROM
{
  unsigned char i;
  k=P3;
  switch(k)      
{ case 0: { f=1;
             init(0x80);write_data(0x50);//press
             init(0x81);write_data(0x72);
                 init(0x82);write_data(0x65);
                 init(0x83);write_data(0x73);
                init(0x84);write_data(0x73);
            init(0x85);write_data(0x80);
            init(0x86);write_data(0x61);//a
            init(0x87);write_data(0x80);
            init(0x88);write_data(0x6b);//key  
            init(0x89);write_data(0x65);
            init(0x8a);write_data(0x79);
            init(0x8b);write_data(0x80);
                           init(0x8c);write_data(0x21);//!  
            for(i=0x8d;i<=0xcf;i++)
                           {init(i);write_data(0x80);}
            }break;
   case 1:        {  init(0x83);write_data(0x31);     //NO 1
                     write2(0);                 
                write(0x8e);  }break;
   case 2:        {  init(0x83);write_data(0x32);//NO 2
                     write2(1);               
                write(0xb9); }break;
   case 4:        {   init(0x83);write_data(0x33); //NO 3
                         write2(2);
                write(0xe0);   }break;
   case 8:{ init(0x83);write_data(0x34);    //NO 4
                         write2(3);
                write(0xd7);   }     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(0x79);
          init(0xc6);write_data(0x80);
         init(0xc7);write_data(0x6f);//only
          init(0xc8);write_data(0x6e);
          init(0xc9);write_data(0x6c);
          init(0xca);write_data(0x79);  
          init(0xcb);write_data(0x80);
          init(0xcc);write_data(0x21);//!
          init(0xcd);write_data(0x80);
          init(0xce);write_data(0x80);
          init(0xcf);write_data(0x80);  }break;
              }
}

  void lcd(unsigned char m)         //當(dāng)為負(fù)溫度時,液晶顯示可以高位為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(m==1)
        {if((t/1000%10)!=0)
         {init(0xc5);write_data(0x2d);  
     init(0xc6);write_data(shu[t/1000%10]);         
         }
         else
         {init(0xc5);write_data(0xfe);  
     init(0xc6);write_data(0x2d);     
         }
       }
       else
{if(t/10000!=0)
    {init(0xc5);write_data(shu[t/10000]);  
    init(0xc6);write_data(shu[t/1000%10]);     
          }
         else
    {if((t/1000%10)!=0)
      {init(0xc5);write_data(0xfe);
           init(0xc6);write_data(shu[t/1000%10]);   
          }
          else
       {init(0xc5);write_data(0xfe);
           init(0xc6);write_data(0xfe);
       }
      }
    init(0xc7);write_data(shu[t/100%10]);
         init(0xc8);write_data(0x2e);
    init(0xc9);write_data(shu[(t%100)/10]);
         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);
}
}
void jiance()   
{unsignedchar n=0;
  do{DS=1;
     DS=0;     
     del(100);
     DS=1;     
     del(10); 。
     n=DS;
     del(20);     //低電平至少要持續(xù)60~240us
    } while(n==1); 。
}

read()                      //從DS18B20中讀出數(shù)據(jù)
{unsigned char i;
  unsigned long date=0;
  for(i=0;i<16;i++)
  { DS=0;       //主機在某一時刻將總線從高電平拉到低電平.
   date>>=1;               
         DS=1;
         del(3);       //保持15us將總線拉到高電平,產(chǎn)生讀時間隙
    if(DS)        
    date|=0x8000;
    del(8);          //讀數(shù)據(jù)需要持續(xù)35us~60us.   
   }
   return(date);
}

void  main()
{unsigned long  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;  //對讀取的數(shù)據(jù)進(jìn)行處理
    if(flag==0x8000)
     {t=~t;
       t=t+1;
       t=t*25;
            t>>=2;
       lcd(1);//負(fù)值
          }
   else
   { t=t*25;
      t>>=2;
      lcd(0);//正值
    }
   }
  }
}


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

使用道具 舉報

沙發(fā)
ID:390416 發(fā)表于 2021-6-19 08:50 | 只看該作者
LCD1602顯示℃ 這種自定義符號 http://www.zg4o1577.cn/bbs/dpj-200685-1.html
LCD1602液晶最新資料 說明了具體的時間要求 http://www.zg4o1577.cn/bbs/dpj-205768-1.html
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区三区的 | 精品人伦一区二区三区蜜桃网站 | 视频二区国产 | 国产高清视频 | 福利网址| 亚洲欧美一区二区三区在线 | 天天操夜夜操 | 国产精品一区在线观看你懂的 | 午夜精品久久久久久不卡欧美一级 | 亚洲 欧美 综合 | 欧美精品福利 | 婷婷综合激情 | 日韩午夜精品 | 国产高清久久久 | 亚洲成人免费观看 | 9999国产精品欧美久久久久久 | 亚洲黄色在线免费观看 | 成人精品 | 欧美精品在线播放 | 天天色官网 | 久久久久久黄 | 一区二区中文 | 国产免费高清 | 亚洲成人精品 | 日本精品久久 | 波霸ol一区二区 | 亚洲一二视频 | 中文字幕欧美日韩 | 久久精品久久综合 | www.久久久.com| 久久久久久免费免费 | 日韩a| 91素人| www.av在线| 日日摸夜夜添夜夜添特色大片 | 免费观看国产视频在线 | 国产成人av在线 | 日韩久久综合 | www日本在线播放 | 国产99精品 | 国产一区二区三区四区hd |