找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 38110|回復(fù): 37
打印 上一主題 下一主題
收起左側(cè)

單片機DDS信號發(fā)生器制作 AD9850源程序與電路圖資料

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:102668 發(fā)表于 2016-1-12 01:15 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
  這個做的比較簡單,原理圖后來有幾處修改,不要緊,是按照官方評估板修改的,574沒用到不焊接(連PC機的)。原理圖暫時提供pdf版本的吧,畫的也不好。大家拿到資料自己學(xué)習(xí)參考就是了,不要到處發(fā)布。^-^



dds信號發(fā)生器的原理圖文件

3種方式的源代碼


下面是全部完整的制作資料下載 DDS信號發(fā)生器模塊制作資料.rar (914.12 KB, 下載次數(shù): 661)


程序編寫環(huán)境:win xp+Keil uVision 3(8.18)
主要功能模塊:STC89C516RD+單片機(是51內(nèi)核就行),AD9850信號發(fā)生芯片,JHD529M1型12864液晶模塊(帶中文字庫),4*4矩陣鍵盤
單片機IO口使用情況:
         P0口接液晶顯示器數(shù)據(jù)線,
         P1.0接液晶的RS(CS),P1.1接液晶的RW(SLD),P1.2接液晶的E(SCLK),P1.3接液晶的PSB,P1.4接液晶的RESET
         P1.5接AD9850的RESET,P1.6接AD9850的WCLK,P1.7接AD9850的FQUD
         P2口接鍵盤,P3口接AD9850,
鍵盤示意圖(4*4矩陣):
        |   7   |   8   |   9    | set       |
      —————————————————————
        |   4   |   5   |   6    | enter     |
      —————————————————————
        |   1   |   2   |   3    | backspace |
      —————————————————————
        |   .   |   0   |  波形  | enter     |
操作指南:
1.上電開機,顯示歡迎界面
2.按“確定”鍵,進入頻率設(shè)置界面
3.按“設(shè)置”鍵開始設(shè)置頻率,可以使用退格鍵。(整數(shù)最多5位,小樹最多3位)
4.按“確定”鍵完成輸入,此時從AD9850出可以得到所要頻率的波形。
5.需要重新設(shè)定頻率時,重復(fù)3,4步驟即可。



