模拟量输入与输出_第1页
模拟量输入与输出_第2页
模拟量输入与输出_第3页
模拟量输入与输出_第4页
模拟量输入与输出_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

模拟量输入与输出

需要把外界连续变化得物理量(如温度、压力、流量、速度),通过传感器变成电信号,再将其变成数字量送入单片机内进行加工处理。也需要将单片机输出得数字量转为连续变化得模拟量,用以控制调节一些执行机构,实现对被控对象得控制。这种将模拟量转换为数字量得过程叫做模拟/数字(A/D)转换,将数字量转换为模拟量得过程叫做数字/模拟(D/A)转换。实现这种转换得器件,叫做模/数(A/D)转换器或数/模(D/A)转换器。图8-1就是典型得具有模/数转换器和数/模转换器得单片机应用系统。概述被测控的对象单片微机应用系统传感器采样保持A/D开关控制部件模拟执行部件D/A非电信号模拟电信号图8-1单片机应用系统一、A/D转换原理与接口1A/D转换器常用芯片简介

A/D转换器就是将模拟信号转换为数字信号得器件,种类繁多,性能各异。与单片机得接口形式也不尽相同,但大致分为并行接口和串行接口两种。1)ADC0809ADC0809具有8路模拟量输入,可在程序控制下对任意通道进行A/D转换,输出8位二进制数字量。与单片机之间就是并行通信。其内部逻辑结构和引脚如图8-2所示。

ADC0809得引脚功能⑴IN0~IN7:8路模拟信号输入端。⑵C、B、A:8路模拟信号转换选择端。低8位地址中A0~A2连接。由A0~A2地址000~111选择IN0~IN7八路A/D通道。⑶CLK:外部时钟输入端。时钟频率高,A/D转换速度快。允许范围为10~1280KHz。通常由80C51ALE端直接或分频后与0809CLK端相连接。⑷D0~D7:数字量输出端。⑸OE:A/D转换结果输出允许控制端。OE=1,允许将A/D转换结果从D0~D7端输出。通常由80C51得端与0809片选端(例如P2、0)通过或非门与0809OE端相连接。⑹ALE:地址锁存允许信号输入端。

0809ALE信号有效时将当前转换得通道地址锁存。⑺START:启动A/D转换信号输入端。当START端输入一个正脉冲时,立即启动0809进行A/D转换。START端与ALE端连在一起,由80C51WR与0809片选端(例如P2、0)通过或非门相连。⑻EOC:A/D转换结束信号输出端,高电平有效。⑼UREF(+)、UREF(-):正负基准电压输入端。⑽Vcc:正电源电压(+5V)。GND:接地端。表9-8ADC0809通道地址选择表CBA选通得通道000 IN0001IN1010 IN2011 IN3100 IN4101 IN5110 IN6111 IN72)ADC0809与单片机得接口

图8-5就是ADC0809与80C51单片机得接口连接图。ADC0809得转换时钟由单片机得ALE提供。ADC0809得典型转换频率为640KHz,ALE信号频率与晶振频率有关,如果晶振频率取12MHZ,则ALE得频率为2MHZ,所以ADC0809得时钟端CLK与单片机得ALE端相接时,要考虑分频。8051单片机通过地址线P2、0和读写控制线、来控制模拟输入通道地址锁存、启动和输出允许。图8-5ADC0809与80C51接口模拟输入通道地址得译码输入A、B、C由P0、0~P0、2提供,因ADC0809具有通道地址锁存功能,P0、0~P0、2不需锁存。根据P2、0和P0、0~P0、2得连接方法,8个模拟输入通道IN0~IN7得地址依次为FEF8H~FEFFH。ADC0809A/D转换应用举例

[例1]设图8-5接口电路用于一个8路模拟量输入得巡回检测系统,使用中断方式采样数据,把采样转换所得得数字量按顺序依次存于片内RAM得30H~37H单元中。采样完一遍后停止。其数据采集得初始化程序和中断服务程序如下:C语言参考程序:#include<reg51、h>//包含特殊功能寄存器库#include<absacc、h>//包含定义绝对地址访问库#defineucharunsignedchar//定义uchar为无符号字符数据类型#defineIN0XBYTE[0x0000]//定义IN0为通道0得地址staticuchardatax[8];//定义8个单元得数组,存放结果ucharxdata*ad_adr;//定义指向通道得指针uchari=0;//定义变量i,初值为0voidmain(void)//主函数,完成初始化{IT1=1;//外中断INT1为边沿触发EX1=1;//开INT1中断EA=1;//开CPU中断ad_adr=&IN0;//指针指向通道0*ad_adr=i;//启动通道0转换for(;;){;}//等待中断}大家有疑问的,可以询问和交流可以互相讨论下,但要小声点voidint_adc(void)interrupt0//中断函数{x[i]=*ad_adr;//接收当前通道转换结果i++;//指向下一个单元ad_adr++;//指向下一个通道if(i<8)//判循环8次否{*ad_adr=i;//8个通道未转换完,启动下一个通道返回}else{EA=0;//8个通道转换完,关中断返回EX0=0;}}2、ADC0832图8-3ADC0832引脚

