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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

dfg

[復制鏈接]
跳轉到指定樓層
樓主
ID:918728 發表于 2024-5-6 17:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "includes.h"
uint temp;
uint count;
uint hour=0,minute=0,sec=0,sec2=0,oldsec=0;
uint hour1=0,minute1=0,sec1=0;   //時,分,秒
sbit green = P1^0;                         //工作指示燈
sbit red  = P1^1;                     //停止指示燈
sbit Set = P3^6;                         //速煮米飯
sbit Cook = P1^2;                         //速煮米飯
sbit Soup  = P1^3;                     //精煮米飯
sbit congee = P1^7;                        //煮粥
sbit Stewed = P2^0;                        //煲湯
sbit KeepHeat = P1^4;            //保溫
sbit menu = P1^5;                        //時間預約
sbit add = P1^6;                        //加
sbit dec = P2^1;                        //減

sbit Beep = P2^4;                        //蜂鳴器
sbit AddTemp = P3^7;  //加熱
uint ModeFlag;
unsigned char mode;
void KeepTemp(void);
unsigned char mode = 0;
/*******************************************
******          延時程序    ***************
*******************************************/
void delay_ms(unsigned char ms)    // 延時毫秒@12M,ms最大值255
{
    unsigned char i;
    while(ms--)
        for(i = 0; i < 5; i++);
}
void delay00(unsigned int z)
{
    unsigned int x,y;
    for(x=z; x>0; x--)
        for(y=110; y>0; y--);
}
/*******************************************
******          設置工作模式    ***************
*******************************************/
void SetMode()
{
    if(Set == 0)        //速煮米飯
    {
        delay_ms(5);
        while(!Set);
        ModeFlag = 7;               
    }       
       
    if(Cook == 0)        //速煮米飯
    {
        delay_ms(5);
        while(!Cook);
        sec = 0;
        minute = 0;
        count = 0;
        ModeFlag = 1;
    }
    else if(Soup == 0)            //精煮米飯
    {
         delay_ms(5);
        while(!Soup);
        sec = 0;
        minute = 0;
        count = 0;
        ModeFlag = 2;
    }

    else if(KeepHeat == 0)    //保溫
    {
        delay_ms(5);
        while(!KeepHeat);
        sec = 0;
        minute = 0;
        count = 0;
        ModeFlag = 5;
    }  
   else if(congee == 0)                //煮粥
    {
        delay_ms(5);
        while(!congee);
        sec = 0;
        minute = 0;
        count = 0;
        ModeFlag = 3;
    }

    else if(Stewed == 0)                //煲湯
    {
        delay_ms(5);
        while(!Stewed);
        sec = 0;
        minute = 0;
        count = 0;
        ModeFlag = 4;
    }
}
/*******************************************
******          取消按鍵部分   ***************
*******************************************/
void Set_KEY(void)                          //速煮米飯
{
        sec = 0;
        minute = 0;
        count = 0;
                                Beep = 1;
                                AddTemp = 1;
                                green = 1;
                                red=1;                       
        LCD_WriteString(0,0,"                     ");                       
}
/*******************************************
******          速煮米飯部分   ***************
*******************************************/
void CookRice(void)                          //速煮米飯
{
    LCD_WriteString(0,0,"Cook Rice1.");
                LCD_SramChar(11,1,(0 - minute)%100/10+0x30);                  //4分鐘
                LCD_SramChar(12,1,(0 - minute)%10+0x30);
                LCD_SramChar(13,1,':');
                LCD_SramChar(14,1,(10 - sec)%100/10+0x30);
                LCD_SramChar(15,1,(10 - sec)%10+0x30);
    if(temp >= 800)  //超過80度
    {
          AddTemp = 1;                       
                }
                else
                {
        AddTemp = 0;                       
                }
        if((0 - minute) == 0 && (10 - sec) > 0)
        {
    TR0=1;               
    green = 0;
    red=1;       
        }
        else
        {       
          TR0 = 1;
    if(temp >= 800)  //超過80度
    {
        TR0 = 1;                       
        AddTemp = 1;
        mode=1;       
              sec2=0;                       
    }
                else
                {
        TR0 = 0;
        AddTemp = 0;                  
                }
        }
}
void CookRice2(void)                          //速煮米飯
{
    LCD_WriteString(0,0,"Cook Rice2.");
                LCD_SramChar(11,1,(0 - minute)%100/10+0x30);                 
                LCD_SramChar(12,1,(0 - minute)%10+0x30);
                LCD_SramChar(13,1,':');
                LCD_SramChar(14,1,(15 - sec2)%100/10+0x30);
                LCD_SramChar(15,1,(15 - sec2)%10+0x30);       
    if(temp >= 1000)  //超過100度
    {
       AddTemp = 1;                       
                }
                else
                {
        AddTemp = 0;                       
                }       
        if((0 - minute) == 0 && (15 - sec2) > 0)
        {               
    green = 0;
    red=1;       
        }       
        else
        {       
    if(temp >= 1000)  //超過100度
    {
                                                TR0 = 0;
                                                AddTemp = 0;
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);

                                                ModeFlag=5;                 //保溫                                       
    }
                else
                {
        TR0 = 0;
        AddTemp = 1;                  
                }
        }       
}
/*******************************************
******          精煮米飯部分   ***************
*******************************************/
void CookCong(void)
{
    LCD_WriteString(0,0,"Cook Cong1.");
                LCD_SramChar(11,1,(0 - minute)%100/10+0x30);                  //4分鐘
                LCD_SramChar(12,1,(0 - minute)%10+0x30);
                LCD_SramChar(13,1,':');
                LCD_SramChar(14,1,(15 - sec)%100/10+0x30);
                LCD_SramChar(15,1,(15 - sec)%10+0x30);
    if(temp >= 800)  //超過80度
    {
        AddTemp = 1;                       
                }
                else
                {
        AddTemp = 0;                       
                }       
        if((0 - minute) == 0 && (15 - sec) > 0)
        {
    TR0=1;               
    green = 0;
    red=1;       
        }       
        else
        {       
          TR0 = 1;
    if(temp >= 800)  //超過80度
    {
        TR0 = 1;                       
        AddTemp = 1;
        mode=1;       
              sec2=0;                       
    }
                else
                {
        TR0 = 0;
        AddTemp = 0;                  
                }
        }
}
void CookCong2(void)                          //速煮米飯
{
    LCD_WriteString(0,0,"Cook Cong2.");
                LCD_SramChar(11,1,(0 - minute)%100/10+0x30);                 
                LCD_SramChar(12,1,(0 - minute)%10+0x30);
                LCD_SramChar(13,1,':');
                LCD_SramChar(14,1,(30 - sec2)%100/10+0x30);
                LCD_SramChar(15,1,(30 - sec2)%10+0x30);       
    if(temp >= 1000)  //超過100度
    {
        AddTemp = 1;                       
                }

                else
                {
        AddTemp = 0;                       
                }       
        if((0 - minute) == 0 && (30 - sec2) > 0)
        {               
    green = 0;
    red=1;       
        }       
        else
        {       
    if(temp >= 1000)  //超過100度
    {
                                                TR0 = 0;
                                                AddTemp = 0;
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                        delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                               delay00(200);
                                                ModeFlag=5;                 //保溫                                       
    }
                else
                {
        TR0 = 0;
        AddTemp = 1;                  
                }
        }       
}
/*******************************************
******          煮粥部分   ***************
*******************************************/
void CookSoup(void)                        //煮粥
{
    LCD_WriteString(0,0,"Cook Soup1.");
                LCD_SramChar(11,1,(0 - minute)%100/10+0x30);                  //4分鐘
                LCD_SramChar(12,1,(0 - minute)%10+0x30);
                LCD_SramChar(13,1,':');
                LCD_SramChar(14,1,(10 - sec)%100/10+0x30);
                LCD_SramChar(15,1,(10 - sec)%10+0x30);       
    if(temp >= 700)  //超過70度
    {
        AddTemp = 1;                       
                }
                else
                {
        AddTemp = 0;                       
                }       
        if((0 - minute) == 0 && (10 - sec) > 0)
        {
    TR0=1;               
    green = 0;
    red=1;       
        }       
        else
        {       
          TR0 = 1;
    if(temp >= 700)  //超過70度
    {
        TR0 = 1;                       
        AddTemp = 1;

        mode=1;       
              sec2=0;                       
    }
                else
                {
        TR0 = 0;
        AddTemp = 0;                  
                }
        }
}
void CookSoup2(void)                          //速煮米飯
{
    LCD_WriteString(0,0,"Cook Soup2.");
                LCD_SramChar(11,1,(0 - minute)%100/10+0x30);                 
                LCD_SramChar(12,1,(0 - minute)%10+0x30);
                LCD_SramChar(13,1,':');
                LCD_SramChar(14,1,(25 - sec2)%100/10+0x30);
                LCD_SramChar(15,1,(25 - sec2)%10+0x30);       
    if(temp >=1000)  //超過100度
    {
        AddTemp = 1;                       
                }
                else
                {
        AddTemp = 0;                       
                }       

        if((0 - minute) == 0 && (25 - sec2) > 0)
        {               
    green = 0;
    red=1;       
        }       
        else
        {       
    if(temp >= 1000)  //超過100度
    {
                                                TR0 = 0;
                                                AddTemp = 0;
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);

                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                ModeFlag=5;                 //保溫                                       
    }
                else
                {
        TR0 = 0;
        AddTemp = 1;                  
                }
        }       
}

