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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2478|回復(fù): 1
收起左側(cè)

自己搞的DS18B20顯示程序,可以用,但是在延時(shí)方面有點(diǎn)小BUG,望有緣人一起探討

[復(fù)制鏈接]
ID:325916 發(fā)表于 2018-5-9 14:47 | 顯示全部樓層 |閱讀模式
#include <reg51.h>
#include <intrins.h>    //需要調(diào)用_nop_();延時(shí)函數(shù)

#define uchar unsigned char
#define uint  unsigned int
#define High_Temp  35    //定義空調(diào)適宜最高溫度為35度
#define Low_Temp  15     //定義空調(diào)適宜最低溫度為15度

/**********************第一部分門(mén)廳人員感應(yīng)****************************/
sbit SPK = P3^4;       //音頻輸出
sbit door_call = P1^5; //紅外感應(yīng)按鈕
sbit LED = P3^3;       //LED黃燈輸出
uint T_count = 0;      //全局整形變量控制 叮咚 聲響時(shí)長(zhǎng)。

/**********************第二部分對(duì)溫度的檢測(cè)與控制****************************/
sbit DQ = P3^0;        //18B20數(shù)據(jù)線引腳
sbit Speaker=P3^1;     //蜂鳴器的定義
sbit KongTiao=P3^2;    //電機(jī)的定義
sbit RTGY=P1^4;        //空調(diào)人體感應(yīng)的定義


/**********************第三部分天燃?xì)鈾z測(cè)   ****************************/
sbit TRQ = P1^6; //天然氣感應(yīng)按鈕
sbit up=P3^5;        //自動(dòng)開(kāi)窗
sbit down=P3^6;        //自動(dòng)關(guān)窗

//初始化程序
void initA ()
{
TMOD=0x00;          //T1方式定時(shí)器
TH1=(8192-700)/32;  //700us定時(shí)/初值高8位放TH1
TL1=(8192-700)%32;   //初值低5位放TL1
IE=0x88;          //打開(kāi)T1中斷
}
//T1中斷控制叮咚聲響程序
void Timer1() interrupt 3    //定時(shí)器中斷服務(wù)函數(shù)
{
SPK=~SPK;
T_count ++;
if(T_count < 400)                 //叮  時(shí)長(zhǎng)為400*700us
        {
          TH1=(8192-700)/32;  //0.3ms實(shí)現(xiàn)  叮  的音
          TL1=(8192-700)%32;   
        }
else if(T_count < 900)                 //咚  時(shí)長(zhǎng)為400*1000us
        {

          TH1=(8192-900)/32;  //1ms實(shí)現(xiàn)  咚  的音
          TL1=(8192-900)%32;   
        }
        else         
        {
         TR1=0;        //關(guān)閉本次呼叫呼叫
         T_count=0;    //時(shí)長(zhǎng)計(jì)數(shù)清零
        }
}


/**********************第二部分溫度檢測(cè)部分****************************/
uchar bw,sw,gw;       //溫度的百 十  個(gè)位。

uchar code DSY_CODE[]=
        {0xc0,0xf9,0xa4,0xb0,0x99,0x92,
        0x82,0xf8,0x80,0x90,0xbf,0xff,0xC6};


void Delay_2US(uint us)   //微秒延時(shí),延時(shí)2*50us
{
while(--us);
}   

void Delay_50Us(uint t)   //微秒延時(shí),延時(shí)t*50us
{
uchar j;
while(t--)
for(j=19;j>0;j--);
}


//DS18B20復(fù)位函數(shù)
void reset()
{
uchar x=0;
DQ=1;          //復(fù)位DQ
Delay_2US(8);
DQ=0;          //將DQ拉低
Delay_2US(80);//精確延時(shí) >480us <960us
DQ=1;          //將DQ拉高
Delay_2US(14);  //延時(shí)15~60us后,接收脈沖
x=DQ;     //DQ 若為0則初始化成功,否則失敗
Delay_2US(20);
}

//讀取一個(gè)字節(jié)的數(shù)據(jù)函數(shù)
uchar Ds18b20_Read(void)

{
uchar i=0;
uchar dat=0;
for(i=8;i>0;i--)
{
DQ=0;
dat>>=1;    //右移一位
DQ=1;
_nop_();
if(DQ)dat=dat|0x80;
Delay_2US(20);
}
return(dat);
}


//寫(xiě)入一個(gè)字節(jié)的數(shù)據(jù)函數(shù)
void Ds18b20_Write(uchar dat)

{
uchar i=0;
for(i=8;i>0;i--)
{
DQ=0;
_nop_();
DQ=dat&0x01;
Delay_2US(20);
DQ=1;
dat>>=1;
}
}

