《单片机应用技术》课件第6章_第1页
《单片机应用技术》课件第6章_第2页
《单片机应用技术》课件第6章_第3页
《单片机应用技术》课件第6章_第4页
《单片机应用技术》课件第6章_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目6简易信号发生器设计6.1项目要求

6.2理论知识

6.3项目分析及实施

6.4项目拓展

6.5项目总结习题

6.1项目要求

在计算机应用领域,尤其是在实时控制系统中,经常需要将计算机计算结果的数字量转换为连续变化的模拟量,用来控制、调节一些电路,实现对被控对象的控制。能够实现数字量转为模拟量的器件通常称作数/模(D/A)转换器。

本项目通过信号发生器设计,介绍D/A转换器在单片机控制系统中的应用,项目要求以STC89C52单片机为核心,设计一个简易信号发生器,此信号发生器可以输出正弦波、三角波、方波、锯齿波。项目重难点:

(1)D/A转换器的相关技术指标;

(2)D/A转换器与51单片机的接口电路设计;

(3)51单片机控制D/A转换器程序设计。

技能培养:

(1)熟练掌握单片机与常见D/A转换器的接口电路设计方法;

(2)熟练掌握常见D/A转换程序设计方法;

(3)能够分析和解决D/A转换中遇到的问题。

6.2理论知识

6.2.1

D/A转换器的基本原理

1.D/A转换器的分类

D/A转换器按工作方式可分为并行D/A转换器、串行D/A转换器和间接D/A转换器等。在并行D/A转换器中,又分为权电阻D/A转换器和R-2RT型D/A转换器。

D/A转换器按模拟量输出方式可分为电流输出D/A转换器和电压输出D/A转换器。

D/A转换器按D/A转换的分辩率可分为低分辩率D/A转换器、中分辩率D/A转换器和高分辩率D/A转换器。

D/A转换器按模拟电子开关电路的不同可分为CMOS开关型D/A转换器(速度要求不高)、双极型开关D/A转换器、电流开关型(速度要求较高)和ECL电流开关型(转换速度更高)。

2.D/A转换器的组成

D/A转换器由数码寄存器、模拟电子开关电路、解码网络、求和电路及基准电压等几部分组成。

以R-2RT型D/A转换器为例,其由基准电压VREF、T型(R-2R)电阻网络、位切换开关和运算放大器组成。

3.D/A转换器的工作原理

数字量是用代码按数位组合起来表示的,对于有权码,每位代码都有一定的位权。为了将数字量转换成模拟量,必须将每1位的代码按其位权的大小转换成相应的模拟量,然后将这些模拟量相加,即可得到与数字量成正比的总模拟量,从而实现了数字—模拟转换。这就是D/A转换器的基本指导思想。

数字量以串行或并行方式输入、存储于数码寄存器中,数字寄存器输出的各位数码,分别控制对应位的模拟电子开关,使数码为1的位在位权网络上产生与其权值成正比的电流值,再由求和电路将各种权值相加,即得到数字量对应的模拟量。我们以R-2RT型D/A转换器为例简要介绍D/A转换器的工作原理。如图6-1所示为R-2RT型D/A转换器原理电路。图6-1

R-2RT型D/A转换器原理电路图6-1所示的电路是一个3位二进制数的D/A转换电路,每位二进制数控制一个开关S。当第i位的数码为“0”时,开关Si打在左边;当第i位的数码为“1”时,开关Si打在右边。当S0接通时,由图可知:

由于B点对地电阻相当于两个2R的并联即等于R,所以:

同理可以推出:则可以推出:

将上式推广到n位二进制数的转换,可得一般表达式:则输出电压为:

输出电压会因器件误差、集成运放的非理想特性而产生一定的转换误差。

一般D/A转换器用如图6-2所示的框图表示。图中输入量与输出量的关系为

UOUT=B×Ur

图6-2

D/A转换器框图6.2.2

D/A转换器的技术性能指标

1.分辩率

