• 沁恒 CH558 直接数字合成(DDS)输出正弦波形


    直接数字合成(DDS)是一种常用的调制技术,可以用来生成任意波形。原理如下:

    假设这里需要输出余弦函数的波形,如下图:

    每隔一段时间对这个曲线进行采样,就可以得到一堆数据,使用单片机来输出这个信号并外接一个 DA 就可以输出波形了。

    这就是DDS 的主要原理,真的是非常简单的哟,下例将实现一个正弦的波形输出,首先需要取得数据,这里使用 C 语言来获取正弦函数的数据:

    "正确的算法和数据应该使用 Matlab 来开发,C 语言处理数据有较多的局限性,存在诸多不便,不过本人还不会使用 Matalb,只能用 C 语言将就下 "

    PC 上的 C 代码如下图所示:

    这样就得到一组正弦信号的数据,下面是一个 BCD 工具,由于编码的问题,0~255在 C 语言内部使用 ACSII 来储存,而我们需要的是二进制编码,下面是工程演示:

    有了这个工具,就可以编写DDS 的程序里,首先在 Keil 软件中配置好工程,以上面的数据来生成需要的波形,如下:

    通过 P0 端口的调试结果来看,波形基本是正确的,只有在交越零点的时候数据有一点错误。编译程序,下载hex 文件到开发板,由于我这里没有DA ,只能用 逻辑分析仪来将就下,逻辑分析仪的截图下图:

    本例只是粗略的测试下 DDS 的实现方法,并没有严格定义频率、相位、周期、垂直位移这些非常非常关键的参数。

    此外,其他地方如果有任何错误的地方希望读者能够指出,望共同进步。。(●'◡'●)

  • 相关阅读:
    Discuz经典函数注释之authcode
    在delphi中,DLL加载时做初始化的Demo
    KERNEL32相关函数
    解析 png 图片的十六进制字符流
    delphi 获取硬盘序列号、cpu号、bios号、网卡号
    封装 INI 文件读写函数
    A窗口消失B窗口弹出
    delphi公用函数
    获取打开文件的PID
    C# cmd调用外部命令
  • 原文地址:https://www.cnblogs.com/SummerSunnyDay/p/14363823.html
Copyright © 2020-2023  润新知