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

📄 万年历程序2.txt

📁 万年历程序
💻 TXT
字号:
#include"reg52.h"
#define  uchar unsigned char /*宏定义*/
#define  uint  unsigned int
#define pcf8563  0xa2  


void delayMS(unsigned char i);
bit ISendStr(uchar sla,uchar suba,uchar *s,uchar no);
bit IRcvStr(uchar sla,uchar suba,uchar *s,uchar no);
unsigned char ZLG7290_SendData(unsigned char SubAdd,unsigned char Data);
unsigned char ZLG7290_SendCmd(unsigned char Data1,unsigned char Data2);
void ZLG7290_SendBuf(unsigned char * disp_buf,unsigned char num);
unsigned char	ZLG7290_GetKey();
bit fig;
bit zhd;


void delay(unsigned char i)
{ 
	unsigned char j,k,c;
	for(c=0;c<i;c++)
	for(k=0;k<i;k++)
		for(j=0;j<255;j++);
}

uchar sss(uchar v)
    {    uchar zg;
           switch(v)
      {
      case(4)  :{zg=0;return zg;} 
      case(3)  :{zg=1;return zg;}
      case(2)  :{zg=2;return zg;}
      case(1)  :{zg=3;return zg;}
      case(12) :{zg=4;return zg;}
      case(11) :{zg=5;return zg;}
      case(10) :{zg=6;return zg;}
      case(9)  :{zg=7;return zg;}
      case(20) :{zg=8;return zg;}
      case(19) :{zg=9;return zg;}
     }
 
       
    }