/*******************************************
******          煲湯部分   ***************
*******************************************/
void Stewedsoup(void)                        //煲湯
{
    LCD_WriteString(0,0,"Stew soup1.");
                LCD_SramChar(11,1,(0 - minute)%100/10+0x30);                  //4分鐘
                LCD_SramChar(12,1,(0 - minute)%10+0x30);
                LCD_SramChar(13,1,':');
                LCD_SramChar(14,1,(10 - sec)%100/10+0x30);
                LCD_SramChar(15,1,(10 - sec)%10+0x30);       
    if(temp >= 700)  //超過70度
    {
        AddTemp = 1;                       
                }
                else
                {
        AddTemp = 0;                       
                }       
        if((0 - minute) == 0 && (10 - sec) > 0)
        {
    TR0=1;               
    green = 0;
    red=1;       
        }       
        else
        {       
          TR0 = 1;
    if(temp >= 700)  //超過70度
    {
        TR0 = 1;                       
        AddTemp = 1;

        mode=1;       
              sec2=0;                       
    }

                  else
                {
        TR0 = 0;
        AddTemp = 0;                  
                }
        }
}
void Stewedsoup2(void)                          //速煮米飯
{
    LCD_WriteString(0,0,"Cook soup2.");
                LCD_SramChar(11,1,(0 - minute)%100/10+0x30);                 
                LCD_SramChar(12,1,(0 - minute)%10+0x30);
                LCD_SramChar(13,1,':');
                LCD_SramChar(14,1,(30 - sec2)%100/10+0x30);
                LCD_SramChar(15,1,(30 - sec2)%10+0x30);       
    if(temp >= 1000)  //超過100度
    {
        AddTemp = 1;                       
                }
                else
                {
        AddTemp = 0;                       
                }       

        if((0 - minute) == 0 && (30 - sec2) > 0)
        {               
    green = 0;
    red=1;       
        }       
        else
        {       
    if(temp >= 1000)  //超過100度
    {
                                                TR0 = 0;
                                                AddTemp = 0;
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);
                                                Beep = 0;
                                                delay00(200);
                                                Beep = 1;
                                                delay00(200);

                                                ModeFlag=5;                 //保溫                                       
    }
                else
                {
        TR0 = 0;
        AddTemp = 1;                  
                }
        }       
}

