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

📄 write_9851.c

📁 AD9851:DDS芯片和51单片机接口子程序,仅供参考..哈哈 哈
💻 C
📖 第 1 页 / 共 2 页
字号:
                    if(shuju[j]==0x2e)  wr_da(shuju[j]);
                    else wr_da(shuju[j]+48);
                    }
  wr_da('H');
  wr_da('z');
  wr_da(' ');
  wr_da(' ');
  wr_da(' ');
  wr_data(0x88,9,"输入频率:");//第一行显示
  wr_com(0x98);
}
//********* 主程序 ***********************
main()
{
  uc  j;
  IE=0x81;          //单片机初始化,外部中断1
  IT0=1;
  e=0;
  xa=1;             //
  xb=1;
  xc=1;
  xd=1;             //
  flag0=0;
  flag1=0;
  flag2=0;
  flag3=0;
  flag4=0;
  flag5=0;
  zc=0;
  fout=100000;
  kzhi[0]=1;   ///
  setup0();         //7279初始化
  setup1();         //液晶初始化
  delay(10);
  ff=23.860929*fout;
  //fout=9999;
  kzhi[1]=ff/0x1000000;
  kzhi[2]=ff/0x10000;
  kzhi[3]=ff/0x100;
  kzhi[4]=ff/1;
  //rst=1;
  //delay(50);
  w_clk=0;
  eq_ud=0;
  rst=0;
for(j=0;j<5;j++)
      {
      P2=kzhi[j];
      w_clk=1;
      w_clk=0;
      }
  eq_ud=1;
  ///////
  xa=0;            //
  wr_data(0x80,16,"   DDS输出频率  ");//第一行显示
  wr_data(0x90,16,"   100.000KHz   ");//第一行显示
  wr_data(0x88,9,"输入频率:");//第一行显示
  wr_com(0x98);
  while(1){
          if(flag4){
                   for(sm=0;sm<11;sm++)
                      {
                           kzhi[2]=aaa[sm];
                           kzhi[3]=bbb[sm];
                           kzhi[4]=ccc[sm];
                           w_clk=0;
                           eq_ud=0;
                           rst=0;
                           for(j=0;j<5;j++)
                                      {
                                      P2=kzhi[j];
                                      w_clk=1;
                                      w_clk=0;
                                      }
                          eq_ud=1;
                      }
                   }
          else if(flag5)
                   {
                  for(sm=0;sm<10;sm++)
                      {
                           //ff=23.860929*(fou+sin(sm/10*6.283185)*10000);
                           kzhi[1]=ff/0x1000000;
                           kzhi[2]=ff/0x10000;
                           kzhi[3]=ff/0x100;
                           kzhi[4]=ff/1;
                           w_clk=0;
                           eq_ud=0;
                           rst=0;
                           for(j=0;j<5;j++)
                                      {
                                      P2=kzhi[j];
                                      w_clk=1;
                                      w_clk=0;
                                      }
                          eq_ud=1;
                      }
                   }
             }
}
//********* 外部中断1响应7279的键盘中断 ***
void exint1 (void) interrupt 0 using 0
{
 uc i,din;
 EX0=0;
 send_7279(0x15);
 dat=1;
 delay(13);
 din=0;
 for(i=0;i<8;i++)
      {
       clk=1;
	   delay(3);
	   din<<=1;
       if(dat) din|=1;
	   clk=0;
	   delay(3);
	  }
 dat=0;
 cs=1;	            //从左到右,从上到下键值7--0;15--8;23--20
 din=keydata[din];
 if(din<14)  {
             if((!flag4)&&(!flag5)){
             if(!flag2)
               {
               if(din<10)
                 {
                 flag1=1;
                 flag3=1;
                 if((zc<8)&&(fs[7]!=10)) {
                                           fs[zc]=din;
                                           wr_da(din+48);
                                           zc=zc+1;
                                           }
                 }
               else if(din==10){
                               if((!flag0)&&(zc<8))
                                 {
                                 flag0=1;
                                 fs[zc]=din;
                                 xsd=zc;
                                 wr_da(0x2e);
                                 zc=zc+1;
                                 }
                               }
               else {
                    if((zc<8)&&(fs[7]!=10))
                       {
                       if (din==11) {
                                    wr_da('H');
                                    wr_da('z');
                                    }
                       else if(din==12)
                                    {
                                    wr_da('K');
                                    wr_da('H');
                                    wr_da('z');
                                    }
                       else if(din==13)
                                    {
                                    wr_da('M');
                                    wr_da('H');
                                    wr_da('z');
                                    }
                       fs[zc]=din;
                       flag2=0;
                       zc=zc+1;
                       }
                       }
                    }
               }
             }
 else if(din==14) {
             if(!flag1){                                 //步进10
                       if(fout<19999991) fout=fout+10;
                       else              fout=0;
                       fre_sf();
                       }
             }
  else if(din==15)
             {
             if(!flag1){
                       if(fout<19999901) fout=fout+100; //步进100
                       else              fout=0;
                       fre_sf();
                       }
             }
  else if(din==16)
             {
             if(!flag1)
                       {
                       if(!flag5)
                          {
                          if(fout<100000) fout=100000; //步进5khz                          
                          fou=fout;
                          flag4=1;
                          }
                       }
             }
  else if(din==17)
             {
             if(!flag1)
                       {
                       if(!flag4)
                          {
                          if(fout<100000) fout=100000; //步进10khz
                          flag5=1;
                          fou=fout;
                          }
                       }
             }
  else if(din==19) {
                   if(flag1){
                            fou=0;
                            if(fs[zc-1]==11)
                               {
                               if(!flag0){
                                         for(i=0;i<zc-1;i++) fou=fou*10+fs[i];
                                         }
                               else {
                                     for(i=0;i<xsd;i++) fou=fou*10+fs[i];
                                    }
                               }
                            else if(fs[zc-1]==12)
                               {
                               if(!flag0){
                                         for(i=0;i<zc-1;i++) fou=fou*10+fs[i];
                                         fou=fou*1000;
                                         }
                               else {
                                     for(i=0;i<zc-1;i++)
                                            {
                                            if(fs[i]!=10) fou=fou*10+fs[i];
                                            }
                                     fou=fou*1000/pow(10,zc-2-xsd);
                                    }
                               }
                            else if(fs[zc-1]==13)
                               {
                               if(!flag0){
                                         for(i=0;i<zc-1;i++) fou=fou*10+fs[i];
                                         fou=fou*1000000;
                                         }
                               else {
                                     for(i=0;i<zc-1;i++)
                                            {
                                            if(fs[i]!=10) fou=fou*10+fs[i];
                                            }
                                     fou=fou*(1000000/pow(10,zc-2-xsd));
                                    }
                               }
                            else{if(!flag0){
                                         for(i=0;i<zc;i++) fou=fou*10+fs[i];
                                         }
                               else {
                                     for(i=0;i<xsd;i++) fou=fou*10+fs[i];
                                    }
                               }

                            flag0=0;
                            flag1=0;
                            flag2=0;
                            flag3=0;
                            for(i=0;i<zc;i++) fs[i]=0;
                            zc=0;
                            fout=fou;
                            fre_sf();
                            wr_data(0x98,16,"                ");
                            wr_com(0x98);
                            }
                   else if(flag4) {
                                  flag4=0;
                                  flag5=0;
                                  fout=100000;
                                  fou=0;
                                  fre_sf();
                                  }
                   else if(flag5) {
                                  flag5=0;
                                  flag4=0;
                                  fout=100000;
                                  fou=0;
                                  fre_sf();
                                  }
                   }
 while(!key);       //查询有没有松开
 EX0=1;
}

⌨️ 快捷键说明

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