久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機AD9833正弦波方波和三角波程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:471909 發(fā)表于 2019-5-4 14:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
STC89C51控制AD9833產(chǎn)生正弦波,頻率可調(diào)

單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define BITB 0x08000
  4. sbit fsync=P1^4;//引腳定義
  5. sbit sdata=P1^6;//引腳定義
  6. sbit sclk=P1^2;

  7. #define DDS_SCLK_UP sclk=1                 //串行時鐘 上升
  8. #define DDS_SLCK_DOWN sclk=0        //
  9. #define DDS_SDATA_UP sdata=1        //串行數(shù)據(jù) 上升
  10. #define DDS_SDATA_DOWN sdata=0        //
  11. #define DDS_FSYNC_UP  fsync=1        //控制輸入 上升
  12. #define DDS_FSYNC-DOWN fsync=0        //

  13. unsigned int Config_Data[B];

  14. void delay2us(unsigned char i)
  15. {
  16.         while(--i);
  17. }

  18. void writeDDS2Byte(unsigned int config)    //寫入兩個數(shù)據(jù)
  19. {
  20.                 unsigned char i;
  21.                 DDS_SLCK_DOWN;
  22.                 _nop_();
  23.                 DDS_FSYNC_UP;
  24.                 _nop_();
  25.                 DDS_SLCK_up;
  26.                 delay2us(1);
  27.                 DDS_FSYNC_DOWN;
  28.                 _nop_();
  29.                 for(i=0;i<16;i++)
  30.                 {
  31.                         if(config&0x8000) DDS_SDATA_UP;
  32.                        
  33.                         else DDS_SDATA_DOWN;
  34.                         delay2us(1);
  35.                         DDS_SLCK_DOWN;
  36.                         delay2us(1);
  37.                         DDS_SLCK_up;
  38.                         config<=0;
  39.                        
  40.                 }
  41.                 DDS_FSYNC_UP;
  42.                 _nop_();
  43.                 DDS_SLCK_DOWN;
  44.                 delay2us(100);

  45. }

  46. //波形發(fā)生器
  47. //入口參數(shù):頻率:Freq(=12000000)
  48. //形狀:0(正弦波),1(三角波),2(方波)
  49. //默認:Fmclk=25MHz,0移相,方波不分頻

  50. void waveGennerrate(unsigned long Freq,unsigned char Shape)
  51. {
  52.         unsigned long temp;
  53.         unsigned char k;
  54.         if(Freq>12000000) Freq=12000000;
  55.         switch(Shape)
  56.         {
  57.                 case 0: Config_Data[0]=0x2108;        //正弦波
  58.                                 Config_Data[7]=0x2008;
  59.                                 break;
  60.                                
  61.                 case 1: Config_Data[0]=0x210A;        //三角波
  62.                                 Config_Data[7]=0x200A;
  63.                                 break;       
  64.                                
  65.                 case 2: Config_Data[0]=0x2128;        //方波
  66.                                 Config_Data[7]=0x2028;
  67.                                 break;       

  68.                 default: Config_Data[0]=0x2108;        //正弦波
  69.                                 Config_Data[7]=0x2008;
  70.                                        
  71.         }
  72.        
  73.         temp=Freq*13.4217728;//temp=Freq*(0x10000000/20000000);
  74.         Config_Data[1]=temp&0x3fff;
  75.         Config_Data[3]=Config_Data[1];
  76.         Config_Data[2]=(temp&0xfffC000)>>14;
  77.         Config_Data[4]=Config_Data[2];
  78.        
  79.         Config_Data[1]=Config_Data[1]|0x4000;
  80.         Config_Data[2]=Config_Data[2]|0x4000;
  81.         Config_Data[3]=Config_Data[3]|0x8000;
  82.         Config_Data[4]=Config_Data[4]|0x8000;
  83.         Config_Data[5]=0xC000;
  84.         Config_Data[6]=0xE000;
  85.        
  86.        
  87.         for(k=0;k<8;k++)
  88.         {
  89.                 writeDDS2Byte(Config_Data[k]);
  90.         }
  91.        
  92.         /*for(;;){
  93.         writeDDS2Byte(oxc000);
  94.         for(k=200;k;k--);
  95.         writeDDS2Byte(oxc000|2047);
  96.         for(k=200;k;k--);
  97.         }*/

  98. }



  99. void DDS_2FSK(unsigned long freq1,unsigned long freq2,unsigned char shape)
  100. {
  101.         unsigned long temp;
  102.         unsigned char k;
  103.         if(freq1>12000000)  freq1(12000000);
  104.         if(freq2>12000000)  freq2(12000000);
  105.        
  106.         switch(shape)
  107.         {
  108.                 case 0: Config_Data[0]=0x2108;
  109.                                 Config_Data[7]=0x2008;
  110.                                 break;
  111.                                
  112.                 case 1: Config_Data[0]=0x210A;
  113.                                 Config_Data[7]=0x200A;
  114.                                 break;       
  115.                                
  116.                 case 2: Config_Data[0]=0x2128;
  117.                                 Config_Data[7]=0x2028;
  118.                                 break;       

  119.                 default: Config_Data[0]=0x2108;
  120.                                 Config_Data[7]=0x2008;
  121.                                        
  122.         }
  123.         temp=Freq*13.4217728;//temp=Freq*(0x10000000/20000000);
  124.         Config_Data[1]=temp&0x3fff;
  125.         Config_Data[3]=Config_Data[1];
  126.         Config_Data[2]=(temp&0xfffC000)>>14;
  127.         Config_Data[4]=Config_Data[2];
  128.        
  129.         Config_Data[1]=Config_Data[1]|0x4000;
  130.         Config_Data[2]=Config_Data[2]|0x4000;
  131.         Config_Data[3]=Config_Data[3]|0x8000;
  132.         Config_Data[4]=Config_Data[4]|0x8000;
  133.         Config_Data[5]=0xC000;
  134.         Config_Data[6]=0xE000;
  135. ……………………

  136. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
STC89C51_AD9833.rar (24.16 KB, 下載次數(shù): 165)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:471909 發(fā)表于 2019-5-4 14:41 | 只看該作者
頂一個,良心之作!
回復(fù)

使用道具 舉報

板凳
ID:498609 發(fā)表于 2019-8-9 20:34 | 只看該作者
報錯*********
回復(fù)

使用道具 舉報

地板
ID:587878 發(fā)表于 2019-9-30 21:55 | 只看該作者
從哪里識別復(fù)制了一段?很多地方都是錯的。DDS_FSYNC_DOWN抄成了DDS_FSYNC-DOWN ,Config_Data[8]定義的長度為8,抄成了B。。但總的代碼還是很值的借鑒的,大家改一下就行了。
回復(fù)

使用道具 舉報

5#
ID:688300 發(fā)表于 2020-10-17 21:01 | 只看該作者
錯誤好多。。。。。
回復(fù)

使用道具 舉報

6#
ID:688300 發(fā)表于 2020-10-17 21:02 | 只看該作者
錯誤好多,改都要改好久
回復(fù)

使用道具 舉報

7#
ID:820507 發(fā)表于 2020-11-22 14:59 來自手機 | 只看該作者
Straw 發(fā)表于 2020-10-17 21:02
錯誤好多,改都要改好久

改好了嗎?麻煩傳一個
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 337p日本欧洲亚洲大胆精蜜臀 | 新超碰97| 国产精品久久久99 | 国产日产欧产精品精品推荐蛮挑 | 天堂资源 | 日本午夜精品一区二区三区 | 二区在线视频 | 国户精品久久久久久久久久久不卡 | 国产精品1区 | 日本一区二区三区在线观看 | 中文字幕免费在线 | 在线免费观看毛片 | 91激情视频 | 中文字幕亚洲一区二区三区 | 亚洲成人自拍 | 久久青青| 国产精品国产三级国产a | 一级片免费在线观看 | 涩涩导航 | 久久性av | 久久精品视频在线观看 | 中文字字幕一区二区三区四区五区 | 国产精品一二三区 | 国产精品久久国产精品 | 一区二区三区视频在线免费观看 | 欧美一级欧美三级在线观看 | 人人精品 | 亚洲精品久久久久久国产精华液 | 免费在线观看黄视频 | 国产精品一区久久久 | 午夜在线观看免费 | 一区二区在线 | 久久成人一区 | 午夜激情免费视频 | 伊人狠狠| 亚洲国产视频一区二区 | 成人在线亚洲 | 91久久电影 | 国产三级| 99精品视频免费观看 | 99免费在线视频 |