void main()
{   
   uchar tt;
   uchar n=1;
   uchar bb[9]={0x00,0x00,0x54,0x59,0x16,0x10,0x06,0x06,0x06};//秒,分,时,日,星,月
   uchar cc[6];
   uchar aa[8];
   uchar ddd[8];
   uchar yyy[8]={0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f};
  
         uchar dshi[2]={0x82,10};// ISendStr(pcf8563,0x0e,dshi,2); delayMS(10);
         uchar quzhi[3]; 
         uchar  xianshi[3]={0x01,0x01,0x00};
          uchar kozhi[2]={0x00,0x11};//脉冲有效
          uchar kozhi1[2]={0x00,0x00};
   uchar m,mm=0,d;
   
  ISendStr(pcf8563,0x00,bb,9);
     delayMS(10);

  EA=1;
  IT0=1;
  EX0=1;
  EX1=1;
  IT1=1; 
    
  
  while(1) 
 {  
     if(zhd)
     {  n=0;
        
        zhd=0;
       ISendStr(pcf8563,0x00,kozhi1,2); 
        delayMS(10);
        ZLG7290_SendData(0x0d,2);
        ZLG7290_SendBuf(xianshi,3);
        delay(23);
       
     }
     
       if(fig)////键盘的处理程序
    {
         fig=0;
         tt=ZLG7290_GetKey();
         delay(14);//可以延时来解决困难是因为弹片机为12M而7290为4M要快3倍,所以很可能将
                   //在tt=27时将27读两遍于是出现了修改值为y的错误,另一种解决方案是||27 
                    //见while(key==0||key==27)*/
         if(tt==26)
         {
         n=1;
          goto aaa;
         }
         
         if(tt==25)
          {
           uchar key=0,i=0,j=0;
           n=0;
          for(j=0;j<4;j++) 
              {
                  while(key==0||key==25) //屏蔽key为27的副作用  同时扫描不按键时key为0将在此循环                            
                   {

                     key=ZLG7290_GetKey();
                     delay(14);
                    }
                  
                  
                  if(i<3)
                    {
                      ZLG7290_SendData(0x0d,7);
                      ZLG7290_SendBuf(yyy,8);//输入时闪烁提示
                      quzhi[i++]=sss(key);
                     ZLG7290_SendData(0x0d,2);
                     ZLG7290_SendBuf(quzhi,3);
                     key=0;
                      }
                    if(i==2)  
                   {
                    
                 // dshi[2]={0x82,8};//quzhi[1]*10+quzhi[0];
                    dshi[1]=((quzhi[0]*100)+(quzhi[1]*10)+quzhi[2]);
                    ISendStr(pcf8563,0x0e,dshi,2); 
                    delayMS(10);
                    ISendStr(pcf8563,0x00,kozhi,2); 
                    delayMS(10);
                    }
                     if(key==26)
                     {
                     n=1;
                     goto aaa;
                     }
 
                }      
            }
          
           
           
            
          if(tt==27)
          {
              uchar key=0,k=0,i=0,j;
             n=0;
             
            for(j=0;j<13;j++)  //明白7290键值被读走后马上变为0 
               { 
               
               
                while(key==0||key==27) //屏蔽key为27的副作用  同时扫描不按键时key为0将在此循环                            
                  {
                  
                  
                   key=ZLG7290_GetKey();
                   delay(14);
                  
                   }
   
                             
                   if(key==26)        //确认重新开始
                     {
                         m=aa[0]<<4;
                         bb[4]=(m+aa[1])&0x3f;
                         m=aa[3]<<4;
                         bb[3]=(m+aa[4])&0x7f;
                         m=aa[6]<<4;
                         bb[2]=(m+aa[7])&0x7f;
            
                         m=ddd[0]<<4;
                          bb[7]=(m+ddd[1])&0x1f;
                         m=ddd[3]<<4;
                         bb[5]=(m+ddd[4])&0x3f;
                         m=ddd[6]<<4;
                         bb[6]=(m+ddd[7])&0x07;
            
            
                         ISendStr(pcf8563,0x00,bb,8);
                          delayMS(10);
                         n=1;
                         goto aaa;
                        }
                   
                   
                if(i<=7)
                   { 
                     ZLG7290_SendData(0x0d,7);
                     ZLG7290_SendBuf(yyy,8);//输入时闪烁提示
                     
                     if(i==2||i==5)
                     i++;
                     aa[i++]=sss(key);
                     ZLG7290_SendData(0x0d,7);
                     ZLG7290_SendBuf(aa,8);
                    }
                else{
                    ZLG7290_SendData(0x0d,7);
                     ZLG7290_SendBuf(yyy,8);
                
                    if(k==2||k==5)
                    k++;
                    ddd[k++]=sss(key);
                    
                    ZLG7290_SendData(0x0d,7);
                 ZLG7290_SendBuf(ddd,8);}
                     
                 key=0;
                
                 
                 //ZLG7290_SendData(0x0d,7);
                 //ZLG7290_SendBuf(aa,8);
               }
          }
   }
         
  
 aaa:
  if(n)
  {
        
    IRcvStr(pcf8563,0x02,cc,6);
     delayMS(10);
     
    
   d=cc[2]&0x30;
    aa[0]=(d>>4);
    aa[1]=cc[2]&0x0f;
    d=cc[1]&0x70;
    aa[3]=(d>>4);
    aa[4]=cc[1]&0x0f;
    d=cc[0]&0xf0;
    aa[6]=(d>>4);
    aa[7]=cc[0]&0x0f;
    aa[2]=0x1f;  
    aa[5]=0x1f;
  
    ZLG7290_SendData(0x0d,7);
    ZLG7290_SendBuf(aa,8);
    ZLG7290_SendCmd(0x01,0x96);
    ZLG7290_SendCmd(0x01,0xae);
       delay(23);
       delay(23);


      
   
   
    d=cc[5]&0x10;
    ddd[0]=(d>>4);
    ddd[1]=cc[5]&0x0f;
    d=cc[3]&0x30;
   ddd[3]=(d>>4);
   ddd[4]=cc[3]&0x0f;
    //d=cc[4]&0xf0;
   ddd[6]=0;
    ddd[7]=cc[4]&0x07;
    ddd[2]=0x1f;  
    ddd[5]=0x1f;
     ZLG7290_SendData(0x0d,7);
    ZLG7290_SendBuf(ddd,8);
     ZLG7290_SendCmd(0x01,0x96);
     ZLG7290_SendCmd(0x01,0xae);
       delay(23);
       delay(23);
    
     
     }     
  
   }
 
}
void st( ) interrupt 0 using 1
{
fig=1;
}

void sst( ) interrupt 2 using 2
 {
 zhd=1;
  }

⌨️ 快捷键说明

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