/*******************************************
******          保溫部分   ***************
*******************************************/
void KeepTemp(void)
{
          mode=0;
    LCD_WriteString(0,0,"Keep Temp..     ");
    AddTemp = 0;//開始加熱
    green = 0;
    red=0;
    if(temp >= 600)//超過60度        30
    {
        AddTemp = 1;//停止加熱
    }


    else if(temp <= 300)           //開始加熱 30度
    {
        AddTemp = 0;
        green = 0;
        red=0;
    }
}

/*******************************************
******          按鍵部分   ***************
*******************************************/
void key_scan()
{
    unsigned char s1num=0;
    if(menu==0)
    {
        delay00(50);
        if(menu==0)
        {
            while(!menu);
            s1num++;
            command(0x01);
            TR0 = 0;
            hour=0;
            minute=0;
            sec=0;
            while(1)
            {

                if(menu==0)
                {
                    delay00(50);
                    if(menu==0)
                    {
                        while(!menu);
                        s1num++;
                    }
                }

                if(s1num==1)
                {
                    LCD_WriteString(0,0,"Set Mode:");
                    LCD_SramChar(9,0,mode/10+0x30);
                    LCD_SramChar(10,0,mode%10+0x30);

                   if(add==0)
                    {
                        delay00(30);
                        if(add==0)
                        {   while(!add);
                            mode ++;
                            if(mode >= 5)
                                mode = 0;
                            LCD_SramChar(9,0,mode/10+0x30);
                            LCD_SramChar(10,0,mode%10+0x30);
                        }
                    }

                    if(dec==0)
                    {
                        delay00(30);
                        if(dec==0)
                        {   while(!dec);
                            if(mode == 0)
                                mode = 5;
                            mode --;
                            LCD_SramChar(9,0,mode/10+0x30);
                            LCD_SramChar(10,0,mode%10+0x30);
                        }
                    }
                }

                if(s1num==2)
                {
                    LCD_WriteString(0,0,"Set hour:");
                    LCD_SramChar(9,0,hour1/10+0x30);
                    LCD_SramChar(10,0,hour1%10+0x30);

                    if(add==0)
                    {
                        delay00(30);
                        if(add==0)
                        {   while(!add);
                            hour1 ++;
                            if(hour1 == 12)
                                hour1 = 0;
                            LCD_SramChar(9,0,hour1/10+0x30);
                            LCD_SramChar(10,0,hour1%10+0x30);
                        }
                    }
                    if(dec==0)
                    {
                        delay00(30);
                        if(dec==0)
                        {   while(!dec);
                            if(hour1 == 0)
                                hour1 = 12;
                            hour1 --;
                            LCD_SramChar(9,0,hour1/10+0x30);
                            LCD_SramChar(10,0,hour1%10+0x30);
                        }
                    }
                }


                if(s1num==3)
                {
                    LCD_WriteString(0,0,"Set minute:");
                    LCD_SramChar(11,0,minute1/10+0x30);
                    LCD_SramChar(12,0,minute1%10+0x30);

                    if(add==0)
                    {
                        delay00(30);
                        if(add==0)
                        {   while(!add);
                            minute1 ++;
                            if(minute1 == 60)
                                minute1 = 0;
                            LCD_SramChar(11,0,minute1/10+0x30);
                            LCD_SramChar(12,0,minute1%10+0x30);
                        }
                    }
                }

                if(s1num == 4)
                {
                    s1num=0;//s1num清零//
                    command(0x01);   //清屏
                    ModeFlag = 6;
                    AddTemp = 1;
                    TR0 = 1;
                    break;
                }
            }
        }
    }
}

