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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于DS18B20溫度傳感器設計多溫度區間控制的程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:280979 發表于 2019-10-7 23:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
下面是程序和要求
產品要求
質量標準 電路設計要求:
1、 溫度在10度以下,每間隔X分鐘工作一次,工作時間Y分鐘
溫度在11-20度,每間隔X分鐘工作一次,工作時間Y分鐘
溫度在21-30度,每間隔X分鐘工作一次,工作時間Y分鐘
溫度在31-40度,每間隔X分鐘工作一次,工作時間Y分鐘
溫度在41度以上,每間隔X分鐘工作一次,工作時間Y分鐘
注意:X在5-999分鐘范圍,Y在1-60分鐘范圍
2、 白天工作,晚上工作一次(最好是采用光感)
3、 繼電器輸出,
4、 工作電壓:12V直流電(要求少于12V停止工作)

配套程序
#include <stc89.h>
#include<intrins.h>
#include<eeprom.h>
#include <ds18b20.h>
#include <display.h>
#include <worktime.h>

#define  uchar unsigned char
#define  uint  unsigned int
int  count[7]={0,0,0,0,0,0,0};
void Work_Time_Set();
void KEY();
void DS18_delay(int useconds);
unsigned char ow_reset(void);
void write_bit(char bitval);
void ds18write_byte(char val);
unsigned char read_bit(void);
unsigned char DSread_byte(void);
unsigned int ReadTemperature(void);

sbit P1_1=P1^1;

sbit P1_7=P1^4;

uint sec;
uint tcnt;
uchar i,j;
uchar mcount[7]={0,0,0,0,0,0,0};
uchar ncount[7]={0,0,0,0,0,0,0};



//int num;



