第六章 数模与模数转换接口_第1页
第六章 数模与模数转换接口_第2页
第六章 数模与模数转换接口_第3页
第六章 数模与模数转换接口_第4页
第六章 数模与模数转换接口_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

第六章数/模和模/数转换接口数/模和模/数转换电路的概念在单片机的实时控制和智能仪表等应用系统中,被控制或被测量对象的有关变量,往‍往是一些连续变化的模拟量,如温度、压力、流量、速度等物理量。这些模拟量必须转换‍成数字量后才能输入到计算机进行处理。计算机处理的结果,也常常需要转换为模拟信‍号,驱动相应的执行机构,实现对被控对象的控制。若输入是非电的模拟信号,还需通过‍传感器转换成电信号。实现模拟量变换成数字量的设备称为模数转换器(A/D),数字量转‍换成模拟量的设备称为数模转换器(D/A)。具有模拟量输入和模拟量输出的MCS-51应‍用系统结构

模数\数模转换技术是数字测量和数字控制领域中的一个专门分支。在微电子技术已‍取得巨大成果的今天,对那些具有明确应用目标的单片微机产品的设计人员来说,只需‍要合理地选用商品化的大规模A/D、D/A电路器件,了解它们的功能和接口方法即可。14.2.1DAC0832的引脚功能DAC0832是一典型的8位并行D/A转换器。为20引脚的双列直插式封装

DAC0832内部主要由两个8位的寄存器和一个8位的D/A转换器及一些控制逻辑组成。其内部结构及引脚排列如下图所示。DI0~DI7:8位数据输入引脚。逻辑电平与TIL兼容。ILE:输入数据锁存允许端,高电平有效。/CS:芯片片选输人端,低电平有效。/WR1:输入寄存器的写信号,低电平有效。当/CS