分辨率是D/A转换器对输入量变化敏感程度的描述,与输入数字量的位数有关。如果数字量的位数为n,则D/A转换器的分辨率为1/2n。这就意味着数/模转换器能对满刻度的1/2n输入量作出反应。即:

分辨率=输出模拟量的满量程值/2n

2.精度

如果不考虑D/A的转换误差,D/A转换的精度为其分辨率的大小。因此,要获得一定精度的D/A转换结果,首要条件是选择有足够分辨率的D/A转换器。当然,D/A转换的精度不仅与D/A转换器本身有关,也与外电路以及电源有关。

3.转换速度

转换速度是DAC每秒可以转换的次数,其倒数为转换时间。转换时间是指从输入数字量到转换为模拟量输出所需的时间。当D/A转换器的输出形式为电流时,转换时间较短;当D/A转换器的输出形式为电压时,由于转换时间还要加上运算放大器的延迟时间,因此转换时间要长一点,一般在几十微秒内。

4.建立时间

建立时间是描述D/A转换速度快慢的一个重要指标,指从输入数字量变化到输出达到终值误差±(1/2)LSB(最低有效位)时所需的时间,即输入的数字量变化后,输出模拟量稳定到相应的数字范围内所需的时间。

通常以建立时间来表示转换速度。转换器的输出形式为电流时建立时间较短;而当输出形式为电压时,由于还要加上运算放大器的延迟时间,因此建立时间要长一点。但总的来说,D/A转换速度远高于A/D转换速度,例如快速的D/A转换器的建立时间只需1μs。

5.输入编码形式

输入编码形式是指D/A转换电路输入的数字量的形式。如二进制码、BCD码等。

6.线性度

线性度是指D/A转换器的实际转移特性与理想直线之间的最大误差或最大偏移。通常给出在一定温度下的最大非线性度,一般为0.01%~0.03%。

7.输出电平

不同型号的D/A转换芯片,输出电平相差很大。大部分D/A转换芯片是电压型输出,一般为5~10V;也有高压输出型的,为24~30V。也有一些是电流型的输出,低者为20mA左右,高者可达3A。

8.尖峰

尖峰是输入的数字量发生变化时产生的瞬时误差。通常尖峰的转换时间很短,但幅度很大。在许多场合是不允许有尖峰存在的,应采取措施予以消除。

正确了解D/A转换器件的技术性能参数,对于合理选用转换芯片、正确设计接口电路十分重要。但要注意的是目前各器件生产厂家对同一参数给出不同的定义,使用时要注意。

其实在选择D/A转换器时,不仅要考虑上述性能指标,还要考虑D/A转换芯片的如下的一些结构特性和应用特性。

(1)数字输入特性:串行输入或并行输入以及逻辑电平等。

(2)模拟输出特性:电流输出或电压输出以及输出的范围等。

(3)锁存特性及转换特性:是否具有锁存功能,是单缓冲还是双缓冲,如何启动转换等。

(4)参考电压:是内部参考电压还是外部参考电压以及其大小和极性等。

(5)电源:功耗的大小,是否具有低功耗的模式,正常工作时需要几组电源及电压的高低等。 6.3项目分析及实施

6.3.1任务1——灯光亮度调节器设计

1.任务要求和分析

1)任务要求

利用单片机控制一个发光二极管,使发光二极管的亮度逐渐变暗,再逐渐变亮,不断循环。

2)任务分析

我们用一只电阻和发光二极管串联,发光二极管的正极接电源,负极接地就可以点亮发光二极管。当其限流电阻固定时,改变电源的电压值就可以改变LED灯的亮度。改变电源电压值实质上是通过改变电压达到改变电流的目的。也就是若要改变发光二极管的亮度,必须改变通过发光二极管的电流,因为发光二级管是电流驱动的,电流连续的变化时,发光二极管的亮度也会逐渐变化。但是单片机输出的是数字量,因此必须将这个数字量转换成模拟量之后,再去控制流过发光二极管的电流,就能制作成一个灯光亮度调节器。这里我们需要D/A转换芯片完成数字量到模拟量的转换任务。

