⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mian614.c

📁 温度传感器
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <reg51.h>
#include <intrins.h>
#include <absacc.h>
#include <math.h>
#include "lcm1602.h"
#include "12c887.h"
#include "key.h"
#include "ds18b20.h"
#define isd_data1   XBYTE[0xdfff]
#define isd_data2   XBYTE[0xefff]
#define uchar unsigned char
#define uint unsigned int
unsigned char str2[]={'0','1','2','3','4','5','6','7','8','9','M','T',':','-','=','.'};
unsigned char str[6]={8,8,8,8,8,8};           //此数组是用来存储改变后的年月日时分秒,后面会把他写入1288
unsigned char wend=0;wend1=0;wend2=0;h=0;h1=0;
unsigned int wend3=0;
sbit lz=P3^0;                    //炉子
sbit dc=P3^1;                   //电磁阀
bit m=1;//模式标志位
bit n=0;//调节标志

/*********************调整时间时把调整前的时间读进数组保存****依次调整***************************/
write_adjust()           
{
           str[5]=second;
           str[4]=min;
           str[3]=hour;
           str[2]=day;
           str[1]=month;
           str[0]=year;    //  写完成
           
}
/******************************给12887写调整后的数据*******************************/

/*************************显示时间***********************************************/
display_time()//调整时间时的显示界面,程序
{          DisplayOneChar(3,0,str2[2]);
           DisplayOneChar(4,0,str2[0]);
           DisplayOneChar(5,0,str2[year/10]);
           DisplayOneChar(6,0,str2[year%10]);
           DisplayOneChar(7,0,str2[12]);
           DisplayOneChar(8,0,str2[month/10]);
           DisplayOneChar(9,0,str2[month%10]);
           DisplayOneChar(10,0,str2[12]);
           DisplayOneChar(11,0,str2[day/10]);
           DisplayOneChar(12,0,str2[day%10]);
           
           DisplayOneChar(4,1,str2[hour/10]);
           DisplayOneChar(5,1,str2[hour%10]);
           DisplayOneChar(6,1,str2[12]);
           DisplayOneChar(7,1,str2[min/10]);
           DisplayOneChar(8,1,str2[min%10]);
           DisplayOneChar(9,1,str2[12]);
           DisplayOneChar(10,1,str2[second/10]);
           DisplayOneChar(11,1,str2[second%10]);
}
display_time1()//正常工作时的显示界面,只显示月日时分秒。
{          DisplayOneChar(1,0,str2[month/10]);
           DisplayOneChar(2,0,str2[month%10]);
           DisplayOneChar(3,0,str2[12]);
           DisplayOneChar(4,0,str2[day/10]);
           DisplayOneChar(5,0,str2[day%10]);
           
           DisplayOneChar(6,0,str2[13]);
           DisplayOneChar(7,0,str2[13]);
           
           DisplayOneChar(8,0,str2[hour/10]);
           DisplayOneChar(9,0,str2[hour%10]);
           DisplayOneChar(10,0,str2[12]);
           DisplayOneChar(11,0,str2[min/10]);
           DisplayOneChar(12,0,str2[min%10]);
           DisplayOneChar(13,0,str2[12]);
           DisplayOneChar(14,0,str2[second/10]);
           DisplayOneChar(15,0,str2[second%10]);
           
}

           
          
