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

📄 main.lst

📁 全国电子设计大赛:智能电动车的设计.实现功能:以AT89C52单片机为核心
💻 LST
📖 第 1 页 / 共 5 页
字号:
 539   3                                                                      break;
 540   3                                                 default: break;
 541   3                                         }
 542   2                                 break;
 543   2                      case 1: // 按键:修改
 544   2                                 delay_time = 0;
 545   2                                         vertical = horizontal = 0;
 546   2                                         switch( SCREEN )
 547   2                                         {
 548   3                                             case 0 : // 进入修改状态
 549   3                                                         SCREEN=1;
 550   3                                                                 modifying=1;
C51 COMPILER V7.20   MAIN                                                                  11/15/2005 18:46:56 PAGE 10  

 551   3                                                                 confirm_down=1;
 552   3                                                         break;
 553   3                                                 case 1 : break;
 554   3                                                 case 10: time_modify  = 0; break;
 555   3                                                 case 20: alarm_modify = 0; break;
 556   3                                                 case 30: DAC0_modify  = 0; DAC1_modify = 0; break;      
 557   3                                                 case 40: SPEED_modify = 0; break;
 558   3                                                 case 50: break;
 559   3                                                 case 60: break;
 560   3                                                 default: break;
 561   3                                         }
 562   2                                 break;
 563   2                      case 6: // 按键:返回
 564   2                                 delay_time = 0;  
 565   2                                         flag=!flag;   CarStop( ); Start = 0; Stop = 0;
 566   2      /*                                 if ( flag ) 
 567   2                                         {
 568   2      //                                     LED_OUT_ACT( );          // Enable LED 
 569   2      //                                         ALARM_ACT( );            // Enable Alarm
 570   2      
 571   2                                                 LED_OUT_INACT( );          // Disable LED
 572   2                                                 ALARM_INACT( );            // Disable Alarm
 573   2                                         }
 574   2                                         else 
 575   2                                         {
 576   2                                             LED_OUT_INACT( );          // Disable LED
 577   2                                                 ALARM_INACT( );            // Disable Alarm
 578   2                                         }
 579   2      */                         break;
 580   2                      default:   break;
 581   2              }
 582   1              keycode = 0;
 583   1      
 584   1          //---------------------------------------------------------------
 585   1          // 超过15秒无修改,返回初始屏 
 586   1              if( modifying ) 
 587   1              {
 588   2                  time_now = time_buf[0]%10;
 589   2                      if( time_now^time_old ) delay_time++; 
 590   2                      time_old = time_now;
 591   2                      if( delay_time>15 ) // 模拟按下确认键, 不进行任何修改
 592   2                      {
 593   3                          vertical=horizontal=0;
 594   3                              SCREEN = 0;
 595   3                              confirm_down = 1;
 596   3                              modifying  = 0;
 597   3                              delay_time = 0;
 598   3      
 599   3                              LED_OUT_INACT( );          // Disable LED
 600   3                              ALARM_INACT( );            // Disable Alarm
 601   3                      }
 602   2              }
 603   1      
 604   1              //---------------------------------------------------------------
 605   1              // 一秒钟所计数数目 
 606   1              if( time_now == time_old1 ) second_count++;
 607   1              else 
 608   1              {
 609   2                  Write12C887RAM( SECOND_COUNT_RANGE, second_count );  // 存入一秒钟所计数数目 
 610   2                  second_count = 0;
 611   2                      flag_s = 1;          // 秒标志置位 
 612   2              }