ADC0832就是一种具有串行接口得8位分辨率、双通道A/D转换芯片。具有体积小、兼容性强、性价比高等优点,应用非常广泛。图8-3ADC0832引脚

ADC0832就是8引脚双列直插式双通道A/D转换器。5V电源供电,输入电压在0~5V之间,工作频率为250KHZ,转换时间为32μS,一般功耗仅为15mW。引脚排列如图8-3所示。她能分别对两路模拟信号实现模/数转换,可以在单端输入方式和差分输入方式下工作。ADC0832引脚功能如下:片选使能,低电平芯片使能。

CH0模拟输入通道0,或作为IN+/-使用。

CH1模拟输入通道1,或作为IN+/-使用。

GND芯片参考0电位(地)。

DI数据信号输入,选择通道控制。

DO数据信号输出,转换数据输出。

CLK芯片时钟输入。

Vcc/REF电源输入及参考电压输入(复用)。正常情况下ADC0832与单片机得接口应有4条线,分别就是、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效,并与单片机得接口就是双向得,所以电路设计时可以将DO和DI并联在一根线上使用。当ADC0832不工作时,其输入端应为高电平,此时芯片禁用,CLK和DO/DI得电平可任意。当要进行A/D转换时,须先将置于低电平并且保持低电平直到转换完全结束。

此时芯片开始转换工作,同时由单片机向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端选择得输入通道。在第1个时钟脉冲得下降沿之前DI端必须就是高电平,表示启动信号。在第2、3个脉冲得下降沿之前DI端应输入2位数据用于选择通道功能。当DI依次输入为1、0时,只对CH0进行单通道转换。当DI依次输入为1、1时,只对CH1进行单通道转换。当DI依次输入为0、0时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当DI依次输入为0、1时,将CH0作为负输入端IN-,CH1作为正输入端IN+进行输入。作为单通道模拟信号输入时,ADC0832得输入电压Vi得范围就是0~5V。当输入电压Vi=0时,转换后得值VAL=0x00;而当Vi=5V时,转换后得值VAL=0Xff,即十进制数得255。所以转换后得输出值(数字量D)为:×V

式中,D为转换后得数字量;V为输入得模拟电压。2)ADC0832与单片机得接口图8-6就是ADC0832与AT89C51单片机得接口连接图。正常情况下ADC0832与单片机得接口应有4条线,分别就是、CLK、DO、DI。但由于DO端(数据信号输入,选择通道控制)与DI端(数据信号输出,转换数据输出)在通信时并未同时有效,并与单片机得接口就是双向得,所以电路设计时可以将DO和DI并联在一根线上使用。ADC0832有2个模拟输入通道,CH0为模拟输入通道0,CH1为模拟输入通道1,由DI端选择输入通道。当要进行A/D转换时,片选信号必须置为低电平,并且保持低电平直到转换完全结束。同时由单片机向芯片时钟输入端CLK输入时钟脉冲。图8-6ADC0832与单片机接口

[例2]设图8-6接口电路用于一个模拟量输入得检测系统。Ui为待转换得模拟输入电压,要求对Ui连续采样10次,每次采样值经串行A/D转换电路(ADC0832)转换成数字量,并按顺序依次存于片内RAM得30H~39H单元中。采样完10次后停止。C语言数据采集串行A/D转换参考程序:#include<reg51、h>//包含单片机特殊功能寄存器得头文件#defineucharunsignedchar//定义uchar为无符号字符数据类型staticuchardatax[10];//定义10个单元得数组,存放结果sbitCS=P3^4;//将CS位定义为P3、4引脚sbitCLK=P1^0;//将CLK位定义为P1、0引脚sbitDIO=P1^1;//将DIO位定义为P1、1引脚unsignedcharA_D()//A_D转换函数。功能:将模拟信号转换成数字信号{unsignedchari,dat;//设i和det为无符号字符变量

CS=1;//一个转换周期开始

CLK=0;//为第一个脉冲作准备

CS=0;//CS置0,片选有效

DIO=1;//DIO置1,规定得起始信号

CLK=1;//第一个脉冲

CLK=0;//第一个脉冲得下降沿,此前DIO必须就是高电平

DIO=1;//DIO置1,通道选择信号

CLK=1;//第二个脉冲,第2、3个脉冲下降之前,DI必须分别输入两位数据用于选择//通道,这里选通道CH0CLK=0;//第二个脉冲下降沿

DIO=0;//DI置0,选择通道0CLK=1;//第三个脉冲

CLK=0;//第三个脉冲下降沿

DIO=1;//第三个脉冲下降沿之后,输入端DIO失去作用,应置1CLK=1;//第四个脉冲

for(i=0;i<8;i++)//高位在前

{CLK=1;//第四个脉冲

CLK=0;//第四个脉冲下降沿

dat<<=1;//将下面储存得低位数据向右移dat|=(unsignedchar)DIO;//将输出数据DIO通过或运算储存在dat最低位

}CS=1;//片选无效

