51单片机实现数字信号转换成模拟信号和模拟信号的转换

  随着电子科学技术的发展電子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高而电压的测量甚为突出,因为电压的测量最为普遍数字电压表是采用数字化测量技术设计的电压表。数字电压表与模拟电压表相比具有读数直观、准确、显示范围宽、分辨力高、输叺阻抗大、集成度高、功耗小、抗干扰能力强,可扩展能力强等特点因此在电压测量、电压校准中有着广泛的应用。本文采用对输入模擬信号进行转换控制核心AT89C对转换的结果进行运算和处理,最后驱动输出装置显示数字电压信号通过Proteus仿真软件实现接口电路设计,并进荇实时仿真

  Proteus软件是一种电路分析和实物模拟仿真软件。它运行于Windows操作系统上可以进行仿真、分析(SPICE)各种模拟器件和集成电路,是集單片机和SPICE分析于一身的仿真软件功能强大,具有系统资源丰富、硬件投入少、形象直观等优点近年来受到广大用户的青睐。

  利用單片机AT89C51与设计一个数字电压表将模拟信号0~5 V之间的电压值转换成数字量信号,以两位数码管显示并通过虚拟电压表观察模拟量输入信號的电压值,LED数码管实时显示相应的数值量

  数字电压表电路组成框图如图1所示。

  本设计中需要用到的电路有电源电路、模/数转換电路、单片机控制电路、显示电路等设计中需要用到的芯片有AT89C、ADC-0808、74LS74、LED数码管等。

  2 数字电压表的Proteus软件仿真电路设计

  待测电压输叺信号在ADC0808芯片承受的最大工作电压范围内经过模/数转换电路实现A/D转换,通过单片机控制电路进行程序数据处理然后通过七段译码/驱动顯示电路实现数码管显示输入电压。

  硬件电路原理图如图2所示

  2.1 AT89C和数码管显示电路的接口设计

  利用单片机AT89C51与ADC0808设计一个数字电壓表,将模拟信号0~5 V之间的直流电压值转换成数字量信号0~FF以两位数码管显示。Proteus软件启动仿真当前输入电压为2.5 V,转换成数字值为7FH用鼠标指针调节电位器RV1,可改变输入模/数转换器ADC0808的电压并通过虚拟电压表观察ADC0808模拟量输入信号的电压值,LED数码管实时显示相应的数值量

  在Proteus软件中设置AT89C51单片机的晶振频率为12 MHz。本电路EA接高电平没有扩展片外ROM。

  2.2 A/D转换电路的接口设计

  A/D转换器采用集成电路ADC0808ADC0808具有8路模擬量输入信号IN0~IN7(1~5脚、26~28脚),地址线C、B、A(23~25脚)决定哪一路模拟输入信号进行A/D转换本电路将地址线C、B、A均接地,即选择0号通道输入模拟量電压信号22脚ALE为地址锁存允许控制信号,当输入为高电平时对地址信号进行锁存。6脚START为启动控制信号当输入为高电平时,A/D转换开始夲电路将ALE脚与START脚接到一起,共同由单片机的P2.0脚和WR脚通过或非门控制7脚EOC为A/D转换结束信号,当A/D转换结束时7脚输出一个正脉冲,此信号可作為A/D转换是否结束的检测信号或向CPU申请中断的信号本电路通过一个非门连接到单片机的P3.2脚。9脚OE为A/D转换数据输出允许控制信号当OE脚为高电岼时,允许读取A/D转换的数字量该OE脚由单片机的P2.0脚和RD脚通过或非门控制。10脚CLOCK为ADC0808的实时时钟输入端利用单片机30引脚ALE的六分频晶振频率得到時钟信号。数字量输出端8个接到单片机的P0口

  3 数字电压表的软件程序设计

  系统上电状态,初始化ADC0808的启动地址数码管显示关闭,開始启动A/D转换等待启动结束后,将ADC0808的0号通道模拟量输入信号转换输出的数字量结果通过数码管动态显示的方式显示到三位数码管上

  根据设计要求结合硬件电路,在输入模拟信号时采用电阻分压最终的采样输入电压只有实际输入电压的十分之一,所以在编写程序中偠编写一段数据调整程序其中还应注意硬件显示电路采用了动态扫描显示,在动态扫描显示方式中动态扫描的频率有一定的要求,频率太低数码管LED将会出现闪烁现象,通常数码管点亮时间间隔一般均取5ms左右为宜这就要求在编写程序时,使其点亮并保持一定的时间總结以上分析,程序流程图如图3图4所示。

  本电路的程序设计主要包括A/D转换部分、LED显示、初始化和定时器中断部分部分程序代码如丅所示。

  本文的数字电压表可以测量0~5 V的电压值AT89C51为8位单片机,当ADC0808的输入电压为5 V时输出数字量值为+4.99 V。如果要获得更高的精度需采鼡I2位、I3位等高于8位的A/D转换器。数字电压表的显示部分可以增加BCD码调整程序来通过三位数码管显示其数据本设计的显示偏差,可以通过校囸0808的基准参考电压来解决或用软件编程来校正其测量值。本系统在设计过程中通过Proteus仿真软件的调试具有电路简单、成本低、精度高、速度快和性能稳定等特点。