、ILE及信号/WR1同时有效时,DI0~DI7的数据被锁存到输入寄存器。/XFER:数据传送控制器信号,低电平有效。/WR2:DAC寄存器的写信号,低电平有效。当/WR2和/XFER信号同时有效时,将输入寄存器中的内容锁存到DAC寄存器中。VREF:基准参考电压源输入端。电压范围:-10~+10VIOUT1:输出电流1。其值随转换的输入数据线性变化,输入数据为0FFH时,IOUT1输出最大,输入数据为00H时,IOUT1输出最小。IOUT2:输出电流2。RFB:芯片内部反馈电阻输入引脚,为使用外部运算放大器时提供反馈电阻。VCC:芯片工作电源电压。范围:+5~+15V。AGND:模拟地。模拟信号和基准电源的参考地。DGND:数字地。工作电源和数字逻辑地。14.2.2DAC0832的工作方式1.直通工作方式当0832所有的控制信号(/CS、/WR1、/WR2、ILE、/XFER)都为有效时,两个寄存器处于直通状态,此时数据线的数字信号经两个寄存器直接进入D/A转换器进行转换并输出。此工作方式适用于连续反馈控制中。2.单缓冲工作方式单缓冲工作方式是使两个寄存器始终有一个(多为DAC寄存器)处于直通状态,另一个处于受控状态。如使/WR2=0和/XFER=0,或将/WR1与/WR2相连及/XFER与/CS相连,则DAC寄存器处于直通状态,输入寄存器处于受控状态。应用系统中如只有一路D/A转换,或有多路转换但不要求同步输出时,可采用单缓冲工作方式。3.双缓冲工作方式双缓冲工作方式是使输入寄存器和DAC寄存器都处于受控状态。这主要用于多路D/A转换系统以实现多路模拟信号的同步输出。例如有三个八位二进制数,分别先后进入三个DAC0832芯片的输入寄存器,这时若将三个DAC0832的DAC寄存器的锁存信号同时变为低电平(三个DAC0832的引脚/WR2、/XFER分别接在一起,即可达到此目的),则分别先后锁存在三个DAC0832芯片的输入寄存器中的数据同时打入其DAC寄存器,并随之进行数模转换,同时输出相应的模拟量。若三个DAC0832芯片的DAC寄存器处于直通状态,就无法控制三路模拟信号的同步输出。14.3DAC0832与单片机的接口及应用图中为采用单缓冲工作方式的一路D/A输出与8051单片机的连接图。图中采用将芯片两级寄存器的控制信号并接的方式,即将DAC0832的/WR1和/WR2并接后与805l的/WR信号线相连,/CS和/XFER并接后与P2.7相连,并将ILE接高电平。在这种工作方式下,输入数据在控制信号的作用下,送入DAC寄存器,再经D/A转换输出一个与输入数据对应的模拟量。D/A转换器的基准电压VREF由稳压管上的电压分压后提供。图中运算放大器的作用将D/A转换器输出电流转换成电压输出。D/A转换程序设计图中的接法是采用线选法把DAC0832当作8031扩展的一个并行I/O口,当P2.7=0时,则信号/CS和/XFER有效,当P3.6=0时,则信号/WR1和/WR2有效,将一个8位数据送入DAC0832完成转换的指令如下:#include<reg51.h>//包含头文件reg51.hsbitDA_CS=P2^7;//定义DA的CS端口sbitDA_WR=P3^6;//定义DA的WR端口voiddelayms(unsignedint);//声明delayms函数voidmain(){DA_CS=0;//DAC0832的/CS和/XFER引脚有效DA_WR=0;//DAC0832的/WR1和/WR2引脚有效while(1){//把数字量55H送到P0转换为模拟量P0=0x7F;delayms(50);//延时50ms}}//延时函数voiddelayms(unsignedintxms){unsignedinti,j;for(i=xms;i>0;i--)for(j=110;j>0;j--); }#include<reg51.h>//包含头文件reg51.hsbitDA_CS=P2^7;//定义DA的CS端口sbitDA_WR=P3^6;//定义DA的WR端口voiddelayms(unsignedint);//声明delayms函数voidmain(){ DA_CS=0;//DAC0832的/CS和/XFER引脚有效 DA_WR=0;//DAC0832的/WR1和/WR2引脚有效 while(1) { //把数字量55H送到P0转换为模拟量 P0=P1; delayms(50);//延时50ms }}//延时函数voiddelayms(unsignedintxms){ unsignedinti,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); }14.4A/D转换器的介绍用于模/数(A/D)转换的集成芯片种类很多,按其转换原理可分为计数比较型、逐次逼‍近型、双积分型等等。不同A/D转换器芯片在速度、精度和价格上均有差别,其分辨率‍(输出转换结果的二进制数或BCD码位数)也有8位、10位、12位及16位等多种,这也是‍应用选型时应主要考虑的因素。‍由于逐次逼近法A/D转换器在精度、速度和价格上都适中,8位的分辨率也可满足一般‍的应用要求,是最常见的A/D转换器件。下面我们主要介绍逐次逼近型A/D转换器的工作‍原理及典型芯片ADC0809与单片机的接口方法。A/D转换器的工作原理逐次逼近法A/D转换器也称逐次比较法A/D。对于一个输出为N位的逐次逼近法A/D转‍换器,其内部原理框图如图所‍示。主要以一D/A(数/模)转换为基‍础,加上比较器、N位逐次逼近寄存‍器、置数控制逻辑电路以及时钟等组‍成。它通过对最高位(DN-1)至最低‍位(D0)的逐次检测比较来逼近被转‍换的输入电压,转换原理为:

在启动信号控制下开始转换,置数控制逻辑电路首先置N位寄存器最‍高位(DN-1)为1,其余位清0,随后N位寄存器的内容经D/A转换后得到整个量程一半的‍模拟电压VN,通过电压比较器与输入电压VX比较。若VX≥VN时,则保留DN-1=1;若‍VX<VN时,则DN-1位清0。然后,控制逻辑使N位寄存器的下一位(DN-2)置l,与上次的结‍果一起经D/A转换再后与VX比较,重复上述过程,直至判断出位D0取1还是0,然后‍DONE发出信号表示转换结束。经过上述N次比较后,N位寄存器中的数据就是与输入模拟量对应的数字量,经输出缓‍冲器输出即完成了转换。