/*******************************************
******     顯示預約剩余時間部分   ***************
*******************************************/
void SetTime(void)
{
    LCD_SramChar(0,1,(hour1 - hour)%100/10+0x30);           //hour1 是設定的時間,hour是正常走的時間
    LCD_SramChar(1,1,(hour1 - hour)%10+0x30);
    LCD_SramChar(2,1,':');
    if((minute1-minute)>0)
    {
        LCD_SramChar(3,1,(minute1 - 1 - minute)%100/10+0x30);
        LCD_SramChar(4,1,(minute1 - 1 - minute)%10+0x30);
    }

      else
    {
        LCD_SramChar(3,1,'0');
        LCD_SramChar(4,1,'0');
    }
    LCD_SramChar(5,1,':');
    if(((hour1 - hour)>0)||((minute1-minute)>0))
    {
        LCD_SramChar(6,1,(59 - sec)%100/10+0x30);
        LCD_SramChar(7,1,(59 - sec)%10+0x30);
    }
    else
    {
        LCD_SramChar(6,1,'0');
        LCD_SramChar(7,1,'0');
    }
    LCD_WriteString(8,1,"   ");
    if((minute1 - 1 - minute) == 0 && (59 - sec) == 0 &&(hour1 - hour) == 0)
    {
        TR0 = 0;
        Beep = 0;
        delay00(200);
        Beep = 1;
        ModeFlag = mode;
        hour=0;
        minute=0;
        sec=0;
    }
}         

