找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16615|回复: 26
打印 上一主题 下一主题
收起左侧

AD9850 DDS信号发生器 程序 原理图 pcb 设计报告都有

  [复制链接]
跳转到指定楼层
楼主

以上所有资料下载:
DDS.rar (745.5 KB, 下载次数: 575)

下面是设计报告预览:
一、方案设计与论证
本设计采用直接数字频率合成。单片机从键盘获得控制信息,控制两路DDS芯片AD9850产生的两路设定频率的正弦波和方波。输出信号经过调整后输入AD7524可以在单片机的控制下完成对信号的程控误差。从DDS模块输出的两路信号经过低通滤波和直流偏置将两路信号输入模拟乘法器AD835,一路作为载波,一路作为调制波,从AD835产生调制波。同时可以将DDS信号输入到CD4046B芯片进行振荡输出调频信号。
   方案选择
1、信号发生部分
方案一:采用单片压控函数发生器,如MAX038。MAX038可以方便地产生频率(0.1Hz~20MHz)可变的正弦波、方波、三角波及实现数控频率调整。但是,其输出频率的稳定度低,频率的步长控制难以达到理想的结果。
方案二:采用DDS波形发生技术,采用FPGA和单片机相结和的方式实现频率控制,由于本信号源只产生三种常见波形,不需要大规模的FPGA。
方案三:采用专用的DDS芯片,因为AD9850可以直接产生正弦波等常见波形用单片机的控制字可以方便地进行控制输出不同的波形,故本方案采用DDS专用芯片AD9850来实现。
2、信号放大部分
方案一:采用分立器件对信号进行放大,此方法制作复杂,且干扰较大
方案二:采用运算放大器进行放大,要改变放大倍数时,则可以采用外部电位器阻值的方式,因此可以得到可以调节的增益。在温度和电源电压变化时有很高的稳定性,完全可以满足本方案的要求。综合考虑本系统的精度要求,选择方案2。
3、模拟FM电路的设计
方案1:使用变容二极管和适当的电厂构成VCO电路。变容二极管通过改变外加反向电压可以改变电容的大小,从而改变VCO输出的信号频率。
方案2:采用锁相环器件,直接对调制信号进行相位比较,外部电路简单,实现方便。最终选择方案2。
4、输入控制部分
方案一:独立按键控制,制作简单,编程易于实现,但占用单片机I/O口较多。
方案二:矩阵4*4键盘,采用行列扫描的方式,最少要占用8个I/O口。
方案三:红外遥控解码控制,采用红外一体化接收头,制作简单,仅占用一个I/O口。在本设计中控制端较多,综合考虑采用方案三。
5、显示部分
方案一:数码管显示,由于本题要求实时显示输出信号的类型、幅度、频率和频率步进值等,而数码管不能显示字符。
方案二:LED点阵显示,LED点阵显示虽然能显示字符和数字,但显示效果不好,且不易编程。
方案三:LCD液晶显示,LCD液晶不但能显示字符和数字,而且显示效果较好,容易编程实现。
根据题目的要求,经过仔细分析,充分考虑各种因素,制定了整体设计方案:以单片机STC89C52为核心,完成四方面的功能:采用DDS专用芯片AD9850产生正弦波和方波,高带DA转换器AD7524控制AM调制度,接收红外遥控的控制码,同进LCD液晶显示所有数据。其系统如图1-1所示。

图1-1
二、理论分析、计算与各模块设计
(1)DDS波形产生电路设计
DDS基本原理:正弦波形一个周期离散样点的幅值数字量存于ROM(或RAM)中,按一定的地址间隔(相位增量)读出,由D/A转换成模拟正弦信号,经过低通滤波,滤除D/A带来的小台阶和数字电路产生的毛刺,即可获得所需要的正弦信号。AD9850可以产生正弦波、方波。AD9834内部的相位累加器的字宽为32位,SIN函数表有4096样点值,因此32位的相位累加器输出仅截取12位用于查表。其内部原理框图如下:
图2-1 AD9850内部原理框图
AD9850参数:
最高参考时钟为125MHz,输出频率分辨率可达0.0291Hz,允许产生最高输出频率62.5MHz。芯片内部提供5bits数字控制相位调制,
输出的相位变化增量可为
AD9850有32位相位累加器,而ROM为14位,将32位累加器的输出截高位的14位输入正弦(ROM)查询表,从查询表输出给D/A。D/A的输出是两个互补的模拟电流,在12脚处接一个电阻Rset,使满量程输出为10~20mA电流,经过滤波器输出正弦波。
AD9850主要引脚说明:
1、(D0~D7):8bit数据输入端。用于下载32bit频率调节字和8bit相位控制字。
2、(W-CLK):字装载时钟,用于装载并行或串行的频率/相位/控制字
3、(RSET):DAC外接电阻,该电阻决定DAC输出电流的最大值。对于典型应用(IOUTmax=10mA)时,RSET的值为3.9kΩ,另一端连接到地线。外接电阻RSET与DAC输出电流 IOUT的关系为
输出信号频率、参考时钟、频率控制码之间的关系
                              控制字
                  输入参考时钟频率(MHz)。