//讀取實(shí)際溫度函數(shù)
uchar Ds18b20_Read_Temperature(void)
{
uchar temp1,temp;
int temp2;
reset();
Ds18b20_Write(0xCC);      //跳過(guò)ROM
Ds18b20_Write(0x44);      //啟動(dòng)DS18B20進(jìn)行溫度轉(zhuǎn)換
Delay_2US(200);
reset();

Ds18b20_Write(0xCC);      //跳過(guò)ROM
Ds18b20_Write(0xBE);      //讀DS18B20內(nèi)部暫存器命令
Delay_2US(200);
temp1=Ds18b20_Read();     //讀出低字節(jié)
temp2=Ds18b20_Read();     //讀出高字節(jié)
temp=(temp1|(temp2<<8))>>4;
return temp;
}



/*****轉(zhuǎn)換成十進(jìn)制溫度并顯示*********/
void Change_Display(uchar i)
{
        uchar temp=i;
        if((temp&0xc0)==0xc0)
        {
        temp=~temp+1;
        bw=10;
        sw=(temp/10==0)?11:temp/10;
        gw=temp%10;
        }
        else
        {
        bw=(temp/100==0)?11:1;
        if(bw!=1)
        sw=(temp/10==0)?11:temp/10;
        else sw=(temp-100)/10;
        gw=temp%10;
        }
        P1=~0x01;   P2=~DSY_CODE[bw]; Delay_2US(900);           //顯示十位
        P1=~0x02;   P2=~DSY_CODE[sw]; Delay_2US(900);           //顯示個(gè)位
        P1=~0x04;   P2=(~DSY_CODE[gw]+0x80); Delay_2US(900);    //顯示小數(shù)點(diǎn)后一位
        P1=~0x08;   P2=~DSY_CODE[12]; Delay_2US(900);           //顯示溫度C
       
}
/********************************第一部分控制*********************************/
//紅外感應(yīng)控制程序
void  D_1bf()
{
        if(door_call==0) //按下按鍵啟動(dòng)定時(shí)器
                {
                TR1=1;  //啟動(dòng)計(jì)數(shù),T1中斷開(kāi)始工作并發(fā)出叮咚聲       
                while(!door_call);//等鍵釋放
                LED=~LED;
                Delay_50Us(8000);
                LED=1;
                }
}

/********************************第三部分窗戶的開(kāi)關(guān)控制*********************************/
//開(kāi)窗
void pwm1()
{
uchar i;
for(i=0;i<10;i++)
{
down=0;//確保窗戶不閉合
up=1;
Delay_2US(10);
up=0;
Delay_2US(10);
}
up=0;
}

/****主函數(shù)**********/
void main()
{     
       
        uchar i;
        initA ();           //第一部分初始化         
        while(1)
        {
        i=Ds18b20_Read_Temperature();  //讀取溫度
        Change_Display(i);               //顯示溫度
       
        //對(duì)串口的初始化定義         
        KongTiao=1;
        RTGY=1;
        TRQ=1;
        LED=1;
        Speaker=1;

        //判斷是否有人進(jìn)門(mén)
        if(!door_call)    D_1bf();            //第一部分判斷程序調(diào)用  
        //判斷天然氣是否泄漏
        if(!TRQ)
        {
        Speaker=0;    //蜂鳴器報(bào)警
        pwm1();
        }

       
        //判斷當(dāng)前溫度是否超值,是否需要啟動(dòng)空調(diào)
        if(RTGY==0 & i!=0)
        {
                if(i>High_Temp||i<Low_Temp)     //蜂鳴器報(bào)警判斷電路
                {
                Speaker=0;                      //蜂鳴器報(bào)警
                KongTiao=0;
                }
        }               
  }
}



回復(fù)

使用道具 舉報(bào)

ID:325916 發(fā)表于 2018-5-9 14:50 | 顯示全部樓層
我的QQ1348216252可以一起探討
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线小视频 | 欧美一区二区三区在线观看视频 | 一级欧美| 美女视频一区 | 91精品国产91久久久久久最新 | 日韩av在线中文字幕 | 精品一二三 | 在线亚洲一区二区 | 高清视频一区二区三区 | 五月网婷婷 | 午夜影院网站 | 亚洲高清在线视频 | 国产精品免费在线 | 亚洲精品久久久9婷婷中文字幕 | 欧美一区二区三区在线观看视频 | 国产一区二区三区四区hd | www九色| 国产午夜精品一区二区三区嫩草 | 日韩欧美中文字幕在线视频 | 99影视| 欧美美女被c | 国产区在线视频 | 97精品国产| 精区3d动漫一品二品精区 | 999热视频 | 成人精品鲁一区一区二区 | 国产精品区一区二 | 午夜精品久久久久久久久久久久久 | 日韩欧美国产电影 | 国产亚洲欧美在线 | 精品福利在线 | 国产丝袜一区二区三区免费视频 | 精品国产乱码久久久久久88av | 日韩视频在线免费观看 | 欧美天堂 | 免费一级黄 | 男人的天堂一级片 | 九九久久精品 | 毛片一级片 | 91色啪| 久久伊人影院 |