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

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

QQ登錄

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

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

藍(lán)橋杯溫度記錄器

[復(fù)制鏈接]
ID:656258 發(fā)表于 2019-12-4 20:42 | 顯示全部樓層 |閱讀模式
         #include "reg52.h"
         #include "onewire.h"
         #include "ds1302.h"
         #define uchar unsigned char
         #define uint unsigned int
         sfr AUXR=0x8e;
    unsigned char code ds[]={50,59,23};
    unsigned char shijian[7];
    unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
    void smg_xianshi(uchar yi,er,san,si,wu,liu,qi,ba);
    void delay(uint x);
    uchar yi,er,san,si,wu,liu,qi,ba;
           void readtime();
        void dsinit();
        void allinit();
       
        uchar key_panjian();
          void Timer0Init(void);
        void zhongduan();
    uchar  tab1[10];
        uchar jiemian=0x10,ww=0,qiehuan_flag=0;         //10自動(dòng)界面//20時(shí)鐘界面//30溫度顯示界面 //40溫度采集顯示界面//
        uint tt=0;
        uchar k=0,aa;
    uchar q=0;
        uint times=0;
        uchar work_flag=0,work_end=0,p=0;



         void readtime()
                {
                        unsigned char i;
                        unsigned char addr=0x81;
                    Ds1302_Single_Byte_Write(0x8e,0x00);
               
               
                        for(i=0;i<7;i++)
                        {         
                            shijian[i]=Ds1302_Single_Byte_Read(addr);
                                addr=addr+2;
                        }
                        Ds1302_Single_Byte_Write(0x8e,0x80);       
                }
               
               
                 void dsinit()
                {
                        unsigned char i;
                        unsigned char addr=0x80;
                        Ds1302_Single_Byte_Write(0x8e,0x00);
                        for(i=0;i<7;i++)
                        {
                                Ds1302_Single_Byte_Write(addr,ds[i]);
                                addr=addr+2;
                        }
                        Ds1302_Single_Byte_Write(0x8e,0x80);
                       
                }

       
           void delay(uint x)
                 {
                         uchar i;
                         while(x--)
                 {
                        for(i=0;i<120;i++);
                 
                 }
                 }

                 void smg_xianshi(uchar yi,er,san,si,wu,liu,qi,ba)
       
                  {
                           P2=0xc0;
                         P0=0x01;
                         P2=0xe0;
                         P0=tab[yi];
                         delay(10);
       
                         P2=0xc0;
                         P0=0x02;
                         P2=0xe0;
                         P0=tab[er];
                         delay(10);
       
                         P2=0xc0;
                         P0=0x04;
                         P2=0xe0;
                         P0=tab[san];
                         delay(10);
       
                         P2=0xc0;
                         P0=0x08;
                         P2=0xe0;
                         P0=tab[si];
                         delay(10);
       
                         P2=0xc0;
                         P0=0x10;
                         P2=0xe0;
                         P0=tab[wu];
                         delay(10);
       
                         P2=0xc0;
                         P0=0x20;
                         P2=0xe0;
                         P0=tab[liu];
                         delay(10);
       
                         P2=0xc0;
                         P0=0x40;
                         P2=0xe0;
                         P0=tab[qi];
                         delay(10);
       
                         P2=0xc0;
                         P0=0x80;
                         P2=0xe0;
                         P0=tab[ba];
                         delay(10);
       
                  }
         
          void main()
          {       
                          uchar j=0,flag=0,flag1=0,ls1=0,qi=0,ba=1;
                          uchar set_time=1;
                          
               
                          dsinit();
                          allinit();
                          Timer0Init();
                            while(1)
                  {          
                        j=key_panjian();
                                  switch(jiemian)
                                {
                                 case 0x10:
//                                 times=200;
                                 yi=11,er=11,san=11,si=11,wu=11,liu=10;    //11//
                                 switch(j)
                                 {
                                  case 1:
                                  break;
                                  case 2:
                                  break;
                                  case 3:
                                  work_flag=1;
                                  jiemian=0x20;
                                  q=0;
                                  break;
                                  case 4:
                                  set_time++;
                                  if(set_time>4)
                                  set_time=1;
                                  if(set_time==1)
                                  {       
                                          qi=0;
                                          ba=1;
                                          times=200;
                                  }
                                  else if(set_time==2)
                                  {
                                             qi=0;
                                          ba=5;
                                          times=1000;
                                  }
                                   else if(set_time==3)
                                  {
                                             qi=3;
                                          ba=0;
                                          times=6000;
                                  }
                                   else if(set_time==4)
                                  {
                                             qi=6;
                                          ba=0;
                                          times=12000;
                                  }
                                      break;
                                      default:break;
                                 }
                                      break;
                                 case 0x20:
                                 
                                readtime();
                                yi=shijian[2]/10;er=shijian[2]%10;                 //22//
                                si=shijian[1]/10;wu=shijian[1]%10;
                                   qi=shijian[0]/10;ba=shijian[0]%10;
                                       
                                if(shijian[0]%2==0)
                                            {
                                                         san=11;
                                                         liu=11;
                                             }       
                                             else
                                             {
                                                         san=10;
                                                         liu=10;
                                            }
                                if(work_end==1)
                                  {
                                  jiemian=0x30;                        //55//
                                   }
                                 break;
                                 case 0x30:
                                 yi=10,er=0,san=0,si=11,wu=11,liu=10;         //66//
                                 qi=tab1[9]/10;
                                 ba=tab1[9]%10;
                                  switch(j)
                                 {
                                  case 1:

                                  break;
                                  case 2:
                                  work_end=0;
                                  P2=0x80;P0=0xff;P2=0x1f;          //77//
                                  jiemian=0x40;

                                  break;
                                  case 3:
                                  
                                  break;
                                  case 4:
                                  
                                  break;
                                  default:break;
                                 
                                 }
                                 break;
                                 case 0x40:

                                if(qiehuan_flag!=0)                                                                 //88//
                                {
                                 qiehuan_flag=0;
                                 qi=tab1[p]/10;
                                 ba=tab1[p]%10;
                                 yi=10,er=(p+1)/10,san=(p+1)%10,si=11,wu=11,liu=10;
                                 p++;
                                 if(p>9)
                                 p=0;
                                 }
                                         switch(j)
                                 {
                                  case 1:
                                         qiehuan_flag=0xff;
                                         jiemian=0x10;
                                          if(times==200)
                                  {       
                                          qi=0;
                                          ba=1;
                                         
                                  }
                                  else if(times==1000)
                                  {
                                            qi=0;
                                         ba=5;
                               
                                  }
                                   else if(times==6000)
                                  {
                                            qi=3;
                                         ba=0;
                               
                                  }
                                   else if(times==12000)
                                  {
                                            qi=6;
                                         ba=0;
                                       
                                  }
                                  break;
                                  case 2:
                                  

                                  break;
                                  case 3:
                                  
                                  break;
                                  case 4:
                                  
                                  break;
                                  default:break;
                                 
                                 }

                                 break;
                                 default:break;

                                }
                             
                                 



           smg_xianshi(yi,er,san,si,wu,liu,qi,ba);
                       }
                       }



                 //判鍵子程序//
                 uchar key_panjian()
         {

                     uchar i,key=0;
                     P3=0x0f;
                         i=P3;
                         i=i&0x0f;
                         if(i!=0x0f)
                 {
                    delay(20);
                         i=P3;
                        i=i&0x0f;
                        if(i!=0x0f)
             {
                switch (i)
                    {
                    case 0x0e:key=1;break;
                    case 0x0d:key=2;break;
                    case 0x0b:key=3;break;
                    case 0x07:key=4;break;
                        default: break;
                }
         }
             }                    
                                      i=P3;
                                i=i&0x0f;
                         while(i!=0x0f)
                                {         
                    P3=0x0f;
                                       i=P3;
                                i=i&0x0f;
                                }
           return key;

      }

                void allinit()
                            {
                                P2=0XA0;
                                P0=0X00;//關(guān)閉蜂鳴器,繼電器
                               
                                P2=0X80;
                                P0=0XFF;//關(guān)閉LED燈
                               
                            }
                        void Timer0Init(void)                //5毫秒@11.0592MHz
                   {
                                AUXR |= 0x80;                //定時(shí)器時(shí)鐘1T模式
                                TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
                                TL0 = 0x00;                //設(shè)置定時(shí)初值
                                TH0 = 0x28;                //設(shè)置定時(shí)初值
                                TF0 = 0;
                                EA=1;
                                 ET0=1;                //清除TF0標(biāo)志
                                TR0=1;                //定時(shí)器0開(kāi)始計(jì)時(shí)
                   }

                        void zhongduan() interrupt 1
                        {
                          
                          
                          aa++;
                          ww++;
                             tt++;
                    if(work_flag==1)
                        {
               
                          if(tt>=times)
                         {        
                             tt=0;
                            k=RD_temper();
                          if(q<10)
                                 {          
                                 tab1[q++]=k;  
                                 }
                                else
                                {
                            q=0;
                                work_flag=0;
                                work_end=1;                   //33//

                                }
                         }
                        }
                        if((work_end==1)&&(aa==200))
                        {
                        aa=0;
                          P2=0x80;P0=0xfe;P2=0x1f;
                        }
                        else if((work_end==1)&&(aa==100))
                        {
                         
                         P2=0x80;P0=0xff;P2=0x1f;
                        }
                  if(jiemian==0x40)
                  {
                   if(ww==200)
                   {
                        ww=0;
                           qiehuan_flag=1;
                   }
//                   else if(ww==100)
//                   {
//                         qiehuan_flag=0;
//                   }
                  }
                        }


