单片机/MCUwilliam hill官网
直播中

苏打蓝

13年用户 53经验值
私信 关注

单片机练习 - DA数模转换DAC0832的应用

写DA转换比写AD转换容易多了, 写了一个使用DAC0832的数模转换程序.

DAC0832:DAC0832是8位全MOS中速D/A 转换器,采用R—2RT 形电阻解码网络,转换结果为一对差动电流输出,转换时间大约为1us。使用单电源+5V―+15V 供电。参考电压为-10V-+10V。在此我们直接选择+5V 作为参考电压。DAC0832 有三种工作方式:直通方式,单缓冲方式,双缓冲方式;在此我们选择直通的工作方式,将XFER  WR2  CS 管脚全部接数字地。管脚8 接参考电压,在此我们接的参考电压是+5V。我们在控制P0口输出数据有规律的变化将可以产生三角波,锯齿波,梯型波等波形了。

DAC0832与单片机实验板的连接威廉希尔官方网站 图:
DA0832.jpg

源代码:
  1. #include
  2. //读取通过DAC0832将数字量转换成模拟量, 并驱动二极管D12由亮渐变成暗地循环变化
  3. //而数码管显示当前转换的数值
  4. ***it wela = P2^7;  //数码管位选
  5. ***it dula = P2^6;  //数码管段选
  6. ***it dawr = P3^6;  //DA写
  7. ***it dacs = P3^2;  //DA片选

  8. unsigned char j, k;
  9. //延时函数, 例i=10,则大概延时10ms.
  10. void delay(unsigned char i)
  11. {
  12.     for(j = i; j > 0; j--)
  13.     {
  14.         for(k = 125; k > 0; k--);
  15.     }
  16. }

  17. unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,
  18.     0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F数码管的编码(共阴极)

  19. unsigned char count;
  20. unsigned char datas[] = {0, 0, 0};
  21. void display(unsigned char value)
  22. {
  23.     datas[0] = value / 100;
  24.     datas[1] = value % 100 / 10;
  25.     datas[2] = value % 10;
  26.     for(count = 0; count < 3; count++)
  27.     {
  28.         //片选
  29.         wela = 0;
  30.         P0 = ((0xfe << count) | (0xfe >> (8 - count))); //选择第(count + 1) 个数码管
  31.         wela = 1; //打开锁存, 给它一个下降沿量
  32.         wela = 0;
  33.         //段选
  34.         dula = 0;
  35.         P0 = table[datas[count]];  //显示数字
  36.         dula = 1;  //打开锁存, 给它一个下降沿量
  37.         dula = 0;
  38.         delay(5); //延时5ms, 即亮5ms
  39.         //清除段先, 让数码管灭, 去除对下一位的影响, 去掉高位对低位重影
  40.         //若想知道影响效果如何, 可自行去掉此段代码
  41.         //因为数码管是共阴极的, 所有灭的代码为: 00H
  42.         dula = 0;
  43.         P0 = 0x00;  //显示数字
  44.         dula = 1; //打开锁存, 给它一个下降沿量
  45.         dula = 0;
  46.     }
  47. }

  48. unsigned char v, icount;
  49. void main()
  50. {
  51.     wela = 0;  //关闭数码管
  52.     dula = 0;
  53.     dacs = 0;  //打开DA片选
  54.    v = 255;
  55.     while(1)
  56.     {
  57.         dawr = 0;  //向DA写数据
  58.         P0 = v;
  59.         dawr = 1;  //关闭DA写
  60.         for(icount = 0; icount < 10; icount++)
  61.         {
  62.            display(v);
  63.         }
  64.         v--;
  65.     }
  66. }


回帖(22)

阻力

2012-7-7 11:13:53
真的不错 谢谢楼主
举报

936143922

2012-7-7 11:22:40
真是说曹操,曹操到。真是太好了
举报

yyq123321

2012-8-16 08:04:56
举报

郭建颖

2012-8-16 11:00:48
  顶顶顶顶
举报

caibingll

2012-8-16 12:53:35
顶,学习啦
举报

888468

2012-12-10 18:11:22
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

jucky123

2012-12-26 20:53:57
那个发光管能亮吗?  DAC0832总的输出电流才330ua,,,,是不是应该加个放大器转成电压形式
举报

loveliop24

2013-3-14 20:35:58
这是郭天祥的图
举报

纷纷行过了

2013-5-8 23:19:55
感谢分享,感谢楼主的无私奉献!
这真的是非常好的东西啊,太感谢了!!
举报

纷纷行过了

2013-5-9 00:48:12
再次感谢,嗯,就是这样。
举报

yyz1412

2013-5-14 16:52:37
那个 哥哥 把 威廉希尔官方网站 图画好了  给我一份  仿真一下吧
举报

张工

2013-5-23 17:47:14
{:3:}{:3:}{:3:}{:3:}{:3:}{:3:}
举报

余亚东

2013-7-9 15:01:40
二极管能亮吗?330uA,怎么去驱动需要10mA的电流
举报

657900

2013-10-31 23:06:47
谢谢。。。。。。。
举报

夜里的时光

2013-12-23 19:58:49
{:1:}
举报

刘柱

2014-7-29 09:52:35
不错不错,,,,,,
举报

微分法

2015-7-24 19:43:18
水水水水水水水水水水水水水水
举报

胡汉三的猫

2015-12-26 15:22:42

真是说曹操,曹操到。真是太好了
举报

NS1703

2016-4-13 17:20:28
真是说曹操,曹操到。真是太好了,来看看
举报

更多回帖

发帖
×
20
完善资料,
赚取积分