电路原理图如图2-2所示:

图2-2 DDS波形产生电路
(2)程控衰减电路设计
程控衰减电路由D/A转换芯片AD7524构成,主要利用此D/A芯片的可程控电阻网络构成基于AD7524构成的程控衰减器,而在其输出端得到幅度可控的正弦波。由AD7524的8位数据输入端进行控制,可实现1~1/56级衰减。其相关电路如图2-3所示:
图2-3 程控衰减电路
(3)模拟AM电路设计
该电路选用AD835作为乘法器,将载波和调制信号相乘得AM信号,其两路输入信号幅值可达到-1V—+1V,对噪声可形成较强的抑制能力。另外,普通双边带调制需要调制信号叠加直流成分,因此调制信号在输入到乘法器前需经过电平转换电路为调制信号叠加适当的直流。由于前级的调制信号是由程控衰减器输出,所以在程控衰减器初始输出的情况下,可以通过调节电平转换电路的直流偏置,使模拟AM电路的初始输出的调幅波形的调制度调整至1。这样设置可以为之后的程控调制带来方便。通过P8的跳线可以选择调制波为方波,从面实现ASK调制。其电路如图所示。

图2-4 AM信号产生电路
(4)模拟FM电路的设计
频率调频信号的基本特点是它的瞬时频率按调制信号规律变化,因而,一种最容易想到的方法是用调制信号直接控制振荡器的振荡频率,使其不失真地反映调制信号的变化。通常将这种直接调变振荡器频率的方法称为直接调频法。本设计中,使用锁相环集成电路CD4046内部自带的VCO产生FM波。通过P10 的跳线可以选择方波为调制波,从而实现FSK。其电路如5所示。

图2-5 FM、FSK信号产生电路
(5)控制与显示电路
输入控制采用红外遥控器控制,通过HS0038红外一体化接收头解码、放大,将控制码发送给单片机,再由单片机控制DDS模块、程控衰减模块产生不同的波形。
显示部分使用128*64点阵宽屏液晶,可以显示不同模式下的频率及波形,达到直观、形象的效果。
此模块如图所示:
图2-6 控制与显示电路
三、电路与程序设计
1、总体电路
总体电路图见附录1。
2软件设计
程序全部由C语言编写,可实现波形类型的选择、频率档位(低档、高档)电压输入、频率步进值和电压步进值的设定,显示部分可实时显示输出信号的类型、幅度、频率和频率步进值。主程序的流程如图3-1所示。
图3-1 程序流程图
四、测试方案与测试结果
1、测试仪器
双踪示波器   TDS3012B         
频率计       PD1631
2、测试数据
                              (1)输出波形频率范围测试,测试数据如表1所示:
预置频率/Hz
输出频率/Hz
负载电阻(Ω)
正弦波
方波

10
10.005
10.005
100
25
25.005
25.005
100
50
50.01
50.01
100
100
100.02
100.02
100
150
150.04
150.04
100
300
300.07
300.07
100
500
500.09
500.09
100
1000
1000.2
1000.2
100
2000
2000.5
2000.5
100
5000
5001
5001
100
10000
100003
100003
100
50000
500007
500007
100
100000
100010
100010
100
200000
200030
200030
100
500000
500060
500060
100
1000000
1000090
1000090
100
表1
由表可以看出,在频率稳定度方面,正弦波、三角波、方波在带负载的情况下均十分稳定,这正是DDS专用芯片AD9834的特点。
(2)输出波形幅度范围测试
预置幅度(V)
输出幅度(V)(负载50Ω)
输出幅度(V)(负载1KΩ)
频率与波形
0.1
0.098990
0.098990
250KHz、正弦波
0.2
0.197642
0.197667
250KHz、正弦波
0.5
0.490125
0.490002
250KHz、正弦波
1.0
0.989946
0.989932
250KHz、正弦波
1.5
1.496254
1.496425
250KHz、正弦波
2.5
2.489632
2.487032
250KHz、正弦波
3.5
3.480263
3.480142
250KHz、正弦波
4.0
3.943521
3.936721
250KHz、正弦波
5.0
4.905241
4.901482
250KHz、正弦波
表2
由表可见,在电压稳定度方面:电压的绝对值和预置值之差,及带载和不带载的情况下输出电压均符合要求。
(3)幅度(VP-P)步进值测量(测试对象:1KHz正弦波,单位:V,步进值0.1V)
预置值
0
0.10
0.20
0.50
1.00
1.50
2.00
2.50
3.50
4.50
5.00
实测值
0
0.10
0.20
0.49
1.00
1.52
2.01
2.48
3.46
4.53
5.00