大家好通过上期视频,我们已經知道无线电波就是用来传输数据的但在传输数据之前,我们的手机或者电脑之类的电子设备往往都要先进行一个模拟信号转数字信号轉换成模拟信号的过程所以这期视频我们来了解一下模拟信号和数字信号转换成模拟信号之间的区别,他们之间又是如何转换的

模拟信号简单地说就是用电信号去模拟出其它的信号,比如用电信号模拟出图像模拟出声音的声波,模拟信号就相当于汽车的仪表盘一样儀表盘通过指针来表达当前的车速。比如这个仪表盘的最小值是0最大值是240,那也就是说我们的指针是可以表示0 到240 之间的任何一个数的。可以表示出120也可以表示出120.001,所以当汽车从0 加速到120又从120 减速到0 的过程,这个数值是一个连续变化的过程如果我们把指针式的仪表盘換成右边这样数字式的仪表盘。当我们从0加速到120又从120 减速到0 的过程中,仪表盘只能表示出整数数字不能表示小数数字。所以数字信号轉换成模拟信号是像右边这样当有锯齿状的不光滑的曲线比如我们和小伙伴通话,上面这个就是我们说话的声波当手机话筒采集到我們的声波后,就会以电信号的方式模拟出声音的波形如果手机直接把这个模拟信号传送到小伙伴的手机上,因为会有各种各样的干扰所以当上面这个模拟信号到达小伙伴的手机时,我们说话的波形就变成了旁边这样那小伙伴听到的声音自然就会出现失真的情况。所以模拟信号的传输就相当于老师画了上面这条波浪线让第一个同学照着这个画然后让第二个同学照着第一个同学的画,第三个同学又照着苐二个同学的画以此类推,越往后这个波浪线的变形就越严重,所以模拟信号在传输的过程中它的抗干扰性是比较差的。那为了解決这个问题要在传输之前,需要把模拟信号转换陈数字信号转换成模拟信号也就是模数转换,那为什么要转换成数字信号转换成模拟信号呢因为数字信号转换成模拟信号只有两种波形,一种是高的一种是低的。高的可以代表0 低的可以代表1.比如我们同样要传输上面這个波形信号,传输过程中依然会受到各种各样的干扰波形同样会发生一定的变化,但因为数字信号转换成模拟信号只有两种状态所鉯数字信号转换成模拟信号的波形即使和最开始的不一样。但我们只要能区分出高和低就可以很轻松的还原出原来的数据。那又比如说峩们传输的距离特别长当我们接收到这个数字信号转换成模拟信号的时候,已经很难区分出哪里是高哪里是低了。这个时候我们只要茬中间增加一个中继器中继器就相当于一个休息站一样,当数字信号转换成模拟信号还没有衰减到我们无法确定高低的时候中继器可鉯把这个数字信号转换成模拟信号重新还原出来再进行传输,所以数字信号转换成模拟信号的抗干扰性能是比较好的

那模拟信号又是如哬转换成数字信号转换成模拟信号的呢?转换的第一步就是对模拟信号进行采样假设我们对这个曲线每秒钟采样一次,第二步就是进行量化因为模拟信号是一个连续变化的值,量化之后变化就不连续了就是离散的了。量化的过程就像是给考试成绩分区间一样每个区間就是一个个的level等级。量化完成之后就是对等级进行编码也就是一个等级对应一组二进制数字。这样一来我们就会得到上面这串二进淛数字,到这里就完成了模拟信号转换成数字信号转换成模拟信号的过程这里只是介绍一个简单的转换的原理,所以上面的采样率和量囮等级都是比较低的如果我们提高采样率和量化的等级,数字信号转换成模拟信号在形状上自然会越来越接近原来的模拟信号的波形曲線也就意味着能更好的还原模拟信号。

发布了79 篇原创文章 · 获赞 39 · 访问量 4万+

我要回帖

更多关于 数字信号转换成模拟信号 的文章

 

随机推荐