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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機DS18B20的源程序代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:353431 發表于 2018-6-17 20:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit p34=P2^4;
sbit p35=P2^5 ;
sbit p36=P2^6;
sbit dp=P0^7;
sbit p37=P2^7;
sbit DQ=P2^2;
sbit SET=P3^1;
sbit LING=P2^0;
signed char m;
bit sign=0;
signed char shangxian=38;
signed char xiaxian=6;
uchar code
LEDData[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};



/****延時子程序******/
void Delay(uint i)
{
    while(i--);
}

/*****初始化DS18B20*****/
void Init_DS18B20(void)
{
    unsigned char x=0;
        DQ=1;
        Delay(8);
        DQ=0;
        Delay(80);
        DQ=1;
        Delay(14);
        x=DQ;
        Delay(20);
}

/*******讀一個字節****/
unsigned char ReadOneChar(void)
{
   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(4);
        }
        return(dat);
}

/*****寫一個字節******/
void WriteOneChar(unsigned char dat)
{
    unsigned char i=0;
        for(i=8;i>0;i--)
        {
           DQ=0;
           DQ=dat&0x01;
           Delay(5);
           DQ=1;
           dat>>=1;
        }
}

void Tmpchange(void)
{
    Init_DS18B20();
        WriteOneChar(0xCC);
        WriteOneChar(0x44);
}

/********讀取溫度********/
        unsigned char ReadTemperature(void)
        {
           unsigned char a=0;
           unsigned char b=0;
           unsigned int t=0;
           float tt=0;
           Tmpchange();
           Init_DS18B20();
           WriteOneChar(0xCC);
           WriteOneChar(0xBE);
           a=ReadOneChar();
           b=ReadOneChar();
           t=b;
           t<<=8;
           t=t|a;
           tt=t*0.0625;
           t=tt*100+0.5;
           return(t);
        }

/*********顯示開機初始化等待畫面********/
Disp_init()
{
   P0=0x80;
   p34=1;
   p35=0;
   p36=0;
   p37=0;
   Delay(200);
   P0=0x80;
   p34=0;p35=1;p36=0;p37=0;
   Delay(200);
   P0=0x80;
   p34=0;p35=0;p36=1;p37=0;
   Delay(200);
   P0=0x80;
   p34=0;p35=0;p36=0;p37=1;
   Delay(200);
   P0=0x80;
}

/*********顯示溫度子程序********/
Disp_Temperature()
{
    uint a,b,c,d,e;
        e=ReadTemperature();
        a=e/1000;
        b=e/100-a*10;
        d=e%10;
        c=(e%100)/10;
        m=e/100;
        if(m>shangxian||m<xiaxian)
        LING=1;
        else
        LING=0 ;
        p34=0;p35=0;p36=0;p37=0;
        P0=LEDData[d];
        p34=1;p35=0;p36=0;p37=0;
        Delay(300);
        p34=0;p35=0;p36=0;p37=0;
        P0=LEDData[c];
        p34=0;p35=1;p36=0;p37=0;
        Delay(300);
        p34=0;p35=0;p36=0;p37=0;
        P0=LEDData[b];
        dp=0;
        p34=0;p35=0;p36=1;p37=0;
        Delay(300);
        p34=0;p35=0;p36=0;p37=0;
        P0=LEDData[a];
        p34=0;p35=0;p36=0;p37=1;
        Delay(300);
        p34=0;p35=0;p36=0;p37=0;
}

disptiaozheng()
{
   uchar f,g,j,k;
   f=shangxian/10;
   g=shangxian%10;
   j=xiaxian/10;
   k=xiaxian%10;
   p34=0;p35=0;p36=0;p37=0;
   P0=0xc0;
   p34=1;p35=0;p36=0;p37=0;
   Delay(200);
   p34=0;p35=0;p36=0;p37=0;
   P0=0xc0;
   p34=0;p35=1;p36=0;p37=0;
   Delay(200);
   p34=0;p35=0;p36=0;p37=0;
   if(SET==1)
   {
      P0=LEDData[g];
          dp=0;
        }
        else
        {
          P0=LEDData[k];
          dp=0;
        }
        p34=0;p35=0;p36=1;p37=0;
        Delay(200);
        p34=0;p35=0;p36=0;p37=0;
        if(SET==1)
        P0=LEDData[f];
        else
        {
           if(f==0)
           P0=0x00;
           else
           P0=LEDData[j];
         }
         p34=0;p35=0;p36=0;p37=1;
         Delay(200);
         p34=0;p35=0;p36=0;p37=0;
         Delay(200);
}

/********外部中斷0服務程序****/
void int0(void) interrupt 0
{
    EX0=0;
        sign=1;
        if(SET==1)
        shangxian++;
        else
        xiaxian++;
        Delay(500);
        EX0=1;
}

/********外部中斷1服務程序*********/
void int1(void) interrupt 1
{
   EX1=0;
   if(SET==1)
   shangxian--;
   else
   xiaxian--;
   Delay(500);
   EX1=1;
}

  /******主函數********/
void main(void)
{
   uint z;
   IT0=1;
   IT1=1;
   EX0=1;
   EX1=1;
   EA=1;
   ReadTemperature();
   LING=0;
   for(z=0;z<100;z++)
   {
      Disp_init();
        }
        while(1)
        {
          Disp_Temperature();
          if(sign==1)
          {
             for(z=0;z<300;z++)
                 disptiaozheng();
                 sign=0;
          }
        }
}

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久妇女 | 在线成人免费视频 | 国产精品入口久久 | 九九热在线视频 | 国产成人免费视频网站高清观看视频 | 国产免费一区二区 | 国产成人免费网站 | av网站免费看 | 中文字幕在线观看日韩 | 国产成人高清成人av片在线看 | 日本在线免费看最新的电影 | 97国产精品视频人人做人人爱 | 精品欧美乱码久久久久久1区2区 | 91视频在线观看 | 国产亚洲欧美在线 | 美国一级黄色片 | 国产成人高清成人av片在线看 | 国产精品久久在线 | 亚洲精品久久久久avwww潮水 | 精品久久久久久久久久久 | 亚洲精品国产成人 | 成人精品国产 | 99国产精品久久久久久久 | 91丨国产 | 成人免费黄色 | 午夜激情免费视频 | 亚洲第一成人av | 亚洲第一在线 | 在线亚洲欧美 | 中文字幕在线观看视频一区 | 99精品国自产在线观看 | 久久狠狠| 中文字幕高清视频 | 久久黄色网 | 日韩电影一区 | 国产一级片网站 | 日日操视频 | 国产精产国品一二三产区视频 | 91久久精品一区二区二区 | 免费在线观看黄色av | www.久久99|