部分程序源碼預(yù)覽:
  1. /*************************************************************
  2. **項目:AD9850信號發(fā)生器設(shè)計
  3. **作者:徐士斌
  4. **版本:1.0.0.8
  5. **簡介:本程序接收來自4*4矩陣鍵盤輸入的頻率,并計算出相應(yīng)的
  6. 頻率控制字,寫到DDS芯片AD9850中,同時在LCD12864上顯示輸出頻率。
  7. *************************************************************/
  8. #include "lcdfun.h"

  9. #define uc unsigned char
  10. #define ui unsigned int
  11. #define MAXINPUT 13
  12. #define MAXZHENSHU 5
  13. #define MAXXIAOSHU 3

  14. sbit WCLK=P1^6;               
  15. sbit FQUD=P1^7;                 
  16. sbit reset_9850=P1^5;

  17. uc i,j,t;
  18. uc vkey,key;  //全局變量,存儲檢測到的/轉(zhuǎn)換得到的按鍵值
  19. //input存輸入的數(shù)字(input[0][]空出不用),num存輸入字符個數(shù),pdot存小數(shù)點的位置
  20. unsigned char input[MAXINPUT][1],num,pdot;
  21. unsigned char waveform=1;//輸出波形,1-sin 2-方波 3-三角波(沒用處)
  22. unsigned long zheng,xiao=0,freqctrlbyte;//輸入字符的整數(shù)、小數(shù)部分,頻率控制字
  23. unsigned long const_zheng=71,const_xiao;//常數(shù)
  24. unsigned long ulong1,ulong3,ulongtemp;

  25. const uc code CLEAR[] = {"  "};
  26.   
  27. uc code HELLO11[] = {"信息與通信中心"};
  28. uc code HELLO12[] = {"開放實驗"};

  29. uc code HELLO21[] = {"歡迎使用"};
  30. uc code HELLO22[] = {"信號發(fā)生器"};
  31. uc code HELLO23[] = {"點擊“確定”進入"};
  32.   
  33. uc code HELLO32[] = {"狀態(tài):"};
  34. uc code HELLO33[] = {"頻率設(shè)定:"};
  35. uc code FH1[] = {"AD9850"};
  36. uc code FH2[] = {"KHz"};
  37. uc code SZ[][1]= {0x30,0x31,0x32,0x33,0x34,0x35,0x36,
  38. 0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,0x2e,0x20,};

  39. const uc code NORMAL[] = {"正常"};
  40. const uc code ERROR[] = {"錯誤"};
  41. const uc code SIN[]= {"正弦"};
  42. const uc code FANGBO[] = {"方波"};
  43. const uc code TRI[]  = {"三角"};
  44. const uc code SET[] = {"設(shè)置"};
  45. /*************************************************************
  46. 延時一毫秒子程序
  47. *************************************************************/
  48. void delay(uc a)
  49. {
  50.   while(a--)
  51.     for(i=100;i>0;i--);
  52. }
  53. /*************************************************************
  54. 檢測按鍵,按鍵值存到vkey中
  55. *************************************************************/
  56. unsigned int getkey()
  57. {
  58.         uc a,b;
  59.     while(1)        //鍵盤掃描程序
  60.     {        
  61.      vkey=0;
  62.      P2=0xf0;    //p2接矩陣鍵盤
  63.      a=P2;            //a存列信息
  64.      if(a!=0xf0)
  65.      {
  66.      delay(10);
  67.      P2=0x0f;
  68.      b=P2;            //b存行信息
  69.      delay(10);
  70.      switch(a|b)//c=a|b為鍵盤掃描的鍵值
  71.      {
  72.      case 0xee:
  73.          {vkey=1;break;}
  74.      case 0xde:
  75.                  {vkey=2;break;}
  76.      case 0xbe:
  77.                  {vkey=3;break;}
  78.      case 0x7e:
  79.                  {vkey=4;break;}
  80.      case 0xed:
  81.                  {vkey=5;break;}
  82.      case 0xdd:
  83.                  {vkey=6;break;}
  84.      case 0xbd:
  85.                  {vkey=7;break;}
  86.      case 0x7d:
  87.                  {vkey=8;break;}
  88.      case 0xeb:
  89.                  {vkey=9;break;}
  90.      case 0xdb:
  91.                  {vkey=10;break;}
  92.      case 0xbb:
  93.                   {vkey=11;break;}
  94.      case 0x7b:
  95.                   {vkey=12;break;}
  96.      case 0xe7:
  97.                   {vkey=13;break;}
  98.      case 0xd7:
  99.                   {vkey=14;break;}
  100.      case 0xb7:
  101.                   {vkey=15;break;}
  102.      case 0x77:
  103.                   {vkey=16;break; }
  104.      default:
  105.                   {vkey=0;}                        
  106.                  }
  107.          delay(200);//按鍵延時200ms
  108.          return 0;
  109.                 }         
  110.     }//while(1)結(jié)束      
  111. }
  112. /*************************************************************
  113. 顯示當(dāng)前輸出波形形狀
  114. *************************************************************/
  115. void playwaveform()
  116. {
  117.   if(waveform==1)
  118.   {Serial_DisplayStrings_WithAddress(0x9e,SIN);}
  119.   if(waveform==2)
  120.   {Serial_DisplayStrings_WithAddress(0x9e,FANGBO);}
  121.   if(waveform==3)
  122.   {Serial_DisplayStrings_WithAddress(0x9e,TRI);}                  
  123. }         
  124. /*************************************************************
  125. 顯示歡迎界面
  126. *************************************************************/
  127. void welcome()
  128. {        
  129.     clearscreen();
  130.     Serial_DisplayStrings_WithAddress(0x90,HELLO11);//信息與通信工程中心
  131.     Serial_DisplayStrings_WithAddress(0x8a,HELLO12);//開放實驗
  132.     delay(200);delay(200);delay(200);delay(200);
  133.         delay(200);delay(200);delay(200);delay(200);
  134.         delay(200);delay(200);delay(200);delay(200);

  135.         clearscreen();
  136.     Serial_DisplayStrings_WithAddress(0x82,HELLO21);//歡迎使用
  137.         Serial_DisplayStrings_WithAddress(0x92,FH1);//AD9850
  138.         Serial_DisplayStrings_WithAddress(0x89,HELLO22);//信號發(fā)生器
  139.         Serial_DisplayStrings_WithAddress(0x98,HELLO23);//點擊“確定”進入
  140. }
  141. /*************************************************************
  142. 顯示正常工作界面
  143. *************************************************************/
  144. void hello3()
  145. {
  146.   clearscreen();         
  147.   Serial_DisplayStrings_WithAddress(0x80,FH1); //AD9850           
  148.   Serial_DisplayStrings_WithAddress(0x83,HELLO22);//信號發(fā)生器           
  149.   Serial_DisplayStrings_WithAddress(0x90,HELLO33);//頻率設(shè)定:         
  150.   Serial_DisplayStrings_WithAddress(0x8d,FH2);//Hz         
  151.   Serial_DisplayStrings_WithAddress(0x98,HELLO32);//狀態(tài):         
  152.   Serial_DisplayStrings_WithAddress(0x9b,NORMAL);//顯示“正�!�               
  153.   playwaveform(); //顯示當(dāng)前波形形狀
  154. }
  155. /*************************************************************
  156. 向AD9850寫入頻率控制字
  157. *************************************************************/
  158. void writefreg(unsigned long freq)
  159.   {         
  160.      unsigned char mw3=0x00,mw4=0x00;
  161.          unsigned char mw0=0x00,mw1=0x00,mw2=0x00;         

  162.          mw4=freq&0x0ff;
  163.          freq=freq/256;
  164.          mw3=freq&0x0ff;
  165.          freq=freq/256;
  166.          mw2=freq&0x0ff;
  167.          freq=freq/256;
  168.          mw1=freq&0x0ff;
  169.          mw0=0x00;

  170.          P0=mw0;
  171.          WCLK=0;
  172.          WCLK=1;           
  173.                   
  174.          P0=mw1;
  175.          WCLK=0;
  176.          WCLK=1;                  
  177.                   
  178.          P0=mw2;
  179.          WCLK=0;
  180.          WCLK=1;                  
  181.                   
  182.          P0=mw3;
  183.          WCLK=0;
  184.          WCLK=1;                 
  185.          
  186.          P0=mw4;
  187.          WCLK=0;
  188.          WCLK=1;

  189.          FQUD=0;
  190.          FQUD=1;
  191.   }
  192. /*************************************************************
  193. 將虛擬按鍵轉(zhuǎn)換成數(shù)字按鍵
  194. *************************************************************/
  195. void vkey2key()
  196.   {
  197.    switch(vkey)
  198.    {
  199.          case 1:{key=7;break;}
  200.          case 2:{key=8;break;}
  201.          case 3:{key=9;break;}
  202.          case 5:{key=4;break;}
  203.          case 6:{key=5;break;}
  204.          case 7:{key=6;break;}
  205.          case 9:{key=1;break;}
  206.          case 10:{key=2;break;}
  207.          case 11:{key=3;break;}
  208.          case 14:{key=0;break;}
  209.          case 13:{key=16;break;}////
  210.          default:{key=20;}
  211.         }

  212.   }
  213. /*************************************************************
  214. 在LCD12864上顯示輸入的字符
  215. *************************************************************/
  216. void displayinput()
  217. {
  218.   unsigned int t=0;
  219.   //先清相關(guān)的屏   
  220.   for( i=0x88;i<=0x8f;i++)
  221.   {        Serial_DisplayStrings_WithAddress(i,CLEAR);        }
  222.   //顯示input數(shù)組內(nèi)容
  223.           Serial_Write_LCD(COMMAND,BASIC_FUNCTION);//基本指令動作   
  224.         Serial_DDRAM_Address_Set(0x88);               
  225.         for(i=1;i<=num;i++)
  226.             Serial_Write_LCD(DATA, SZ[input[i][0]][0]);        
  227.    Serial_DisplayStrings_WithAddress(0x8d,FH2);
  228. }
  229. /*************************************************************
  230. 由輸入的字符計算得到頻率控制字
  231. *************************************************************/
  232. unsigned char input2output()
  233. {
  234.   unsigned long temp=1;
  235.   t=0; ulongtemp=0;ulong3=0;
  236.   ulong1=0;zheng=0;
  237.   //計算輸入的整數(shù)部分
  238.   if(pdot!=0)  
  239.     {for(i=1;i<pdot;i++)zheng=zheng*10+input[i][0];}
  240.   else
  241.     {for(j=1;j<=num;j++)zheng=zheng*10+input[j][0];}   
  242.   //計算輸入的小數(shù)部分
  243.   if(pdot!=0)
  244.     {
  245.          xiao=0;
  246.          for(i=pdot+1,temp=100;i<=num;i++,temp/=10)
  247.          {xiao=xiao+input[i][0]*temp;}
  248.         }
  249.   zheng*=1000;                //整數(shù)加權(quán)
  250.   zheng=zheng+xiao;        //其實沒有小數(shù)啦

  251.   ulong1=zheng*(71);//71//42  
  252.   ulong3=zheng*0.582788267;//0.582788267//0.94967296
  253.   freqctrlbyte=ulong1+ulong3;
  254.   return 1;
  255. }
  256. /*************************************************************
  257. 確定鍵處理函數(shù)
  258. *************************************************************/
  259. void onok()
  260. {
  261.    unsigned char result;
  262.    result=input2output();
  263.    if(result==1)
  264.    writefreg(freqctrlbyte);
  265.    Serial_DisplayStrings_WithAddress(0x9b,NORMAL);//顯示狀態(tài)“正�!�
  266. }
  267. /*************************************************************
  268. 初始化AD9850
  269. *************************************************************/
  270. void init_9850()
  271. {
  272. reset_9850 = 1;               
  273. delay(100);
  274. reset_9850 = 0;                 
  275. }
  276. /*************************************************************
  277. 主函數(shù)
  278. *************************************************************/
  279. void main(void)
  280. {                                       
  281.         EA=0;            //全局中斷不被允許                     
  282.          Serial_Init_LCD();
  283.         init_9850();
  284.         welcome();       //hello12()
  285. s1: getkey();           
  286.         if(vkey==4) hello3();
  287.         else {goto s1;}        
  288.         hello3();                  
  289. newstart:num=0;pdot=0;
  290.         for(i=0;i<MAXINPUT;i++)  input[i][0]=0x00;
  291.     while(1)
  292.         {  
  293.            getkey();           
  294.            if(vkey==4)    //剛開始只有SET鍵有效,進入設(shè)置過程
  295.            {              //每次設(shè)置初始化//hello3();
  296.              Serial_DisplayStrings_WithAddress(0x9b,SET);//顯示狀態(tài)“設(shè)置”
  297.                  num=0;pdot=0;for(i=0;i<MAXINPUT;i++)input[i][0]=0x00;
  298.                  displayinput();     
  299.                  
  300.                  while(1)
  301.                  {                  
  302.                      getkey();                  
  303.               switch(vkey)
  304.               {         
  305.                         case 0:
  306.                              {
  307.                                   break;//由于沒有按鍵的時候vkey一直為0,所以一般此處不做任何處理                                 
  308.                                   }        
  309.                         case 4:
  310.                                  {
  311.                                   num=0;pdot=0;
  312.                                   displayinput();
  313.                                   break;        
  314.                                  }                                   
  315.                     case 8:
  316.                                  {
  317.                                   onok(); //暫時用這個鍵當(dāng)回車
  318.                                   goto newstart;
  319.                                  }
  320.                         case 12: //刪除
  321.                               {        
  322.                                    if(num<=0){num=0;pdot=0;break;}//已經(jīng)沒有輸入字符了
  323.                                    if(num==pdot) //處理dot被刪除時的情況
  324.                                    {pdot=0;num--;displayinput();break;}
  325.                                    num--;
  326.                                    displayinput();
  327.                                    break;
  328.                                   }
  329.                         case 13: //按鍵dot位
  330.                               {
  331.                                    if((num+1)>(MAXINPUT-1))break; //總字符數(shù)超出范圍
  332.                                    if(pdot!=0)break;  //已經(jīng)有小數(shù)點了
  333.                                    num++;pdot=num;vkey2key();
  334.                                    input[num][0]=key;
  335.                                    displayinput();
  336.                                    break;
  337.                                    }
  338.                         case 15: //波形選擇
  339.                               {
  340.                                    waveform++;
  341.                                    if(waveform>3)waveform=1;
  342.                                    playwaveform();
  343.                                    break;
  344.                                    }
  345.                         case 16:
  346.                               {
  347.                                    onok(); //回車,不過這個鍵不好用了
  348.                                    goto newstart;
  349.                                    break;
  350.                                    }
  351.                         default:
  352.                              { if(num>=(MAXINPUT-1)){break;}                 //總字符數(shù)超出范圍
  353.                                   if((pdot!=0)&&((num-pdot)>=MAXXIAOSHU))break;//小數(shù)個數(shù)超出范圍
  354.                                   if((pdot==0)&&((num+1)>MAXZHENSHU))break;        //整數(shù)個數(shù)超出范圍

  355.                                   num++;  
  356.                                   vkey2key();//轉(zhuǎn)換
  357.                                   input[num][0]=key;
  358.                                   displayinput();                                   
  359.                                 }
  360.               }        //switch                  
  361.                  }//while        
  362.                 }//if
  363.                  else continue;
  364.         } //while  
  365.   }//main
  366.   /************************************************************/
