找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3900|回复: 4
收起左侧

我写的万年历,

[复制链接]
ID:105263 发表于 2016-4-10 17:31 | 显示全部楼层 |阅读模式
本帖最后由 bsm5632 于 2016-4-10 21:49 编辑

     uint i;        if(sz==0)                         //设置健
        {
          i++;
        }

         if(i>=20000)
         {
                  i=0;
                  b++;
                  dat_bb[0]=b+0x30;
                 display_string_5x8(1,108,dat_bb);
         }
         if(b>=8)
         {
                  b=0;
         }

             if(b==1)                //设置秒+-
                  {
                        a++;
                         if(jia==0&&a>=6000)
                         {        a=0;
                                mnum++;
                                dat_mnum[0]=mnum/10+0x30;    // 存放秒十位的ASCII码  
                                dat_mnum[1]=mnum%10+0x30;    // 存放秒个位的ASCII码
                                display_GB2312_string(5,81,dat_mnum); //秒显示


                         }
                         if(jian==0&&a>=6000&&mnum>=1)
                         {         a=0;
                                mnum--;
                                   dat_mnum[0]=mnum/10+0x30;    // 存放秒十位的ASCII码  
                                dat_mnum[1]=mnum%10+0x30;    // 存放秒个位的ASCII码
                                display_GB2312_string(5,81,dat_mnum);  //秒显示

                         }
                  }                 
                   if(b==2)                  //设置分+-
                  {
                        a++;
                         if(jia==0&&a>=10000)
                         {        a=0;
                                fnum++;
                                dat_fnum[0]=fnum/10+0x30;    // 存放分十位的ASCII码  
                                dat_fnum[1]=fnum%10+0x30;    // 存放分个位的ASCII码
                                display_GB2312_string(5,49,dat_fnum);  //分显示

                         }
                         if(jian==0&&a>=10000&&fnum>=1)
                         {         a=0;
                                fnum--;
                                   dat_fnum[0]=fnum/10+0x30;    // 存放分十位的ASCII码  
                                dat_fnum[1]=fnum%10+0x30;    // 存放分个位的ASCII码
                                display_GB2312_string(5,49,dat_fnum);  //分显示

                         }
                  }                 
                         
                   if(b==3)                        //设置时+-
                  {
                        a++;
                         if(jia==0&&a>=15000)
                         {
                                a=0;
                                snum++;
                                dat_snum[0]=snum/10+0x30;    // 存放时十位的ASCII码  
                                dat_snum[1]=snum%10+0x30;    // 存放时个位的ASCII码
                            display_GB2312_string(5,17,dat_snum); //时显示
                         }
                         if(jian==0&&a>=15000&&snum>=1)
                         {
                                a=0;
                                snum--;
                                   dat_snum[0]=snum/10+0x30;    // 存放时十位的ASCII码  
                                dat_snum[1]=snum%10+0x30;    // 存放时个位的ASCII码
                            display_GB2312_string(5,17,dat_snum);         //时显示
                         }
                  }                 

                 if(b==4)                        //设置日+-
                  {       
                        a++;
                         if(jia==0&&a>=15000)
                         {
                                a=0;
                                tnum++;
                                dat_tnum[0]=tnum/10+0x30;    // 存放日十位的ASCII码  
                                dat_tnum[1]=tnum%10+0x30;    // 存放日个位的ASCII码
                                display_GB2312_string(3,81,dat_tnum);        //天显示
                         }
                         if(jian==0&&a>=15000&&tnum>=1)
                         {
                                a=0;
                                tnum--;
                                   dat_tnum[0]=tnum/10+0x30;    // 存放日十位的ASCII码  
                                dat_tnum[1]=tnum%10+0x30;    // 存放日个位的ASCII码
                                display_GB2312_string(3,81,dat_tnum);        //天显示
                         }
                  }                 

                  if(b==5)                           //设置月+-
                  {
                         a++;
                         if(jia==0&&a>=15000)
                         {
                                a=0;
                                ynum++;
                                dat_ynum[0]=ynum/10+0x30;    // 存放月十位的ASCII码  
                    dat_ynum[1]=ynum%10+0x30;    // 存放月个位的ASCII码
                                display_GB2312_string(3,49,dat_ynum);//月显示
                         }
                         if(jian==0&&a>=15000&&ynum>=1)
                         {
                                a=0;
                                ynum--;
                                   dat_ynum[0]=ynum/10+0x30;    // 存放月十位的ASCII码  
                    dat_ynum[1]=ynum%10+0x30;    // 存放月个位的ASCII码
                                display_GB2312_string(3,49,dat_ynum);  //月显示
                         }
                  }                 
                  if(b==6)                                   //设置年+-
                  {
                         a++;
                         if(jia==0&&a>=15000)
                         {
                                a=0;
                                nnum++;
                                dat_nnum[0]=nnum/10+0x30;    // 存放年十位的ASCII码  
                            dat_nnum[1]=nnum%10+0x30;    // 存放年个位的ASCII码
                            display_GB2312_string(3,17,dat_nnum);  //年显示
                         }
                     if(jian==0&&a>=15000&&nnum>=1)
                         {
                                a=0;
                                nnum--;
                                   dat_nnum[0]=nnum/10+0x30;    // 存放年十位的ASCII码  
                            dat_nnum[1]=nnum%10+0x30;    // 存放年个位的ASCII码
                            display_GB2312_string(3,17,dat_nnum);         //年显示
                         }
                  }                 

                 if(b==7)                                          //设置星期+-
                  {
                        a++;
                         if(jia==0&&a>=15000)
                         {
                                a=0;
                                xnum++;
                                 switch(xnum)
                                 {       
                                     case 8: if(xnum==8)xnum=1;display_GB2312_string(7,51,"一");break;                                         
                                          case 2: display_GB2312_string(7,51,"二");break;
                                          case 3: display_GB2312_string(7,51,"三");break;
                                          case 4: display_GB2312_string(7,51,"四");break;
                                          case 5: display_GB2312_string(7,51,"五");break;
                                          case 6: display_GB2312_string(7,51,"六");break;
                                          case 7: display_GB2312_string(7,51,"日");break;                                                         
                                 }
                         }
                         if(jian==0&&a>=15000&&xnum>=1)
                         {
                                a=0;
                                xnum--;
                                 switch(xnum)
                                 {       
                                     case 8: if(xnum==8)xnum=1;display_GB2312_string(7,51,"一");break;                                         
                                          case 2: display_GB2312_string(7,51,"二");break;
                                          case 3: display_GB2312_string(7,51,"三");break;
                                          case 4: display_GB2312_string(7,51,"四");break;
                                          case 5: display_GB2312_string(7,51,"五");break;
                                          case 6: display_GB2312_string(7,51,"六");break;
                                          case 7: display_GB2312_string(7,51,"日");break;                                                         
                                 }
                         }
                  }                 



                  //num4++在定时器中断里
         if(num4>=1000)
         {
                 num4=0;
             mnum++;                           
                   dat_mnum[0]=mnum/10+0x30;    // 存放秒十位的ASCII码  
                dat_mnum[1]=mnum%10+0x30;    // 存放秒个位的ASCII码
                display_GB2312_string(5,81,dat_mnum);        //秒显示

         }

           if(num4>=500)
         {
                 led=1;
          }
          else led=0;


        if(mnum>=60)
        {
                mnum=0;
                dat_mnum[0]=0+0x30;    // 存放秒十位的ASCII码  
                dat_mnum[1]=0+0x30;    // 存放秒个位的ASCII码
                display_GB2312_string(5,81,dat_mnum);        //秒显示       
                fnum++;       
                dat_fnum[0]=fnum/10+0x30;    // 存放分十位的ASCII码  
                 dat_fnum[1]=fnum%10+0x30;    // 存放分个位的ASCII码
            display_GB2312_string(5,49,dat_fnum);        //秒显示
               

        }
   if(fnum>=60)
        {
                fnum=0;
                dat_fnum[0]=0+0x30;    // 存放分十位的ASCII码  
                dat_fnum[1]=fnum%10+0x30;    // 存放分个位的ASCII码
                display_GB2312_string(5,49,dat_fnum); //分显示
                snum++;
                dat_snum[0]=snum/10+0x30;    // 存放时十位的ASCII码  
                dat_snum[1]=snum%10+0x30;    // 存放时个位的ASCII码
            display_GB2312_string(5,17,dat_snum);          //分显示
        }
        if(snum>=24)
        {

                snum=0;
                dat_snum[0]=0+0x30;    // 存放时十位的ASCII码  
                dat_snum[1]=0+0x30;    // 存放时个位的ASCII码
                display_GB2312_string(5,17,dat_snum);  //时显示
                tnum++;                 
                xnum++;
            dat_tnum[0]=tnum/10+0x30;    // 存放日十位的ASCII码  
                dat_tnum[1]=tnum%10+0x30;    // 存放日个位的ASCII码
                display_GB2312_string(3,81,dat_tnum);         //时显示
                 switch(xnum)
                 {         
                     case 8: if(xnum==8)xnum=1;display_GB2312_string(7,51,"一");break;
                          case 2: display_GB2312_string(7,51,"二");break;
                          case 3: display_GB2312_string(7,51,"三");break;
                          case 4: display_GB2312_string(7,51,"四");break;
                          case 5: display_GB2312_string(7,51,"五");break;
                          case 6: display_GB2312_string(7,51,"六");break;
                          case 7: display_GB2312_string(7,51,"日");break;                 //星期显示                
                 }               
        }
   /**********************/

        if((ynum%2)&&(ynum<=7)         )           // 上半年单月
         {
           if(tnum>=32)
                 {
                       
                        tnum=1;
                        dat_tnum[0]=0+0x30;    // 存放日十位的ASCII码  
                    dat_tnum[1]=1+0x30;    // 存放日个位的ASCII码
                        display_GB2312_string(3,81,dat_tnum);  //天显示
                        ynum++;
                        dat_ynum[0]=0+0x30;    // 存放月十位的ASCII码  
            dat_ynum[1]=ynum%10+0x30;    // 存放月个位的ASCII码
                        display_GB2312_string(3,49,dat_ynum);  //月显示
                 }
        }
        else                                         //上半年双月
        {
                 if((ynum<=7))        //上半年 2月
                 {
                          if((nnum%4)%2)
                          {
                           if((ynum==2)&&(tnum>=29))          // 闰年的2月
                                  {
                                  
                                  tnum=1;
                                  dat_tnum[0]=0+0x30;    // 存放日十位的ASCII码  
                          dat_tnum[1]=1+0x30;    // 存放日个位的ASCII码
                                  display_GB2312_string(3,81,dat_tnum);        //天显示
                                  ynum++;
                                  dat_ynum[0]=0+0x30;    // 存放月十位的ASCII码  
                  dat_ynum[1]=ynum%10+0x30;    // 存放月个位的ASCII码
                                 display_GB2312_string(3,49,dat_ynum);        //月显示
                                 }
                         }
                         else                                 
                         {
                           if((ynum==2)&&(tnum>=30))
                                  {
                                  
                                  tnum=1;
                                  dat_tnum[0]=0+0x30;    // 存放日十位的ASCII码  
                          dat_tnum[1]=1+0x30;    // 存放日个位的ASCII码
                                  display_GB2312_string(3,81,dat_tnum);         //天显示
                                  ynum++;
                                  dat_ynum[0]=0+0x30;    // 存放月十位的ASCII码  
                  dat_ynum[1]=ynum%10+0x30;    // 存放月个位的ASCII码
                                  display_GB2312_string(3,49,dat_ynum);         //月显示
                                 }
                         
                         }
                    if(tnum>=31)
                         {                               
                                tnum=1;
                                dat_tnum[0]=0+0x30;    // 存放日十位的ASCII码  
                        dat_tnum[1]=1+0x30;    // 存放日个位的ASCII码
                                display_GB2312_string(3,81,dat_tnum);//天显示
                                ynum++;
                                dat_ynum[0]=0+0x30;    // 存放月十位的ASCII码  
                dat_ynum[1]=ynum%10+0x30;    // 存放月个位的ASCII码
                                display_GB2312_string(3,49,dat_ynum);        //月显示
                         }                                                                                          
       
              }
   }
        if((ynum%2)&&(ynum>=8)         )        //下半年双月
         {
           if(tnum>=31)
                 {
                        tnum=1;
                        dat_tnum[0]=0+0x30;    // 存放日十位的ASCII码  
                    dat_tnum[1]=1+0x30;    // 存放日个位的ASCII码
                        display_GB2312_string(3,81,dat_tnum);  //天显示
                        ynum++;
                    dat_ynum[0]=ynum/10+0x30;    // 存放月十位的ASCII码  
            dat_ynum[1]=ynum%10+0x30;    // 存放月个位的ASCII码
                        display_GB2312_string(3,49,dat_ynum);        //月显示
                 }
        }
        else                                    //下半年单月
        {
        if(tnum>=32)
                 {
                        tnum=1;
                        dat_tnum[0]=0+0x30;    // 存放日十位的ASCII码  
                    dat_tnum[1]=1+0x30;    // 存放日个位的ASCII码
                        display_GB2312_string(3,81,dat_tnum);  //天显示
                        ynum++;
                        dat_ynum[0]=ynum/10+0x30;    // 存放月十位的ASCII码  
            dat_ynum[1]=ynum%10+0x30;    // 存放月个位的ASCII码
                        display_GB2312_string(3,49,dat_ynum); //月显示

                 }
   }

   if(ynum>=13)
         {
                  ynum=1;
                 dat_ynum[0]=0+0x30;    // 存放月十位的ASCII码  
         dat_ynum[1]=1+0x30;    // 存放月个位的ASCII码
                 display_GB2312_string(3,49,dat_ynum); //月显示

                 nnum++;
                 dat_nnum[0]=nnum/10+0x30;    // 存放年十位的ASCII码  
                 dat_nnum[1]=nnum%10+0x30;    // 存放年个位的ASCII码
                  display_GB2312_string(3,17,dat_nnum);   //年显示
         }

         if(nnum>=100)
         {
             nnum=0;
                 dat_nnum[0]=0+0x30;    // 存放年十位的ASCII码  
                 dat_nnum[1]=0+0x30;    // 存放年个位的ASCII码
                 display_GB2312_string(3,17,dat_nnum);                 //年显示

                 bnnum++;
                 dat_bnnum[0]=bnnum/10+0x30;    // 存放年十位的ASCII码  
                 dat_bnnum[1]=bnnum%10+0x30;    // 存放年个位的ASCII码
                 display_GB2312_string(3,1,dat_bnnum);         //千百年显示         
         }

         if(bnnum>=100)
         {
             bnnum=0;
                 dat_bnnum[0]=0+0x30;    // 存放年十位的ASCII码  
                 dat_bnnum[1]=0+0x30;    // 存放年个位的ASCII码
                 display_GB2312_string(3,1,dat_bnnum);         //千百年显示
         }

单选投票, 共有 11 人参与投票
您所在的用户组没有投票权限
回复

使用道具 举报

ID:93569 发表于 2016-4-10 19:48 | 显示全部楼层
不要那么多IF语句,可以用switch语句代替。该精简的要精简,代码要高效些。
回复

使用道具 举报

ID:105263 发表于 2016-4-10 21:51 | 显示全部楼层
molubumo 发表于 2016-4-10 19:48
不要那么多IF语句,可以用switch语句代替。该精简的要精简,代码要高效些。

星期已经改成switch语句了,其他不方便改
回复

使用道具 举报

ID:156879 发表于 2016-12-22 15:52 | 显示全部楼层
看看
回复

使用道具 举报

ID:261274 发表于 2017-12-17 20:40 | 显示全部楼层
看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表