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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機的 遠程溫度監(jiān)控系統(tǒng)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71870 發(fā)表于 2015-1-17 10:54 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
此商品已被刪除
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2015-1-17 11:21 來自手機 | 只看該作者
這個設(shè)計不錯。
回復(fù)

使用道具 舉報

板凳
ID:71870 發(fā)表于 2015-1-17 18:44 | 只看該作者


本設(shè)計中設(shè)定報警上限溫度30℃,報警下限溫度20℃。圖中分別是溫度超過30℃和低于20℃時LED燈模擬制冷和制熱系統(tǒng)開啟,并且蜂鳴器報警。



附錄2:單片機程序

#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit d1=P2^2;sbit d2=P2^1;sbit d3=P2^0;sbit d4=P2^3;sbit key1=P1^3;sbit key2=P1^4;sbit key3=P1^5;sbit led1=P1^0;sbit led2=P1^1;sbit baojing=P1^6;sbit DS=P1^2;sbit ACC_7=ACC^7;uint count=300,alarm=200;  //最初溫度上下限值:30度、20度uchar shu;uchar shi,fen,ri,yue,nian,xq,miao,ss;       uint temp;             // 定義溫度變量uchar flag;uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};  //共陽數(shù)碼管不帶小數(shù)點的0~9編碼uchar code tab1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //帶小數(shù)點的0~9編碼void send_int(void){   TMOD = 0x21;              // 定時器1工作于8位自動重載模式, 用于產(chǎn)生波特率               TH1 = 0xfd;          // 波特率9600               TL1 = 0xfd;    TH0=0xD8;           //定時器0定時10ms    TL0=0xF0;    ET0=1;               //允許定時器0中斷    ES=1;                //允許串口中斷    EA=1;                //開中斷SCON = 0xd8;                  // 設(shè)定串行口工作方式     PCON = 0x00;                 // 波特率不倍增} void delay(uint z){               uint x,y;               for(x=z;x>0;x--)                               for(y=120;y>0;y--);}void dsreset()   //復(fù)位{                     uint i;               DS=0;               i=103;               while(i>0)i--;               DS=1;               i=4;               while(i>0)i--;}uchar tmpread()   //讀取一字節(jié){               uchar j,k,dat;               uint i;    for(j=1;j<=8;j++)    {                   DS=0;i++;          //延時                   DS=1;i++;i++;                               k=DS;                   i=8;while(i>0)i--;                               dat=(k<<7)|(dat>>1);//讀出的數(shù)據(jù)最低位在最前面存一個字節(jié)在DAT里      }     return(dat);}void tmpwritebyte(uchar dat)   //寫一個字節(jié){    uint i;    uchar j;    bit testb;    for(j=1;j<=8;j++)    {                   testb=dat&0x01;                   dat=dat>>1;                   if(testb)     //寫 1                                   {                                     DS=0;                                     i++;i++;                                     DS=1;                                     i=8;while(i>0)i--;                                   }    else    {               DS=0;       //寫 0               i=8;while(i>0)i--;               DS=1;               i++;i++;    }  }}void tmpchange()  //DS18B20溫度變換{               dsreset();               delay(1);               tmpwritebyte(0xcc);  //跳過讀取內(nèi)存rom               tmpwritebyte(0x44);  //開始轉(zhuǎn)換}uint tmp()               //讀取溫度{               float tt;               uchar a,b;               dsreset();               delay(1);               tmpwritebyte(0xcc);               tmpwritebyte(0xbe);               a=tmpread(); //a為低字節(jié)8位               b=tmpread(); //b為高字節(jié)8位               temp=b;     //temp為溫度值UINT 16bit               temp<<=8;             //兩個字節(jié)組合到一起               temp=temp|a;                   if(b>127)               {               flag=1;               ss=flag;               temp=~temp+1;               }               tt=temp*0.0625; // temp/16 則是溫度的真實值tt.7位整數(shù),4位小數(shù)               temp=tt*10+0.5; // 擴大十倍取出了第一位小數(shù)               return(temp);} /*****溫度顯示********/void displayTemp(uint temp)   {               uchar ge,shi,bai,qian,ser;               d1=0;               d1=0;               d3=0;               d4=0;               dsreset();               ser=temp/10;     //分離出三位要顯示的數(shù)字                SBUF=ser;               qian=temp/1000;               bai=temp/100%10; // 百位數(shù)字               shi=temp/10%10;   // 十位數(shù)字               ge=temp%10;   // 個位數(shù)字               if(flag==1)               {                               flag=0;                               P0=0xbf;                               d1=1;                               delay(2);                               d1=0;               }               if(qian!=0)               {                               P0=tab[qian];                               d1=1;                               delay(2);                               d1=0;                     }               else               {                               P0=0xff;                               d1=1;                               delay(2);                               d1=0;                     }               if(temp>99)               {                               P0=tab[bai];                               d2=1;                               delay(2);                               d2=0;               }                               P0=tab1[shi];                               d3=1;                               delay(2);                               d3=0;                               P0=tab[ge];                               d4=1;                               delay(2);                               d4=0;} /****按鍵控制******/uint keyscan(){               if(key1==0)                 //按鍵1               {                               delay(5);                               if(key1==0)                                         {                                              while(!key1);                                                   shu++;            //按鍵1數(shù)按下次數(shù)                               }               }                                              if(key2==0)       //按鍵2                                              {                                                             delay(5);                                                             if(key2==0)                                                             {                                                                            while(!key2);                                                                               count=count+10; //溫度上限值加1                                                                            if(shu==2)      //按鍵1按下2次                                                                            {                                                                                            alarm+=10;  //溫度下限值加1                                                                            }                                                              }                                              }                                              if(key3==0)             //按鍵3                                              {                                                             delay(5);                                                             if(key3==0)                                                             {                                                                            while(!key3);                                                                            count=count-10; //溫度上限值減1                                                                                            if(shu==2)  //按鍵1按下2下                                                                            {                                                                                            alarm-=10;  //溫度下限值減1                                                                            }                                                             }                                              }               return(count);} /*****報警控制******/void main(){                led1=1;               led2=1;               delay(10);               while( 1 )                {               tmpchange();               if(shu==0)               {                               displayTemp(tmp( ));               }               keyscan();               if(shu==1)                               {                                              displayTemp(count);                               }               if(shu==2)               {                                              displayTemp(alarm);                               }               if(shu==3)               {                               shu=0;                                    }               if(temp>count)                {                led1=0;baojing=0;                }    else if(temp<alarm)                {               led2=0;baojing=0;                }   else   {   led1=1;   led2=1;   baojing=1;   }               }}



回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美国产91| 99精品视频一区二区三区 | 久久精品国产亚洲 | 亚洲啪啪 | 亚洲在线 | 欧美一区2区三区3区公司 | 精品一二区| 欧美黄页 | 久久久久久久99 | 欧美一卡二卡在线 | 精品国产伦一区二区三区观看体验 | 超碰av人人 | 亚洲欧美在线一区 | 日韩免费av | 国产一区二区在线视频 | 老司机午夜性大片 | 国产日韩欧美在线播放 | 中文字幕在线观看一区 | 一区2区 | www.99热.com| 爱操影视 | 久久精品国产一区二区三区不卡 | 久久伊人一区二区 | h视频在线免费观看 | 精品九九| 青娱乐一区二区 | 少妇精品亚洲一区二区成人 | 午夜精品一区二区三区在线观看 | 男人的天堂avav | 狠狠干天天干 | 国产精品久久亚洲7777 | 成人免费大片黄在线播放 | 日本午夜免费福利视频 | 七七婷婷婷婷精品国产 | 国产精品91网站 | 波多野结衣电影一区 | 激情视频网站 | 国产精品视频网 | 国产在线a| 午夜资源 | 日韩中文字幕一区二区 |