计算机组成原理--数模转换器

  按照冯·诺依曼的理论,计算机硬件是由五大部分组成的。 在计算机诞生的初期,计算机硬件系统中还没有声卡。 是新加坡的一个小伙,把 AD 转换器和 DA 转换器引入到计算机中了,之后,计算机便可以进行声音处理了。 从此,声卡,就诞生了。

  AD 转换器是采样器件,它可以把话筒(MIC)送来的模拟信号,转换成计算机可以处理的数字信号。 DA 转换器的功能则与 AD 相反,它是把计算机中的数字信号,转换成模拟信号。 再经过放大之后,即可送到扬声器(SPK)播放出悦耳的声音了。

  早期的声卡,只能处理 8 位二进制数,后来才发展到 16 位数。 虽然计算机 CPU 的档次不断提高,但是,声卡的位数却并没有继续增加。 因为,位数再多,也是没有什么用的,人的耳朵,听不出来太精密的声音。 当然,某些动物(如蝙蝠)的耳朵,是会更灵敏一些的。

  DAC0832 是一个 8 位的 DA 转换芯片。 在单片机系统中,它是经常用到的芯片。 它需要和一个运算放大器配合使用,就可以把 8 位二进制数,变换成模拟电压。

  DAC0832 是一个具有 20 引脚的集成电路芯片。它的引脚功能如下。

  VCC(20):芯片电源输入端。电压一般为 5V ~ 15V。
  DGND(10):数字信号接地端。
  AGND(3):模拟信号接地端。通常与 DGND 相连。
  VREF:基准电压输入端。一般取-10V ~ +10V。
  RF:运放的电压反馈输入端。芯片内部含有运放所需的反馈电阻。

  DI7~DI0:数字信号输入端。

  CS: 片选信号。
  ILE:
输入寄存器的锁存信号。
  WR1:
输入寄存器的写入控制信号。
   当 CS = L、ILE = H、WR1 = L 时,数字信号即被写入到
输入寄存器
   在其它状态时,
输入寄存器内容不变。

  XFER:传递控制信号。
  WR2:
DAC 寄存器的写入控制信号。
   当 CS = L、XFER = L、WR2 = L 时,输入寄存器内容即被传递到
DAC 寄存器
   在其它状态时,
DAC 寄存器内容不变。

  送到 ADC 寄存器中的数字量,立即就被转换成模拟量,由下面两个引脚输出。

  I01、I02:DA 转换后的模拟电流输出端。I01 + I02 = 常数。
   如 ADC 寄存器的内容为全 1,电流为最大;
   如 ADC 寄存器的内容为全 0,电流为最小。

  DA 转换后的模拟量是电流值,而且还非常微弱,所以,还必须外接一个运算放大器,做电流到电压的转换

  因为 DAC0832 内部有两级寄存器,故可以有三种信号输入的方式:直通、单缓冲和双缓冲。
  下图就是使用 “直通” 方式的电路。 输入的 8 位二进制数,可以用拨动开关来设置。 然后,DAC0832 和后面的运放一起工作,直接,就把模拟电压输出出来了。

  DAC0832 必须和一个运算放大器配合使用,才能把 8 位二进制数,变换成模拟电压。
  此时的 DA 变换的公式为: Vout = - D × Vref / 256。

  上图中的数字量是 B1H,即 177,Vref 可调整近似为-5V,代入公式进行计算,可得变换后的电压:
      Vout =-D × Vref / 256 = 177 × 5 / 256 = 3.457V
  如果把 Vref 调整到 +5V,可算出变换后的电压为:
      Vout =-D × Vref / 256 =-177 × 5 / 256 =-3.457V
  在图中用数字电压表测量出来的输出电压:-3.45V。 还算挺准吧?

  确定了 Vref 之后,你随意拨动左上角的开关,即可设置不同的数字量,同时观察 Vout 的电压值,你可以看到,输出的模拟量,基本上都符合前面说的公式,误差很小。
  输入数字量的范围是:00 ~ FFH。 当 Vref = +5V 时,对应的模拟量输出,基本上就为:0 ~-5V。 这种输出电压总是负的,可称之为:单极性输出。 为了改成具有正负值的双极性输出,可以采用模拟电子线路中的加法电路,给这个单极性信号加上 +2.5V,那么,输出电压的范围,就是:+2.5V ~-2.5V 了。
  另外,运放的电源电压,应该比输出电压范围大出几伏,以使运放有较好的线性度。


  如果让 DAC0832 工作在 “单缓冲” 或 “双缓冲” 方式,再让它输出复杂的电压波形,那么就需要用计算机(一般用单片机)来控制了。网上有很多这方面的文章,有些还是正确的。做而论道就不打算发表这方面的内容了。


  做而论道想说的是:DAC0832 不仅可以进行 DA 转换,它还可以当做一个 “数控放大器”。
  你看这个计算公式: Vout =-D × Vref / 256 =-D / 256 × Vref =-K × Vref。

  如果在这个公式中,把 Vref 当做输入信号,K 就是放大倍数,K = D / 256。
  利用数字量 D,即可控制这个放大器的放大倍数 K,这就是 “数控放大”。

  显然,这个放大倍数是小于 1 的,应该称为 “缩小器” 才对,呵呵。
  如果在后面再接上一个运放,再放大一次,就可以构成名符其实的放大器。

  在下图中,由 Vref 端输入的是正弦波,在数字量的控制下,先进行衰减,输出电压再经过后面的运放,就又放大了 3 倍。

  数控放大后的波形,可见下图中示波器的显示。

  图中黄色的波形,是信号发生器送来的正弦信号。 蓝色的波形,就是经过 “数控放大” 的输出信号。 图中的放大,仅仅是 3 倍而已。 你可以修改电阻值,即可得到更大或更小的放大倍数。 

  当电阻确定之后,你再随意拨动开关,设置不同的数字量,然后就可清楚的看到,输出电压波形放大、缩小的现象。

  如果用 CPU 来控制数字量,这个电路就是 “程控放大器”。
  现在,你能想到:计算机音箱、手机的喇叭,它们的音量,都是怎么控制的吗?

  利用 DAC0832 输出周期性的模拟信号,可以参考:用单片机驱动 DAC0832

--本文完--

  • 2
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值