復(fù)制代碼



下面是設(shè)計文檔的預(yù)覽:

                        
                        
第1章 緒 論              
                        
1.1課題研究的意義與作用              
                        
1.2 DDS的研究現(xiàn)狀及發(fā)展趨勢              
                        
1.3 DDS的系統(tǒng)簡介              
                        
1.3.1 DDS的基本原理              
                        
1.3.2 DDS的能特點              
                        
1.3.3 實現(xiàn)AD9850信號發(fā)生系統(tǒng)的方案              
                        
1.4 液晶顯示器及其指令介紹              
                        
1.4.1 JHD529M1概述              
                        
1.4.2 JHD529M1基本特性:              
                        
1.4.3 JHD529M1模塊接口說明:              
                        
1.4.4 JHD529M1指令系統(tǒng)說明              
                        
第2章              信號發(fā)生系統(tǒng)硬件設(shè)計              
                        
2.1 系統(tǒng)功能實現(xiàn)及需求分析              
                        
2.2 主要電路設(shè)計              
                        
2.2.1正弦信號產(chǎn)生模塊設(shè)計              
                        
2.2.2 液晶顯示電路設(shè)計              
                        
2.2.3 鍵盤擴展電路設(shè)計              
                        
第3章  信號發(fā)生系統(tǒng)軟件設(shè)計              
                        
3.1 程序編寫及調(diào)試              
                        
3.2 程序設(shè)計思路及部分模塊測試程序              
                        
3.2.1 程序設(shè)計思路              
                        
3.2.2 部分模塊測試程序              
                        
第4章 系統(tǒng)參數(shù)性能測試及總結(jié)              
                        
4.1試驗參數(shù)測試結(jié)果              
                        
4.2實驗總結(jié)              
                        
致 謝              
                        
參考文獻              
                        
                        
                                                 
                        
本系統(tǒng)以51單片機為控制核心,由正弦信號發(fā)生模塊、方波信號發(fā)生模塊以及測試信號發(fā)生模塊組成。采用數(shù)控的方法控制DDS芯片AD9850產(chǎn)生1Hz-20MHz正弦信號和方波信號。另外,本系統(tǒng)從簡單、調(diào)整方便、功能完備為出發(fā)點,基本實現(xiàn)了設(shè)計中的要求,波形輸出較穩(wěn)定,且精度較高。本設(shè)計還配備有LCD顯示屏、鍵盤,提供了友好的人機交互界面。
                        

                        第1章 緒 論                        
                        1.1課題研究的意義與作用                        
    1971年,美國學(xué)者j.Tierney等人撰寫的" A Digital Frequency Synthesizer"-文首次提出了以全數(shù)字技術(shù),從相位概念出發(fā)直接合成所需波形的一種新的頻率合成原理。限于當(dāng)時的技術(shù)和器件水平,它的性能指標(biāo)尚不能與已有的技術(shù)相比,故未受到重視。近10年間,隨著微電子技術(shù)的迅速發(fā)展,直接數(shù)字頻率合成器(Direct Digital Frequency Synthesis簡稱DDS或DDFS)得到了飛速的發(fā)展,它以有別于其它頻率合成方法的優(yōu)越性能和特點成為現(xiàn)代頻率合成技術(shù)中的姣姣者。具體體現(xiàn)在相對帶寬寬、頻率轉(zhuǎn)換時間短、頻率分辨率高、輸出相位連續(xù)、可產(chǎn)生寬帶正交信號及其他多種調(diào)制信號、可編程和全數(shù)字化、控制靈活方便等方面,并具有極高的性價比。
                        1.2 DDS的研究現(xiàn)狀及發(fā)展趨勢                        
    在頻率合成(FS, Frequency Synthesis)領(lǐng)域中,常用的頻率合成技術(shù)有模擬鎖相環(huán)、數(shù)字鎖相環(huán)、小數(shù)分頻鎖相環(huán)(fractional-N PLL Synthesis)等,直接數(shù)字合成(Direct Digital Synthesis-DDS)是近年來新的FS技術(shù)。單片集成的DDS產(chǎn)品是一種可代替鎖相環(huán)的快速頻率合成器件。DDS是產(chǎn)生高精度、快速變換頻率、輸出波形失真小的優(yōu)先選用技術(shù)。DDS以穩(wěn)定度高的參考時鐘為參考源,通過精密的相位累加器和數(shù)字信號處理,通過高速D/A變換器產(chǎn)生所需的數(shù)字波形(通常是正弦波形),這個數(shù)字波經(jīng)過一個模擬濾波器后,得到最終的模擬信號波形。如圖1-1所示,通過高速DAC產(chǎn)生數(shù)字正弦數(shù)字波形,通過帶通濾波器后得到一個對應(yīng)的模擬正弦波信號,最后該模擬正弦波與一門限進行比較得到方波時鐘信號。
                        
    DDS系統(tǒng)一個顯著的特點就是在數(shù)字處理器的控制下能夠精確而快速地處理頻率和相位。除此之外,DDS的固有特性還包括:相當(dāng)好的頻率和相位分辨率(頻率的可控范圍達μHz級,相位控制小于0.09°),能夠進行快速的信號變換(輸出DAC的轉(zhuǎn)換速率300百萬次/秒)。這些特性使DDS在軍事雷達和通信系統(tǒng)中應(yīng)用日益廣泛。
                        
    其實,以前DDS價格昂貴、功耗大(以前的功耗達Watt級)、DAC器件轉(zhuǎn)換速率不高,應(yīng)用受到限制,因此只用于高端設(shè)備和軍事上。隨著數(shù)字技術(shù)和半導(dǎo)體工業(yè)的發(fā)展,DDS芯片能集成包括高速DAC器件在內(nèi)的部件,其功耗降低到mW級(AD9851在3.3v時功耗為650mW),功能增加了,價格便宜。因此,DDS也獲得廣泛的應(yīng)用:現(xiàn)代電子器件、通信技術(shù)、醫(yī)學(xué)成像、無線、PCS/PCN系統(tǒng)、雷達、衛(wèi)星通信。
                        
                                                         
                        1.3 DDS的系統(tǒng)簡介                        1.3.1 DDS的基本原理                         
  DDS的基本原理是利用采樣定理,通過查表法產(chǎn)生波形。DDS的結(jié)構(gòu)有很多種,其基本的電路原理可用圖1-2來表示。
                        
                        
    相位累加器由N位加法器與N位累加寄存器級聯(lián)構(gòu)成。每來一個時鐘脈沖fs,加法器將頻率控制字K與累加寄存器輸出的累加相位數(shù)據(jù)相加,把相加后的結(jié)果送至累加寄存器的數(shù)據(jù)輸入端。累加寄存器將加法器在上一個時鐘脈沖作用后所產(chǎn)生的新相位數(shù)據(jù)反饋到加法器的輸入端,以使加法器在下一個時鐘脈沖的作用下繼續(xù)與頻率控制字相加。這樣,相位累加器在時鐘作用下,不斷對頻率控制字進行線性相位累加。由此可以看出,相位累加器在每一個時鐘脈沖輸入時,把頻率控制字累加一次,相位累加器輸出的數(shù)據(jù)就是合成信號的相位,相位累加器的溢出頻率就是DDS輸出的信號頻率。 用相位累加器輸出的數(shù)據(jù)作為波形存儲器(ROM)的相位取樣地址,這樣就可把存儲在波形存儲器內(nèi)的波形抽樣值(二進制編碼)經(jīng)查找表查出,完成相位到幅值轉(zhuǎn)換。波形存儲器的輸出送到D/A轉(zhuǎn)換器,D/A轉(zhuǎn)換器將數(shù)字量形式的波形幅值轉(zhuǎn)換成所要求合成頻率的模擬量形式信號。低通濾波器用于濾除不需要的取樣分量,以便輸出頻譜純凈的正弦波信號。 DDS在相對帶寬、頻率轉(zhuǎn)換時間、高分辨力、相位連續(xù)性、正交輸出以及集成化等一系列性能指標(biāo)方面遠遠超過了傳統(tǒng)頻率合成技術(shù)所能達到的水平,為系統(tǒng)提供了優(yōu)于模擬信號源的性能。
                        1.3.2 DDS的能特點                        