表3
由表可以看出,在步进值的精确度方面,符合设计要求。
五、结论
我们设计的系统以STC89C52芯片为核心控制,通过可编程放大电路实现了正弦波、方波的输出功能,其频率步进值和幅度步进值达到了题目的设计要求。在系统的设计过程中,力求硬件电路简单,充分发挥软件编程方便灵活的特点,并最大限度挖掘单片机的资源,来满足系统设计要求。因比赛时间有限,该系统还有许多值得改进的地方。
六、参考文献:
[1]刘建成,邹应全,行鸿彦.基于DDS的函数发生器设计.现代电子技术2007
[2]刘春生,李小波. AD603在信号采集系统中的应用.国外电子元器件.2000(11)
[3]胡煜.MAX038在精密频率合成波形发生器中的应用. 现代电子技术2007(1)
[4]刘建成,邹应全,行鸿彦.基于DDS9850的函数发生器设计. 2007(2)

评分

参与人数 1黑币 +10 收起 理由
YJGG + 10 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏12 分享淘帖 顶4 踩
回复

使用道具 举报

沙发
ID:137190 发表于 2016-9-25 12:38 | 只看该作者
AD9850的驱动程序C文件:
  1. /************************************************************
  2. *                                        AD9850.c                                                                *
  3. *                                        AD9850的驱动程序C文件                                        *
  4. *                                        Copyright (c)2009---MJC                                 *
  5. *                                        Free to Copy and Modify.                                *
  6. *                                        Author:Worrior                                                        *
  7. *                                        Date:2009-9-1                                                        *
  8. ************************************************************/

  9. #include<intrins.h>
  10. #include "AD9850I.h"
  11. #include "lcd12864.h"

  12. //unsigned char freq[8];                                //液晶显示8种步进频率值
  13. unsigned char freq[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};


  14. /********************
  15. **函数:AD9850Reset
  16. **功能:AD9850的复位函数
  17. **作者:Worrior
  18. **日期:2009-9-1
  19. ********************/
  20. void AD9850Reset(void)
  21. {
  22.         AD9850WCLK = 1;
  23.         AD9850FQUD = 1;
  24. //        AD9850ReSet = 0;
  25. //        AD9850ReSet = 1;//复位脚置高电平(10个AD9850的时钟周期)
  26. //        _nop_();_nop_();_nop_();_nop_();_nop_();
  27. //        _nop_();_nop_();_nop_();_nop_();_nop_();//延时,其实不用这么长
  28. //        AD9850ReSet = 0;//复位完成,再拉低
  29. }

  30. /*步进按键函数*/
  31. void f10Mhz(void)                                                                                                                                                //10Mhz步进
  32. {
  33.         freq[0]=freq[0]+1;
  34.         if(freq[0]>=10)
  35.         {
  36.                 freq[0]=0;
  37.         }
  38.         display_led();
  39. }

  40. void f1Mhz(void)                                                                                                                                                //1Mhz步进
  41. {
  42.         freq[1]=freq[1]+1;
  43.         if(freq[1]>=10)
  44.         {
  45.                 freq[1]=0;
  46.         }
  47.         display_led();       
  48. }

  49. void f100Khz(void)                                                                                                                                                //100Khz步进
  50. {       
  51.         freq[2]=freq[2]+1;
  52.         if(freq[2]>=10)
  53.         {
  54.                 freq[2]=0;
  55.         }
  56.         display_led();
  57. }

  58. void f10Khz(void)                                                                                                                                                //10Khz步进
  59. {
  60.         freq[3]=freq[3]+1;
  61.         if(freq[3]>=10)
  62.         {
  63.                 freq[3]=0;
  64.         }
  65.         display_led();
  66. }

  67. void f1Khz(void)                                                                                                                                                //1Khz步进
  68. {
  69.         freq[4]=freq[4]+1;
  70.         if(freq[4]>=10)
  71.         {
  72.                 freq[4]=0;
  73.         }
  74.         display_led();
  75. }

  76. void f100Hz(void)                                                                                                                                                //100hz步进
  77. {
  78.         freq[5]=freq[5]+1;
  79.         if(freq[5]>=10)
  80.         {
  81.                 freq[5]=0;
  82.         }
  83.         display_led();

  84. }

  85. void f10Hz(void)                                                                                                                                                //10hz步进
  86. {
  87.         freq[6]=freq[6]+1;
  88.         if(freq[6]>=10)
  89.         {
  90.                 freq[6]=0;
  91.         }
  92.         display_led();

  93. }

  94. void f1Hz(void)                                                                                                                                                        //1hz步进
  95. {
  96.         freq[7]=freq[7]+1;
  97.         if(freq[7]>=10)
  98.         {
  99.                 freq[7]=0;       
  100.         }
  101.         display_led();
  102. }

  103. /***计算控制字************/
  104. /***入口:频率数组指针***出口,控制字值*****/
  105. unsigned long jisuan(unsigned char data *fno)//*fno-0>freq[0...7]
  106. {
  107.     unsigned long dds_no ;
  108.     dds_no=
  109.     (*(fno+7))*FF0+
  110.     (*(fno+6))*FF1+
  111.     (*(fno+5))*FF2+
  112.     (*(fno+4))*FF3+
  113.     (*(fno+3))*FF4+
  114.     (*(fno+2))*FF5+
  115.     (*(fno+1))*FF6+
  116.     (*fno)*FF7 ;
  117.     return(dds_no);               
  118. }

  119. /********************
  120. **函数:AD9850SetFre
  121. **功能:AD9850设定频率控制字函数
  122. **参数:Fre,float型,要设定的频率,单位Hz
  123. **作者:Worrior
  124. **日期:2009-9-1
  125. ********************/
  126. void AD9850ISetFre()
  127. {
  128.         unsigned long FTW = 0;//要写入的32位频率控制字(AD9850一次需要写入40位控制字)
  129.         unsigned char part1,part2,part3,part4;

  130.         FTW=jisuan(freq);       
  131. //        if(FTW > 30000000)
  132. //                FTW = 30000000;
  133. //        FTW = (unsigned long) (Fre * AD9850_125M);//计算频率控制字(公式:FTW=(2^32/fosc)*Fre)
  134.         /*以下将32位频率控制字分解*/
  135.         part1 = (unsigned char) (FTW>>24);//取32~25位
  136.         part2 = (unsigned char) (FTW>>16);//取24~17位
  137.         part3 = (unsigned char) (FTW>>8); //取16~9位
  138.         part4 = (unsigned char) (FTW);          //取8~1位
  139.         /*以上将32位频率控制字分解*/

  140.         AD9850FQUD = 1;
  141.         AD9850WCLK = 1;
  142.         AD9850DATAPORT = 0x00;//寄存器最高的八位只送0x00
  143.         AD9850WCLK = 0;//WCLK上升沿送数据
  144.         _nop_();

  145.         AD9850WCLK = 1;
  146.         AD9850DATAPORT = part1;
  147.         AD9850WCLK = 0;//WCLK上升沿送数据
  148.         _nop_();
  149.        
  150.         AD9850WCLK = 1;
  151.         AD9850DATAPORT = part2;
  152.         AD9850WCLK = 0;//WCLK上升沿送数据
  153.         _nop_();
  154.        
  155.         AD9850WCLK = 1;
  156.         AD9850DATAPORT = part3;
  157.         AD9850WCLK = 0;//WCLK上升沿送数据
  158.         _nop_();
  159.        
  160.         AD9850WCLK = 1;
  161.         AD9850DATAPORT = part4;
  162.         AD9850WCLK = 0;//AD9850WCLK上升沿送数据
  163.         _nop_();
  164.         AD9850FQUD = 0;//AD9850FQUD上升沿将AD9850缓冲区的40位数据送入DDS Core
  165. }

  166. /********************
  167. **函数:AD9850SetFre
  168. **功能:AD9850设定频率控制字函数
  169. **参数:Fre,float型,要设定的频率,单位Hz
  170. **作者:Worrior
  171. **日期:2009-9-1
  172. ********************/
  173. void AD9850IISetFre(float Fre)
  174. {       
  175.         unsigned long FTW = 0;//要写入的32位频率控制字(AD9850一次需要写入40位控制字)
  176.         unsigned char part1,part2,part3,part4;

  177.         if(Fre > 30000000)
  178.                 Fre = 30000000;
  179.         FTW = (unsigned long) (Fre * 34.3597384);//计算频率控制字(公式:FTW=(2^32/fosc)*Fre)
  180.         /*以下将32位频率控制字分解*/
  181.         part1 = (unsigned char) (FTW>>24);//取32~25位
  182.         part2 = (unsigned char) (FTW>>16);//取24~17位
  183.         part3 = (unsigned char) (FTW>>8); //取16~9位
  184.         part4 = (unsigned char) (FTW);          //取8~1位
  185.         /*以上将32位频率控制字分解*/

  186.         AD9850FQUD = 1;
  187.         AD9850WCLK = 1;
  188.         AD9850DATAPORT = 0x00;//寄存器最高的八位只送0x00
  189.         AD9850WCLK = 0;//WCLK上升沿送数据
  190.         _nop_();

  191.         AD9850WCLK = 1;
  192.         AD9850DATAPORT = part1;
  193.         AD9850WCLK = 0;//WCLK上升沿送数据
  194.         _nop_();

  195.         AD9850WCLK = 1;
  196.         AD9850DATAPORT = part2;
  197.         AD9850WCLK = 0;//WCLK上升沿送数据
  198.         _nop_();

  199.         AD9850WCLK = 1;
  200.         AD9850DATAPORT = part3;
  201.         AD9850WCLK = 0;//WCLK上升沿送数据
  202.         _nop_();

  203.         AD9850WCLK = 1;
  204.         AD9850DATAPORT = part4;
  205.         AD9850WCLK = 0;//AD9850WCLK上升沿送数据
  206.         _nop_();
  207.         AD9850FQUD = 0;//AD9850FQUD上升沿将AD9850缓冲区的40位数据送入DDS Core

  208. }
