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

📄 oscilloscope1.lst

📁 单片机通过DA对信号采样
💻 LST
📖 第 1 页 / 共 3 页
字号:
 552   1        //以下为测量幅度
 553   1        /*
 554   1        temp=Wave_Amplitude_Add;
 555   1        Wave_Amplitude=temp;
 556   1        lcd_write_sentence(3,0,"当前幅度:        ");
 557   1        lcd_write_command(0x99);
 558   1        temp=Wave_Amplitude/100;
 559   1        lcd_write_data(0x30+temp);
 560   1        Wave_Amplitude%=100;
 561   1        temp=Wave_Amplitude/10;
 562   1        lcd_write_data(0x30+temp);
 563   1        Wave_Amplitude%=10;
 564   1        temp=Wave_Amplitude;
 565   1        lcd_write_data(0x30+temp);
 566   1        //Wave_Frequence%=10000;
 567   1        lcd_write_sentence(4,4," V"); 
 568   1        */
 569   1      }
 570          //***************************************************************************************
 571           void enter_down()
 572           {
 573   1        unint temp;
 574   1        Enter=!Enter;
 575   1        //Led_On=0;
 576   1        Glint_Flag=!Glint_Flag;
 577   1        Shift_Flag=0;
 578   1        switch(Key_Flag)
 579   1        {
 580   2         case 1:
 581   2            X_Frequence=distab[4]*10000+distab[3]*1000+distab[2]*100+distab[1]*10+distab[0];
 582   2                //Frequence*=5;
 583   2            temp=_iror_(X_Frequence,8);
 584   2            X_Freq_High=temp;
 585   2            temp=X_Frequence%256;
 586   2            X_Freq_Low=temp;
 587   2            Enter=0;
 588   2            lcd_clear();
 589   2            lcd_write_sentence(1,0,"频率设置成功!");
 590   2            lcd_write_sentence(2,1,"当前频率:");
 591   2            lcd_write_command(0x89);
 592   2            lcd_write_data(0x30+distab[4]);
 593   2            lcd_write_data(0x30+distab[3]);
 594   2            lcd_write_data(0x30+distab[2]);
 595   2            lcd_write_data(0x30+distab[1]);
 596   2            lcd_write_data(0x30+distab[0]);
 597   2            lcd_write_sentence(3,4,"HZ");
 598   2         break;
 599   2         case 2:
 600   2           Enter=0;
 601   2               lcd_clear();
 602   2           X_Pos=distab[2]*100+distab[1]*10+distab[0];
 603   2               if(X_Pos>200)
 604   2               {
 605   3               X_Pos=0;
 606   3           lcd_write_sentence(2,0,"输入范围太大!");
 607   3               }
 608   2               else
 609   2               {
 610   3           X_Move=X_Pos;
 611   3           lcd_write_sentence(1,0,"水平移相成功");
 612   3           lcd_write_sentence(2,1,"当前水平偏移:");
 613   3           lcd_write_command(0x8a);
C51 COMPILER V7.06   OSCILLOSCOPE1                                                         08/17/2005 17:00:43 PAGE 11  

 614   3           lcd_write_data(0x30+distab[2]);
 615   3               lcd_write_data(0x30+distab[1]);
 616   3           lcd_write_data(0x30+distab[0]);
 617   3               }
 618   2         break;
 619   2         case 3:
 620   2           Enter=0;
 621   2               lcd_clear();
 622   2           Trigger_V=distab[2]*100+distab[1]*10+distab[0];
 623   2           if(Trigger_V>500)
 624   2           {
 625   3            lcd_write_sentence(1,0,"电平输入太大!");
 626   3            lcd_write_sentence(2,0,"请重新输入!");
 627   3            Trigger_V=0;
 628   3           }
 629   2           else
 630   2           { 
 631   3           Trigger_Voltage=Trigger_V/2;
 632   3           lcd_write_sentence(1,0,"触发电平设置成功");
 633   3           lcd_write_sentence(2,1,"当前触发电平:");
 634   3           lcd_write_command(0x89);
 635   3           lcd_write_data(0x30+distab[2]);
 636   3               lcd_write_sentence(3,2,".");
 637   3           lcd_write_data(0x30+distab[1]);
 638   3           lcd_write_data(0x30+distab[0]);
 639   3           lcd_write_sentence(3,4,"V");
 640   3           }
 641   2         break;
 642   2         case 6:
 643   2           Vertical_Pos_A=distab[2]*100+distab[1]*10+distab[0];
 644   2               Vertical_Move_A=Vertical_Pos_A;
 645   2               lcd_clear();
 646   2               lcd_write_sentence(1,1,"当前垂直偏移A:");
 647   2               lcd_write_command(0x91);
 648   2           lcd_write_data(0x30+distab[2]);
 649   2               lcd_write_data(0x30+distab[1]);
 650   2           lcd_write_data(0x30+distab[0]);
 651   2         break;
 652   2         case 7:
 653   2           Vertical_Pos_B=distab[2]*100+distab[1]*10+distab[0];
 654   2           Vertical_Move_B=Vertical_Pos_B;
 655   2               lcd_clear();
 656   2           lcd_write_sentence(1,1,"当前垂直偏移B:");
 657   2               lcd_write_command(0x91);
 658   2           lcd_write_data(0x30+distab[2]);
 659   2               lcd_write_data(0x30+distab[1]);
 660   2           lcd_write_data(0x30+distab[0]);
 661   2         break;
 662   2         default:
 663   2         break;
 664   2         }
 665   1       } 
 666          
 667          
 668          //***************************************************************************************
 669          void keyprg(unchar key)  //键盘键值执行的程序
 670          {  
 671   1        //unchar i;
 672   1        if((key<=9)&Shift_Flag)
 673   1         {   
 674   2            distab[ledcursor]=keynum;        //键值送入distab最低位保存
 675   2                 if(ledcursor>0)                //光标移位
C51 COMPILER V7.06   OSCILLOSCOPE1                                                         08/17/2005 17:00:43 PAGE 12  

 676   2                 ledcursor--;
 677   2             else 
 678   2                 ledcursor=0;
 679   2          display(0); //显示键值
 680   2              }
 681   1        else 
 682   1         {
 683   2          switch(key)
 684   2                 {
 685   3                   case 0x00:             
 686   3                            Set_X_Freq();
 687   3                   break;
 688   3                       case 0x01:             
 689   3                            Set_X_Pos();
 690   3                   break;      
 691   3                       case 0x02:             
 692   3                            Set_Trigger_Voltage();
 693   3                   break;      
 694   3                       case 0x03:             
 695   3                            Lock_Current_Wave();
 696   3                   break;      
 697   3                       case 0x04:             
 698   3                            Single_Select();
 699   3                   break;      
 700   3                       case 0x05:             
 701   3                            Vertical_GainA();
 702   3                   break;      
 703   3                       case 0x06:             
 704   3                            Vertical_GainB();
 705   3                   break;      
 706   3                       case 0x07:             
 707   3                            Vertical_MoveA();
 708   3                   break;
 709   3                   case 0x08:             
 710   3                            Vertical_MoveB();
 711   3                   break;
 712   3                       case 0x09:             
 713   3                            //Select_AB_Channel();
 714   3                    Input_Select();
 715   3                   break;
 716   3                       case 0x0A:             
 717   3                             //Reset();
 718   3                                 //Input_Select();
 719   3                                 Frequence_Measure();
 720   3                   break;      
 721   3                       case 0x0B:                              //功能键F2
 722   3                         Shift_Flag=!Shift_Flag;
 723   3                   break;      
 724   3                       case 0x0C:                              //KeyprgBack();
 725   3                                if(ledcursor<7)                //光标移位
 726   3                             ledcursor++;
 727   3                         else 
 728   3                             ledcursor=0;
 729   3                             display(0);               //显示键值
 730   3                   break;
 731   3                       case 0x0D:  //加
 732   3                                 if(distab[ledcursor]<0x09)
 733   3                                      distab[ledcursor]++;
 734   3                         else
 735   3                              distab[ledcursor]=0;
 736   3                              display(0); //显示键值
 737   3                   break;     
C51 COMPILER V7.06   OSCILLOSCOPE1                                                         08/17/2005 17:00:43 PAGE 13  

 738   3                       case 0x0E:    //减
 739   3                                 if(distab[ledcursor]>0)
 740   3                                 distab[ledcursor]--;
 741   3                    
 742   3                       else
 743   3                     distab[ledcursor]=9;
 744   3                                 display(0); //显示键值
 745   3                          
 746   3                   break;      
 747   3                       case 0x0F:       
 748   3                                enter_down();        
 749   3                   break;      
 750   3                       default:
 751   3                   break;      
 752   3                      }
 753   2               }
 754   1      
 755   1      }
 756          //**************************************************************************************
 757          void intt0() interrupt 0 
 758          { 
 759   1       
 760   1       //EX0=0;                //关键盘中断,禁止相应其他按键
 761   1       keynum=P1;              //从p1口读入键盘值
 762   1       keynum=keynum&0x0f;     //取低四位;
 763   1       keyprg(keynum);
 764   1       //if(enter)             //不是enter键,屏蔽中断
 765   1       //EX0=1;
 766   1      }
 767          
 768          //**************************************************************************************
 769          void Initial8155()
 770          {
 771   1       CMD8155=0x0f;             //PA,PB基本输出方式,PC作为控制信号
 772   1      }
 773          //**************************************************************************************
 774          void clock0_initial() 
 775          {
 776   1       TMOD=0x01;
 777   1       TF0=0;
 778   1       TH0=00;
 779   1       TL0=00;
 780   1       TR0=0;
 781   1      }
 782          
 783          void clock0_int() interrupt 1
 784          {
 785   1        TH0=00;
 786   1        TL0=00;
 787   1        tempflag=!tempflag;
 788   1        if(!Single_Flag)
 789   1        Single_Auto_Select=tempflag;
 790   1        //PA8155=tempflag;
 791   1        //PB8155=tempflag;
 792   1       }
 793          
 794          //**************************************************************************************
 795          void main()
 796          { 
 797   1        
 798   1        unchar j=0;
 799   1        EX0=1;
C51 COMPILER V7.06   OSCILLOSCOPE1                                                         08/17/2005 17:00:43 PAGE 14  

 800   1        ET0=1;
 801   1        EA=1;
 802   1        lcd_init();
 803   1        Initial8155();
 804   1        display(0);
 805   1        lcd_write_passage("南开大学信科院电信系:史永杰,余建伟,岳文赫--  简易示波器");
 806   1        //lcd_clear();
 807   1        //lcd_write_sentence(4,4,"南开大学");
 808   1        FpgaInitial();
 809   1        clock0_initial();
 810   1        while(1)
 811   1          {
 812   2          if(Glint_Flag)
 813   2            glint();
 814   2          }
 815   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2629    ----
   CONSTANT SIZE    =    590    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     28      14
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      7    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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