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

📄 dds.lst

📁 信号发生器单片机C程序:使用AD9851,通过DDS,产生正弦波.
💻 LST
📖 第 1 页 / 共 2 页
字号:
 259          {
 260   1       if(fre_mode==1)
 261   1         {if(p<=6) {line[p++]='0'; lcd_show("0");no_data=1;}else{write_inst(0x0c);}}
 262   1       else if(ran_mode==1)
 263   1         {if(p<=2) {line[p++]='0'; lcd_show("0");no_data=1;}else{write_inst(0x0c);}}
 264   1       else if(mut_mode==1)
 265   1         {if(p<=5) {line[p++]='0'; lcd_show("0");no_data=1;}else{write_inst(0x0c);}}
 266   1      }
 267          //----------------------------------
 268          void one(void)
 269          {
 270   1       if(fre_mode==1)
 271   1         {if(p<=6) {line[p++]='1'; lcd_show("1");no_data=1;}else{write_inst(0x0c);}}
 272   1       else if(ran_mode==1)
 273   1         {if(p<=2) {line[p++]='1'; lcd_show("1");no_data=1;}else{write_inst(0x0c);}}
 274   1       else if(mut_mode==1)
 275   1         {if(p<=5) {line[p++]='1'; lcd_show("1");no_data=1;}else{write_inst(0x0c);}}
 276   1      }
 277          //----------------------------------
 278          void two(void)
 279          {
 280   1       if(fre_mode==1)
 281   1         {if(p<=6) {line[p++]='2'; lcd_show("2");no_data=1;}else{write_inst(0x0c);}}
 282   1       else if(ran_mode==1)
 283   1         {if(p<=2) {line[p++]='2'; lcd_show("2");no_data=1;}else{write_inst(0x0c);}}
 284   1       else if(mut_mode==1)
 285   1         {if(p<=5) {line[p++]='2'; lcd_show("2");no_data=1;}else{write_inst(0x0c);}}
 286   1      }
 287          //----------------------------------
 288          void three(void)
 289          {
 290   1       if(fre_mode==1)
 291   1         {if(p<=6) {line[p++]='3'; lcd_show("3");no_data=1;}else{write_inst(0x0c);}}
 292   1       else if(ran_mode==1)
 293   1         {if(p<=2) {line[p++]='3'; lcd_show("3");no_data=1;}else{write_inst(0x0c);}}
 294   1       else if(mut_mode==1)
 295   1         {if(p<=5) {line[p++]='3'; lcd_show("3");no_data=1;}else{write_inst(0x0c);}}
 296   1      }
 297          //----------------------------------
 298          void four(void)
 299          {
 300   1       if(fre_mode==1)
 301   1         {if(p<=6) {line[p++]='4'; lcd_show("4");no_data=1;}else{write_inst(0x0c);}}
 302   1       else if(ran_mode==1)
 303   1         {if(p<=2) {line[p++]='4'; lcd_show("4");no_data=1;}else{write_inst(0x0c);}}
C51 COMPILER V7.20   DDS                                                                   07/30/2005 16:03:15 PAGE 6   

 304   1       else if(mut_mode==1)
 305   1         {if(p<=5) {line[p++]='4'; lcd_show("4");no_data=1;}else{write_inst(0x0c);}}
 306   1      }
 307          //----------------------------------
 308          void five(void)
 309          {
 310   1       if(fre_mode==1)
 311   1          {if(p<=6) {line[p++]='5'; lcd_show("5");no_data=1;}else{write_inst(0x0c);}}
 312   1       else if(ran_mode==1)
 313   1          {if(p<=2) {line[p++]='5'; lcd_show("5");no_data=1;}else{write_inst(0x0c);}}
 314   1       else if(mut_mode==1)
 315   1          {if(p<=5) {line[p++]='5'; lcd_show("5");no_data=1;}else{write_inst(0x0c);}}
 316   1      }
 317          //----------------------------------
 318          void six(void)
 319          {
 320   1       if(fre_mode==1)
 321   1          {if(p<=6) {line[p++]='6'; lcd_show("6");no_data=1;}else{write_inst(0x0c);}}
 322   1       else if(ran_mode==1)
 323   1          {if(p<=2) {line[p++]='6'; lcd_show("6");no_data=1;}else{write_inst(0x0c);}}
 324   1       else if(mut_mode==1)
 325   1          {if(p<=5) {line[p++]='6'; lcd_show("6");no_data=1;}else{write_inst(0x0c);}}
 326   1      }
 327          //----------------------------------
 328          void seven(void)
 329          {
 330   1       if(fre_mode==1)
 331   1          {if(p<=6) {line[p++]='7'; lcd_show("7");no_data=1;}else{write_inst(0x0c);}}
 332   1       else if(ran_mode==1)
 333   1          {if(p<=2) {line[p++]='7'; lcd_show("7");no_data=1;}else{write_inst(0x0c);}}
 334   1       else if(mut_mode==1)
 335   1          {if(p<=5) {line[p++]='7'; lcd_show("7");no_data=1;}else{write_inst(0x0c);}}
 336   1      }
 337          //----------------------------------
 338          void eight(void)
 339          {
 340   1       if(fre_mode==1)
 341   1          {if(p<=6) {line[p++]='8'; lcd_show("8");no_data=1;}else{write_inst(0x0c);}}
 342   1       else if(ran_mode==1)
 343   1          {if(p<=2) {line[p++]='8'; lcd_show("8");no_data=1;}else{write_inst(0x0c);}}
 344   1       else if(mut_mode==1)
 345   1          {if(p<=5) {line[p++]='8'; lcd_show("8");no_data=1;}else{write_inst(0x0c);}}
 346   1      }
 347          //----------------------------------
 348          void nine(void)
 349          {
 350   1       if(fre_mode==1)
 351   1          {if(p<=6) {line[p++]='9'; lcd_show("9");no_data=1;}else{write_inst(0x0c);}}
 352   1       else if (ran_mode==1)
 353   1          {if(p<=2) {line[p++]='9'; lcd_show("9");no_data=1;}else{write_inst(0x0c);}}
 354   1       else if (mut_mode==1)
 355   1          {if(p<=5) {line[p++]='9'; lcd_show("9");no_data=1;}else{write_inst(0x0c);}}
 356   1      }
 357          //---------------------------------------------
 358          void point_road(void)
 359          {
 360   1       if((ran_mode==1)||(mut_mode==1))
 361   1       {
 362   2        line[p++]='.';
 363   2        lcd_show(".");
 364   2       }
 365   1       else
C51 COMPILER V7.20   DDS                                                                   07/30/2005 16:03:15 PAGE 7   

 366   1       {fre_mode=0;ran_mode=0;mut_mode=0;
 367   2        road_mode++;
 368   2        if(road_mode==3){road_mode=1;}
 369   2        switch(road_mode)
 370   2        {case 1:{t_first();}break;
 371   3         case 2:{t_second();}break;}
 372   2       }
 373   1      }
 374          //-------------------------------------------------选择波形
 375          void ch_wave(void)
 376          {
 377   1       fre_mode=0;ran_mode=0;mut_mode=0;
 378   1       if(road_mode==1)
 379   1       {
 380   2        wave_one_data++;
 381   2        if(wave_one_data==4) {wave_one_data=0;}
 382   2        switch(wave_one_data)
 383   2        {case 0:{send_one_wave(0x00);sine_wave();}break;
 384   3         case 1:{send_one_wave(0x01);square_wave();}break;
 385   3         case 2:{send_one_wave(0x02);triangle_wave();}break;
 386   3         case 3:{send_one_wave(0x03);teeth_wave();}break;}
 387   2       }
 388   1       else if(road_mode==2)
 389   1       {
 390   2        wave_two_data++;
 391   2        if(wave_two_data==4) {wave_two_data=0;}
 392   2        switch(wave_two_data)
 393   2        {case 0:{send_two_wave(0x00);sine_wave();}break;
 394   3         case 1:{send_two_wave(0x01);square_wave();}break;
 395   3         case 2:{send_two_wave(0x02);triangle_wave();}break;
 396   3         case 3:{send_two_wave(0x03);teeth_wave();}break;}
 397   2       }
 398   1      }
 399          //------------------------
 400          void ch_fre(void)
 401          {
 402   1       fre_mode=1;ran_mode=0;mut_mode=0; fre_port(); p=0;no_data=0;clrs();da_clr();
 403   1      }
 404          //-----------------------------
 405          void ch_ran(void)
 406          {
 407   1       ran_mode=1;fre_mode=0;mut_mode=0; ran_port(); p=0;no_data=0;
 408   1      }
 409          //---------------------------------------
 410          void ch_mut(void)
 411          {
 412   1       mut_mode=1;fre_mode=0;ran_mode=0; mut_port(); p=0;no_data=0;clrs(); da_clr();
 413   1      }
 414          //-------------------------------
 415          void enter(void)
 416          {
 417   1       ulong y=0;
 418   1       uint z;
 419   1       uchar t;
 420   1       float x;
 421   1       float n;
 422   1        y=0;
 423   1       if(no_data==0){none_data();}else{
 424   2       switch(road_mode)
 425   2       {case 1:{if(fre_mode==1)
 426   4                  {y=atol(line)/0.003725;
 427   5                   if(y>268456644){of_scope();}else{is_right();send_one_fre(y);}}
C51 COMPILER V7.20   DDS                                                                   07/30/2005 16:03:15 PAGE 8   

 428   4                else if(ran_mode==1)
 429   4                  {x=atof(line);t=x*50;
 430   5                    if(t>250){of_scope();}else{is_right(); send_one_ran(t);}}
 431   4                else if(mut_mode==1)
 432   4                  {n=atof(line);z=n/0.09;
 433   5                   if(z>4000){of_scope();}else{is_right();send_mut(z);}}
 434   4                } break;
 435   3        case 2:{if(fre_mode==1)
 436   4                  {y=atol(line)/0.003725;
 437   5                   if(y>268456644){of_scope();}else{is_right(); send_two_fre(y);}}
 438   4                else if(ran_mode==1)
 439   4                  {x=atof(line);t=x*50;
 440   5                    if(t>250){of_scope();}else{is_right(); send_two_ran(t);}}
 441   4                }break;
 442   3       }
 443   2                                      }
 444   1       p=0;fre_mode=0;ran_mode=0;mut_mode=0; clrs();da_clr();
 445   1      }
 446          
 447          //----------------------------------各按键功能
 448          void key_pass(void)
 449          {
 450   1       switch(keycode)
 451   1       {
 452   2        case 0xe7:{zero();}break;   case 0xeb:{one();}break;         case 0xed:{two();}break;
 453   2        case 0xee:{three();}break;  case 0xd7:{four();}break;        case 0xdb:{five();}break;
 454   2        case 0xdd:{six();}break;    case 0xde:{seven();}break;       case 0xb7:{eight();}break;
 455   2        case 0xbb:{nine();}break;   case 0xbd:{point_road();}break;  case 0xbe:{ch_wave();}break;
 456   2        case 0x77:{ch_fre();}break; case 0x7b:{ch_ran();}break;      case 0x7d:{ch_mut();}break;
 457   2        case 0x7e:{enter();}break;  default:{}
 458   2       }
 459   1      }
 460          //---------------------------------按键延时
 461          void key_delay (void)
 462          {
 463   1       uint i;
 464   1       for(i=3000;i>0;i--){}
 465   1      }
 466          //----------------------------------计算键值
 467          void  key()
 468          {scancode=0xef;
 469   1       while(1)
 470   1        {key_port=scancode;key_delay();
 471   2         keycode=key_port;
 472   2         if((keycode&0x0f)!=0x0f){key_pass();}
 473   2         scancode=((scancode<<=1)|0x0f);
 474   2         if(key_port==0xff)break;}
 475   1      }
 476          //--------------------------------------------上电初始化
 477          void begin(void)
 478          {
 479   1       initial();               //重新定义显示方式
 480   1       t_first();               //显示The firat road
 481   1       send_one_fre(0x000418a8);    //1KHZ
 482   1       send_two_fre(0x000418a8);
 483   1       send_one_ran(0x64);      //2V
 484   1       send_two_ran(0x64);
 485   1       send_one_wave(0x00);     //正弦波
 486   1       send_two_wave(0x00);
 487   1       send_mut(0x0000);          //零相移
 488   1      }
 489          //-----------------------------------------------主程序
C51 COMPILER V7.20   DDS                                                                   07/30/2005 16:03:15 PAGE 9   

 490          main()
 491          {
 492   1       en=0;
 493   1       key_delay ();
 494   1       key_delay ();
 495   1       key_delay ();
 496   1       key_delay ();
 497   1       begin();
 498   1       while(1)
 499   1       {
 500   2        key();
 501   2       }
 502   1      }
 503          
 504          
 505          
 506          
 507          
 508          
 509          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2356    ----
   CONSTANT SIZE    =    328    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     14      51
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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