复制代码
主程序:
  1. #include <reg52.h>
  2. #include "AD9850I.h"
  3. #include "hs0038.h"
  4. #include "lcd12864.h"


  5. void main()
  6. {
  7.         hs0038_init();               //HS0038初始化,使用了外部中断0///定时器1
  8.         lcd12864_init();
  9.         AD9850Reset();
  10.         while(1)
  11.         {
  12.                 Get_Ircode_And_Dis();
  13.                 switch (ircode[2])
  14.                 {        /**************模式选择****************/
  15.                                 case 0x07:xuanzekey();break;         
  16.                                 case 0x15:quedingkey();break;                
  17.                                  case 0x09:fanhuikey();break;               
  18.                         /*************频率调整区***************/
  19.                                 case 0x0c:if(flag1==1) {f10Mhz();}; break;         
  20.                                 case 0x18:if(flag1==1) {f1Mhz(); };break;         
  21.                                  case 0x5e:if(flag1==1) {f100Khz();};break;         
  22.                                  case 0x08:if(flag1==1) {f10Khz(); };break;         
  23.                                  case 0x1c:if(flag1==1) {f1Khz(); } ;break;               
  24.                                 case 0x5a:if(flag1==1) {f100Hz();} ;break;                 
  25.                                  case 0x42:if(flag1==1) {f10Hz(); } ;break;                 
  26.                                 case 0x52:if(flag1==1) {f1Hz();  } ;break;
  27.                     /***************频率确认***************/
  28.                                 case 0x4a:        if(flag1==1)
  29.                                                         {
  30.                                                         pce1=0;
  31.                                                         pce2=1;
  32.                                                         pce3=1;
  33.                                                         AD9850ISetFre();
  34.                                                         };
  35.                                                         break;
  36.                         /***************AM调制*********************/
  37.                                 case 0x16:        pce1=1;                   //片选AD9850 I          实验板U1
  38.                                                         pce2=0;                   //片选AD9850 I          实验板U2
  39.                                                         pce3=1;
  40.                                                         AD9850IISetFre(1000.0);break;
  41.                                 case 0x44:if(flag2==1)
  42.                                                         {
  43.                                                     pce1=1;
  44.                                                         pce2=1;
  45.                                                         pce3=0;
  46.                                                         pwr=0;
  47.                                                         AM_mastepdown();
  48.                                                         };
  49.                                                         break;
  50.                                 case 0x40:  if(flag2==1)
  51.                                                         {
  52.                                                         pce1=1;
  53.                                                         pce2=1;
  54.                                                         pce3=0;
  55.                                                         pwr=0;
  56.                                                         AM_mastepup();
  57.                                                         };
  58.                                                         break;
  59.                         /***************FM调制*********************/
  60.                             case 0x19:AD9850IISetFre(5000.0);break;                        
  61.                                  default:break;
  62.                 }
  63.                 ircode[2]=0;                                                                            //注意一定要把ircode[2]清零。。。。。
  64. //                AD9850SetFre();
  65.         }
  66. }