(1)輸出頻率相對帶寬較寬
  輸出頻率帶寬為50%fs(理論值)。但考慮到低通濾波器的特性和設(shè)計難度以及對輸出信號雜散的抑制,實際的輸出頻率帶寬仍能達到40%fs。 
(2)頻率轉(zhuǎn)換時間短
  DDS是一個開環(huán)系統(tǒng),無任何反饋環(huán)節(jié),這種結(jié)構(gòu)使得DDS的頻率轉(zhuǎn)換時間極短。事實上,在DDS的頻率控制字改變之后,需經(jīng)過一個時鐘周期之后按照新的相位增量累加,才能實現(xiàn)頻率的轉(zhuǎn)換。因此,頻率轉(zhuǎn)換的時間等于頻率控制字的傳輸時間,也就是一個時鐘周期的時間。時鐘頻率越高,轉(zhuǎn)換時間越短。DDS的頻率轉(zhuǎn)換時間可達納秒數(shù)量級,比使用其它的頻率合成方法都要短數(shù)個數(shù)量級。 
(3)頻率分辨率極高
  若時鐘fs的頻率不變,DDS的頻率分辨率就由相位累加器的位數(shù)N決定。只要增加相位累加器的位數(shù)N即可獲得任意小的頻率分辨率。目前,大多數(shù)DDS的分辨率在1Hz數(shù)量級,許多小于1MHz甚至更小。 
(4)相位變化連續(xù)
  改變DDS輸出頻率,實際上改變的每一個時鐘周期的相位增量,相位函數(shù)的曲線是連續(xù)的,只是在改變頻率的瞬間其頻率發(fā)生了突變,因而保持了信號相位的連續(xù)性。
(5)輸出波形的靈活性
  只要在DDS內(nèi)部加上相應(yīng)控制如調(diào)頻控制FM、調(diào)相控制PM和調(diào)幅控制AM,即可以方便靈活地實現(xiàn)調(diào)頻、調(diào)相和調(diào)幅功能,產(chǎn)生FSK、PSK、ASK和MSK等信號。另外,只要在DDS的波形存儲器存放不同波形數(shù)據(jù),就可以實現(xiàn)各種波形輸出,如三角波、鋸齒波和矩形波甚至是任意的波形。當(dāng)DDS的波形存儲器分別存放正弦和余弦函數(shù)表時,既可得到正交的兩路輸出。
(6)其他優(yōu)點
  由于DDS中幾乎所有部件都屬于數(shù)字電路,易于集成,功耗低、體積小、重量輕、可靠性高,且易于程控,使用相當(dāng)靈活,因此性價比極高。
                        
DDS也有局限性,主要表現(xiàn)在:
                        
    (1)輸出頻帶范圍有限
                        
    由于DDS內(nèi)部DAC和波形存儲器(ROM)的工作速度限制,使得DDS輸出的最高頻有限。目前市場上采用CMOS、TTL、ECL工藝制作的DDS工習(xí)片,工作頻率一般在幾十MHz至400MHz左右。采用GaAs工藝的DDS芯片工作頻率可達2GHz左右。
                        
    (2)輸出雜散大
                        
由于DDS采用全數(shù)字結(jié)構(gòu),不可避免地引入了雜散。其來源主要有三個:相位累加器相位舍位誤差造成的雜散;幅度量化誤差(由存儲器有限字長引起)造成的雜散和DAC非理想特性造成的雜散。
                        1.3.3 實現(xiàn)AD9850信號發(fā)生系統(tǒng)的方案                        
采用高性能DDS芯片的信號發(fā)生電路的解決方案,首先進行器件選型。隨著微電子技術(shù)的飛速發(fā)展,目前各種性能優(yōu)良的DDS產(chǎn)品不斷推出,AD公司的DDS系列產(chǎn)品以其較高的性能價格比,目前取得了極為廣泛的應(yīng)用。AD公司的常用DDS芯片選用列表見表1,下面僅對比較常用的AD公司的芯片作一簡單介紹。
                        
1 AD公司的常用DDS芯片選用列表
                        
型 號
最大工作(MHz)
工作電壓(V)
最大功耗(mw)
備 注
AD9832
25
3.3/5
120
小型封裝,串行輸入,內(nèi)置D/A轉(zhuǎn)換器。
AD9831
25
3.3/5
120
低電壓,經(jīng)濟,內(nèi)置D/A轉(zhuǎn)換器。
AD9833
25
2.5~5.5
20
10個管腳的uSOIC封裝。
AD9834
50
2.5~5.5
25
20個管腳的TSSOP封裝并內(nèi)置比較器。
AD9835
50
5
200
經(jīng)濟,小型封裝,串行輸入,內(nèi)置D/A轉(zhuǎn)換器。
AD9830
50
5
300
經(jīng)濟,并行輸入,內(nèi)置D/A轉(zhuǎn)換器。
AD9850
125
3.3/5
480
內(nèi)置比較器和D/A轉(zhuǎn)換器。
AD9853
165
3.3/5
1150
可編程數(shù)字QPSK/16-QAM調(diào)制器。
AD9851
180
3/3.3/5
650
內(nèi)置比較器、D/A轉(zhuǎn)換器和時鐘6倍頻器。
AD9852
300
3.3
1200
內(nèi)置12位的D/A轉(zhuǎn)換器、高速比較器、線性調(diào)頻和可編程參考時鐘倍頻器。
AD9854
300
3.3
1200
內(nèi)置12位兩路正交D/A轉(zhuǎn)換器、高速比較器和可編程參考時鐘倍頻器。
AD9858
1000
3.3
2000
內(nèi)置10位的D/A轉(zhuǎn)換器、150MHz相頻檢測器、充電汞和2GHz混頻器。
                        
                        
    AD9850 采用先進的CMOS 工藝, 其功耗在3.3V 供電時僅為155mW,溫度范圍為-40~80℃, 采用28 腳SSOP 表面封裝形式。圖2.3為其組成框圖。圖中層虛線內(nèi)是一個完整的可編程DDS系統(tǒng),外層虛線內(nèi)包含了AD9850的主要組成部分。AD9850內(nèi)含可編程DDS系統(tǒng)和高速比較器,能實現(xiàn)全數(shù)字編程控制的頻率合成�?删幊藾DS系統(tǒng)的核心是相位累加器, 它由一個加法器和一個N位相位寄存器組成,N為32;每來一個外部參考時鐘,相位寄存器便以步長M遞加;相位寄存器的輸出與相位控制字相加后可輸入到正弦查詢表地址上;正弦查詢表包含一個正弦波周期的數(shù)字幅度信息, 每一個地址對應(yīng)正弦波中 0°~360°范圍的一個相位點;查詢表把輸入地址的相位信息映射成正弦波幅度信號, 然后驅(qū)動DAC 以輸出模擬量。
                        