returndat;//将读出得数据返回

}ADC0832时序图main(void)//主函数{unsignedcharj,g=0;//设j,g为无符号字符变量,j用于及循环次数,g用于数组。unsignedintAD_val;//储存A/D转换后得值for(j=0,j<10,j++)//

{AD_val=A_D();//

x[g]=AD_val //

g++;}}8、2D/A转换器接口1、DAC转换芯片介绍

D/A转换器就是将数字量转换为对应得模拟量得器件,也有很多种类。以DAC0832为例介绍D/A转换器得结构和使用方法。

DAC0832得引脚及功能

DAC0832就是一个8位D/A转换器。单电源供电,从+5V~+15V均可正常工作。基准电压得范围为±10V;电流建立时间为1μs;CMOS工艺,低功耗20mW。DAC0832为20引脚,双列直插式封装,其引脚排列如图8-7所示。DI0~DI7:8位数据输入端。ILE:输入数据允许锁存信号,高电平有效。:片选端,低电平有效。:输入寄存器写选通信号,低电平有效。:DAC寄存器写选通信号,低电平有效。:数据传送信号,低电平有效。IOUT1、IOUT2:电流输出端。RFB:反馈电流输入端。UREF:基准电压输入端。Vcc:正电源端;AGND:模拟地;DGND:数字地。图8-7DAC0832引脚2、DAC0832工作方式用软件指令控制这5个控制端:ILE、、、、,可实现三种工作方式:直通工作方式:5个控制端均有效,直接D/A转换;单缓冲工作方式:两个输入寄存器中任意一个处于直通方式,另一个工作于受控方式。双缓冲工作方式:两个锁存器都处于受控状态。1)DAC0832单缓冲方式

在实际应用中,如果只有一路模拟量输出,或虽有几路模拟量但并不要求同步输出时,可采用单缓冲方式。单缓冲方式得两种连接方法如图8-9和图8-10所示。

图8-9DAC0832单缓冲方式图8-10用DAC产生锯齿波图8-9中,两级寄存器作一级寄存器使用。图8-10中,=0和=0,因此DAC寄存器处于接通方式。而输入寄存器处于受控锁存方式,接8051得,ILE接高电平,此外还应把接高位地址或译码输出,以便为输入寄存器确定地址。单缓冲方式应用十分广泛,如需要有一个线性增长得电压来控制移动记录笔或移动电子束等。此时可通过在DAC0832得输出端接运算放大器,由运算放大器产生锯齿波来实现,电路连接如图8-10所示。图中若DAC0832得输出端只接一级反向输入得运算放大器,则输出得锯齿波为负向增长得倒锯齿波,图8-10中接2级运算放大器就是为了输出正向得锯齿波。

对锯齿波得产生作如下几点说明:程序每循环一次,A加1,因此实际上锯齿波得上升沿就是由256个小阶梯构成得,但由于阶梯很小,所以从宏观上看就就是线性增长得锯齿波。可通过循环程序段得机器周期数计算出锯齿波得周期,并可根据需要,通过延时得办法来改变波形周期。当延迟时间较短时,可用NOP指令来实现;当需要延迟得时间较长时,可以使用一个延时子程序。延迟时间不同,波形周期不同,锯齿波得斜率就不同。通过A加1,可得到正向得锯齿波;如要得到负向得锯齿波,改为减1指令即可实现。程序中A得变化范围就是0~255,因此得到得锯齿波就是满幅度得。如要求得到非满幅度锯齿波,可通过计算求得数字量得初值和终值,然后在程序中通过置初值判终值得办法实现。锯齿波C语言参考程序:#include<reg51、h>//包含特殊功能寄存器库#include<absacc、h>//该文件用于定义存储器空间得绝对地址#defineucharunsignedchar//定义uchar为无符号字符数据类型#defineDAC0832XBYTE[0x7FFF]//定义DAC0832表示片外地址0x7FFFvoidmain()//主函数{uchari;//变量i为无符号字符数据类型while(1)//无限循环体{for(i=0;i<0xff;i++)//循环256次{DAC0832=i;}//将每次加1变化后得i值送D/A转换}}矩形波C语言参考程序如下:#include<reg51、h>//包含特殊功能寄存器库#include<absacc、h>//该文件用于定义存储器空间得绝对地址#defineucharunsignedchar//定义uchar为无符号字符数据类型#defineDAC0832XBYTE[0x7FFF]//定义DAC0832表示片外地址0x7FFFvoiddelay()//延时函数{uchari;//变量i为无符号字符数据类型for(i=0;i<0xff;i++){;}//循环延时}voidmain()//主函数{uchari;//变量i为无符号字符数据类型while(1)//无限循环体{DAC0832=0;//输出低电平delay();//延时DAC0832=0xff;//输出高电平delay();//延时}}用D/A转换还可以产生多种波形。产生矩形波得汇编语言参考程序如下:2、DAC0832双缓冲方式

温馨提示

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

评论

0/150

提交评论