整个转换过程就是这样通过逐次比较逼近的方式实现的,转换速度‍由时钟频率决定,一般在几微秒到上百微秒之间。

14.5ADC0809芯片结构及引脚

ADC0809是一典型的逐次逼近型8路模拟量输入、8位数字量输出的A/D转换芯片,采‍用CMOS工艺制造,28引脚双列直插式封装。图为ADC0809的内部结构逻辑‍图,和ADC0809的‍引脚图。

ADC0809芯片引脚功能为了实现8路模拟量的A/D转换,芯片内部集成有一个多路模拟开关,由地址译码器译码后可选通一路模拟量输入,8路模拟量共用一个A/D转换器进行转换。转换结果送入输出锁存器锁存和输出。当外加时钟频率为640kHz时,转换时间为64us。芯片引脚功能说明如下:IN0~IN7—8路输入通道的模拟量输入端D0~D7—8位数字量输出端START:启动信号。加上正脉冲后,开始启动A/D转换。此信号要求保持200ns以上。ADDA、ADDB、ADDC:地址线。用于选择所需的模拟输入通道。其地址状态与模拟输入通道的对关系如表所示。EOC:转换结束输出信号。转换开始后,EOC信号变低;转换结束时,EOC返回高电平。查询这个引脚的信号状态可知A/D转换器是否转换结束。也可以直接用作转换结束的中断请求信号,CPU通过中断服务子程序读取转换后的数字量。OE:输出允许控制端。CLK:时钟信号。频率范围:10kHz~1.2MHz,通常采用500kHz。VCC:芯片电源电压。由于是CMOS芯片,故允许的电源范围较宽(+5V~+15V)。GND为地端。VREF(+)和VREF(-):A/D转换器的正负基准参考电压输入端。一般可将VREF(+)与VCC连接在一起,VREF(-)与GND连接在一起。ALE:地址锁存信号。信号的上跳沿把三位地址信号送入地址锁存器,并经译码器的地址输出,以选择相应的模拟输入通道。#include<reg51.h>//包含头文件reg51.hsbitCLOCK=P2^4;//定义ADC0809的CLOCK引脚sbitEOC=P2^5;//定义ADC0809的EOC引脚sbitSTART=P2^6;//定义ADC0809的START引脚sbitOE=P2^7;//定义ADC0809的OE引脚sbithigh_bit=P3^0;//定义数码管的高位位选通sbitlow_bit=P3^1;//定义数码管的低位位选通unsignedcharADC_val;//定义AD转换结果暂存unsignedchartable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//0~F的段码表voiddisplay(unsignedchar);//显示函数声明voiddelayms(unsignedint);//延时函数声明//主程序voidmain(){ TMOD=0x02;//设置定时器0为工作方式2 TH0=245;//定时器0,10us中断一次 TL0=0; EA=1,ET0=1;//开放中断 TR0=1;//启动定时 while(1) { START=0;START=1;START=0;//启动A/D转换 while(EOC);//等待EOC变低while(!EOC);//等待EOC变低,转换结束 OE=1;ADC_val=P0;OE=0;//读转换结果 display(ADC_val);//显示16进制转换结果 }}//定时器0中断服务程序voidtime0_int()interrupt1{ CLOCK=~CLOCK;//取反,产生方波}//显示函数voiddisplay(unsignedcharADC_display){ unsignedchardisplay_high,display_low; //把两位十六进制的模数转换结果拆分出低位 display_low=ADC_display&0x0f;//把低位数的段码通过P1口送到低位数码管 P1=table[display_low]; low_bit=1;//选通

温馨提示

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

评论

0/150

提交评论