复制代码


回复

使用道具 举报

板凳
ID:134803 发表于 2016-9-29 09:56 | 只看该作者
非常不错,刚好用到,学习学习,感谢楼主
回复

使用道具 举报

地板
ID:140275 发表于 2016-9-30 03:26 | 只看该作者
毕业设计就是这样啊,明白的是9850缺说这就是9834的特点。。。
回复

使用道具 举报

5#
ID:85606 发表于 2016-11-22 14:25 | 只看该作者
楼主发帖辛苦了,谢谢分享!!!!!!
回复

使用道具 举报

6#
ID:158454 发表于 2016-12-29 21:41 | 只看该作者
软件是用的哪个呢
回复

使用道具 举报

7#
ID:159531 发表于 2017-1-3 10:57 | 只看该作者
很不错
回复

使用道具 举报

8#
ID:175611 发表于 2017-3-20 23:56 | 只看该作者
谢谢楼主的分享
回复

使用道具 举报

9#
ID:153236 发表于 2017-4-13 21:53 | 只看该作者
好资料 有帮助 谢谢楼主
回复

使用道具 举报

10#
ID:208987 发表于 2017-6-7 21:44 | 只看该作者
好,非常有用
回复

使用道具 举报

11#
ID:208987 发表于 2017-6-7 22:06 | 只看该作者
确实是好资料  就是黑币不够不能下载
回复