相位寄存器每過2N/M個外部參考時鐘后返回到初始狀態(tài)一次, 相應(yīng)地正弦查詢表每經(jīng)過一個循環(huán)也回到初始位置, 從而使整個DDS系統(tǒng)輸出一個正弦波。輸出的正弦波周期TO = Tc2N/M,頻率fout = Mfc/2N ,Tc、fc 分別為外部參考時鐘的周期和頻率。AD9850采用32位的相位累加器將信號截斷成14 位輸入到正弦查詢表,查詢表的輸出再被截斷成10 位后輸入到DAC, DAC輸出兩個互補的電流。
                        
                 圖 2.3  AD9850信號發(fā)生系統(tǒng)組成框圖
                        
DAC滿量程輸出電流通過一個外接電阻RSET調(diào)節(jié), 調(diào)節(jié)關(guān)系為ISET = 32 (1.248V/ RSET) , RSET的典型值是3.9kΩ。其系統(tǒng)功能結(jié)構(gòu)如圖2.4所示。AD9850在接上精密時鐘源和寫入頻率相位控制字之后就可產(chǎn)生一個頻率和相位都可編程控制的模擬正弦波輸出, 此正弦波可直接用作頻率信號源或經(jīng)內(nèi)部的高速比較器轉(zhuǎn)換為方波輸出。在125MHz 的時鐘下, 32 位的頻率控制字可使AD9850 的輸出頻率分辨率達0.0291Hz;并具有5位相位控制位,而且允許相位按增量180°、90°、45°、22.5°、11.25°或這些值的組合進行調(diào)整。
                        
                 圖 2.4  AD9850結(jié)構(gòu)
                        1.4 液晶顯示器及其指令介紹                        1.4.1 JHD529M1概述                        
帶中文字庫的128X64是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國標(biāo)一級、二級簡體中文字庫的點陣圖形液晶顯示模塊;其顯示分辨率為128×64, 內(nèi)置8192個16*16點漢字,和128個16*8點ASCII字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機交互圖形界面。可以顯示8×4行16×16點陣的漢字. 也可完成圖形顯示.低電壓低功耗是其又一顯著特點。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡潔得多,且該模塊的價格也略低于相同點陣的圖形液晶模塊。
                        1.4.2 JHD529M1基本特性:                        
(1)低電源電壓(VDD:+3.0--+5.5V)
                        
(2)顯示分辨率:128×64點
                        
(3)內(nèi)置漢字字庫,提供8192個16×16點陣漢字(簡繁體可選)
                        
(4)內(nèi)置 128個16×8點陣字符
                        
(5)2MHZ時鐘頻率
                        
(6)顯示方式:STN、半透、正顯
                        
(7)驅(qū)動方式:1/32DUTY,1/5BIAS
                        
(8)視角方向:6點
                        
(9)背光方式:側(cè)部高亮白色LED,功耗僅為普通LED的1/5—1/10
                        
(10)通訊方式:串行、并口可選
                        
(11)內(nèi)置DC-DC轉(zhuǎn)換電路,無需外加負壓
                        
(12)無需片選信號,簡化軟件設(shè)計
                        
(13)工作溫度: 0℃ - +55℃ ,存儲溫度: -20℃ - +60℃
                        1.4.3 JHD529M1模塊接口說明:                        
硬件接口
                        
                                                
管腳號
                                       
                                                
管腳名稱
                                       
                                                
  電平
                                       
                                                
管腳功能描述
                                       
                                                
1
                                       
                                                
VSS
                                       
                                                
0V
                                       
                                                
電源地
                                       
                                                
2
                                       
                                                
VCC
                                       
                                                
3.0+5V
                                       
                                                
電源正
                                       
                                                
3
                                       
                                                
V0
                                       
                                                
-
                                       
                                                
對比度(亮度)調(diào)整
                                       
                                                
4
                                       
                                                
RS(CS)
                                       
                                                
H/L
                                       
                                                
RS=“H”,表示DB7——DB0為顯示數(shù)據(jù)
                                                
RS=“L”,表示DB7——DB0為顯示指令數(shù)據(jù)
                                       
                                                
5
                                       
                                                
R/W(SID)
                                       
                                                
H/L
                                       
                                                
R/W=“H”,E=“H”,數(shù)據(jù)被讀到DB7——DB0
                                                
R /W=“L”,E=“H→L”, DB7——DB0的數(shù)據(jù)被寫到 IR或DR
                                       
                                                
6
                                       
                                                
E(SCLK)
                                       
                                                
H/L
                                       
                                                
使能信號
                                       
                                                
7
                                       
                                                
DB0
                                       
                                                
H/L
                                       
                                                
三態(tài)數(shù)據(jù)線
                                       
                                                
8
                                       
                                                
DB1
                                       
                                                
H/L
                                       
                                                
三態(tài)數(shù)據(jù)線
                                       
                                                
9
                                       
                                                
DB2
                                       
                                                
H/L
                                       
                                                
三態(tài)數(shù)據(jù)線
                                       
                                                
10
                                       
                                                
DB3
                                       
                                                
H/L
                                       
                                                
三態(tài)數(shù)據(jù)線
                                       
                                                
11
                                       
                                                
DB4
                                       
                                                
H/L
                                       
                                                
三態(tài)數(shù)據(jù)線
                                       
                                                
12
                                       
                                                
DB5
                                       
                                                
H/L
                                       
                                                
三態(tài)數(shù)據(jù)線
                                       
                                                
13
                                       
                                                
DB6
                                       
                                                
H/L
                                       
                                                
三態(tài)數(shù)據(jù)線
                                       
                                                
14
                                       
                                                
DB7
                                       
                                                
H/L
                                       
                                                
三態(tài)數(shù)據(jù)線
                                       
                                                
15
                                       
                                                
PSB
                                       
                                                
H/L
                                       
                                                
H:8位或4位并口方式,L:串口方式(見注釋1)
                                       
                                                
16
                                       
                                                
NC
                                       
                                                
-
                                       
                                                
空腳
                                       
                                                
17
                                       
                                                
/RESET
                                       
                                                
H/L
                                       
                                                
復(fù)位端,低電平有效(見注釋2)
                                       
                                                
18
                                       
                                                
VOUT
                                       
                                                
-
                                       
                                                
LCD驅(qū)動電壓輸出端
                                       
                                                
19
                                       
                                                
A
                                       
                                                
VDD
                                       
                                                
背光源正端(+5V)(見注釋3)
                                       
                                                
20
                                       
                                                
K
                                       
                                                
VSS
                                       
                                                
背光源負端(見注釋3)
                                       
                        
*注釋1:如在實際應(yīng)用中僅使用并口通訊模式,可將PSB接固定高電平,也可以將模塊上的J8和“VCC”用焊錫短接。
                        