C51 COMPILER V7.20   MAIN                                                                  11/15/2005 18:46:56 PAGE 11  

 613   1              time_old1 = time_now;
 614   1      
 615   1              // 半秒钟标志处理 
 616   1              if( flag_s )
 617   1              {
 618   2                  halfsecond_count++;
 619   2                      if( halfsecond_count == Read12C887RAM( SECOND_COUNT_RANGE )/2 ) 
 620   2                      {
 621   3                          flag_s = 0;
 622   3                              halfsecond_count = 0;
 623   3                      }
 624   2              }
 625   1      }
 626          
 627          //=================================================================================================
 628          //                                                                         显示 子程序
 629          //=================================================================================================
 630          // 
 631          void Display( void )
 632          {
 633   1              unsigned char i;
 634   1      
 635   1          Read12C887 ( time_buf );       // 读取系统时间 
 636   1      
 637   1          TEMPER = GetTemperature ( );   // 取得片内温度 
 638   1      
 639   1              //-----------------------------------------------------
 640   1              // LED glitter 
 641   1              if( LED_Glitter_Enable && !LED_Glitter_Disable )
 642   1              {
 643   2                  if( flag_s  ) LED_OUT_ACT( );
 644   2                      if( !flag_s ) LED_OUT_INACT( );
 645   2              }
 646   1              else if( !LED_Glitter_Enable && LED_Glitter_Disable )
 647   1              {
 648   2                  LED_Glitter_Enable = LED_Glitter_Disable = 0;
 649   2                  LED_OUT_INACT( );
 650   2              }
 651   1       
 652   1              //-------------------------------------------
 653   1              // 前方的光电传感器取值, 因白炽灯有 50Hz 的公频, 所以需要滤波 
 654   1          // 相应操作: 取 8 次平均值 
 655   1              // 左边光电传感器 
 656   1              tempshort = 0; 
 657   1              for( i=0; i<16; i++ )
 658   1              {
 659   2                  LightLeft   = ADConvert0( 1 , 0 );  
 660   2                      tempshort   += LightLeft; 
 661   2              }
 662   1              LightLeft = tempshort/16;      // LightLeft = _iror_( tempshort, 3 );
 663   1      
 664   1              // 中央光电传感器 
 665   1              tempshort = 0; 
 666   1              for( i=0; i<16; i++ )
 667   1              {
 668   2                  LightCenter = ADConvert0( 0 , 0 );  
 669   2                      tempshort   += LightCenter; 
 670   2              }
 671   1              LightCenter = tempshort/16;    // LightCenter = _iror_( tempshort, 3 );
 672   1      
 673   1              // 右边光电传感器 
 674   1              tempshort = 0; 
C51 COMPILER V7.20   MAIN                                                                  11/15/2005 18:46:56 PAGE 12  

 675   1              for( i=0; i<16; i++ )
 676   1              {
 677   2                  LightRight   = ADConvert0( 2 , 0 );  
 678   2                      tempshort   += LightRight; 
 679   2              }
 680   1              LightRight = tempshort/16;    // LightRight = _iror_( tempshort, 3 ); 
 681   1      
 682   1              //-------------------------------------------
 683   1              // 
 684   1              Voltage       = ADConvert0( 6 , 0 );  // 5V 
 685   1              DriverVoltage = ADConvert0( 7 , 0 );  // 10V 
 686   1              DriverVoltage /= 9;                   // 校正
 687   1      
 688   1              Flag_Center = Center;         // 检测中央光电状态: "0" -- 中央, "1" -- 偏离  
 689   1      
 690   1              //-----------------------------------------------------
 691   1              // LCD 
 692   1              if( SCREEN )
 693   1              {
 694   2              DisplayNumber( 0, 8*0, time_buf[5]/10 ); // 月/日
 695   2                  DisplayNumber( 0, 8*1, time_buf[5]%10 );
 696   2                  DisplayNumber( 0, 8*2, 16             ); 
 697   2                  DisplayNumber( 0, 8*3, time_buf[4]/10 ); 
 698   2                  DisplayNumber( 0, 8*4, time_buf[4]%10 );
 699   2                  DisplayNumber( 0, 8*5, 78             ); // (星期 )
 700   2                  DisplayNumber( 0, 8*6, time_buf[3]    ); 
 701   2                  DisplayNumber( 0, 8*7, 79             ); 
 702   2                  DisplayNumber( 0, 8*8, time_buf[2]/10 ); // 时:分:秒 ( 带闪烁 ) 
 703   2                  DisplayNumber( 0, 8*9, time_buf[2]%10 );
 704   2                  if( flag_s )DisplayNumber( 0, 8*10,17 ); 
 705   2                  else        DisplayNumber( 0, 8*10,77 ); 
 706   2                  DisplayNumber( 0, 8*11,time_buf[1]/10 ); 
 707   2                  DisplayNumber( 0, 8*12,time_buf[1]%10 );
 708   2                  if( flag_s )DisplayNumber( 0, 8*13,17 ); 
 709   2                  else        DisplayNumber( 0, 8*13,77 ); 
 710   2              DisplayNumber( 0, 8*14,time_buf[0]/10 ); 
 711   2                  DisplayNumber( 0, 8*15,time_buf[0]%10 );
 712   2              };
 713   1      
 714   1              if( confirm_down ) // 清屏
 715   1              {
 716   2                  confirm_down = 0;
 717   2                      LCDInit ( );
 718   2                      LCDClear ( );
 719   2              }
 720   1      

⌨️ 快捷键说明

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