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

📄 oscilloscope2.lst

📁 单片机通过DA对信号采样
💻 LST
📖 第 1 页 / 共 3 页
字号:
 522   1      }
 523          //***************************************************************************************
 524           void enter_down()
 525           {
 526   1        unint temp;
 527   1        Enter=!Enter;
 528   1        //Led_On=0;
 529   1        Glint_Flag=!Glint_Flag;
 530   1        Shift_Flag=0;
 531   1        switch(Key_Flag)
 532   1        {
 533   2         case 1:
 534   2            X_Frequence=distab[4]*10000+distab[3]*1000+distab[2]*100+distab[1]*10+distab[0];
 535   2                //Frequence*=5;
 536   2            temp=_iror_(X_Frequence,8);
 537   2            X_Freq_High=temp;
 538   2            temp=X_Frequence%256;
 539   2            X_Freq_Low=temp;
 540   2            Enter=0;
 541   2            lcd_clear();
 542   2            lcd_write_sentence(1,0,"频率设置成功!");
 543   2            lcd_write_sentence(2,1,"当前频率:");
 544   2            lcd_write_command(0x89);
 545   2            lcd_write_data(0x30+distab[4]);
 546   2            lcd_write_data(0x30+distab[3]);
 547   2            lcd_write_data(0x30+distab[2]);
 548   2            lcd_write_data(0x30+distab[1]);
 549   2            lcd_write_data(0x30+distab[0]);
 550   2            lcd_write_sentence(3,4,"HZ");
 551   2         break;
C51 COMPILER V7.06   OSCILLOSCOPE2                                                         08/19/2005 08:58:26 PAGE 10  

 552   2         case 2:
 553   2           Enter=0;
 554   2               lcd_clear();
 555   2           X_Pos=distab[2]*100+distab[1]*10+distab[0];
 556   2               if(X_Pos>200)
 557   2               {
 558   3               X_Pos=0;
 559   3           lcd_write_sentence(2,0,"输入范围太大!");
 560   3               }
 561   2               else
 562   2               {
 563   3           X_Move=X_Pos;
 564   3           lcd_write_sentence(1,0,"水平移相成功");
 565   3           lcd_write_sentence(2,1,"当前水平偏移:");
 566   3           lcd_write_command(0x8a);
 567   3           lcd_write_data(0x30+distab[2]);
 568   3               lcd_write_data(0x30+distab[1]);
 569   3           lcd_write_data(0x30+distab[0]);
 570   3               }
 571   2         break;
 572   2         case 3:
 573   2           Enter=0;
 574   2               lcd_clear();
 575   2           Trigger_V=distab[2]*100+distab[1]*10+distab[0];
 576   2           if(Trigger_V>500)
 577   2           {
 578   3            lcd_write_sentence(1,0,"电平输入太大!");
 579   3            lcd_write_sentence(2,0,"请重新输入!");
 580   3            Trigger_V=0;
 581   3           }
 582   2           else
 583   2           { 
 584   3           Trigger_Voltage=Trigger_V/2;
 585   3           lcd_write_sentence(1,0,"触发电平设置成功");
 586   3           lcd_write_sentence(2,1,"当前触发电平:");
 587   3           lcd_write_command(0x89);
 588   3           lcd_write_data(0x30+distab[2]);
 589   3               lcd_write_sentence(3,2,".");
 590   3           lcd_write_data(0x30+distab[1]);
 591   3           lcd_write_data(0x30+distab[0]);
 592   3           lcd_write_sentence(3,4,"V");
 593   3           }
 594   2         break;
 595   2         case 6:
 596   2           Vertical_Pos_A=distab[2]*100+distab[1]*10+distab[0];
 597   2               Vertical_Move_A=Vertical_Pos_A;
 598   2               lcd_clear();
 599   2               lcd_write_sentence(1,1,"当前垂直偏移A:");
 600   2               lcd_write_command(0x91);
 601   2           lcd_write_data(0x30+distab[2]);
 602   2               lcd_write_data(0x30+distab[1]);
 603   2           lcd_write_data(0x30+distab[0]);
 604   2         break;
 605   2         case 7:
 606   2           Vertical_Pos_B=distab[2]*100+distab[1]*10+distab[0];
 607   2           Vertical_Move_B=Vertical_Pos_B;
 608   2               lcd_clear();
 609   2           lcd_write_sentence(1,1,"当前垂直偏移B:");
 610   2               lcd_write_command(0x91);
 611   2           lcd_write_data(0x30+distab[2]);
 612   2               lcd_write_data(0x30+distab[1]);
 613   2           lcd_write_data(0x30+distab[0]);
C51 COMPILER V7.06   OSCILLOSCOPE2                                                         08/19/2005 08:58:26 PAGE 11  

 614   2         break;
 615   2         default:
 616   2         break;
 617   2         }
 618   1       } 
 619          
 620          
 621          //***************************************************************************************
 622          void keyprg(unchar key)  //键盘键值执行的程序
 623          {  
 624   1        //unchar i;
 625   1        if((key<=9)&Shift_Flag)
 626   1         {   
 627   2            distab[ledcursor]=keynum;        //键值送入distab最低位保存
 628   2                 if(ledcursor>0)                //光标移位
 629   2                 ledcursor--;
 630   2             else 
 631   2                 ledcursor=0;
 632   2          display(0); //显示键值
 633   2              }
 634   1        else 
 635   1         {
 636   2          switch(key)
 637   2                 {
 638   3                   case 0x00:             
 639   3                            Set_X_Freq();
 640   3                   break;
 641   3                       case 0x01:             
 642   3                            Set_X_Pos();
 643   3                   break;      
 644   3                       case 0x02:             
 645   3                            Set_Trigger_Voltage();
 646   3                   break;      
 647   3                       case 0x03:             
 648   3                            Lock_Current_Wave();
 649   3                   break;      
 650   3                       case 0x04:             
 651   3                            Single_Select();
 652   3                   break;      
 653   3                       case 0x05:             
 654   3                            Vertical_GainA();
 655   3                   break;      
 656   3                       case 0x06:             
 657   3                            Vertical_GainB();
 658   3                   break;      
 659   3                       case 0x07:             
 660   3                            Vertical_MoveA();
 661   3                   break;
 662   3                   case 0x08:             
 663   3                            Vertical_MoveB();
 664   3                   break;
 665   3                       case 0x09:             
 666   3                            //Select_AB_Channel();
 667   3                    Input_Select();
 668   3                   break;
 669   3                       case 0x0A:             
 670   3                             //Reset();
 671   3                                 //Input_Select();
 672   3                                 Frequence_Measure();
 673   3                   break;      
 674   3                       case 0x0B:                              //功能键F2
 675   3                         Shift_Flag=!Shift_Flag;
C51 COMPILER V7.06   OSCILLOSCOPE2                                                         08/19/2005 08:58:26 PAGE 12  

 676   3                   break;      
 677   3                       case 0x0C:                              //KeyprgBack();
 678   3                                if(ledcursor<7)                //光标移位
 679   3                             ledcursor++;
 680   3                         else 
 681   3                             ledcursor=0;
 682   3                             display(0);               //显示键值
 683   3                   break;
 684   3                       case 0x0D:  //加
 685   3                                 if(distab[ledcursor]<0x09)
 686   3                                      distab[ledcursor]++;
 687   3                         else
 688   3                              distab[ledcursor]=0;
 689   3                              display(0); //显示键值
 690   3                   break;     
 691   3                       case 0x0E:    //减
 692   3                                 if(distab[ledcursor]>0)
 693   3                                 distab[ledcursor]--;
 694   3                    
 695   3                       else
 696   3                     distab[ledcursor]=9;
 697   3                                 display(0); //显示键值
 698   3                          
 699   3                   break;      
 700   3                       case 0x0F:       
 701   3                                enter_down();        
 702   3                   break;      
 703   3                       default:
 704   3                   break;      
 705   3                      }
 706   2               }
 707   1      
 708   1      }
 709          //**************************************************************************************
 710          void intt0() interrupt 0 
 711          { 
 712   1       
 713   1       //EX0=0;                //关键盘中断,禁止相应其他按键
 714   1       keynum=P1;              //从p1口读入键盘值
 715   1       keynum=keynum&0x0f;     //取低四位;
 716   1       keyprg(keynum);
 717   1       //if(enter)             //不是enter键,屏蔽中断
 718   1       //EX0=1;
 719   1      }
 720          
 721          //**************************************************************************************
 722          void Initial8155()
 723          {
 724   1       CMD8155=0x0f;             //PA,PB基本输出方式,PC作为控制信号
 725   1      }
 726          //**************************************************************************************
 727          void clock0_initial() 
 728          {
 729   1       TMOD=0x01;
 730   1       TF0=0;
 731   1       TH0=00;
 732   1       TL0=00;
 733   1       TR0=0;
 734   1      }
 735          
 736          void clock0_int() interrupt 1
 737          {
C51 COMPILER V7.06   OSCILLOSCOPE2                                                         08/19/2005 08:58:26 PAGE 13  

 738   1        TH0=00;
 739   1        TL0=00;
 740   1        tempflag=!tempflag;
 741   1        if(!Single_Flag)
 742   1        Single_Auto_Select=tempflag;
 743   1        //PA8155=tempflag;
 744   1        //PB8155=tempflag;
 745   1       }
 746          
 747          //**************************************************************************************
 748          void main()
 749          {
 750   1       //uint i; 
 751   1       //while(i--);
 752   1        EX0=1;
 753   1        ET0=1;
 754   1        EA=1;
 755   1        lcd_init();
 756   1        Initial8155();
 757   1        display(0);
 758   1        
 759   1        lcd_write_passage("南开大学信科院电信系:史永杰,余建伟,岳文赫--  简易示波器");
 760   1        //lcd_clear();
 761   1        //lcd_write_sentence(4,4,"南开大学");
 762   1        FpgaInitial();
 763   1        clock0_initial();
 764   1        while(1)
 765   1          {
 766   2          if(Glint_Flag)
 767   2            glint();
 768   2          }
 769   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2585    ----
   CONSTANT SIZE    =    612    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     26       9
   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 + -