*注釋2:模塊內(nèi)部接有上電復(fù)位電路,因此在不需要經(jīng)常復(fù)位的場合可將該端懸空。  
                        
*注釋3:如背光和模塊共用一個電源,可以將模塊上的JA、JK用焊錫短接。
                        1.4.4 JHD529M1指令系統(tǒng)說明                        
    模塊控制芯片提供兩套控制命令,基本指令和擴充指令如下:
                        
指令表1:(RE=0:基本指令)
                        
指令
           指 令 碼
              功 能
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
清除
                                                
顯示
0
0
0
0
0
0
0
0
0
1
將DDRAM填滿"20H",并且設(shè)定DDRAM的地址計數(shù)器(AC)到"00H"
地址
                                                
歸位
0
0
0
0
0
0
0
0
1
X
設(shè)定DDRAM的地址計數(shù)器(AC)到"00H",并且將游標(biāo)移到開頭原點位置;這個指令不改變DDRAM 的內(nèi)容
顯示狀態(tài)開/關(guān)
0
0
0
0
0
0
1
D
C
B
D=1: 整體顯示 ON
                                                
C=1: 游標(biāo)ON   
                                                
B=1:游標(biāo)位置反白允許
進入點
                                                
設(shè)定
0
0
0
0
0
0
0
1
I/D
S
指定在數(shù)據(jù)的讀取與寫入時,設(shè)定游標(biāo)的移動方向及指定顯示的移位
游標(biāo)或顯示移位控制
0
0
0
0
0
1
S/C
R/L
X
X
設(shè)定游標(biāo)的移動與顯示的移位控制位;這個指令不改變DDRAM 的內(nèi)容
功能
                                                
設(shè)定
0
0
0
0
1
DL
X
RE
X
X
DL=0/1:4/8位數(shù)據(jù)
                                                
RE=1: 擴充指令操作
                                                
RE=0: 基本指令操作
設(shè)定   CGRAM
                                                
地址
0
0
0
1
AC5
AC4
AC3
AC2
AC1
AC0
設(shè)定CGRAM 地址
設(shè)定DDRAM
                                                
地址
0
0
1
0
AC5
AC4
AC3
AC2
AC1
AC0
設(shè)定DDRAM 地址(顯示位址)
                                                
第一行:80H-87H
                                                
第二行:90H-97H
讀取忙標(biāo)志和地址
0
1
BF
AC6
AC5
AC4
AC3
AC2
AC1
AC0
讀取忙標(biāo)志(BF)可以確認內(nèi)部動作是否完成,同時可以讀出地址計數(shù)器(AC)的值
寫數(shù)據(jù)到RAM
1
0
數(shù)據(jù)
將數(shù)據(jù)D7——D0寫入到內(nèi)部的RAM (DDRAM/CGRAM/IRAM/GRAM)
讀出RAM的值
1
1
數(shù)據(jù)
從內(nèi)部RAM讀取數(shù)據(jù)D7——D0
                                                
(DDRAM/CGRAM/IRAM/GRAM)
                        
指令表2:(RE=1:擴充指令)
                        

                                                
指令
         指 令 碼
               功 能
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
待命
                                                
模式
0
0
0
0
0
0
0
0
0
1
進入待命模式,執(zhí)行其他指令都棵終止
                                                
待命模式
卷動地址開關(guān)開啟
0
0
0
0
0
0
0
0
1
SR
SR=1:允許輸入垂直卷動地址
                                                
SR=0:允許輸入IRAM和CGRAM地址
反白
                                                
選擇
0
0
0
0
0
0
0
1
R1
R0
選擇2行中的任一行作反白顯示,并可決定反白與否。初始值R1R0=00,第一次設(shè)定為反白顯示,再次設(shè)定變回正常
睡眠
                                                
模式
0
0
0
0
0
0
1
SL
X
X
SL=0:進入睡眠模式
                                                
SL=1:脫離睡眠模式
擴充
                                                
功能
                                                
設(shè)定
0
0
0
0
1
CL
X
RE
G
0
CL=0/1:4/8位數(shù)據(jù)
                                                
RE=1: 擴充指令操作
                                                
RE=0: 基本指令操作
                                                
G=1/0:繪圖開關(guān)
設(shè)定繪圖RAM
                                                
地址
0
0
1
0
                                                
AC6
0
                                                
AC5
0
                                                
AC4
AC3
                                                
AC3
AC2
                                                
AC2
AC1
                                                
AC1
AC0
                                                
AC0
設(shè)定繪圖RAM
                                                
先設(shè)定垂直(列)地址AC6AC5…AC0
                                                
再設(shè)定水平(行)地址AC3AC2AC1AC0
                                                
將以上16位地址連續(xù)寫入即可
                        
備注:當(dāng)IC1在接受指令前,微處理器必須先確認其內(nèi)部處于非忙碌狀態(tài),即讀取BF標(biāo)志時,BF需為零,方可接受新的指令;如果在送出一個指令前并不檢查BF標(biāo)志,那么在前一個指令和這個指令中間必須延長一段較長的時間,即是等待前一個指令確實執(zhí)行完成。
                        
                        
第2章              信號發(fā)生系統(tǒng)硬件設(shè)計
                                                2.1 系統(tǒng)功能實現(xiàn)及需求分析                        
本設(shè)計采用STC89C516RD+單片機作為主要芯片來實現(xiàn)對AD9850芯片、液晶顯示模塊等外設(shè)的控制,STC89C516RD+單片機有64kflash并且保密性能十分優(yōu)秀,完全可以滿足本設(shè)計的要求。用液晶顯示模塊可以實時顯示AD9850信號發(fā)生系統(tǒng)的工作狀態(tài)(當(dāng)前輸出頻率,控制系統(tǒng)運行狀態(tài)),提供有好的操作界面。利用鍵盤的外部輸入實現(xiàn)對輸出頻率的控制和設(shè)定。基于設(shè)計功能需求,本設(shè)計采用的是4×4矩陣式鍵盤,這樣可以合理地利用硬件資源,并且編程靈活。
                        2.2 主要電路設(shè)計                        
                                                  圖2.1 系統(tǒng)的總體框圖
                        2.2.1正弦信號產(chǎn)生模塊設(shè)計                          
正弦信號產(chǎn)生模塊的主要部分是AD9850芯片及其外圍電路的設(shè)計。芯片輸出信號經(jīng)過橢圓形濾波器后得到正弦波,信號送回到AD9850芯片,最終輸出方波。
                        
電路中重要的節(jié)點都可以用短路帽連接,也可以選擇性的斷開某部分電路。
                        
                                                         
                        
                  圖2.2  AD9850信號發(fā)生模塊的設(shè)計
                        2.2.2 液晶顯示電路設(shè)計                          
                                                         
                        
圖2.3  液晶顯示界面模塊的硬件設(shè)計
                        2.2.3 鍵盤擴展電路設(shè)計                        
                                                         
                        
                  圖2.4  鍵盤控制模塊的硬件設(shè)計
                        
                        第3章  信號發(fā)生系統(tǒng)軟件設(shè)計                                                
系統(tǒng)軟件部分主要包括了具有友好的交互式操作界面,各種信號的設(shè)置和控制。正弦波產(chǎn)生過程為:頻率設(shè)置,同步顯示,數(shù)據(jù)處理,然后控制DDS芯片完成各種頻率的正弦波產(chǎn)生;方波產(chǎn)生過程為:正弦波輸入到AD9850后不經(jīng)過比較,輸出方波。(詳細程序見附錄)
                        3.1 程序編寫及調(diào)試                        