/********************************************************************
                            定時中斷服務函數
*********************************************************************/  
void t0(void) interrupt 1 using 0 //定時中斷服務函數
{
      
        tcnt++; //每過250ust tcnt 加一
        if(tcnt==400) //計滿400 次(1/10 秒)時
        {
                tcnt=0; //重新再計
                sec++;
                if(sec==600) //定時1s,在從零開始計時
                {
                        sec=0;

                        switch(num1)
                         {
                  case 1:count[1]++;
                                
                                 if((count[1]<(DSY_Buffer[1]))) P1_1=1;
                                          else if((count[1]>=(DSY_Buffer[1]))&&(count[1]<((DSY_Buffer[1])+(DSY_Buffer[6])))) {P1_1=0;i++;}
                                         else {P1_1=1;j++;count[1]=0;}
                                /*         EEPROMSectorErase((*(p)));
                                         mm=DSY_Buffer[1]/255;
                                         mn=DSY_Buffer[1]%255;
                                         mcount[1]=count[1]/255;
                                         ncount[1]=count[1]%255;
                                 EEPROMWriteByte((*(p))+5,mm);
                                         EEPROMWriteByte((*(p))+mm,mn);
                                         EEPROMWriteByte((*(p))+10,mcount[1]);
                                         EEPROMWriteByte((*(p))+mcount[1]+11,ncount[1]);  */
                                         break;
      
                          case 2:count[2]++;if((count[2]<(DSY_Buffer[2]))) P1_1=1;
                                          else if((count[2]>=(DSY_Buffer[2]))&&(count[2]<((DSY_Buffer[2])+(DSY_Buffer[6])))) {P1_1=0;i++;}
                                         else {P1_1=1;j++;count[2]=0;}
                /*                         EEPROMSectorErase((*(p+1)));
                                         mm=DSY_Buffer[2]/255;
                                         mn=DSY_Buffer[2]%255;
                                         mcount[2]=count[2]/255;
                                         ncount[2]=count[2]%255;
                                 EEPROMWriteByte((*(p+1))+5,mm);
                                         EEPROMWriteByte((*(p+1))+mm,mn);
                                         EEPROMWriteByte((*(p+1))+10,mcount[2]);
                                         EEPROMWriteByte((*(p+1))+mcount[2]+11,ncount[2]);         */
                                         break;
                                         
      
                          case 3:count[3]++;
                                 if((count[3]<(DSY_Buffer[3]))) P1_1=1;
                                          else if((count[3]>=(DSY_Buffer[3]))&&(count[3]<((DSY_Buffer[3])+(DSY_Buffer[6])))) {P1_1=0;i++;}
                                         else {P1_1=1;j++;count[3]=0;}
                        /*                 EEPROMSectorErase((*(p+2)));
                                         mm=DSY_Buffer[3]/255;
                                         mn=DSY_Buffer[3]%255;
                                         mcount[3]=count[3]/255;
                                         ncount[3]=count[3]%255;
                                 EEPROMWriteByte((*(p+2))+5,mm);
                                         EEPROMWriteByte((*(p+2))+mm,mn);
                                         EEPROMWriteByte((*(p+2))+10,mcount[3]);
                                         EEPROMWriteByte((*(p+2))+mcount[3]+11,ncount[3]);                   */
                                         break;
                       

                          case 4:count[4]++;
                                 if((count[4]<(DSY_Buffer[4]))) P1_1=1;
                                          else if((count[4]>=(DSY_Buffer[4]))&&(count[4]<((DSY_Buffer[4])+(DSY_Buffer[6])))) {P1_1=0;i++;}
                                         else {P1_1=1;j++;count[4]=0;}
                /*                         EEPROMSectorErase((*(p+3)));
                                         mm=DSY_Buffer[4]/255;
                                         mn=DSY_Buffer[4]%255;
                                         mcount[4]=count[4]/255;
                                         ncount[4]=count[4]%255;
                                 EEPROMWriteByte((*(p+3))+5,mm);
                                         EEPROMWriteByte((*(p+3))+mm,mn);
                                         EEPROMWriteByte((*(p+3))+10,mcount[4]);
                                         EEPROMWriteByte((*(p+3))+mcount[4]+11,ncount[4]);           */
                                         break;
                                       
                          case 5:count[5]++;if((count[5]<(DSY_Buffer[5]))) P1_1=1;
                                          else if((count[5]>=(DSY_Buffer[5]))&&(count[5]<((DSY_Buffer[5])+(DSY_Buffer[6])))) {P1_1=0;i++;}
                                         else {P1_1=1;j++;count[5]=0;}
                        /*                 EEPROMSectorErase((*(p+4)));
                                         mm=DSY_Buffer[5]/255;
                                         mn=DSY_Buffer[5]%255;
                                         mcount[5]=count[5]/255;
                                         ncount[5]=count[5]%255;
                                 EEPROMWriteByte((*(p+4))+5,mm);
                                         EEPROMWriteByte((*(p+4))+mm,mn);
                                         EEPROMWriteByte((*(p+4))+10,mcount[5]);
                                         EEPROMWriteByte((*(p+4))+mcount[5]+11,ncount[5]);                        */
                                         break;
                  

                         }
                }      
        }
}                 
                                                                        
