mian.c

来自「温度传感器」· C语言 代码 · 共 339 行 · 第 1/2 页

C
339
字号
          bit c=1;               //C用于标志十位和个位1为十位0为个位。
          uchar g=0;              //二维数组存放的下标,,,,str[g][f];;
          uchar f=0;              //一维数组存放的下标,,,,
          uchar e=3;               //用于对移动位数进行计数,左右移不会移出范围
          write_command(0x01,1);   //清屏
          write_command(0x0e,1);  //设置1602显示光标
          get_time_DS12887();      //读日历
          display_time();         //显示调整界面
          DisplayOneChar(13,1,str2[(str1[0][6])/10]);  //////显示温度///////////
          DisplayOneChar(14,1,str2[(str1[0][6])%10]);  ///////显示温度////////////////
          DisplayOneChar(2,1,str2[g]);//显示第几段,数组str[g]
          write_command(0x85,1);   //把光标指向年的十位
/*******************************************************************************/          
          while(a!=15&&a!=14)    //15,14键值各为推出和确定,完成对时
          {     
                
                a=kbscan1();
                if(a==13)          //左移键值
                   {f++;
                    e++;
                    c=1;
                    if(e>9)
                    {f=0;
                     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;
                                   case 9: write_command(0xcd,1);     break;
                                  }
                     
                   }
             else if(a==12)      //指向下一段
                   {
                    g++;
                    f=0;
                    c=1;
                    e=3;
                    if(g>2)
                    {g=0;
                    }
                    DisplayOneChar(2,1,str2[g]);//显示第几段,数组str[g] 
                    write_command(0x85,1);                      
                   } 
              else if(a<10)
                   {if(c==1)    
                      {str1[g][f]=((str1[g][f])%10)+a*10;
                       c=0;
                             switch (e)
                                  {case 3: DisplayOneChar(5,0,str2[str1[g][f]/10]);write_command(0x86,1);     break;
                                   case 4: DisplayOneChar(8,0,str2[str1[g][f]/10]);write_command(0x89,1);     break;
                                   case 5: DisplayOneChar(11,0,str2[str1[g][f]/10]);write_command(0x8c,1);    break;
                                   case 6: DisplayOneChar(4,1,str2[str1[g][f]/10]);write_command(0xc5,1);     break;
                                   case 7: DisplayOneChar(7,1,str2[str1[g][f]/10]);write_command(0xc8,1);     break;
                                   case 8: DisplayOneChar(10,1,str2[str1[g][f]/10]);write_command(0xcb,1);    break;
                                   case 9: DisplayOneChar(13,1,str2[str1[g][f]/10]);write_command(0xce,1);    break;
                                  }
                      }
                    else if(c==0)
                      {str1[g][f]=((str1[g][f])/10)*10+a;
                        c=1;
                            switch (e)
                                  {case 3: DisplayOneChar(6,0,str2[str1[g][f]%10]);write_command(0x85,1);     break;
                                   case 4: DisplayOneChar(9,0,str2[str1[g][f]%10]);write_command(0x88,1);     break;
                                   case 5: DisplayOneChar(12,0,str2[str1[g][f]%10]);write_command(0x8b,1);    break;
                                   case 6: DisplayOneChar(5,1,str2[str1[g][f]%10]);write_command(0xc4,1);     break;
                                   case 7: DisplayOneChar(8,1,str2[str1[g][f]%10]);write_command(0xc7,1);     break;
                                   case 8: DisplayOneChar(11,1,str2[str1[g][f]%10]);write_command(0xca,1);    break;
                                   case 9: DisplayOneChar(14,1,str2[str1[g][f]/10]);write_command(0xcd,1);    break;
                                  }
                      }
                   }
           }