/*******************************************
******          主函數  ***************
*******************************************/
void main()
{
    EA = 1;
    TMOD = 0X01;
    ET0 = 1;
    TH0 = 0X3C;
    TL0 = 0XB0;
    Beep = 1;
    AddTemp = 1;
    LCD_Initial();
    Init_DS18B20();
    temp = ReadTemperature();
    delay_ms(100);
    TR0=1;
    while(1)
    {

           temp = ReadTemperature();
        LCD_WriteString(0,2,"NowTemp=");
        LCD_SramChar(8,2,temp%10000/1000+0x30);
        LCD_SramChar(9,2,temp%1000/100+0x30);
        LCD_SramChar(10,2,temp%100/10+0x30);
        LCD_SramChar(11,2,'.');
        LCD_SramChar(12,2,temp%10+0x30);
        LCD_SramChar(13,2,'C');
        SetMode();
        key_scan();

        switch(ModeFlag)                //模式選擇
        {
        case 1:
                                          if(mode==0)
                                                {
              CookRice();                  

                                                   else if(mode==1)
                                                {
                    CookRice2();                                                       
                                                }
            break;
        case 2:
                                          if(mode==0)
                                                {
              CookCong();
                                                }
                                                else if(mode==1)
                                                {
                    CookCong2();                                                       
                                                }                                       
            break;
        case 3:
                                          if(mode==0)
                                                {
              CookSoup();
                                                }
                                                else if(mode==1)
                                                {
                    CookSoup2();                                                       
                                                }                                               
            break;
        case 4:   
                                          if(mode==0)
                                                {
              Stewedsoup();
                                                }
                                                else if(mode==1)
                                                {
                    Stewedsoup2();                                                       
                                                }                                               
            break;
        case 5:
            KeepTemp();
            break;
        case 6:
            SetTime();
            break;
        case 7:
            Set_KEY();
            break;                               
        }
    }
}                  
/*******************************************
******         定時器定時部分   ***************
*******************************************/
void t0() interrupt 1
{
    TH0 = 0X3C;
    TL0 = 0XB0;
    count ++;
    if(count >= 20)
    {
        count = 0;
        sec ++;
        sec2 ++;                       
        if(sec == 60)
        {
            sec = 0;
            minute ++;
            if(minute == 60)
                hour ++;
        }
    }
}     

                                               




                                               

                                       


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 男女久久久 | 一区二区视频在线观看 | 99精品欧美一区二区蜜桃免费 | 国产h在线 | 欧美一区永久视频免费观看 | 精品久久影院 | 欧美久久久久久久久 | 极品电影院 | 国产成人在线播放 | 91精品国产色综合久久 | av国产精品毛片一区二区小说 | 亚洲精品久久久久久宅男 | 欧美成人第一页 | 国产精品亚洲二区 | 日韩福利在线 | 欧美一区二区三区日韩 | 中文字幕一区在线 | 国产精品不卡一区 | 黄网站在线观看 | 天天射网站 | 亚洲成人蜜桃 | 天天干天天操天天看 | 电影午夜精品一区二区三区 | 羞羞午夜 | 国产视频三区 | 欧美lesbianxxxxhd视频社区 | 欧美亚洲视频在线观看 | 一色桃子av一区二区 | 成人免费xxxxx在线视频 | 中文字幕精品一区 | 91成人精品视频 | 91在线电影| 国产色在线 | 国产成人免费视频网站高清观看视频 | 成人激情视频免费观看 | 成人福利网 | 成人影院在线视频 | 中文字幕亚洲精品 | 精品视频在线免费观看 | 成人三区四区 | 欧美日韩国产精品一区 |