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

📄 dso_fft.lst

📁 在采用 320x240 屏的设计实验箱上运行
💻 LST
📖 第 1 页 / 共 3 页
字号:
 243   1              outcode(0x42);
 244   1              outdata(0x3f);
 245   1              for(i=1;i<8;i++)outdata(0xff);
 246   1      }
 247          /***************************************************************
 248          *名称:fixline2(uchar y)
 249          *描述:在第二层右半边画横线
 250          *参数:横线的行数
 251          *返回:
 252          ****************************************************************/
 253          void fixline2(uchar y)
 254          {
 255   1              unsigned int address;
 256   1              uchar addh,addl;
 257   1          uchar i;
 258   1              address=0x29f9+y*AP;
 259   1              addh=address>>8;//addh=address/256;
 260   1              addl=(uchar)address;//addl=address%256;
 261   1              outcode(0x46);
 262   1              outdata(addl);
 263   1              outdata(addh);
 264   1              outcode(0x4c);
 265   1              outcode(0x42);
 266   1              outdata(0x3f);
 267   1              for(i=1;i<31;i++)outdata(0xff);
 268   1      }
 269          /***************************************************************
 270          *名称:DrawFrame(void)
 271          *描述:在第二层画网格边框
 272          *参数:
 273          *返回:
 274          ****************************************************************/
 275          void DrawFrame(void)                            //画网格边框
 276          {
 277   1              fixline(0);
 278   1              fixline(200);
 279   1      
 280   1              Ver(0,1);      //(8,12)  --- (8,262)
 281   1              Ver(LENGTH,1); //(208,12)  --- (208,212)
 282   1              fixline(40);
 283   1              fixline(80);
 284   1              fixline(120);
 285   1              fixline(160);
 286   1              fixline2(200);
 287   1              fixline2(0);
 288   1      }
 289          /***************************************************************
 290          *名称:DrawGrid(void)
 291          *描述:在第二层画网格区内的网格线
 292          *参数:
 293          *返回:
 294          ****************************************************************/
 295          void DrawGrid(void)           //画网格区内的网格线
 296          {
 297   1              uchar i;
 298   1              Hori(1,5);
 299   1              Hori(2,25);
 300   1              Hori(WIDTH-2,0x19);
 301   1              Hori(WIDTH-2,0x05);
 302   1              Ver(0x02,0x19);
 303   1              Ver(LENGTH-2,0x19);
C51 COMPILER V7.06   DSO_FFT                                                               02/25/2007 18:04:19 PAGE 6   

 304   1              for(i=1;i<0x08;i++){
 305   2                      Hori(25*i,5);
 306   2                      if(i==0x04){
 307   3                              Hori(0x19*i-1,5);
 308   3                              Hori(0x19*i+1,5);//
 309   3                      }
 310   2              }
 311   1              for(i=0x01;i<0x0a;i++)
 312   1              {
 313   2                      Ver(0x19*i,5);
 314   2                      if(i==0x05)
 315   2                      {
 316   3                              Ver(0x19*i-1,5);
 317   3                              Ver(0x19*i+1,5);
 318   3                      }
 319   2              }
 320   1      }
 321          /***************************************************************
 322          *名称:vector(uchar x,uchar y1,uchar y2)
 323          *描述:两个点之间插入若干点,将点显示转换为矢量显示
 324          *参数:坐标x,坐标y1,坐标y2
 325          *返回:
 326          ****************************************************************/
 327          void vector(uchar x,uchar y1,uchar y2)
 328          {       
 329   1              char i=y2-y1;
 330   1              uchar tempy;
 331   1              if(i>0){
 332   2                      tempy=y2-1;
 333   2                      for(;i>1;i--){
 334   3                              WriteD(x+1,tempy);
 335   3                              tempy--;
 336   3                      }
 337   2              }
 338   1              else if(i<0){
 339   2                      tempy=y2+1;
 340   2                      i=-i;
 341   2                      for(;i>1;i--){
 342   3                              WriteD(x+1,tempy);
 343   3                              tempy++;
 344   3                      }
 345   2              }
 346   1              else{}
 347   1      }
 348          /***************************************************************
 349          *名称:showchinese(uchar x,uchar y,int chin)
 350          *描述:在x,y位置处,显示字符码为chin
 351          *参数:坐标x,坐标y
 352          *返回:
 353          ****************************************************************/
 354          void showchinese(uchar x,uchar y,int chin)
 355          { 
 356   1              int temp1,temp2; 
 357   1              uchar hi,lo;
 358   1              uchar b,c=0,d;
 359   1              d=y;
 360   1              temp2=chin;
 361   1              outcode(0x4c);
 362   1              for(b=0;b<16;b++){
 363   2                      temp1=0x5218+x/8+d*AP;//5218
 364   2                      hi=temp1>>8;//hi=temp1/256;
 365   2                      lo=(uchar)temp1;//lo=temp1%256;
C51 COMPILER V7.06   DSO_FFT                                                               02/25/2007 18:04:19 PAGE 7   

 366   2                      outcode(0x46);
 367   2                      outdata(lo);
 368   2                      outdata(hi);
 369   2                      outcode(0x42);
 370   2                      outdata(hzdot[temp2]);
 371   2                      temp2++;
 372   2                      outdata(hzdot[temp2]);
 373   2                      temp2++;
 374   2                      d=d+1;
 375   2              }
 376   1      }/***************************************************************
 377          *名称:showchin(void)
 378          *描述:显示四个汉字,波,形,正,弦
 379          *参数:
 380          *返回:
 381          ****************************************************************/
 382          void showchin(void)
 383          {               
 384   1              showchinese(10,20,CB2A8);
 385   1              showchinese(27,20,CD0CE);
 386   1              showchinese(10,140,CC6B5);
 387   1              showchinese(27,140,CC6D7);
 388   1      }
 389          /***************************************************************
 390          *名称:initall(void)
 391          *描述:初始化液晶屏
 392          *参数:
 393          *返回:
 394          ****************************************************************/
 395          void initall(void)
 396          {
 397   1              turnoff();
 398   1              init();
 399   1              initram();
 400   1              turnon();
 401   1              DrawFrame();
 402   1              DrawGrid();
 403   1      }
 404          /***************************************************************
 405          *名称:Verline(uchar x ,uchar y)
 406          *描述:在第一层画垂直线
 407          *参数:线的起始坐标(x,y)
 408          *返回:
 409          ****************************************************************/
 410          void Verline(uchar x ,uchar y)
 411          {
 412   1              uchar tempx , tempy ;
 413   1          uchar i;
 414   1          tempx = x ;
 415   1          tempy = 200 - y ;
 416   1              outcode(0x4f);
 417   1              for(i=tempy;i<0xc8;i++)WriteD(x,i);
 418   1      }
 419          /***************************************************************
 420          *名称:pinpu(void)
 421          *描述:在第一层画频谱
 422          *参数:
 423          *返回:
 424          ****************************************************************/
 425          void pinpu(uchar x[],uchar N_temp,int N_start)
 426          {
 427   1              uchar temp ,temp2,temp3;
C51 COMPILER V7.06   DSO_FFT                                                               02/25/2007 18:04:19 PAGE 8   

 428   1              for(temp=0;temp<N_temp;temp++)
 429   1              {
 430   2                      temp2 = temp*2+N_start ;
 431   2                      temp3 = (x[temp]) ;//%200
 432   2                      Verline(temp2,temp3);
 433   2              }
 434   1      }
 435          /***************************************************************
 436          *名称:uchar adc0804(void)
 437          *描述:AD0804采样一次
 438          *参数:
 439          *返回:采样值
 440          ****************************************************************/
 441          uchar adc0804(void)
 442          {
 443   1              uchar ad_data ;
 444   1              Adc_cs = 0 ;
 445   1              lcd_a0 = 1 ;
 446   1              lcd_wr = 0 ;
 447   1              lcd_wr = 1 ;
 448   1              while(Adc_busy) ;
 449   1              lcd_a0 = 0 ;
 450   1              ad_data = P0 ;
 451   1              lcd_a0 = 1 ;
 452   1              Adc_cs = 1 ;
 453   1              return ad_data ;
 454   1      }
 455          /***************************************************************
 456          *名称:Adc_work(void)
 457          *描述:AD0804采样
 458          *参数:
 459          *返回:采样值数组
 460          ****************************************************************/
 461          void Adc_work(void)     
 462          {
 463   1              unsigned int k=0  ;
 464   1              Ram_cs = 0 ;
 465   1      //      Ram_en = 0 ;
 466   1      
 467   1              while(!Adc_en) ;
 468   1              xr[0] = adc0804() ;
 469   1              while(!Adc_en) ;
 470   1              
 471   1              for(k=0;k<Sam_N;k++)//
 472   1              {
 473   2                      while(!Adc_en) ;
 474   2                      xr[k] = adc0804() ;
 475   2                      xi[k] = 0 ;
 476   2                      xr_show[k] = xr[k] ;
 477   2                      while(!Adc_en) ;
 478   2              }
 479   1      }
 480          /**************************************************************
 481          *名称:Fft(float xr[],float xi[])
 482          *描述:FFT,N=128,M=7
 483          *参数:采样的实序列和序数部分
 484          *返回:
 485          ****************************************************************/
 486          void Fft(void)//float xr1[],float xi1[]
 487          {
 488   1              uchar L,B,J,P,k;
 489   1              long rPartKB,iPartKB;
C51 COMPILER V7.06   DSO_FFT                                                               02/25/2007 18:04:19 PAGE 9   

 490   1              ChangeOrder();
 491   1      
 492   1              for(k=0;k<=127;k=k+2)
 493   1              {

⌨️ 快捷键说明

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