这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 试用MCP4725数模转换模块生成正弦波---利用正弦函数处理

共1条 1/1 1 跳转至

试用MCP4725数模转换模块生成正弦波---利用正弦函数处理

专家
2025-10-11 13:13:23     打赏

在以正弦函数方式使MCP4725生成正弦波的时候,要注意一点,就是转换值。对于12位的DAC,器最大处理值为2^12=4096,对正弦函数,其值得范围对应0~360度为0 →1→0→-1→0,而DAC转换不存在负数问题。因此需要把正弦波的值抬高到0以上,这样对正弦函数的输出值0 →1→0→-1→0,转换为1 →2→1→0→1。那么就不能使用4096这个值作为幅度处理,而只能使用2048。

程序代码如下:

/**************************************************************************/
/*!
    ESP8266   --------  MCP4725
    ===========================
    D1(SCL)             SCL
    D2(SDA)             SDA
*/
/**************************************************************************/
#include <Wire.h>
#include <Adafruit_MCP4725.h>
Adafruit_MCP4725 dac;
void setup(void) {
  Serial.begin(115200);
  Serial.println("Hello!");
  dac.begin(0x60);
  Serial.println("Generating a sine wave");
}
void loop(void) {
    int16_t i;
    for (i = 0; i < 360; i++) {
      //Serial.println(sin(2*3.1415926/360*i));
      dac.setVoltage((int16_t)(2048 * (sin(2*3.1415926/360*i)+1)), false);
    }
}

输出波形:

图片1.png

效果也很好。在上记代码中,采样点是以1度执行的,可根据自己的需要调整,非常方便,不比预先准备采样点数据。可见使用正弦函数,极大地简化了代码。




关键词: 大懒猫的试用笔记     MCP4725     正弦波    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]