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

📄 aa.lst

📁 ocmj4x8c显示的 c8051f021做为cpu的波形绘图功能
💻 LST
📖 第 1 页 / 共 2 页
字号:
 333   2        {
 334   3         ad_convert1();         /////启动ad准备采样,并确定完采样周期,开始采样
 335   3        }  
 336   2      
 337   2      
 338   2      
 339   2      
 340   2      
 341   2       
 342   2        if(N_Hz_Count > 128)
 343   2        {
 344   3        
 345   3         DispConvert();
 346   3        if(x == 16 )
 347   3         {EA = 0;
 348   4         //init_lcd ();
 349   4         //clrram();
 350   4         lat_disp (0x00,0x00);
 351   4         
 352   4         
 353   4         chn_disp1 (tab2);       //////上半屏显示中文
 354   4         img_disp1 (tab1);       //////下半屏显示图形
 355   4         //delay1(200);
 356   4      
 357   4        for(a=0;a<16;a++)         ////////////清除记录图形的tab1
 358   4          for(b=0;b<32;b++)
 359   4               tab1[a+b*16]=0x00;
 360   4      
 361   4         N_Hz_Count = 0;
 362   4         TR0 = 1; //开定时器T0
 363   4         EIE2 &= ~0x02 ;            //关AD中断
 364   4         CPT0CN |=0x80;//开比较器
 365   4         drawing_flag = 0;
C51 COMPILER V7.06   AA                                                                    06/25/2007 21:44:00 PAGE 7   

 366   4         ad_init_flag = 1;
 367   4         EA = 1;
 368   4          }
 369   3         }
 370   2       
 371   2      
 372   2      
 373   2      
 374   2       }
 375   1      } //main的括号
 376          
 377          
 378          void cp0(void)
 379          {
 380   1       if (TF0==1)
 381   1        {
 382   2        //t0_count --;
 383   2        //if (t0_count == 0)
 384   2        //{
 385   2         EA = 0;
 386   2         CPT0CN &=0x7F;   //关比较器
 387   2         TR0=0;           //关定时器T0 
 388   2         t0_inter_handle();
 389   2         t0_count = 25;
 390   2         cp0_count= 0;
 391   2         TL0 = 0xAB;
 392   2         TH0 = 0x2F; 
 393   2         //TR0 = 1;
 394   2         //CPT0CN |=0x80;   //开比较器
 395   2         //TF0 = 0;
 396   2         EA = 1;
 397   2        //}
 398   2        //TL0 =0xAB; // 1/16M*12*53333=40ms 即T0 40MS中断一次
 399   2        //TH0 =0x19;
 400   2        
 401   2       }
 402   1      }
 403          
 404          void t0_inter_handle(void)
 405          {
 406   1        uint i,j;
 407   1        uchar qian,bai,shi,gew,dian_bai,dian_shi,dian_gew;
 408   1        cp0_count *= 25;    
 409   1        i = cp0_count/1000;
 410   1        j = cp0_count%1000;
 411   1        qian = i/1000;
 412   1        bai = (i-qian*1000)/100;
 413   1        shi = (i-qian*1000-bai*100)/10;
 414   1        gew = i%10;
 415   1        dian_bai = j/100;
 416   1        dian_shi = (j-dian_bai*100)/10;
 417   1        dian_gew = j%10;
 418   1        qian += 0xB0; 
 419   1        bai += 0xB0;
 420   1        shi += 0xB0;
 421   1        gew += 0xB0;
 422   1        dian_bai += 0xB0;
 423   1        dian_shi += 0xB0;
 424   1        dian_gew += 0xB0;
 425   1        wr_lcd (comm,0x30);
 426   1        wr_lcd (comm,0x0C);
 427   1        wr_lcd (comm,0x88);
C51 COMPILER V7.06   AA                                                                    06/25/2007 21:44:00 PAGE 8   

 428   1        if (qian==0xB0) 
 429   1        {
 430   2         wr_lcd (dat,0x20);wr_lcd (dat,0x20);
 431   2         if (bai==0xB0) 
 432   2         {
 433   3          wr_lcd (dat,0x20);wr_lcd (dat,0x20);
 434   3          if (shi==0xB0){wr_lcd (dat,0x20);wr_lcd (dat,0x20);}  //隐藏数字
 435   3          else {wr_lcd (dat,0xA3);wr_lcd (dat,shi);}
 436   3         }
 437   2         else 
 438   2         {
 439   3          wr_lcd (dat,0xA3);wr_lcd (dat,bai);
 440   3          wr_lcd (dat,0xA3);wr_lcd (dat,shi); 
 441   3         }
 442   2        }
 443   1        else 
 444   1        {
 445   2         wr_lcd (dat,0xA3);
 446   2         wr_lcd (dat,qian);
 447   2         wr_lcd (dat,0xA3);
 448   2         wr_lcd (dat,bai);
 449   2         wr_lcd (dat,0xA3);
 450   2         wr_lcd (dat,shi);
 451   2        }
 452   1        wr_lcd (dat,0xA3);
 453   1        wr_lcd (dat,gew);
 454   1        wr_lcd (comm,0x8D);
 455   1        wr_lcd (dat,0xA3);
 456   1        wr_lcd (dat,dian_bai);
 457   1        wr_lcd (dat,0xA3);
 458   1        wr_lcd (dat,dian_shi);
 459   1        wr_lcd (dat,0xA3);
 460   1        wr_lcd (dat,dian_gew); 
 461   1      }
 462          
 463          
 464          
 465          void show_init (void)
 466          {
 467   1       
 468   1       LEDA=1;
 469   1       fys(tab0);
 470   1       delay(1000);
 471   1      }
 472          
 473          /*void t0_init(void)
 474          {
 475          
 476          
 477          CKCON = 0x00;
 478          TCON = 0x01;
 479          TH0 = 0xfc;
 480          TL0 = 0x17;
 481          EA = 1;
 482          TR0 = 1;
 483          ET0 = 1;
 484          ;
 485          
 486          }
 487          */
 488          void chn_disp1 (uchar code *chn)
 489          {
C51 COMPILER V7.06   AA                                                                    06/25/2007 21:44:00 PAGE 9   

 490   1        uchar i,j;
 491   1        wr_lcd (comm,0x30);
 492   1        wr_lcd (comm,0x80);
 493   1        j=0;
 494   1        for (i=0;i<16;i++)
 495   1        wr_lcd (dat,chn[j*16+i]);
 496   1        wr_lcd (comm,0x90);
 497   1        j=1;
 498   1        for (i=0;i<16;i++)
 499   1        wr_lcd (dat,chn[j*16+i]);
 500   1      }
 501          
 502          void img_disp1 (uchar  *img)
 503          {
 504   1        uchar i,j;
 505   1        for(i=0;i<8;i++)
 506   1        {
 507   2          for(j=0;j<32;j++)
 508   2          { 
 509   3            wr_lcd (comm,0x34);
 510   3            wr_lcd (comm,y+j);
 511   3            wr_lcd (comm,x2+i);
 512   3            wr_lcd (comm,0x30);
 513   3            wr_lcd (dat,img[j*16+i*2]);
 514   3            wr_lcd (dat,img[j*16+i*2+1]);
 515   3            
 516   3                wr_lcd (comm,0x36);
 517   3                
 518   3                delay1(500);
 519   3               
 520   3      
 521   3          }
 522   2              // wr_lcd (comm,0x36);
 523   2        }
 524   1       // wr_lcd (comm,0x36);
 525   1       // wr_lcd (comm,0x34);    ///////////////////////////////////////////////////////////////////////////////
             -/////////////
 526   1        
 527   1      }
 528          
 529          void fys(uchar code *tab) 
 530          {
 531   1       uchar  n;
 532   1       wr_lcd (comm,0x30);
 533   1       wr_lcd (comm,0x01);  /*清屏,地址指针指向00H*/
 534   1       for(n=0;n<64;n++)
 535   1       {
 536   2        wr_lcd (dat,*(tab+n));
 537   2       }
 538   1       n=0;
 539   1      }
 540          
 541          void chk_busy (void)
 542          {
 543   1        
 544   1        LCDRS = 0;
 545   1        delay1(2); 
 546   1        RW =1;
 547   1        delay1(2);
 548   1        LCDEN = 1;
 549   1        delay1(2);
 550   1        P3=0xff;
C51 COMPILER V7.06   AA                                                                    06/25/2007 21:44:00 PAGE 10  

 551   1        while(DB7==1);
 552   1        LCDEN=0;
 553   1        delay1(2);
 554   1        
 555   1      }
 556          
 557           
 558          void wr_lcd (uchar dat_comm,uchar content)
 559          {
 560   1        chk_busy ();
 561   1        if(dat_comm)
 562   1         {
 563   2          
 564   2          LCDRS=1;   //data
 565   2              delay1(2);
 566   2          RW=0;   //write
 567   2          delay1(2);
 568   2         }
 569   1        else 
 570   1         {
 571   2          LCDRS=0;   //command
 572   2              delay1(2);
 573   2          RW=0;   //write
 574   2              delay1(2);
 575   2         }
 576   1        
 577   1        P3=content;   //output data or comm
 578   1        LCDEN=1;
 579   1        delay1(2);
 580   1        ;
 581   1       // chk_busy ();
 582   1        
 583   1        LCDEN=0;
 584   1        delay1(2);
 585   1      } 
 586          
 587          
 588          void init_lcd (void)
 589          { 
 590   1        LEDA = 1;
 591   1        LCDRST=1;
 592   1        delay1(2);
 593   1        wr_lcd (comm,0x30);  /*30---基本指令动作*/   
 594   1        wr_lcd (comm,0x01);  /*清屏,地址指针指向00H*/
 595   1        wr_lcd (comm,0x06);  /*光标的移动方向*/
 596   1        wr_lcd (comm,0x0C);  /*开显示,关游标*/
 597   1      } 
 598          
 599          void clrram (void)
 600          {
 601   1        wr_lcd (comm,0x30);
 602   1        wr_lcd (comm,0x01);
 603   1      }
 604          
 605          void lat_disp (uchar data1,uchar data2)
 606          {
 607   1        uchar i,j,x;//k,x;
 608   1        x=x1;
 609   1       //for(k=0;k<2;k++)
 610   1        //{
 611   1          for(j=0;j<16;j++)
 612   1          {
C51 COMPILER V7.06   AA                                                                    06/25/2007 21:44:00 PAGE 11  

 613   2            for(i=0;i<8;i++)
 614   2            {
 615   3              wr_lcd (comm,0x34);
 616   3              wr_lcd (comm,y+j*2);
 617   3              wr_lcd (comm,x+i);
 618   3              wr_lcd (comm,0x30);
 619   3              wr_lcd (dat,data1);
 620   3              wr_lcd (dat,data1);
 621   3            }
 622   2            for(i=0;i<8;i++)
 623   2            {
 624   3              wr_lcd (comm,0x34);
 625   3              wr_lcd (comm,y+j*2+1);
 626   3              wr_lcd (comm,x+i);
 627   3              wr_lcd (comm,0x30);
 628   3              wr_lcd (dat,data2);
 629   3              wr_lcd (dat,data2);
 630   3            }
 631   2          }
 632   1          //x=x2;
 633   1       // }
 634   1        wr_lcd (comm,0x36);
 635   1      }
 636          
 637          void delay (uint us)   //delay time
 638          {
 639   1        while(us--);
 640   1      }
 641          void delay1 (uint ms)
 642          {
 643   1        uint i,j;
 644   1        for(i=0;i<ms;i++)
 645   1        for(j=0;j<15;j++)
 646   1        delay(1);
 647   1      }
 648          
 649          void ad_convert1(void)
 650          {ad_until=0;
 651   1       ad_count = 0;
 652   1       ad_add= 0;
 653   1       ad_flag= 1;
 654   1       EA = 0;
 655   1       CKCON = 0x00;   //0x00时T2时钟为系统时钟的12分频,0x02时为系统时钟.
 656   1       AMX0SL = 0x01; // AMUX Channel Select Register
 657   1       AMX0CF = 0x00; // AMUX Configuration Register        
 658   1       ADC0CN = 0xCC; // ADC Control Register
 659   1       //TH2 = 0x00;
 660   1       //TL2 = 0x00;
 661   1       //TH2 = 0x3C;
 662   1       //TL2 = 0xB0;            // T2要计数50000次才会溢出.
 663   1       
 664   1       //T2 = 65465;          //最大溢出一次的时间:(1/16M)*12*65536=49.152ms  现在是70*0.75=50us  
 665   1       
 666   1       if(low_freq == 1)
 667   1       {T2 = 65465;
 668   2        RCAP2 = 65465;
 669   2        }
 670   1       else if(low_freq == 0)
 671   1       {T2 = 0xffff-(int)((129/((double)cp0_count*128))/(49.152))*0xffff;
 672   2        RCAP2=0xffff-(int)((129/((double)cp0_count*128))/(49.152))*0xffff; //自动重装值为0x0000 溢出一次计65536

⌨️ 快捷键说明

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