/********************************************************************
                            主函數
*********************************************************************/
void main()
{
         /*
        mcount[1]=EEPROMReadByte((*(p))+10);
    count[1]=((EEPROMReadByte((*(p))+mcount[1]+11))+((mcount[1])*(EEPROMReadByte((*(p))+10))));

        mcount[2]=EEPROMReadByte((*(p+1))+10);
    count[2]=((EEPROMReadByte((*(p+1))+mcount[2]+11))+((mcount[2])*(EEPROMReadByte((*(p+1))+10))));

    mcount[3]=EEPROMReadByte((*(p+2))+10);
    count[3]=((EEPROMReadByte((*(p+2))+mcount[3]+11))+((mcount[3])*(EEPROMReadByte((*(p+2))+10))));

        mcount[4]=EEPROMReadByte((*(p+3))+10);
    count[4]=((EEPROMReadByte((*(p+3))+mcount[4]+11))+((mcount[4])*(EEPROMReadByte((*(p+3))+10))));

        mcount[5]=EEPROMReadByte((*(p+4))+10);
    count[5]=((EEPROMReadByte((*(p+4))+mcount[5]+11))+((mcount[5])*(EEPROMReadByte((*(p+4))+10))));
        */
        ctime=0;
        TMOD=0x02; //定時器工作在方式2
        ET0=1;
        EA=1;
        sec=0;
         
while(1)
{                       
        if(P1_7==0)
        {
                     i=0;
                         j=0;
                  
                                 
                   Key_Time_Set();
                   KEY();
                   Work_Time_Set();
                   mm=EEPROMReadByte((*(p+address_count))+5);
                   DSY_Buffer[ctime]=(((mm)*(EEPROMReadByte((*(p+address_count)))))+(EEPROMReadByte((*(p+address_count))+mm)));  
                  
                   if(ctime==0) DSY_Buffer[ctime]=count[ctime];

                   if((DSY_Buffer[ctime]>count[ctime])||(DSY_Buffer[ctime]==0))  Led(DSY_Buffer[ctime]-count[ctime],ctime);

                   else if(((DSY_Buffer[ctime])<=(count[ctime]))&&((DSY_Buffer[ctime]!=0)))  Led(DSY_Buffer[ctime]+DSY_Buffer[6]-count[ctime],6);

                  
                 

               
                                          
        }
        if(P1_7==1)
        {
                         i=0;
                         j=0;
                         TR0=1;
                         num1=1;
                   Key_Time_Set();
                   KEY();
                   //Work_Time_Set();
                   //mm=EEPROMReadByte((*(p+address_count))+5);
                   //DSY_Buffer[ctime]=(((mm)*(EEPROMReadByte((*(p+address_count)))))+(EEPROMReadByte((*(p+address_count))+mm)));  
                   if((ctime==1)||(ctime==2)||(ctime==3)||(ctime==4)||(ctime==5))  DSY_Buffer[ctime]=300;
                   if(ctime==0) DSY_Buffer[ctime]=count[ctime];

                   if((DSY_Buffer[ctime]>count[ctime]))  Led(DSY_Buffer[ctime]-count[ctime],1);

                   else if((DSY_Buffer[ctime]<=(count[ctime])))  Led(DSY_Buffer[ctime]+DSY_Buffer[6]-count[ctime],6);

                         if(i==1)
                          {
                           while(j==0);
                           TR0=0;
                           while(P1_7);
                          }
                       
               
         }
         
}

}


      
/********************************************************************
                              結束
*********************************************************************/

溫度延時開關.rar

67.63 KB, 下載次數: 16, 下載積分: 黑幣 -5

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品乱码一区二区 | 91精品国产高清久久久久久久久 | av手机在线 | 国产在线精品一区二区三区 | 日本午夜精品 | 欧美黄色片| 一本综合久久 | 欧美精品在线播放 | 日韩视频a| 久久成人免费视频 | 精品九九 | 香蕉一区二区 | japanhdxxxx裸体| 欧美日韩福利视频 | 亚洲精品一区二区在线观看 | 亚洲精品一区在线 | 亚洲成人久久久 | a黄视频| 日本电影一区二区 | 中文字幕成人 | 99精品视频在线 | 中文字幕一区二区三区四区五区 | 性欧美精品一区二区三区在线播放 | 在线观看av网站 | 龙珠z在线观看 | 日韩视频在线免费观看 | 看片wwwwwwwwwww| 精品欧美乱码久久久久久 | 亚洲乱码国产乱码精品精的特点 | 激情国产| 精品亚洲一区二区三区 | 精品视频一区二区三区 | 日韩五月天 | 亚洲一区二区三区在线视频 | 日日摸天天添天天添破 | 亚洲欧洲综合av | av天天爽 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 中文字幕在线播放第一页 | 91综合在线视频 | www国产亚洲精品 |