回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2019-12-5 15:12 | 顯示全部樓層
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說(shuō)明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

ID:785152 發(fā)表于 2020-6-20 23:30 | 顯示全部樓層
有仿真圖?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品一区二区不卡 | 欧美αv| 情侣av| 欧美日韩黄 | 日韩一| 国产欧美精品区一区二区三区 | 久久国产麻豆 | 国产高清精品一区二区三区 | 青草久久免费视频 | 精品国产18久久久久久二百 | 综合成人在线 | 男女av| 精品久久久久久久久亚洲 | 在线视频一区二区三区 | 国产1区 | 国产精品久久久免费 | 日本久久www成人免 成人久久久久 | 久久精品av | 99精品久久久久 | 欧美中文字幕在线 | 亚洲国产欧美91 | 中文字幕国产 | 天堂资源最新在线 | 久久在线| 美女视频网站久久 | 久久av一区二区三区 | 一级毛片,一级毛片 | 欧美日韩一区二区三区四区五区 | 四虎影院一区二区 | 国产视频久 | 1级毛片 | 亚洲精品久久久一区二区三区 | 青青久久久 | 国产成人精品一区二区三区在线观看 | 天天躁日日躁狠狠躁白人 | 国产中文字幕在线观看 | 国产激情精品 | 精品一区二区三区在线观看国产 | 国产欧美精品区一区二区三区 | xnxx 日本免费 | 精品亚洲一区二区 |