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

📄 shiboqi.lst

📁 单片机DDS驱动程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 176   3                              case 0x43:f10Khz();break;
 177   3                              case 0x48:f1Khz();break;
 178   3                              case 0x49:f100Hz();break;
C51 COMPILER V7.20   SHIBOQI                                                               11/20/2007 14:15:22 PAGE 4   

 179   3                              case 0x4a:f10Hz();break;
 180   3                              case 0x4b:f1Hz();break;
 181   3                              case 0x50:carry_sin();break;
 182   3                              case 0x51:mod_sin();break;
 183   3                              case 0x52:ma_step();break;
 184   3                              default:break;
 185   3                      }
 186   2              }
 187   1      
 188   1      }
 189          /*步进按键函数*/
 190          void f10Mhz(void)                                                                                                                                               //10Mhz步进
 191          {
 192   1              freq[7]=freq[7]+1;
 193   1              freq[7]=judge(freq[7]);
 194   1              display_led();
 195   1      }
 196          
 197          void f1Mhz(void)                                                                                                                                                //1Mhz步进
 198          {
 199   1              freq[6]=freq[6]+1;
 200   1              freq[6]=judge(freq[6]);
 201   1              display_led();  
 202   1      }
 203          
 204          void f100Khz(void)                                                                                                                                              //100Khz步进
 205          {       
 206   1              freq[5]=freq[5]+1;
 207   1              freq[5]=judge(freq[5]);
 208   1              display_led();
 209   1      }
 210          
 211          void f10Khz(void)                                                                                                                                               //10Khz步进
 212          {
 213   1              freq[4]=freq[4]+1;
 214   1              freq[4]=judge(freq[4]);
 215   1              display_led();
 216   1      }
 217          
 218          void f1Khz(void)                                                                                                                                                //1Khz步进
 219          {
 220   1              freq[3]=freq[3]+1;
 221   1              freq[3]=judge(freq[3]);
 222   1              display_led();
 223   1      }
 224          
 225          void f100Hz(void)                                                                                                                                               //100hz步进
 226          {
 227   1              freq[2]=freq[2]+1;
 228   1              if(freq[2]>=10)
 229   1              {
 230   2                      freq[2]=0;
 231   2                      freq[3]=freq[3]+1;      
 232   2              }
 233   1              display_led();
 234   1      
 235   1      }
 236          
 237          void f10Hz(void)                                                                                                                                                //10hz步进
 238          {
 239   1              freq[1]=freq[1]+1;
 240   1              freq[1]=judge(freq[1]);
C51 COMPILER V7.20   SHIBOQI                                                               11/20/2007 14:15:22 PAGE 5   

 241   1              display_led();
 242   1      
 243   1      }
 244          
 245          void f1Hz(void)                                                                                                                                                 //1hz步进
 246          {
 247   1              freq[0]=freq[0]+1;
 248   1              freq[0]=judge(freq[0]);
 249   1              display_led();
 250   1      
 251   1      }
 252          //-----------功能模式---------------------------
 253          void carry_sin(void)                                                                                                                                    //产生载波正弦波
 254          {
 255   1          temp_r=jisuan(freq);
 256   1              longtoword(temp_r);
 257   1              write_ad9850();                                                                                                                                         //发送频率控制字
 258   1              IntToStr();
 259   1              Display_String(5,1,LCD_string);
 260   1      }
 261          void mod_sin(void)                                                                                                                                              //产生调制信号正弦波
 262          {
 263   1              temp_r=jisuan(freq);
 264   1              longtoword(temp_r);
 265   1              write_ad98501();
 266   1              IntToStr();
 267   1              Display_String(7,2,LCD_string);
 268   1      }
 269          void ma_step(void)
 270          {
 271   1              step_i++;
 272   1              if(step_i==10)
 273   1              {
 274   2                      step_i=0;
 275   2              }
 276   1              AD7524=step[step_i];
 277   1              LCD_step[0]=step_i+'0';
 278   1              Display_String(7,3,LCD_step);
 279   1              Display_String(8,3,"0");
 280   1              Display_String(9,3,"%");
 281   1      }
 282          //--------------------------------------------------------------------------------------------------
 283          // 函数名称: WRITE_AD9850
 284          // 函数功能: 将控制字写入AD9850
 285          //--------------------------------------------------------------------------------------------------
 286          void write_ad98501(void)
 287          {
 288   1           unsigned char no,temp;
 289   1               delay(0);
 290   1           for(no=0;no<5;no++)
 291   1           {
 292   2              data_OUT1=con_word[no];                                                                                                         //送控制字 
 293   2              delay(0);
 294   2           }
 295   1           temp=data_OUT1;                                                                                                                    //读指令产生上升延,要求AD9850改变输出
 296   1      }
 297          void write_ad9850(void)
 298          {  
 299   1           unsigned char no,temp;
 300   1               delay(0);
 301   1           for(no=0;no<5;no++)
 302   1           {
C51 COMPILER V7.20   SHIBOQI                                                               11/20/2007 14:15:22 PAGE 6   

 303   2              data_OUT=con_word[no];                                                                                                          //送控制字 
 304   2              delay(0);
 305   2           }
 306   1           temp=data_OUT;                                                                                                                     //读指令产生上升延,要求AD9850改变输出
 307   1      } 
 308          void IntToStr(void) 
 309          {
 310   1              char i,flag_top;   
 311   1          flag_top=1;
 312   1              for(i=0; i<8; i++)                                                                                                                              //转成ASCII码                   
 313   1              {       
 314   2                      if((freq[7-i]==0)&(flag_top==1))
 315   2                      {
 316   3                              LCD_string[i]=' ';
 317   3                      }
 318   2                      else
 319   2                      {
 320   3                              LCD_string[i]=freq[7-i]+'0';
 321   3                              flag_top=0;
 322   3                      }
 323   2          }
 324   1      }
 325          //-----------按键读取------------------------------------------
 326          unsigned char keyin(void)
 327          {
 328   1              unsigned char value;
 329   1              com=0x40;
 330   1              value=dat;value=value&0x7f;                                                                                                             //取键盘数据低7位
 331   1              return(value);
 332   1      }
 333          void int_int0() interrupt 0 using 0
 334          {
 335   1              int_flag=1;
 336   1              key_value=keyin();
 337   1      }
 338          //-------------------------延时---------------------------------
 339          void delay(unsigned char i)
 340          {
 341   1              while(--i);
 342   1      }
 343          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1935    ----
   CONSTANT SIZE    =   2183    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     66      34
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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