找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2225|回復: 0
打印 上一主題 下一主題
收起左側(cè)

LCD顯示環(huán)境溫度 proteus+keilC51

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:430533 發(fā)表于 2018-12-2 16:24 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^0;  
sbit rd=P2^1;
sbit lcden=P2^2;
sbit DQ=P3^0;  
float TM;           
int tvalue;        
unsigned char tflag;  
unsigned char data disdata[5];     

void delay(unsigned int z)
{
        unsigned int x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

void write_com(unsigned char com)
{
        rs=0;
        rd=0;
        lcden=0;
        P0=com;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;        
}

void write_date(unsigned char date)
{
        rs=1;
        rd=0;
        lcden=0;
        P0=date;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;        
}

void delay_18B20(unsigned int i)
{
         while(i--);
}

void ds1820rst()     /*ds1820¸′λ*/
{  
         unsigned char x=0;
         DQ = 1;        
         delay_18B20(4);
         DQ = 0;      
         delay_18B20(80);
         DQ = 1;      
         delay_18B20(20);
   x=DQ;        
   delay(30);
   DQ=1;   
   }  

uchar ds1820rd()
  {
                unsigned char i=0;
          unsigned char dat = 0;
          for (i=8;i>0;i--)
          {   
                        DQ = 0;
                  dat>>=1;
                  DQ = 1;
                  if(DQ)
                  dat|=0x80;   
                  delay_18B20(10);
          }
           return(dat);
  }

        void ds1820wr(uchar wdata)
  {
                unsigned char i=0;
    for (i=8; i>0; i--)
    {
                        DQ = 0;
      DQ = wdata&0x01;      //
      delay_18B20(10);
      DQ = 1;
      wdata>>=1;
    }
  }
        
read_temp()
{
        unsigned char a,b;
  ds1820rst();   
  ds1820wr(0xcc);
  ds1820wr(0x44);
  ds1820rst();   
  ds1820wr(0xcc);
  ds1820wr(0xbe);
  a=ds1820rd();
  b=ds1820rd();
  tvalue=b;
  tvalue<<=8;
  tvalue=tvalue|a;
        TM=tvalue*0.625;
        tvalue=TM*1+0.5;
  /*
    if(tvalue<0x0FFF)
    tflag=0;
    else
   {tvalue=~tvalue+1;
         tflag=1;
   }
    tvalue=tvalue*(0.425);
        return(tvalue);        
  }

        void ds1820disp()
        {
                unsigned char flagdat;
          disdata[0]=tvalue/1000+0x30;
    disdata[1]=tvalue%1000/100+0x30;
    disdata[2]=tvalue%100/10+0x30;
    disdata[3]=tvalue%10+0x30;

    if(tflag==0)
            flagdat=0x20;
    else
       flagdat=0x2d;

    if(disdata[0]==0x30)
          {disdata[0]=0x20;
                if(disdata[1]==0x30)
                {disdata[1]=0x20;
                }
                }

           write_com(0x80+0x40);
           write_date(flagdat);
           write_com(0x80+0x41);
           write_date(disdata[0]);
           write_com(0x80+0x42);
           write_date(disdata[1]);   
           write_com(0x80+0x43);
           write_date(disdata[2]);
           write_com(0x80+0x44);
           write_date(0x2e);   
           write_com(0x80+0x45);
           write_date(disdata[3]);
           write_com(0x80+0x46);
           write_date('C');
   }
        
void InitLcd1602()
{
  write_com(0x38);
  write_com(0x0C);
  write_com(0x06);
  write_com(0x01);
}
void main()
{         
  lcden=0;        
      
        InitLcd1602();
        while(1)
        {
                read_temp();
          ds1820disp();
        }
}

新手勿噴。



評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表