程序編寫環(huán)境:Windows xp+Keil C8.18
                        
                        3.2 程序設(shè)計思路及部分模塊測試程序                        3.2.1 程序設(shè)計思路                        
    單片機得到鍵盤的輸入,并將輸入內(nèi)容顯示到LCD屏幕上,按"確定"鍵后,利用輸入的頻率值計算得到相應(yīng)的頻率控制字,送到AD9850中,通過波形發(fā)生電路產(chǎn)生正確的波形輸出。
                        
   下面為程序流程圖:
                        
                                                         
                        
                         圖 3.1  程序流程圖
                        3.2.2 部分模塊測試程序                        
1.液晶顯示模塊控制
                        
    液晶顯示模塊用于同步顯示用戶輸入結(jié)果和系統(tǒng)運行狀態(tài),在系統(tǒng)運行開始時顯示歡迎界面。所有相關(guān)功能都封裝在lcdfun.h頭文件中。系統(tǒng)可以調(diào)用四個主要功能函數(shù):
                        
void Serial_Init_LCD(void);
                        
void Serial_Write_LCD( bit b_Data_Command , unsigned char uc_Content);
                        
void Serial_DDRAM_Address_Set(uchar ucDDramAdd);
                        
void Serial_DisplayStrings_WithAddress(uchar ucAdd,uchar code *p);
                        
這四個函數(shù)分別完成LCD初始化、寫LCD、設(shè)置DDRAN地址、在LCD上顯示一個字符串的功能。其他還有清屏、延時等函數(shù)。
                        
  • 鍵盤輸入響應(yīng)
                        
    鍵盤輸入的字符存儲在一個input數(shù)組內(nèi),變量num存輸入字符個數(shù),pdot存小數(shù)點的位置。同時提供退格鍵功能,并進行了相關(guān)的容錯處理。本系統(tǒng)由于程序運行時間空余較多,故鍵盤通過程序掃描實現(xiàn)。如果改用中斷實現(xiàn),可以在鍵盤上加一個與非門即可。
                        
  • 頻率控制字的計算
                        
    通過鍵盤輸入的字符在input2output()函數(shù)中被轉(zhuǎn)換成二進制數(shù)字,然后經(jīng)過簡單運算,得到需要的頻率控制字,保存在freqctrlbyte變量中。
                        
                        
                        第4章 系統(tǒng)參數(shù)性能測試及總結(jié)                       
4.1試驗參數(shù)測試結(jié)果                        
  • 測試儀器
    ·GWINSTEC 50M雙蹤模擬示波器;
                        
·Tektronix 60M雙通道數(shù)字示波器;
                        
2、指標(biāo)測試
                        
(1) 正弦波指標(biāo)測試
                        
  把正弦波輸出端接入示波器,以1K,2K,5K,10K,50K,100K,500K,1M,2M,5M,10M,15M,20M作為測試點,得到如表3.1數(shù)據(jù)。
                        
表 3.1  正弦波指標(biāo)測試數(shù)據(jù)
                        
                                
                                                        
期望頻率
                                                
                                                        
     輸出頻率
                                                
                                                        
失真度 ( 目測 )
                                                
                                                        
1KHz
                                                
                                                        
1.14005KHz
                                                
                                                        
                                                
                                                        
2KHz
                                                
                                                        
2.19247KHz
                                                
                                                        
                                                
                                                        
5KHz
                                                
                                                        
5.61477KHz
                                                
                                                        
                                                
                                                        
10KHz
                                                
                                                        
10.6178KHz
                                                
                                                        
                                                
                                                        
50KHz
                                                
                                                        
51.6379KHz
                                                
                                                        
                                                
                                                        
100KHz
                                                
                                                        
102.059KHz
                                                
                                                        
                                                
                                                        
500KHz
                                                
                                                        
500.001KHz
                                                
                                                        
                                                
                                                        
1MHz
                                                
                                                        
1.00000MHz
                                                
                                                        
                                                
                                                        
2MHz
                                                
                                                        
2.00000MHz
                                                
                                                        
                                                
                                                        
5MHz
                                                
                                                        
5.00001MHz
                                                
                                                        
                                                
                                                        
10MHz
                                                
                                                        
10.00000MHz
                                                
                                                        
少許尖頂
                                                
                                                        
15MHz
                                                
                                                        
15.00000MHz
                                                
                                                        
少許尖頂
                                                
                                                        
20MHz
                                                
                                                        
20.00000MHz
                                                
                                                        
少許尖頂
                                                
                        

                        
  由上表可見,正弦波輸出頻率在1KHz~500KHz帶寬內(nèi)輸出存在頻率誤差,在500KHz~20MHz帶寬內(nèi)誤差在0.001%之內(nèi)。但輸出頻率高于10MHz時輸出波形就會出現(xiàn)少許失真,原因可能是電路設(shè)計不足,跳線太多,造成高頻干擾。
                        
(2) 方波指標(biāo)測試
  把方波輸出信號接入示波器,目測輸出波形,測試數(shù)據(jù)如表3.2。
                        
表 3.2 方波指標(biāo)測試數(shù)據(jù)
                        
                                
                                                        
期望頻率
                                                
                                                        
輸出頻率
                                                
                                                        
失真度 ( 目測 )
                                                
                                                        
1KHz
                                                
                                                        
1.000KHz
                                                
                                                        
輕微毛刺
                                                
                                                        
2KHz
                                                
                                                        
2.000KHz
                                                
                                                        
輕微毛刺
                                                
                                                        
5KHz
                                                
                                                        
5.000KHz
                                                
                                                        
輕微毛刺
                                                
                                                        
10KHz
                                                
                                                        
10.001KHz
                                                
                                                        
輕微毛刺
                                                
                                                        
50KHz
                                                
                                                        
50.001KHz
                                                
                                                        
少許毛刺
                                                
                                                        
100KHz
                                                
                                                        
100.0KHz
                                                
                                                        
少許毛刺
                                                
                                                        
500KHz
                                                
                                                        
500.0KHz
                                                
                                                        
少許毛刺
                                                
                                                        
1MHz
                                                
                                                        
1.000MHz
                                                
                                                        
少許毛刺
                                                
                                                        
2MHz
                                                
                                                        
2.000MHz
                                                
                                                        
毛刺變大
                                                
                                                        
3MHz
                                                
                                                        
3.030MHz
                                                
                                                        
毛刺變大
                                                
                                                        
5MHz
                                                
                                                        
5.000M
                                                
                                                        
毛刺變大
                                                
                        

                        
  由上表可見,方波輸出頻率在1KHz~5MHz帶寬內(nèi)輸出頻率誤差很小。但輸出頻率高于5MHz時輸出波形就會出現(xiàn)很大失真,到10M以上時已經(jīng)近似三角波。原因可能是濾波電路設(shè)計濾波性能存在偏差,導(dǎo)致輕微毛刺始終存在。
                        4.2實驗總結(jié)                        
在確定了自己的開放實驗題目以后,我翻閱和瀏覽了許多相關(guān)資料,對ad9850的功能、優(yōu)點有了較多的了解,經(jīng)過功能分析和可行性研究,制定了設(shè)計方案和計劃。經(jīng)過潛心鉆研和指導(dǎo)老師的耐心指點,逐步完成了正弦信號輸出模塊、液晶顯示模塊、鍵盤輸入模塊等的電路設(shè)計和編程,并融合在一起,后期又不斷進行改進。在完成之時,我感到收獲頗豐,對STC單片機的體系結(jié)構(gòu)、工作原理和編程原理有了更深的了解,達到了能初步應(yīng)用的水平;熟悉了Keil C程序開發(fā)環(huán)境,已能夠在Keil C集成開發(fā)環(huán)境下編寫和調(diào)試各個系列單片機的模塊和整體程序;熟練了PROTEL畫圖軟件,熟悉了億圖專業(yè)流程圖制作工具;在實際電路組裝過程中,積累了一些經(jīng)驗,鍛煉了動手能力。
                                
                                                                
    經(jīng)過三個多月的學(xué)習(xí)和鍛煉,本次開放實驗基本完成并達到了預(yù)期目標(biāo)。在這期間自己的自學(xué)能力、創(chuàng)新能力、實際動手能力、獨立分析問題和解決問題的能力等都有了一個比較大的提高。在開放實驗過程中不僅使自己以往所學(xué)理論知識得到鞏固提高,而且在實際設(shè)計過程中獲得了一些新的認識和想法,更為重要的是開拓了自己的眼界和思路,掌握了一些基本的科學(xué)研究步驟和方法,培養(yǎng)了自己的科學(xué)精神。