2.器件及设备选择

集成的D/A转换器我们称为DAC芯片,有多种型号。根据DAC芯片是否可采用总线形式与单片机直接接口,可以分为两类:一类在芯片内部只有完成D/A转换功能的基本电路,不带数据锁存器(如DAC0808),这类DAC芯片内部结构简单,价格较低,但是与单片机连接时不太方便,为了保存来自单片机的转换数据,接口时需要另外加锁存器;另一类在芯片内部除了有完成D/A转换功能的基本电路外,还带有数据锁存器(如DAC0832),带锁存器的D/A转换器可以看作一个输出口,可直接连接在数据总线上,不需要另外加锁存器,目前这类DAC芯片应用比较广泛。目前单片机系统常用的D/A转换器的转换精度有8位、10位、12位等,与单片机的接口方式有并行接口,也有串行接口。这里我们选用DAC0832转换器。

1)DAC0832芯片介绍

DAC0832由美国国家半导体公司研制,同系列芯片还有DAC0830和DAC0831,它们都是8位D/A转换器,可以互换。DAC0832是采用COMS/Si-Cr工艺制成的双列直插式单片8位D/A转换器。它可以直接与CPU相连,也可以同单片机相连,以电流形式输出。当需要转换为电压输出时,可外接运算放大器。其主要特性有:

(1)输出电流线性度可在满量程下调节;

(2)转换时间(电流建立时间)为1μs;

(3)数据输入可采用双缓冲、单缓冲或直通方式;

(4)增益温度补偿为0.02%FS/℃;

(5)每次输入数字为8位二进制数;

(6)低功耗,20mW;

(7)逻辑电平输入与TTL兼容;

(8)基准电压的范围为±10V;

(9)单电源供电,可在+5~+15V内正常工作。

DAC0832可以直接接收从单片机输入的数字量,并经一定的方式转换成模拟量。D/A转换器输出的模拟量与输入的数字量是成正比关系的。

DAC0832的工作原理很简单,它将数字量的每一位按权值分别转换成模拟量,再通过运算放大器求和相加,因此D/A转换器内部有一个解码网络,以实现按权值分别进行D/A转换。

DAC0832由两个数据锁存器、一个8位D/A转换器和控制电路等组成。DAC0832的内部结构如图6-3所示。

8位输入寄存器由8个D锁存器组成。它的8条输入线可以直接和单片机的数据总线相连。LE1为其控制输入端,当LE1=1时,8位输入寄存器处于送数状态;当LE1=0时,为锁存状态。图6-3

DAC0832的内部结构图

8位DAC寄存器也由8个D锁存器组成。8位输入数据只有经过DAC寄存器才能送到D/A转换器进行转换。它的控制端为LE2,当LE2=1时,8位DAC寄存器处于送数状态;当

LE2=0时,为锁存状态。DAC寄存器的输出数据直接送到8位D/A转换器进行数模转换。

8位D/A转换器是采用一个R-2R的T型电阻网络的D/A转换电路,其输出是与数字量成比例的电流。为了得到电压信号还需外接运算放大器。控制逻辑部分接收外来的控制信号以控制DAC0832的工作。当ILE、CS、WR1都有效时,8位输入寄存器处于送数状态,数据由8位输入寄存器的输入端传送到其输出端。当XFER、WR2都有效时,DAC寄存器处于送数状态,数据由DAC寄存器的输入端传送到其输出端,并进行D/A转换。双列直插式封装的DAC0832的引脚排列如图6-4所示。图6-4

DAC0832的引脚运算放大器的接法如图6-5所示。图6-5运算放大器的接法

2)DAC0832的输出

DAC0832是电流输出型D/A转换器,为了得到电压输出,在使用时需要在两个电流输出端连接运算放大器。根据运放和DAC0832的连接方法,运放的输出可以分为单极性输出和双极性输出两种。图6-6是一种单极性输出电路。图6-6

