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

📄 oscilloscope.lst

📁 单片机通过DA对信号采样
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.09   OSCILLOSCOPE                                                          08/15/2005 19:39:16 PAGE 6   

 304   3         break;
 305   3         default:
 306   3         break;
 307   3         }
 308   2       }
 309   1      }
 310          //***************************************************************************************
 311          void Vertical_GainB()
 312          {
 313   1        Led_On=0;
 314   1        Vertical_Gain_B_Grade++;
 315   1        if(Vertical_Gain_B_Grade>2)
 316   1        Vertical_Gain_B_Grade=0;
 317   1        else
 318   1       {
 319   2        Vertical_Gain_B=Vertical_Gain_B_Grade;
 320   2        lcd_clear();
 321   2        lcd_write_sentence(1,0,"当前垂直增益档位");
 322   2        lcd_write_sentence(2,3,"B 路");
 323   2        switch(Vertical_Gain_B_Grade)
 324   2        {
 325   3         case 0:
 326   3         lcd_write_sentence(3,1,"0.01V/div");
 327   3         break;
 328   3         case 1:
 329   3         lcd_write_sentence(3,1,"0.1V/div");
 330   3         break;
 331   3         case 2:
 332   3         lcd_write_sentence(3,1,"1V/div");
 333   3         break;
 334   3         default:
 335   3         break;
 336   3         }
 337   2        }
 338   1      }
 339          //***************************************************************************************
 340          void Vertical_MoveA()
 341          {
 342   1       Shift_Flag=1;
 343   1       ledcursor=2;
 344   1       Key_Flag=4;
 345   1       Led_On=1;
 346   1       Glint_Flag=1;
 347   1       lcd_clear();
 348   1       lcd_write_sentence(1,0,"按加减键上下移动");
 349   1       lcd_write_sentence(2,1,"A 路波形");
 350   1       distab[0]=0x00;
 351   1       distab[1]=0x00;
 352   1       distab[2]=0x00;
 353   1       distab[3]=0x10;
 354   1       distab[4]=0x10;
 355   1       distab[5]=0x10;
 356   1       distab[6]=0x10;
 357   1       distab[7]=0x04;
 358   1      }
 359          //***************************************************************************************
 360          void Vertical_MoveB()
 361          {
 362   1       Shift_Flag=1;
 363   1       ledcursor=2;
 364   1       Key_Flag=5;
 365   1       lcd_clear();
C51 COMPILER V7.09   OSCILLOSCOPE                                                          08/15/2005 19:39:16 PAGE 7   

 366   1       Led_On=1;
 367   1       Glint_Flag=1;
 368   1       lcd_write_sentence(1,0,"按加减键上下移动");
 369   1       lcd_write_sentence(2,1,"B 路波形");
 370   1       distab[0]=0x00;
 371   1       distab[1]=0x00;
 372   1       distab[2]=0x00;
 373   1       distab[3]=0x10;
 374   1       distab[4]=0x10;
 375   1       distab[5]=0x10;
 376   1       distab[6]=0x10;
 377   1       distab[7]=0x05;
 378   1      }
 379          //***************************************************************************************
 380           void enter_down()
 381           {
 382   1        unint temp;
 383   1        Enter=!Enter;
 384   1        //Led_On=0;
 385   1        Glint_Flag=!Glint_Flag;
 386   1        Shift_Flag=0;
 387   1        switch(Key_Flag)
 388   1        {
 389   2         case 1:
 390   2            X_Frequence=distab[4]*10000+distab[3]*1000+distab[2]*100+distab[1]*10+distab[0];
 391   2                //Frequence*=5;
 392   2            temp=_iror_(X_Frequence,8);
 393   2            X_Freq_High=temp;
 394   2            temp=X_Frequence%256;
 395   2            X_Freq_Low=temp;
 396   2            Enter=0;
 397   2            lcd_clear();
 398   2            lcd_write_sentence(1,0,"频率设置成功!");
 399   2            lcd_write_sentence(2,1,"当前频率:");
 400   2            lcd_write_command(0x89);
 401   2            lcd_write_data(0x30+distab[4]);
 402   2            lcd_write_data(0x30+distab[3]);
 403   2            lcd_write_data(0x30+distab[2]);
 404   2            lcd_write_data(0x30+distab[1]);
 405   2            lcd_write_data(0x30+distab[0]);
 406   2            lcd_write_sentence(3,4,"HZ");
 407   2         break;
 408   2         case 2:
 409   2           Enter=0;
 410   2               lcd_clear();
 411   2           X_Pos=distab[2]*100+distab[1]*10+distab[0];
 412   2               if(X_Pos>200)
 413   2               {
 414   3               X_Pos=0;
 415   3           lcd_write_sentence(2,0,"输入范围太大!");
 416   3               }
 417   2               else
 418   2               {
 419   3           X_Move=X_Pos;
 420   3           lcd_write_sentence(1,0,"水平移相成功");
 421   3           lcd_write_sentence(2,1,"当前水平偏移:");
 422   3           lcd_write_command(0x8a);
 423   3           lcd_write_data(0x30+distab[2]);
 424   3               lcd_write_data(0x30+distab[1]);
 425   3           lcd_write_data(0x30+distab[0]);
 426   3               }
 427   2         break;
C51 COMPILER V7.09   OSCILLOSCOPE                                                          08/15/2005 19:39:16 PAGE 8   

 428   2         case 3:
 429   2           Enter=0;
 430   2               lcd_clear();
 431   2           Trigger_V=distab[2]*100+distab[1]*10+distab[0];
 432   2           if(Trigger_V>500)
 433   2           {
 434   3            lcd_write_sentence(1,0,"电平输入太大!");
 435   3            lcd_write_sentence(2,0,"请重新输入!");
 436   3            Trigger_V=0;
 437   3           }
 438   2           else
 439   2           { 
 440   3           Trigger_Voltage=Trigger_V/2;
 441   3           lcd_write_sentence(1,0,"触发电平设置成功");
 442   3           lcd_write_sentence(2,1,"当前触发电平:");
 443   3           lcd_write_command(0x89);
 444   3           lcd_write_data(0x30+distab[2]);
 445   3               lcd_write_sentence(3,2,".");
 446   3           lcd_write_data(0x30+distab[1]);
 447   3           lcd_write_data(0x30+distab[0]);
 448   3           lcd_write_sentence(3,4,"V");
 449   3           }
 450   2         break;
 451   2         case 4:
 452   2           Vertical_Pos_A=distab[2]*100+distab[1]*10+distab[0];
 453   2               Vertical_Move_A=Vertical_Pos_A;
 454   2               lcd_clear();
 455   2               lcd_write_sentence(1,1,"当前垂直偏移A:");
 456   2               lcd_write_command(0x91);
 457   2           lcd_write_data(0x30+distab[2]);
 458   2               lcd_write_data(0x30+distab[1]);
 459   2           lcd_write_data(0x30+distab[0]);
 460   2         break;
 461   2         case 5:
 462   2           Vertical_Pos_B=distab[2]*100+distab[1]*10+distab[0];
 463   2           Vertical_Move_B=Vertical_Pos_B;
 464   2               lcd_clear();
 465   2           lcd_write_sentence(1,1,"当前垂直偏移B:");
 466   2               lcd_write_command(0x91);
 467   2           lcd_write_data(0x30+distab[2]);
 468   2               lcd_write_data(0x30+distab[1]);
 469   2           lcd_write_data(0x30+distab[0]);
 470   2         break;
 471   2         default:
 472   2         break;
 473   2         }
 474   1       
 475   1        
 476   1             
 477   1       } 
 478          
 479          
 480          //***************************************************************************************
 481          void keyprg(unchar key)  //键盘键值执行的程序
 482          {  
 483   1        //unchar i;
 484   1        if((key<=9)&Shift_Flag)
 485   1         {   
 486   2            distab[ledcursor]=keynum;        //键值送入distab最低位保存
 487   2                 if(ledcursor>0)                //光标移位
 488   2                 ledcursor--;
 489   2             else 
C51 COMPILER V7.09   OSCILLOSCOPE                                                          08/15/2005 19:39:16 PAGE 9   

 490   2                 ledcursor=0;
 491   2          display(0); //显示键值
 492   2              }
 493   1        
 494   1        else 
 495   1         {
 496   2          switch(key)
 497   2                 {
 498   3                   case 0x00:             
 499   3                            Set_X_Freq();
 500   3                   break;
 501   3                       case 0x01:             
 502   3                            Set_X_Pos();
 503   3                   break;      
 504   3                       case 0x02:             
 505   3                            Set_Trigger_Voltage();
 506   3                   break;      
 507   3                       case 0x03:             
 508   3                            Lock_Current_Wave();
 509   3                   break;      
 510   3                       case 0x04:             
 511   3                            Single_Select();
 512   3                   break;      
 513   3                       case 0x05:             
 514   3                            Vertical_GainA();
 515   3                   break;      
 516   3                       case 0x06:             
 517   3                            Vertical_GainB();
 518   3                   break;      
 519   3                       case 0x07:             
 520   3                            Vertical_MoveA();
 521   3                   break;
 522   3                   case 0x08:             
 523   3                            Vertical_MoveB();
 524   3                   break;
 525   3                       case 0x09:             
 526   3                            Select_AB_Channel();
 527   3                   break;
 528   3                       case 0x0A:             
 529   3                             Reset();
 530   3                   break;      
 531   3                       case 0x0B:                              //功能键F2
 532   3                         Shift_Flag=!Shift_Flag;
 533   3                   break;      
 534   3                       case 0x0C:                              //KeyprgBack();
 535   3                                if(ledcursor<7)                //光标移位
 536   3                             ledcursor++;
 537   3                         else 
 538   3                             ledcursor=0;
 539   3                             display(0);               //显示键值
 540   3                   break;
 541   3                       case 0x0D:  //加
 542   3                                 if(distab[ledcursor]<0x09)
 543   3                                      distab[ledcursor]++;
 544   3                         else
 545   3                              distab[ledcursor]=0;
 546   3                              display(0); //显示键值
 547   3                   break;     
 548   3                       case 0x0E:    //减
 549   3                                 if(distab[ledcursor]>0)
 550   3                                 distab[ledcursor]--;
 551   3                    
C51 COMPILER V7.09   OSCILLOSCOPE                                                          08/15/2005 19:39:16 PAGE 10  

 552   3                       else
 553   3                     distab[ledcursor]=9;
 554   3                                 display(0); //显示键值
 555   3                          
 556   3                   break;      
 557   3                       case 0x0F:       
 558   3                                enter_down();        
 559   3                   break;      
 560   3                       default:
 561   3                   break;      
 562   3                      }
 563   2               }
 564   1      
 565   1      }
 566          //**************************************************************************************
 567          void intt0() interrupt 0 
 568          { 
 569   1       
 570   1       EX0=0;               //关键盘中断,禁止相应其他按键
 571   1       keynum=P1;           //从p1口读入键盘值
 572   1       keynum=keynum&0x0f;  //取低四位;
 573   1       keyprg(keynum);
 574   1       //if(enter)         //不是enter键,屏蔽中断
 575   1       EX0=1;
 576   1      }
 577          
 578          //**************************************************************************************
 579          
 580          void main()
 581          { 
 582   1        
 583   1        unchar j=0;
 584   1        EX0=1;
 585   1        EA=1;
 586   1        lcd_init();
 587   1        display(0);
 588   1        lcd_write_passage("南开大学信科院电信系:史永杰,余建伟,岳文赫--  简易示波器");
 589   1        //lcd_clear();
 590   1        //lcd_write_sentence(4,4,"南开大学");
 591   1        FpgaInitial();
 592   1        while(1)
 593   1          {
 594   2          if(Glint_Flag)
 595   2            glint();
 596   2          }
 597   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1908    ----
   CONSTANT SIZE    =    525    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     23       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      6    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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