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

標題: 基于DS18B20溫度傳感器設計多溫度區間控制的程序 [打印本頁]

作者: zhangxinchun    時間: 2019-10-7 23:02
標題: 基于DS18B20溫度傳感器設計多溫度區間控制的程序
下面是程序和要求
產品要求
質量標準 電路設計要求:
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






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久区二区| 精品一二区 | 亚洲天堂av在线 | 日日夜夜精品免费视频 | 亚洲精品视频免费 | 久久人| 国产亚洲欧美在线 | 亚洲国产aⅴ成人精品无吗 亚洲精品久久久一区二区三区 | 国产精品高潮呻吟久久 | 国产精品视频一二三区 | 中文字幕一区二区三区四区五区 | 日本人做爰大片免费观看一老师 | 人成久久| 日韩欧美精品一区 | 天堂一区在线观看 | 啪啪av | 国产视频第一页 | 国产极品车模吞精高潮呻吟 | 日韩专区中文字幕 | 亚洲精品永久免费 | 国产成人99久久亚洲综合精品 | 在线婷婷 | 国产精品18久久久 | 久久久久精 | 日韩综合一区 | 精品久久一 | 久久国产精品免费视频 | 久久网亚洲 | 日本一区二区三区精品视频 | 91视频一88av | 亚洲黄色片免费观看 | 日本三级电影在线观看视频 | av黄色片在线观看 | 日韩免费高清视频 | 日韩免费毛片视频 | 最新国产福利在线 | 日韩精品在线播放 | 91麻豆精品一区二区三区 | 一二三四在线视频观看社区 | 91免费观看视频 | 国产一区二区精 |