DAC0832单极性电压输出电路在图6-4中DAC0832的Iout2被接地,Iout1输出的电流经运放器741输出一个单极性电压。运放的输出电压为

式中,B为DAC0832的输入数字量。由于VREF接-5V的基准电压,所以单极性电压的范围为0~+5V。

如果在单极性输出的电路中再加一个加法器,便构成双极性输出电路。图6-7是一种双极性电压输出电路。图6-7

DAC0832双极性电压输出电路由以上运放的连接方法,可以导出输出电压与输入数据的关系。假设运放OP1的输出为Vout1,OP2的输出为Vout,则

根据上式,当VREF为正,数字量在0x01~0x7F之间变化时,Vout为负值;当数字量在0x80~0xFF之间变化时,Vout为正值。

3)DAC0832与51单片机的接口方式

DAC0832由输入寄存器和DAC寄存器构成两级数据输入锁存,也就是可以实现两次缓冲,即在输出的同时,还可以存放一个带转换的数字量,这就提高了转换速度。当多芯片同时工作时,可用同步信号实现各模拟量同时输出。所以DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。直通方式是数据直接输入(两级直通)的形式,单缓冲方式是单级锁存(一级锁存,一级直通)形式,双缓冲方式的数据输入可以采用两级锁存(双锁存)的形式。在3种不同的工作方式下,DAC0832与单片机的接口也不同。

(1)直通方式下的接口电路。

在直通方式下,两个8位数据寄存器都处于数据接收状态,即LE1和LE2都为1。为此,ILE=1,而WR1、WR2、CS和XFER均为0。输入数据直接送到内部D/A转换器去转换。

直通方式下51单片机与DAC0832的接口电路如图6-8所示。

用指令“P1=0xFF;”就可以将一个数字量(0xFF)转换为模拟量。图6-8直通方式下89C51与DAC0832的连接图

(2)单缓冲方式下的接口电路。所谓单缓冲方式,就是使DAC0832的两个8位数据寄存器中有一个处于直通方式,而另一个处于受控的锁存方式,或者两个8位数据寄存器处于同时受控的方式,即同时送数,同时锁存。在实际应用中,如果只有一路模拟量输出或虽有几路模拟量但并不要求同步输出的情况,就可采用单缓冲方式。

例如,在单缓冲工作方式下,可以将8位DAC寄存器置于直通方式。为此,应将WR2和XFER接地,而输入寄存器的工作状态受单片机的控制。单缓冲方式下51单片机与DAC0832的一种接口电路如图6-9所示。图6-9单缓冲方式下89C51与DAC0832的连接图一

DAC0832单缓冲工作方式的另一种接口电路如图6-10所示。图6-10单缓冲方式下89C51与DAC0832的连接图二

(3)双缓冲方式下的接口电路。所谓双缓冲方式,就是把DAC0832的两个锁存器都接成受控锁存方式。DAC0832的WR1、WR2、CS和XFER都受单片机送来的信号的控制。双缓冲方式下51单片机与两片DAC0832的接口电路如图6-11所示。图6-11双缓冲方式下89C51与两片DAC0832的连接图

3.任务实施

1)灯光亮度调节器硬件原理图设计

用Protus软件绘制灯光亮度调节器的硬件电路如图6-12所示。DAC0832工作于单缓冲方式,地址由P2和P0口决定,由于片选信号CS必须低电平有效,所以P2.7须为0,这样DAC0832的地址为0x7FFF。由于DAC0832的VREF接-5V的基准电压,所以其输出的单极性电压在0~+5V之间变化。图6-12灯光亮度调节器硬件电路图

2)灯光亮度调节器软件程序设计

根据任务的要求,依次从单机PI口送出0xFF到0x00数字量给DAC0832,经过D/A转换后输出的模拟量就可以使发光二极管由亮变暗,反之由暗变亮。

源程序如下:程序分析:

DAC0832的地址为0x7FFF,在程序的开始就定义好,这样只要将传送的数字信号送给该地址就可以了。首先将i=255送入DAC0832,转换出的电压就是+5V,LED处于最亮的状况,逐渐减小i值,则输出的电压也逐渐减小,LED由亮逐渐变暗,每一次改变i值延时1ms,当i值减到0后又逐渐增加,输出的电压也逐渐增大,LED又由暗逐渐变亮,用while(1)反复执行。

3)软硬件联合调试

在Protus环境下,将编译好的软件下载到单片机中运行,可以看到LED灯如任务要求的一样先由亮逐渐变暗,再由暗逐渐变亮。6.3.2任务2——信号发生器的设计

1.任务要求和分析

1)任务要求

用单片机AT89C51和D/A转换芯片DAC0832设计简易信号发生器,输出锯齿波、三角波、方波或正弦波。

2)任务分析

锯齿波、三角波和方波的生成比较简单,向DAC0832反复送入0x00~0xFF数据,就会生成幅度为0V~+5V的锯齿波,而向DAC0832反复送入0x00~0xFF和0xFF~0x00数据,就会生成幅度为0V~+5V的三角波,若向DAC0832送入一定时长的0x00和一定时长的0xFF,则会生成幅度为0V~+5V的方波,其周期与单片机的机器周期和程序中的延时长短相关。正弦波的生成相对复杂一些。如果把正弦信号按等时间间隔进行分割,计算出分割时刻的信号幅值,将这些幅值对应的数字量存储到ROM中,然后用查表的方法取出这些取样值,送到DAC0832转换后输出,那么输出信号就是正弦波形。比如要产生频率为50Hz的正弦波信号,波形如图6-13所示。如果将正弦波信号以5°作为1个阶梯,则共分割成360°/5°=72份,则时间间隔应该为20ms/72=0.278ms。当参考电压为-5V时,72个采样值、输出电压值、正弦值、角度如表6-1所示。表6-1正弦波数据表

2.器件及设备选择

我们运用实验板中的D/A转换部分就可以设计简易的信号发生器,其中用到的主要器件就是AT89C51、DAC0832、UA741等,输出波形可以通过示波器来观察。

3.任务实施

1)简易信号发生器硬件原理图设计

信号发生器的硬件电路如图6-14所示。DAC0832工作于单缓冲方式,地址为0x7FFF。由于DAC0832的VREF接-5V的基准电压,用UA741运放将电流转换为电压,因此其输出的单极性电压在0~+5V之间变化。在电压输出端加入一只虚拟示波器和一只电压表用于观察结果。图6-14信号发生器的硬件电路

2)简易信号发生器软件程序设计

任务要求的波形不同,程序就有所区别,我们分别加以介绍。

(1)产生锯齿波的源程序如下:

#include<reg51.h>

#include<absacc.h>

#defineuintunsignedint

#defineucharunsignedchar

#defineDAC0832XBYTE[0x7FFF]

voidDelayMS(uintx)