/********************************************************************************/
/*************************调整时间***********************************************/
/********************************************************************************/
adjust_time()
{         
          uchar a=16;
          bit c=1;               //C用于标志十位和个位1为十位0为个位。
          uchar *b=str;          //数组存放的是设定的时间
          uchar e=3;               //用于对移动位数进行计数,左右移不会移出范围
          write_command(0x01,1);   //清屏
          write_command(0x0e,1);  //设置1602显示光标
          get_time_DS12887();      //读日历
          display_time();         //显示调整界面
          write_adjust();
          write_command(0x85,1);   //把光标指向年的十位
/*******************************************************************************/          
          while(a!=15)    //15,14键值各为推出和确定,完成对时
          {     a=kbscan1();
                if(a==13)
                   {b++;
                    e++;
                    c=1;
                    if(e>8)
                    {b=str;
                     e=3;}
                                          switch (e)
                                  {case 3: write_command(0x85,1);     break;
                                   case 4: write_command(0x88,1);     break;
                                   case 5: write_command(0x8b,1);     break;
                                   case 6: write_command(0xc4,1);     break;
                                   case 7: write_command(0xc7,1);     break;
                                   case 8: write_command(0xca,1);     break;
                                  }
                     
                   }
               else if(a==12)   //13左移,12右移按键
                   {b--;
                    e--;
                    c=1;
                    if(e<3)
                    {b=&str[5];
                     e=8;}
                                          switch (e)
                                  {case 3: write_command(0x85,1);     break;
                                   case 4: write_command(0x88,1);     break;
                                   case 5: write_command(0x8b,1);     break;
                                   case 6: write_command(0xc4,1);     break;
                                   case 7: write_command(0xc7,1);     break;
                                   case 8: write_command(0xca,1);     break;
                                  }
                     
                    }
              else if(a<10)
                   {if(c==1)    
                      {*b=((*b)%10)+a*10;
                       c=0;
                             switch (e)
                                  {case 3: Adr_year=*b;  DisplayOneChar(5,0,str2[*b/10]);write_command(0x86,1);     break;
                                   case 4: Adr_month=*b; DisplayOneChar(8,0,str2[*b/10]);write_command(0x89,1);     break;
                                   case 5: Adr_day=*b;   DisplayOneChar(11,0,str2[*b/10]);write_command(0x8c,1);    break;
                                   case 6: Adr_hour=*b;  DisplayOneChar(4,1,str2[*b/10]);write_command(0xc5,1);     break;
                                   case 7: Adr_min=*b;   DisplayOneChar(7,1,str2[*b/10]);write_command(0xc8,1);     break;
                                   case 8: Adr_second=*b;DisplayOneChar(10,1,str2[*b/10]);write_command(0xcb,1);    break;
                                  }
                      }
                    else if(c==0)
                      {*b=((*b)/10)*10+a;
                        c=1;
                            switch (e)
                                  {case 3: Adr_year=*b;  DisplayOneChar(6,0,str2[*b%10]);write_command(0x85,1);     break;
                                   case 4: Adr_month=*b; DisplayOneChar(9,0,str2[*b%10]);write_command(0x88,1);     break;
                                   case 5: Adr_day=*b;   DisplayOneChar(12,0,str2[*b%10]);write_command(0x8b,1);    break;
                                   case 6: Adr_hour=*b;  DisplayOneChar(5,1,str2[*b%10]);write_command(0xc4,1);     break;
                                   case 7: Adr_min=*b;   DisplayOneChar(8,1,str2[*b%10]);write_command(0xc7,1);     break;
                                   case 8: Adr_second=*b;DisplayOneChar(11,1,str2[*b%10]);write_command(0xca,1);    break;
                                  }
                      }
                   }
           }
/*******************************************************************************/          
write_command(0x0c,1);  //设置1602不显示光标          
Adr_B=0x06;
Adr_A=0x20;//设置12887内部时钟不再计时.          
write_command(0x01,1);   //清屏 
           //显示模式图标**********************************************
           DisplayOneChar(0,1,str2[10]);//MMMMMMMMM
           DisplayOneChar(1,1,str2[12]);
           DisplayOneChar(2,1,str2[m]);       
           ////显示模式图标**********************************************
           DisplayOneChar(4,1,str2[11]);//TTTTTTTTT
           DisplayOneChar(5,1,str2[14]);
           //显示模式图标**********************************************/       
}
/********************************************************************************/
/*************************设置温度和显示温度***********************************************/
/********************************************************************************/
shezwd()
{         uchar a=16;
          uchar e=0;               //用于对移动位数进行计数,左右移不会移出范围

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -