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

📄 signal_show.lst

📁 简易示波器 (采样点在屏上显示虚线曲线)
💻 LST
📖 第 1 页 / 共 3 页
字号:
 320   1              outcode(0x4c);
 321   1              outcode(0x42);
 322   1              lcd_a0=0;
 323   1              outdata(0x3f);
 324   1              for(i=1;i<31;i++)outdata(0xff);
 325   1              lcd_cs=1;
 326   1      }
 327          /***************************************************************
 328          *名称:DrawFrame(void)
 329          *描述:在第二层画网格边框
 330          *参数:
 331          *返回:
 332          ****************************************************************/
 333          void DrawFrame(void)                            //画网格边框
 334          {
 335   1              fixline(0);
 336   1              fixline(200);
 337   1      
 338   1              Ver(0,1);      //(8,12)  --- (8,262)
 339   1              Ver(LENGTH,1); //(208,12)  --- (208,212)
 340   1              fixline(40);
 341   1              fixline(80);
 342   1              fixline(120);
 343   1              fixline(160);
 344   1              fixline2(200);
 345   1              fixline2(0);
 346   1      }
 347          /***************************************************************
 348          *名称:DrawGrid(void)
 349          *描述:在第二层画网格区内的网格线
 350          *参数:
 351          *返回:
 352          ****************************************************************/
 353          void DrawGrid(void)           //画网格区内的网格线
 354          {
 355   1              uchar i;
 356   1              Hori(1,5);
 357   1              Hori(2,25);
 358   1              Hori(WIDTH-2,0x19);
 359   1              Hori(WIDTH-2,0x05);
 360   1              Ver(0x02,0x19);
 361   1              Ver(LENGTH-2,0x19);
 362   1              for(i=1;i<0x08;i++){
 363   2                      Hori(25*i,5);
 364   2                      if(i==0x04){
 365   3                              Hori(0x19*i-1,5);
C51 COMPILER V7.06   SIGNAL_SHOW                                                           03/26/2007 17:35:00 PAGE 7   

 366   3                              Hori(0x19*i+1,5);//
 367   3                      }
 368   2              }
 369   1              for(i=0x01;i<0x0a;i++)
 370   1              {
 371   2                      Ver(0x19*i,5);
 372   2                      if(i==0x05)
 373   2                      {
 374   3                              Ver(0x19*i-1,5);
 375   3                              Ver(0x19*i+1,5);
 376   3                      }
 377   2              }
 378   1      }
 379          /***************************************************************
 380          *名称:showchinese(uchar x,uchar y,int chin)
 381          *描述:在x,y位置处,显示字符码为chin
 382          *参数:坐标x,坐标y
 383          *返回:
 384          ****************************************************************/
 385          void showchinese(uchar x,uchar y,int chin)
 386          { 
 387   1              int idata temp1,temp2; 
 388   1              uchar idata hi,lo;
 389   1              uchar idata b,c=0,d;
 390   1              d=y;
 391   1              temp2=chin;
 392   1              lcd_cs=0;
 393   1              lcd_a0=1;
 394   1              outcode(0x4c);
 395   1              for(b=0;b<16;b++){
 396   2                      temp1=0x5218+x/8+d*AP;//5218
 397   2                      hi=temp1>>8;//hi=temp1/256;
 398   2                      lo=(uchar)temp1;//lo=temp1%256;
 399   2                      lcd_a0=1;
 400   2                      outcode(0x46);
 401   2                      lcd_a0=0;
 402   2                      outdata(lo);
 403   2                      outdata(hi);
 404   2                      lcd_a0=1;
 405   2                      outcode(0x42);
 406   2                      lcd_a0=0;
 407   2                      outdata(hzdot[temp2]);
 408   2                      temp2++;
 409   2                      outdata(hzdot[temp2]);
 410   2                      temp2++;
 411   2                      d=d+1;
 412   2              }
 413   1              lcd_cs=1;
 414   1      }
 415          void show_num (unsigned int x, unsigned int y, int chin)
 416          {
 417   1              int temp1,temp2; 
 418   1              uchar hi,lo;
 419   1              uchar b;
 420   1          unsigned int d=y;
 421   1              temp2=chin;
 422   1              lcd_cs=0;
 423   1              lcd_a0=1;
 424   1              outcode(0x4f);
 425   1              temp1=0x5218+x/8+d*AP;//5000
 426   1              hi=temp1>>8;//hi=temp1/256;
 427   1              lo=(uchar)temp1;//lo=temp1%256;
C51 COMPILER V7.06   SIGNAL_SHOW                                                           03/26/2007 17:35:00 PAGE 8   

 428   1              lcd_a0=1;
 429   1              outcode(0x46);
 430   1              lcd_a0=0;
 431   1              outdata(lo);
 432   1              outdata(hi);
 433   1              lcd_a0=1;
 434   1              outcode(0x42);
 435   1              lcd_a0=0;
 436   1              for(b=0;b<16;b++){      
 437   2                      outdata(hzdot[temp2]);
 438   2                      temp2++;
 439   2              }
 440   1              lcd_cs=1;
 441   1      }
 442          /***************************************************************
 443          *名称:showchin(void)
 444          *描述:显示四个汉字,波,形,正,弦
 445          *参数:
 446          *返回:
 447          ****************************************************************/
 448          void showchin(void)
 449          {               
 450   1              uchar x,y;
 451   1              x=10;y=4;
 452   1              showchinese(x,y,CBCF2);//简
 453   1              x=x+34;
 454   1              showchinese(x,y,CD2D7);//易
 455   1              x=10;y=22;
 456   1              showchinese(x,y,CCABE);//示
 457   1              x=x+17;
 458   1              showchinese(x,y,CB2A8);//波
 459   1              x=x+17;
 460   1              showchinese(x,y,CC6F7);//器
 461   1      
 462   1              x=10;y=82;
 463   1              show_num(x,y,CC001);// 1
 464   1              x=x+8;
 465   1              show_num(x,y,CC000);// 0
 466   1              x=x+8;
 467   1              show_num(x,y,CC000);// 0
 468   1              x=x+8;
 469   1              show_num(x,y,CC000);// 0
 470   1              x=10;y=100;
 471   1              show_num(x,y,CC00M);// m
 472   1              x=x+8;
 473   1              show_num(x,y,CC00V);// V
 474   1              x=x+8;
 475   1              show_num(x,y,CC0ZZ);// /
 476   1              x=x+8;
 477   1              showchinese(x,y,CB8F1);//格
 478   1      
 479   1              x=10;y=180;
 480   1              show_num(x,y,CC00M);// m
 481   1              x=x+8;
 482   1              show_num(x,y,CC00S);// s
 483   1              x=x+8;
 484   1              show_num(x,y,CC0ZZ);// /
 485   1              x=x+8;
 486   1              showchinese(x,y,CB8F1);//格
 487   1      
 488   1      //      showchinese(10,140,CC6B5);
 489   1      //      showchinese(27,140,CC6D7);
C51 COMPILER V7.06   SIGNAL_SHOW                                                           03/26/2007 17:35:00 PAGE 9   

 490   1      }
 491          /***************************************************************
 492          *名称:initall(void)
 493          *描述:初始化液晶屏
 494          *参数:
 495          *返回:
 496          ****************************************************************/
 497          void initall(void)
 498          {
 499   1              lcd_cs=0;
 500   1              turnoff();
 501   1              init();
 502   1              initram();
 503   1              turnon();
 504   1              lcd_cs=1;
 505   1              DrawFrame();
 506   1      //      DrawGrid();
 507   1      }
 508          /***************************************************************
 509          *名称:uchar adc0804(void)
 510          *描述:AD0804采样一次
 511          *参数:
 512          *返回:采样值
 513          ****************************************************************/
 514          /*uchar adc0804(void)
 515          {
 516                  uchar idata ad_data ;
 517                  P0=0xff;
 518                  Adc_cs = 0 ;
 519          //      lcd_rd = 1 ;
 520                  lcd_wr = 0 ;
 521                  lcd_wr = 1 ;
 522                  while(Adc_busy) ;
 523                  //lcd_rd = 0 ;
 524                  lcd_a0=0;
 525                  ad_data = P0 ;
 526                  //lcd_rd = 1 ;
 527                  lcd_a0=1;
 528                  Adc_cs = 1 ;
 529                  return ad_data ;
 530          }*/
 531          void clear(unsigned int x,unsigned int y,unsigned char ll)
 532          {
 533   1              unsigned int idata address;
 534   1              uchar idata addh,addl;
 535   1              uchar idata m;
 536   1      //      x=24;y=0;
 537   1              address=0x01f9+x/8+y*AP;
 538   1              addh=address>>8;//addh=address/256;
 539   1              addl=(uchar)address;//addl=address%256;
 540   1              lcd_cs=0;
 541   1              lcd_a0=1;
 542   1              outcode(0x46);
 543   1              lcd_a0=0;
 544   1              outdata(addl);
 545   1              outdata(addh);
 546   1              lcd_a0=1;
 547   1              outcode(0x4f);
 548   1              outcode(0x42);
 549   1              lcd_a0=0;
 550   1              for(m=0;m<ll;m++)
 551   1              {
C51 COMPILER V7.06   SIGNAL_SHOW                                                           03/26/2007 17:35:00 PAGE 10  

 552   2                      EA=0;
 553   2                      lcd_a0=0;
 554   2                      P0=0xff;
 555   2                      lcd_rd=0;
 556   2              //      aaa=busy;
 557   2                      while(busy==1);            //aaa=busy
 558   2                      lcd_rd=1;
 559   2                      lcd_a0=0;
 560   2                      EA=1;
 561   2                      //for(m=0;m<2;m++)
 562   2                      outdata(0);
 563   2              }
 564   1              lcd_cs=1;
 565   1      }
 566          void clear_1(unsigned int x,unsigned int y)
 567          {
 568   1              unsigned int idata address;
 569   1              uchar idata addh,addl;
 570   1              uchar idata n;
 571   1      //      uchar temp;
 572   1      //      bit aaa;
 573   1      //      x=24;y=0;
 574   1              address=0x01f9+x/8+y*AP;
 575   1              addh=address>>8;//addh=address/256;
 576   1              addl=(uchar)address;//addl=address%256;
 577   1              lcd_cs=0;
 578   1              lcd_a0=1;
 579   1              outcode(0x46);
 580   1              lcd_a0=0;
 581   1              outdata(addl);
 582   1              outdata(addh);
 583   1              lcd_a0=1;
 584   1              outcode(0x4f);
 585   1              outcode(0x42);
 586   1              lcd_a0=0;
 587   1              for(n=0;n<200;n++)
 588   1              {
 589   2      /*              EA=0;
 590   2                      lcd_a0=0;
 591   2                      P0=0xff;
 592   2                      lcd_rd=0;
 593   2              //      aaa=busy;
 594   2                      while(busy==1);            //aaa=busy
 595   2                      lcd_rd=1;
 596   2                      lcd_a0=0;
 597   2                      EA=1;*/
 598   2                      //for(m=0;m<2;m++)
 599   2                      outdata(0);
 600   2              }
 601   1              lcd_cs=1;
 602   1      }
 603          /***************************************************************
 604          *名称:Adc_work(void)
 605          *描述:AD0804采样
 606          *参数:
 607          *返回:采样值数组
 608          ****************************************************************/
 609          /*void Adc_work(void)   
 610          {
 611                  unsigned int k=0  ;
 612                  unsigned char temp_data1,temp_data2;
 613                  unsigned int x,y;       
C51 COMPILER V7.06   SIGNAL_SHOW                                                           03/26/2007 17:35:00 PAGE 11  

 614          
 615                  clear(24,0,200);
 616                  x=32;y=35;
 617                  clear(x,y,21);
 618          
 619          //      while(!Adc_en) ;
 620                  P0=0xff;
 621                  temp_data1 = adc0804() ;
 622                  WriteD(25,(temp_data1>>1)+35);
 623                  y=y+21;
 624                  clear(x,y,21);
 625          //      while(!Adc_en) ;
 626                  
 627                  for(k=1;k<Sam_N;k++)
 628                  {
 629          //              while(!Adc_en) ;
 630                          P0=0xff;
 631                          temp_data2 = adc0804() ;
 632          
 633                          WriteD(k+25,(temp_data2>>1)+35);
 634                          
 635                          if(k%8==0)
 636                          {
 637                                  x=x+8;
 638                                  y=0;
 639                          }
 640                          else y=y+21;
 641                          test=1;
 642                          clear(x,y,21);
 643                          test=0;
 644                          
 645          //              while(!Adc_en) ;
 646                          temp_data1=temp_data2;
 647                  }

⌨️ 快捷键说明

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