評分

參與人數(shù) 4黑幣 +32 收起 理由
譚譚譚 + 5 很給力!
北回歸線以南 + 5 很給力!
YJGG + 12
紅塵有你 + 10 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏17 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

來自 2#
ID:94449 發(fā)表于 2020-2-20 12:06 | 只看該作者


8位并口程序沒成功,4位并口程序成功點亮。
回復(fù)

使用道具 舉報

板凳
ID:102957 發(fā)表于 2016-1-21 11:16 | 只看該作者
論述完整簡介明了,厲害了。贊了。同事記號該貼。想你學(xué)習(xí)。
回復(fù)

使用道具 舉報

地板
ID:111195 發(fā)表于 2016-3-28 21:36 | 只看該作者
你好,請問你這兩幅電路圖里89C51是怎么和AD9850連在一起的?
回復(fù)

使用道具 舉報

5#
ID:111837 發(fā)表于 2016-4-1 20:38 | 只看該作者
好很好非常好
回復(fù)

使用道具 舉報

6#
ID:111876 發(fā)表于 2016-4-5 16:56 | 只看該作者
請問,如果用STC89C52芯片+1602屏,應(yīng)該用哪個程序�。�
回復(fù)

使用道具 舉報

7#
ID:114959 發(fā)表于 2016-4-24 22:12 | 只看該作者
大牛,你好,我想請問一下輸入的十進制頻率是怎么轉(zhuǎn)換成頻率控制字的?我輸入的頻率和輸出不一致,想弄懂這個算法,灰常感謝
回復(fù)

使用道具 舉報

8#
ID:117014 發(fā)表于 2016-4-27 11:36 | 只看該作者
不錯,新手學(xué)習(xí)一下
回復(fù)

使用道具 舉報

9#
ID:116907 發(fā)表于 2016-4-29 14:47 | 只看該作者
我問一下,那個算頻率控制字部分沒看懂,為什么乘以71,后面又乘了0.582788267
回復(fù)

使用道具 舉報

10#
ID:118030 發(fā)表于 2016-5-2 21:50 | 只看該作者

 51hei 有你更精彩!
回復(fù)

使用道具 舉報

11#
ID:118997 發(fā)表于 2016-5-7 08:01 | 只看該作者
高深,,,,,,,,,,,,
回復(fù)

使用道具 舉報

12#
ID:129025 發(fā)表于 2016-7-3 10:46 | 只看該作者
支持下 看看
回復(fù)

使用道具 舉報

13#
ID:130187 發(fā)表于 2016-7-12 16:11 | 只看該作者
最小輸出信號能達到多少mv呢?
回復(fù)

使用道具 舉報

14#
ID:166347 發(fā)表于 2017-3-11 10:43 | 只看該作者
謝謝樓主,謝謝先
回復(fù)

使用道具 舉報

15#
ID:175611 發(fā)表于 2017-3-20 23:56 | 只看該作者
謝謝樓主
回復(fù)

使用道具 舉報

16#
ID:189739 發(fā)表于 2017-4-15 11:23 | 只看該作者
非常感謝樓主這么詳細的發(fā)帖
回復(fù)

使用道具 舉報

17#
ID:221280 發(fā)表于 2017-8-2 21:00 | 只看該作者
有生成SPWM波的程序嗎?
回復(fù)

使用道具 舉報

18#
ID:224156 發(fā)表于 2017-8-6 11:44 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報

19#
ID:229463 發(fā)表于 2017-8-26 15:22 | 只看該作者
厲害了
回復(fù)

使用道具 舉報

20#
ID:263298 發(fā)表于 2017-12-20 20:21 | 只看該作者
樓主真是急人之所急
回復(fù)

使用道具 舉報

21#
ID:312303 發(fā)表于 2018-4-20 11:40 | 只看該作者
請問下這個發(fā)生器 低頻可以到多少  1HZ可以么
回復(fù)

使用道具 舉報

22#
ID:287371 發(fā)表于 2018-7-15 20:37 | 只看該作者
學(xué)到了
回復(fù)

使用道具 舉報

23#
ID:89420 發(fā)表于 2018-10-9 16:45 | 只看該作者
謝謝樓主的無私奉獻�。�!
回復(fù)

使用道具 舉報

24#
ID:89420 發(fā)表于 2018-10-9 17:31 | 只看該作者
謝謝樓主的無私奉獻�。�!
回復(fù)

使用道具 舉報

25#
ID:480731 發(fā)表于 2019-3-5 08:40 | 只看該作者
謝謝樓主分享 真的非常有幫助
回復(fù)

使用道具 舉報

26#
ID:452173 發(fā)表于 2019-3-5 22:45 | 只看該作者
保留記號,感謝分享
回復(fù)

使用道具 舉報

27#
ID:340339 發(fā)表于 2019-4-16 10:12 | 只看該作者
感謝樓主分享,最近在搞一個信號發(fā)生器,加1602液晶屏,學(xué)習(xí)學(xué)習(xí)了
回復(fù)

使用道具 舉報

28#
ID:94449 發(fā)表于 2020-2-19 20:15 | 只看該作者
12864用的是JHD529M1嗎?謝謝。
回復(fù)

使用道具 舉報

29#
ID:94449 發(fā)表于 2020-2-19 22:23 | 只看該作者
謝謝樓主,一時性急,沒仔細看,的確是和我一樣型號的12864,下附件學(xué)習(xí)中。
回復(fù)

使用道具 舉報

30#
ID:94449 發(fā)表于 2020-2-20 22:59 | 只看該作者
8位并口程序樓主用的是P3端口,4位并口程序用的是P0,我開發(fā)板上用的是P0,所以一開始8位失敗,
折騰一天,圖片顯示搞定,洗洗睡了。

回復(fù)

使用道具 舉報

31#
ID:699508 發(fā)表于 2020-2-28 11:59 | 只看該作者
謝謝 很給力 加油
回復(fù)

使用道具 舉報

32#
ID:741818 發(fā)表于 2020-4-30 16:22 | 只看該作者
這是我 發(fā)表于 2020-2-20 12:06
8位并口程序沒成功,4位并口程序成功點亮。

太棒了
回復(fù)

使用道具 舉報

33#
ID:406927 發(fā)表于 2020-5-20 09:55 | 只看該作者
謝謝分享!
回復(fù)

使用道具 舉報

34#
ID:820022 發(fā)表于 2020-9-17 08:01 | 只看該作者
有誰可以告訴我樓主的AD9850芯片是在哪里買的嘛?還是自己打板的?誰知道的可以告訴一下嘛!萬分感謝!!
回復(fù)

使用道具 舉報

35#
ID:895129 發(fā)表于 2021-4-6 12:05 | 只看該作者
2430717840 發(fā)表于 2020-9-17 08:01
有誰可以告訴我樓主的AD9850芯片是在哪里買的嘛?還是自己打板的?誰知道的可以告訴一下嘛!萬分感謝��!

某一個寶有
回復(fù)

使用道具 舉報

36#
ID:892728 發(fā)表于 2021-4-28 10:50 | 只看該作者

只能看!搞不懂電路!不知道怎么兩個電路連接起來……
有沒有現(xiàn)成的買
回復(fù)

使用道具 舉報

37#
ID:579406 發(fā)表于 2021-12-12 15:24 | 只看該作者
謝謝樓主分享,看這個不是為了別的什么目的,主要是學(xué)習(xí)一下思維和文筆,提升一下創(chuàng)作水平和閱讀視野。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表