{uchart;程序分析:

程序每循环一次,i加1,因此实际上锯齿波的上升边是由255个小阶梯构成的。但因为阶梯很小,所以宏观上看就如同线性增长锯齿波一样。可通过循环程序段的机器周期数,计算出锯齿波的周期。并可根据需要,通过延时的办法来改变波形周期。当延迟时间较短时,可用空操作来实现(本程序就是如此);当需要延迟时间较长时,可以使用一个延时子程序。延迟时间不同,波形周期不同,锯齿波的斜率就不同。通过i加1,可得到正向的锯齿波。如要得到负向的锯齿波,改为减1指令即可实现。程序中i的变化范围是0~255,因此得到的锯齿波是满幅度的。如要求得到非满幅锯齿波,可通过计算求得数字量的初值和终值,然后在程序中通过置初值判终值的办法即可实现。

(2)产生三角波的源程序如下:

#include<reg51.h>

#include<absacc.h>

#defineuintunsignedint

#defineucharunsignedchar

#defineDAC0832XBYTE[0x7FFF]

voidDelayMS(uintx)

{uchart;程序分析:

程序中将数字从0~255逐个增大送给DAC0832转换,输出的电压会从0~+5V上升,之后又将数字从255~0逐个减小给DAC0832转换,输出的电压会从+5V~0下降,形成三角波。

(3)产生正弦波的源程序如下:

#include<reg51.h>

#include<absacc.h>

#defineuintunsignedint

#defineucharunsignedchar

#defineDAC0832XBYTE[0x7FFF]程序分析:

我们把表6-1中计算好的正弦波各点的数值存放在数组data[72]中,这样在程序中只要将这一个周期的数值反复送入DAC0832转换,就可以得到连续的正弦波信号。

3)软硬件联合调试

将上面相应波形的程序编译为*.hex文件后,加载到单片机中运行,在虚拟示波器上可以看到对应的波形图。在Proteus仿真运行过程中可能会提示CPU过载,这时虚拟示波器可能会无法实时显示波形,可将虚拟示波器通道A中指向1的黄色旋钮从1开始先正向旋转一圈,再反向旋转一圈,这样会使虚拟示波器尽快刷新显示波形。

如果是将程序下载到实验板中,可以用示波器检测UA741输出的实际波形。

6.4项目拓展

1.TLC5615主要特性

(1)5V单电源供电;

(2)10位CMOS电压输出;

(3)与CPU3线串行接口;

(4)高阻抗基准输入端;

(5)DAC的最大输出电压为基准输入电压的2倍;

(6)上电时内部自动复位;

(7)低功耗,最大功耗为1.75mW;

(8)转换速率快,更新率为1.21MHz,建立时间12.5μs。小型(D)封装TLC5615CD和塑料DIP(P)封装TLC5615CP的工作温度范围均为0℃~70℃;而小型(D)封装TLC5615ID和塑料DIP(P)封装TLC5615IP的工作温度在-40℃~85℃范围内。

2.TLC5615内部结构及引脚

TLC5615的内部功能框图如图6-15所示,它主要由以下几部分组成:

(1)10位DAC电路;

(2)一个16位移位寄存器,接受串行移入的二进制数。并且有一个级联的数据输出端DOUT;

(3)并行输入/输出的10位DAC寄存器,为10位DAC电路提供待转换的二进制数据;图6-15

TLC5615的内部功能框图

(4)电压跟随器为参考电压端REFIN提供很高的输入阻抗,大约10MΩ;

(5)×2电路提供最大值为2倍于REFIN的输出;

(6)上电复位电路和控制电路。

8脚直插式TLC5615的引脚分布如图6-16所示。各引脚功能如下:

(1)DIN,串行二进制数输入端;

(2)SCLK,串行时钟输入端;

(3)CS,芯片选择,低电平有效;

(4)DOUT,串行数据输出端;

(5)AGND,模拟地;

(6)REFIN,基准电压输入端;

(7)OUT,DAC模拟电压输出端;

(8)VDD,正电源电压端。

3.TLC5615时序及工作过程

TLC5615的工作电源一般要求在4.5~5.5V,通常取5V;高电平输入电压不小于2.4V;低电平输入电压不高于0.8V,基准输入电压为2V~(VDD-2),通常取2.048V,负载电阻一般不小于2kΩ。

TLC5615工作时序如图6-17所示。图6-17

TLC5615时序

TLC5615有两种工作方式。从图6-15可以看出,16位移位寄存器分为高4位虚拟位、低2位填充位以及10位有效位。在TLC5615工作时,只需要向16位移位寄存器按先后输入10位有效位和低2位填充位,2位填充位数据任意,这是第一种方式,即12位数据序列。第二种方式为级联方式,即16位数据序列,可以将本片的DOUT接到下一片的DIN,需要向16

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论