使用道具 举报

12#
ID:208987 发表于 2017-6-7 23:04 | 只看该作者
下载的文件怎么打开
回复

使用道具 举报

13#
ID:241140 发表于 2017-10-20 00:03 | 只看该作者
向大神学习
回复

使用道具 举报

14#
ID:263298 发表于 2017-12-20 20:12 | 只看该作者
谢谢楼主恩想
回复

使用道具 举报

15#
ID:263298 发表于 2017-12-20 20:15 | 只看该作者
很牛逼
回复

使用道具 举报

16#
ID:263298 发表于 2017-12-20 20:17 | 只看该作者
没有其他文件了吗
回复

使用道具 举报

17#
ID:284869 发表于 2018-3-7 03:43 来自手机 | 只看该作者
不错哦,还行,厉害了
回复

使用道具 举报

18#
ID:303059 发表于 2018-4-9 14:45 | 只看该作者
感谢楼主分享
回复

使用道具 举报

19#
ID:307389 发表于 2018-4-13 17:30 | 只看该作者
用的哪个软件呀?急用谁知道了告诉一声
回复

使用道具 举报

20#
ID:497723 发表于 2019-3-28 13:00 | 只看该作者
谢谢楼主分享,正在做信号发生器
回复

使用道具 举报

21#
ID:508300 发表于 2019-4-13 08:04 来自手机 | 只看该作者
谢谢分享呢
回复

使用道具 举报

22#
ID:511084 发表于 2019-4-13 18:30 | 只看该作者
感谢,受益匪浅
回复

使用道具 举报

23#
ID:538474 发表于 2019-5-15 16:26 来自手机 | 只看该作者
我爱信号发生器 发表于 2019-3-28 13:00
谢谢楼主分享,正在做信号发生器

你打开了吗,有原理图吗
回复

使用道具 举报

24#
ID:65369 发表于 2021-9-30 10:01 | 只看该作者
这个资料要好了,已经实现了基本功能,在在这里再修改更好
回复

使用道具 举报

25#
ID:966104 发表于 2021-10-4 00:11 | 只看该作者
如果增加一个屏幕就牛B了
回复

使用道具 举报

26#
ID:579406 发表于 2021-12-12 15:17 | 只看该作者
谢谢楼主分享,看这个不是为了别的什么目的,主要是学习一下思维和文笔,提升一下创作水平和阅读视野。
回复

使用道具 举报

27#
ID:810461 发表于 2022-1-15 16:46 | 只看该作者
51黑ff 发表于 2016-9-25 12:38
AD9850的驱动程序C文件:
主程序:

在哪下载?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表