/*******************************************************************************/          
write_command(0x0c,1);  //设置1602不显示光标          
write_command(0x01,1);   //清屏         
}
/********************************************************************************************/ 
/********************************************************************************************/ 
/**************************************调试显示**************************************/ 
display1()
{          DisplayOneChar(0,1,str2[(str1[2][0])/10]);
           DisplayOneChar(1,1,str2[(str1[2][0])%10]);
           DisplayOneChar(3,1,str2[(str1[2][1])/10]); 
           DisplayOneChar(4,1,str2[(str1[2][1])%10]); 
           DisplayOneChar(6,1,str2[(str1[2][2])/10]); 
           DisplayOneChar(7,1,str2[(str1[2][2])%10]); 
           DisplayOneChar(9,1,str2[(str1[2][3])/10]); 
           DisplayOneChar(10,1,str2[(str1[2][3])%10]); 
           DisplayOneChar(12,1,str2[(str1[2][4])/10]); 
           DisplayOneChar(13,1,str2[(str1[2][4])%10]); 
           DisplayOneChar(14,1,str2[(str1[2][6])/10]); 
           DisplayOneChar(15,1,str2[(str1[2][6])%10]); 
}
display2()
{          DisplayOneChar(0,1,str2[(str1[0][0])/10]);
           DisplayOneChar(1,1,str2[(str1[0][0])%10]);
           DisplayOneChar(3,1,str2[(str1[0][1])/10]); 
           DisplayOneChar(4,1,str2[(str1[0][1])%10]); 
           DisplayOneChar(6,1,str2[(str1[0][2])/10]); 
           DisplayOneChar(7,1,str2[(str1[0][2])%10]); 
           DisplayOneChar(9,1,str2[(str1[0][3])/10]); 
           DisplayOneChar(10,1,str2[(str1[0][3])%10]); 
           DisplayOneChar(12,1,str2[(str1[0][4])/10]); 
           DisplayOneChar(13,1,str2[(str1[0][4])%10]); 
           DisplayOneChar(14,1,str2[(str1[0][5])/10]); 
           DisplayOneChar(15,1,str2[(str1[0][5])%10]); 
}




main()
{          uchar d;

           initialization_Lcd(); // 初始化1602
           start_DS12887();      //初始化12887
           ////显示模式图标**********************************************
           DisplayOneChar(2,1,str2[10]);//MMMMMMMMM
           DisplayOneChar(3,1,str2[12]);
           DisplayOneChar(4,1,str2[m]);       
           ////显示模式图标**********************************************
           DisplayOneChar(9,1,str2[11]);//TTTTTTTTT
           DisplayOneChar(10,1,str2[12]);
            ////显示模式图标*********************************************
           
    while(1)
         {
         get_time_DS12887();//读12887数据
         display_time1();//正常工作时的时钟显示。
         d=kbscan1();     //扫描键盘
/*******************************校时程序***********************************************/         
                                           if(d==10)      //10是校时键值
                                              {Adr_B=0x86;//设置时间停止,读出的值不再变,但12887内部的时钟还在走着。
                                               Adr_A=0x00;//设置12887内部时钟不再计时.
                                               adjust_time();
                                              }
/*******************************校时程序***********************************************/            
/*******************************设置模式程序***********************************************/            
                                            else if(d==11)//11是模式切换键值
                                                   {
                                                    if(m==1)//改变标志位M,在两种模式之间切换
                                                    m=0;
                                                    else m=1;
                                                    DisplayOneChar(2,1,str2[10]);//MMMMMMMMM
                                                    DisplayOneChar(3,1,str2[12]);
                                                    DisplayOneChar(4,1,str2[m]);
                                                   }
/*******************************设置模式程序***********************************************/  
/*******************************设定时间段,温度程序***************************************/           
                                            else if(d==15)//确定键与设定时间段键复用
                                                   {
                                                    setup_time();
                                                   }
       
/*******************************设定时间段,温度程序***************************************/           
/*******************************yuyin语音***************************************/  
          isd_data1=0x00;
          isd_data2=55;
/*******************************语音***********************************************/         
          
          }

}

⌨️ 快捷键说明

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