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

📄 6416+1302电子钟.lst

📁 6416led+ds1302+8951电子钟,完整源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 178   6                                           f=0;
 179   6                                 }
 180   5                    }
 181   4                       }
 182   3                 }
 183   2      
 184   2         Show_word();   //待机显示按三秒间隔分别显示年、月日、星期、时分秒。
 185   2      
 186   2         }       
 187   1      }
 188          /************************************************/
 189          void Show_word()                                 //串行输出显示
 190          {  uchar h;               
 191   1         for(h=0;h<16;h++)
 192   1            { 
 193   2                       if((id==0)&(f==0)|(id==1))                     //f为三秒转换显示
 194   2                                 {
 195   3                               Send_data(&timer[0][0]);           //不显示
 196   3                                       if((Flicker==1)&(id==1))       //闪烁标志为1时不亮,为零时亮
 197   3                                          { Show_pass();                          //不显示一个字
 198   4                                                Show_pass();
 199   4                                              }
 200   3                                       else
 201   3                                         {
 202   4                                            Send_data(&timer[2][h]);        //20年   
 203   4                                    Send_data(&timer[0][h]);
 204   4                                Send_data(&timer[Year/16][h]);  //年值   
 205   4                                    Send_data(&timer[Year%16][h]);
 206   4                                         }
C51 COMPILER V7.50   6416_1302电子钟                                                       08/18/2008 19:06:56 PAGE 5   

 207   3                                       Send_data(&hanzi[h*2+641]);          //年字符  
 208   3                               Send_data(&hanzi[h*2+640]);
 209   3                                       Send_data(&timer[0]);                //不显示
 210   3                                 }
 211   2      
 212   2                           if((id==0)&(f==1)|(id==2)|(id==3))                       
 213   2                                {
 214   3                                   if((Flicker==1)&(id==2))           //闪烁标志为1时不亮,为零时亮
 215   3                                          { Show_pass();                          //不显示一个字
 216   4                                                
 217   4                                              }
 218   3                                       else
 219   3                                          {
 220   4                                                if(Month/16<1)
 221   4                                                      Send_data(&timer[0]);                //月十位为零时不显示
 222   4                                                else
 223   4                                              Send_data(&timer[Month/16][h]);      //月值   
 224   4                                    Send_data(&timer[Month%16][h]);
 225   4                                              }
 226   3                                       Send_data(&hanzi[h*2+673]);                 //月字符
 227   3                               Send_data(&hanzi[h*2+672]);    
 228   3                                       if((Flicker==1)&(id==3))                            //闪烁标志为1时不亮,为零时亮 
 229   3                                          { Show_pass();                                       //不显示一个字
 230   4                                                
 231   4                                              }
 232   3                                       else
 233   3                                          {                                 
 234   4                                            Send_data(&timer[Day/16][h]);          //日值   
 235   4                                    Send_data(&timer[Day%16][h]);
 236   4                                              }
 237   3                           Send_data(&hanzi[h*2+961]);                 //日字符  
 238   3                               Send_data(&hanzi[h*2+960]);
 239   3                                }
 240   2      
 241   2                           if((id==0)&(f==2)|(id==4))                              //f为三秒转换显示
 242   2                                {
 243   3                                   Send_data(&timer[0]);                           //不显示
 244   3                                       Send_data(&hanzi[h*2+705]);                 //星字符
 245   3                               Send_data(&hanzi[h*2+704]);
 246   3                                       Send_data(&hanzi[h*2+737]);                 //期字符
 247   3                               Send_data(&hanzi[h*2+736]);
 248   3                                       if((Flicker==1)&(id==4))                            //闪烁标志为1时不亮,为零时亮 
 249   3                                          { Show_pass();                                       //不显示一个字
 250   4                                              }
 251   3                                       else
 252   3                                          {                                       
 253   4                                           Send_data(&hanzi[Week%16*32+h*2+737]);       //星期值
 254   4                                           Send_data(&hanzi[Week%16*32+h*2+736]); 
 255   4                                              }     
 256   3                               Send_data(&timer[0][0]);                        //不显示
 257   3                                }
 258   2      
 259   2                              if((id==0)&(f==3)|(id>4))                                    //f为三秒转换显示
 260   2                                {
 261   3                                   if((Flicker==1)&(id==5))                        //闪烁标志为1时不亮,为零时亮 
 262   3                                          { 
 263   4                                                Show_pass();                                   //不显示一个字
 264   4                                              }
 265   3                                       else
 266   3                                          { 
 267   4                                                if(Hour/16<1)
 268   4                                                  Send_data(&timer[0][0]);               //时十位小于1时不显示  
C51 COMPILER V7.50   6416_1302电子钟                                                       08/18/2008 19:06:56 PAGE 6   

 269   4                                        else
 270   4                                                  Send_data(&timer[Hour/16][h]);         //时值
 271   4                                    Send_data(&timer[Hour%16][h]);
 272   4                                              }
 273   3                                       Send_data(&timer[10][h]);                         //两个点
 274   3                                      
 275   3                                       if((Flicker==1)&(id==6))                              //闪烁标志为1时不亮,为零时亮 
 276   3                                          {
 277   4                                                Show_pass();                                     //不显示一个字
 278   4                                              }
 279   3                                       else
 280   3                                          { 
 281   4                                                Send_data(&timer[Cent/16][h]);   
 282   4                                            Send_data(&timer[Cent%16][h]);           //分值
 283   4                          } 
 284   3                                       Send_data(&timer[10][h]);                     //两个点
 285   3                                       if((Flicker==1)&(id==7))                              //闪烁标志为1时不亮,为零时亮 
 286   3                                          {                                      
 287   4                                                Show_pass();                                                     //不显示一个字
 288   4                                              }
 289   3                                       else
 290   3                                          { 
 291   4                                    Send_data(&timer[Sec/16][h]);            //秒
 292   4                                    Send_data(&timer[Sec%16][h]);  
 293   4                                          }
 294   3                            }
 295   2                              if(id>7)                                   //id大于7时为对显示转换模式设置
 296   2                                {     if((Flicker==1)&(id==8))                     
 297   3                                     {  Show_pass();
 298   4                                                Show_pass();
 299   4                                                Show_pass();
 300   4                                                Show_pass();
 301   4                                              }
 302   3                                      else if(b==0)
 303   3                                         {
 304   4                                            Send_data(&hanzi[h*2+993]);   //显示汉字 “自”
 305   4                                            Send_data(&hanzi[h*2+992]);
 306   4                                            Send_data(&hanzi[h*2+1057]);   //显示汉字“动”
 307   4                                            Send_data(&hanzi[h*2+1056]);     
 308   4                                                Send_data(&hanzi[h*2+1089]);   //显示汉字“模”
 309   4                                            Send_data(&hanzi[h*2+1088]);
 310   4                                            Send_data(&hanzi[h*2+1121]);   //显示汉字“式”
 311   4                                            Send_data(&hanzi[h*2+1120]);
 312   4                                         }
 313   3                                      else
 314   3                                         {
 315   4                                            Send_data(&hanzi[h*2+1025]);   //显示汉字“手”
 316   4                                            Send_data(&hanzi[h*2+1024]);
 317   4                                            Send_data(&hanzi[h*2+1057]);   //显示汉字“动”
 318   4                                            Send_data(&hanzi[h*2+1056]);     
 319   4                                                Send_data(&hanzi[h*2+1089]);   //显示汉字“模”
 320   4                                            Send_data(&hanzi[h*2+1088]);
 321   4                                            Send_data(&hanzi[h*2+1121]);   //显示汉字“式”
 322   4                                            Send_data(&hanzi[h*2+1120]);
 323   4                                         }
 324   3                                      if(id==9)
 325   3                                         {
 326   4                                           if(b==1)                      //手动模式
 327   4                                             { 
 328   5                                               id=0;f=0;
 329   5                                             }
 330   4                                           else
C51 COMPILER V7.50   6416_1302电子钟                                                       08/18/2008 19:06:56 PAGE 7   

 331   4                                                 {
 332   5                                                   Send_data(&hanzi[h*2+993]);    //显示汉字“自”
 333   5                                               Send_data(&hanzi[h*2+992]);
 334   5                                                       Send_data(&hanzi[h*2+1057]);   //显示汉字“动”
 335   5                                               Send_data(&hanzi[h*2+1056]);
 336   5                                                       if(Flicker==1)
 337   5                                                         {
 338   6                                                           Show_pass();
 339   6                                                         }
 340   5                                                       else
 341   5                                                     {
 342   6                                                           Send_data(&timer[a/16][h]);    //转换时间
 343   6                                           Send_data(&timer[a%16][h]);
 344   6                                                              }
 345   5                                                       Send_data(&hanzi[h*2+1153]);   //显示汉字“秒”
 346   5                                               Send_data(&hanzi[h*2+1152]);
 347   5                                                 } 
 348   4                         }
 349   3                                }
 350   2            P2_7=1;                                     //锁存为高,595锁存信号
 351   2                P2=sw[h];                                   //输出行信号
 352   2                DelayMs();                  //延时,等待一段时间,让这列显示的内容在人眼内产生“视觉暂留”现象。*/
 353   2                P2=0x7f;                            //关闭显示。
 354   2              }       
 355   1      }
 356          
 357          
 358          void timer_1(void) interrupt 1  //中断入口,闪烁
 359          {
 360   1        TH0=0x3C;              //25ms定时 晶振24M
 361   1        TL0=0xB0;
 362   1        if(msec++==40)             //1000ms
 363   1         { msec=0;
 364   2               x++;                       
 365   2           if(x>=a)
 366   2             { x=0;
 367   3                  if(b==0)                //自动模式
 368   3              {if(f++==3) 
 369   4                    f=0;          //f显示转换计数器 ,d为用户设置的自动转换时间的值。
 370   4                  }
 371   3                 }
 372   2          if(h++==4)              //5秒后进入正常走时。
 373   2             {id=0;h=0;}
 374   2              }       
 375   1        if(msec<20)
 376   1                  Flicker=0;   //闪烁标志反转          
 377   1        else
 378   1                  Flicker=1; 
 379   1                                        
 380   1      }
 381          
 382          
 383          /***********************输出一个字的不显示数据。*****************/
 384          void Show_pass()
 385          {
 386   1        Send_data(&timer[0][0]);                       //不显示
 387   1        Send_data(&timer[0][0]);                       //不显示
 388   1      }
 389          
 390          /**********************************************************/
 391          void in_data(void)                                     //调整数据
 392          {
C51 COMPILER V7.50   6416_1302电子钟                                                       08/18/2008 19:06:56 PAGE 8   

 393   1       char s;
 394   1              for(s=4;s>=0;s--)                                           //i为向后先择字节计数器,zimuoo为向后先字计数器
 395   1              {
 396   2               BUFF[2*s+1]=hanzi[zimuo+32*s+2*line];            //把第一个字模的第一个字节放入BUFF0中,第二个字模和第一

⌨️ 快捷键说明

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