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

📄 fhy.lst

📁 单片机课程设计 电子钟
💻 LST
📖 第 1 页 / 共 2 页
字号:
 218   1              {dirve();
 219   2              }
 220   1         
 221   1      }
 222          
 223          
 224          /*调整闹时时间*/
 225          
 226          
 227          void time1_adj()
 228          {
 229   1              if(P2_2==0) delay(1);
 230   1              if(P2_2==0) t_hour++;
 231   1              if(t_hour==24) t_hour=0;        
 232   1                
 233   1      
 234   1              for(m=0;m<30;m++)
 235   1                      {t_dirve();
 236   2                      }
 237   1              
 238   1              if(P2_1==0) delay(1);
 239   1              if(P2_1==0) t_min++;
 240   1              if(t_min==60) t_min=0;  
 241   1                
C51 COMPILER V8.02   FHY                                                                   03/01/2009 08:55:07 PAGE 5   

 242   1              
 243   1              for(m=0;m<30;m++)
 244   1                      {t_dirve();
 245   2                      }
 246   1      }
 247          
 248          /*调整倒计时时间*/
 249          
 250          
 251          void time2_adj()
 252          
 253          
 254          {       if(P2_2==0) delay(1);
 255   1              if(P2_2==0)     d_hour++;
 256   1              if(d_hour==12) d_hour=0;
 257   1               
 258   1              
 259   1              if(P2_1==0)  delay(1);
 260   1              if(P2_1==0)      d_min++;
 261   1              if(d_min==60) d_min=0;
 262   1      
 263   1              
 264   1              if(P2_0==0)  delay(1);
 265   1              if(P2_0==0)  dflag=1;
 266   1                       
 267   1                      for(m=0;m<30;m++)
 268   1                      d_dirve();
 269   1      }
 270          
 271          
 272          
 273          
 274          /*走时时间输出驱动子函数*/
 275          
 276          
 277          
 278          void dirve()
 279          
 280          
 281          {       for(posit1=0;posit1<6;posit1++)
 282   1          { 
 283   2                P1=DATA_7SEG[dis_buff1[posit1]];
 284   2                P3=DATA_P3[posit1];
 285   2                delay(1);
 286   2                P1=0xff;
 287   2               }
 288   1               
 289   1      } 
 290                                    
 291          
 292          /*闹时时间输出驱动子函数*/
 293          
 294          
 295          
 296          void t_dirve()
 297          
 298          
 299          { 
 300   1         for(posit2=0;posit2<6;posit2++)
 301   1          {P1=DATA_7SEG[dis_buff2[posit2]];
 302   2               P3=DATA_P3[posit2];
 303   2               delay(1);
C51 COMPILER V8.02   FHY                                                                   03/01/2009 08:55:07 PAGE 6   

 304   2                P1=0xff;
 305   2           }
 306   1      }
 307          
 308          
 309          /*倒计时时间输出驱动子函数*/
 310          
 311          
 312          
 313          void d_dirve()
 314          
 315          
 316          
 317          { 
 318   1        for(posit3=0;posit3<6;posit3++)
 319   1          {
 320   2                P1=DATA_7SEG[dis_buff3[posit3]];
 321   2                P3=DATA_P3[posit3];
 322   2                delay(1);
 323   2                P1=0xff;
 324   2                }
 325   1      }
 326          
 327          
 328          
 329          /*判别闹钟是否到时子函数*/
 330          
 331          
 332          void p_out()
 333          
 334          
 335          {       if(o_f==1)
 336   1              {if(hour==t_hour&&min==t_min&&sec==t_sec)
 337   2                 {almflag2=1;}
 338   2               if(P2_0==0)
 339   2                      almflag2=0;       
 340   2               }
 341   1      }
 342          
 343          
 344          /*走时计数值送显示缓冲区函数*/
 345          
 346          
 347          void data_to_disbuffer1(void)
 348          
 349          {dis_buff1[0]=hour/10;
 350   1       dis_buff1[1]=hour%10;
 351   1       dis_buff1[2]= min/10;
 352   1       dis_buff1[3]= min%10;
 353   1       dis_buff1[4]= sec/10;
 354   1       dis_buff1[5]= sec%10;
 355   1      }
 356          
 357          
 358          /*闹钟计数值送显示缓冲区函数*/
 359          
 360          void data_to_disbuffer2(void)
 361          
 362          
 363          {
 364   1       dis_buff2[0]=t_hour/10;
 365   1       dis_buff2[1]=t_hour%10;
C51 COMPILER V8.02   FHY                                                                   03/01/2009 08:55:07 PAGE 7   

 366   1       dis_buff2[2]= t_min/10;
 367   1       dis_buff2[3]= t_min%10;
 368   1       dis_buff2[4]= t_sec/10;
 369   1       dis_buff2[5]= t_sec/10;
 370   1      }
 371          
 372          
 373          /*倒计时计数值送显示缓冲区函数*/
 374          
 375          
 376          void data_to_disbuffer3(void)
 377          
 378          
 379          {
 380   1       dis_buff3[0]=d_hour/10;
 381   1       dis_buff3[1]=d_hour%10;
 382   1       dis_buff3[2]= d_min/10;
 383   1       dis_buff3[3]= d_min%10;
 384   1       dis_buff3[4]= d_sec/10;
 385   1       dis_buff3[5]= d_sec%10;
 386   1      }
 387          
 388          
 389          /*主函数*/
 390          
 391          
 392          void main()
 393          
 394          
 395          
 396          {  timer_init();
 397   1              EA=1;
 398   1         while(1)
 399   1              { conv();
 400   2                 if(dflag==1)
 401   2                 d_conv();
 402   2                 
 403   2                 if(almflag1==1)
 404   2                      { P2_4=0;
 405   3                         delay(100);
 406   3                         P2_4=1;
 407   3                         almflag1=0;
 408   3                     }           
 409   2               if(P2_3==0) 
 410   2                  scan_key();
 411   2                       switch(set)
 412   2                              {
 413   3                               case 0 : time();       break;
 414   3                               case 1 : time1_adj();  break;
 415   3                               case 2 : time1_of();   break;  
 416   3                               case 3 : time2_adj();  break;
 417   3                               case 4 : time_adj();   break;
 418   3                               default :                  break;
 419   3                              }                 
 420   2                          data_to_disbuffer1();
 421   2                              data_to_disbuffer2();
 422   2                              data_to_disbuffer3();
 423   2                
 424   2              }
 425   1      }


C51 COMPILER V8.02   FHY                                                                   03/01/2009 08:55:07 PAGE 8   

MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    995    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     62    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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