发新帖本帖赏金 50.00元(功能说明)我要提问
返回列表
[资料干货]

【每周分享】浅谈DAC和ADC(附加仿真代码)

[复制链接]
6352|4
手机看帖
扫描二维码
随时随地手机跟帖
咕咕呱呱孤寡|  楼主 | 2024-11-6 17:51 | 显示全部楼层 |阅读模式
AC, AD, ADC, DAC, dc
本帖最后由 咕咕呱呱孤寡 于 2024-11-16 10:12 编辑

  #申请原创# @21小跑堂
数模转换(DAC)和模数转换(ADC)是单片机设计中重要的转换方式。

DAC的功能是将数字量转换为与其成比例的模拟电压或电流信号,绘出仪表外各种控制。DAC种类多,常用 DAC:DAC0832、AD7524、AD561等。

各种类型的 DAC 都具有数字量输入端、模拟量输出端及基准电压端。数字量输入有以下几种类型:① 无数据锁存器:② 带单数据锁存器:③ 带双数据锁存器:④ 可接串串行数字输入。第1种在与单片机接口时,要外加锁存器;第2种和第3种可直接与单片机接口:第4种与单片机接口十分简单,但接收数据较慢,适用于远距离现场控制的场合。
模拟量输出有两种方式:电压输出及电流输出。电压输出的DAC相当于一个电压源,其内阻很小,选用这种芯片时,与它匹配的负载电阻应较大。电流输出的芯片相当于电流源,其内阻较大,选用这种芯片时,负载电阻不可太大。在实际应用中,常选用电流输出的 DAC 实现电压输出,如下图(a)、(b)、(c)。

(a)、(b)电路均是单极性输出,(c)所示的电路为双极性输出。这里的双极性电路通常设计将R3=R4=2R2,从而使得输出电压Vout与基准电压Vref及第一级运放输出电压V1建立联系,其关系为Vout=-(2V1+Vref),这里将Vref取值通常选用芯片基准电压或电源电压,极性可正可负。
这里我们以DAC0832为实验芯片,进行简单实验仿真练习。


上图为DAC0832的逻辑结构,DAC0832作为典型的带内部双数据缓冲器的8位D/A芯片,单电源供电,从+5V~+15V均可正常工作,基准电压的范围为±10V,电流建立时间为1µs,CMOS工艺,低功耗20mm。其内部结构由1个8位输入寄存器、1个8位DAC寄存器和1个8位D/A转换器组成。

示如上图将DAC0832与8051单片机组合形成D/A转换电路通过Proteus仿真,实现波形输出。
通过keil软件进行代码编译与Proteus实现联机仿真,如下
宏定义文件代码:
  #include<REGX51.H>
  #define uchar unsigned char
  #define uint unsigned int
  #define WR P2_0
  #define CS P2_1

变量定义代码:
  uchar i,j;
  uint k;

通过DAC0832实现三角波输出:
void delay()
  {
  for (k=0;k<1000;k++);
  }
void main()
  {
  CS=0;
  while(1)
  {
  for(i=0;i<255;i++)
  {
  P1=i;
  WR=0;
  WR=1;
  }
  for(j=255;j>1;j--)
   {
   P1=j;
   WR=0;
   WR=1;
   }
   }
}
去掉橙色部分或黄色部分可形成锯齿波输出,仿真效果图如下: