极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 46885|回复: 15

使用Arduino实现MCP4725 DAC功能

[复制链接]
发表于 2012-4-13 21:20:30 | 显示全部楼层 |阅读模式
本帖最后由 弘毅 于 2012-12-17 20:35 编辑

原文地址:http://brainwagon.org/2011/02/24/arduino-mcp4725-breakout-board/

实验所使用的是sparkfun的MCP4725模块,使用I2C进行通信,下面是模块图片。




下面是试验中使用的代码。
  1. #include <Wire.h>

  2. void
  3. setup()
  4. {
  5.   Wire.begin() ;
  6. }

  7. #define MCP4725_DEVICE 96

  8. int sintab[64] = {
  9.   2147, 2347, 2545, 2737, 2922, 3100, 3267, 3422, 3564, 3692, 3803,
  10.   3898, 3975, 4033, 4072, 4092, 4092, 4072, 4033, 3975, 3898, 3803,
  11.   3692, 3564, 3422, 3267, 3100, 2922, 2737, 2545, 2347, 2147, 1947,
  12.   1747, 1549, 1357, 1172, 994, 827, 672, 530, 402, 291, 196, 119, 61,
  13.   22, 2, 2, 22, 61, 119, 196, 291, 402, 530, 672, 827, 994, 1172,
  14.   1357, 1549, 1747, 1947}
  15. ;

  16. int sp = 0 ;

  17. void
  18. loop()
  19. {
  20.   Wire.beginTransmission(MCP4725_DEVICE);
  21.   Wire.send(64);                     // cmd to update the DAC
  22.   Wire.send(sintab[sp] >> 4);        // the 8 most significant bits...
  23.   Wire.send((sintab[sp] & 15) << 4); // the 4 least significant bits...
  24.   Wire.endTransmission();
  25.   sp = (sp + 1) & 63 ;
  26. }
复制代码
上视频~~~


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2012-4-13 21:49:54 | 显示全部楼层
谢谢,大大
回复 支持 反对

使用道具 举报

发表于 2012-4-14 09:09:34 | 显示全部楼层
我现在看到的很多器件都是I2C接口的,用起来非常爽!
回复 支持 反对

使用道具 举报

发表于 2012-4-14 09:44:38 | 显示全部楼层
学习学习一下啦!
回复 支持 反对

使用道具 举报

发表于 2012-5-6 17:02:57 | 显示全部楼层
arduino自带10bitDAC了,这个12bit的好像没太大价值,要有14bit的就好了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-6 23:13:20 | 显示全部楼层
MicroCao 发表于 2012-5-6 17:02
arduino自带10bitDAC了,这个12bit的好像没太大价值,要有14bit的就好了


arduino自带的是ADC,这是个DAC,{:soso_e113:} 价值还是很大滴。。
回复 支持 反对

使用道具 举报

发表于 2012-5-11 22:39:18 | 显示全部楼层
弘毅 发表于 2012-5-6 23:13
arduino自带的是ADC,这是个DAC, 价值还是很大滴。。

明白了,谢谢提醒。查了下似乎不太容易买得到,不知有何好的渠道。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-11 23:04:29 | 显示全部楼层
MicroCao 发表于 2012-5-11 22:39
明白了,谢谢提醒。查了下似乎不太容易买得到,不知有何好的渠道。

如果淘宝不好找。。。这些不好找的IC一般在RS和digikey应该可以找得到
回复 支持 反对

使用道具 举报

发表于 2012-12-17 00:47:50 | 显示全部楼层
本帖最后由 Ansifa 于 2012-12-17 00:49 编辑

{:soso_e151:} 我之前也写了个TLC5165 10bit DAC的代码。。。。优信也有卖
http://item.taobao.com/item.htm? ... id=12881925146&
回复 支持 反对

使用道具 举报

发表于 2012-12-17 00:50:26 | 显示全部楼层
发现挖坟了。。。
回复 支持 反对

使用道具 举报

发表于 2013-8-27 21:43:44 | 显示全部楼层
本帖最后由 葱头同学 于 2013-8-27 21:46 编辑

能否解释一下 这几句呢 64 是对应二进制的01000000吗?

数组里面的每个数也是对应二进制的吗?
  1.   Wire.send(64);                     // cmd to update the DAC
  2.   Wire.send(sintab[sp] >> 4);        // the 8 most significant bits...
  3.   Wire.send((sintab[sp] & 15) << 4); // the 4 least significant bits...

  4.   sp = (sp + 1) & 63 ;
复制代码
回复 支持 反对

使用道具 举报

发表于 2013-8-27 22:52:32 | 显示全部楼层
学习了,感谢楼主!!
回复 支持 反对

使用道具 举报

发表于 2014-11-21 13:30:04 | 显示全部楼层
Ansifa 发表于 2012-12-17 00:47
我之前也写了个TLC5165 10bit DAC的代码。。。。优信也有卖
http://item.taobao.com/item.h ...

你好,您能给个使用TLC 5165 的例子吗?
回复 支持 反对

使用道具 举报

发表于 2016-5-4 00:30:55 | 显示全部楼层
挖坟 + 马克
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 04:52 , Processed in 0.070223 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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