您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第10章 应用接口技术
10.1单片机和并行D/A的接口在前一章并行接口的扩展中,解决了数字量或开关量的检测和控制,然而很多应用系统中,测控的对象是模拟量,计算机只能处理数字量,因此必须进行数字量和模拟量之间的转换,这就需要使用A/D或D/A接口。近年来,慢速的A/D转换,多采用V/F(电压/频率)式A/D转换器和F/V(频率/电压)式D/A转换器等。A/D和D/A接口又有串行接口和并行接口之分。本章主要介绍并行D/A转换器。1.分辨率:指数字量对应于模拟量的分辨能力,通常用数字量的位数表示,如8位、10位、12位等,对n位的转换器,分辨率为。例如8位的转换器分辨率1LSB为1/28,用百分数表示为0.39%。12n模拟电压V与对应数字量X,可按下式计算:满量程模拟电压值-1vx2n=D/A和A/D的技术指标包括以下几方面:2.转换精度:可用绝对精度和相对精度表示,绝对精度是理论值与实际值之间的偏差,而相对精度是偏3.转换时间:完成一次数字量和模拟量之间转换所需4.量化误差:有限数字对模拟值进行离散取值(量化)而引起的误差,理论值为±1/2LSB5.DAC0832是八位的D/A转换器,内部结构见下图。10.1.1并行D/A转换器输入输出两级缓冲结构片内有两个数据缓冲器:输入寄存器和DAC寄存器,两控制端LE1和LE2分别受ILE、CS、WR1和WR2、XFER的控制。DI0~DI7为数据输入线。两级缓冲寄存器都是直通锁存器LE=1,直通(输出等于输入)LE=0,锁存(输出保持不变)转换结果从IOUT1和IOUT2以模拟电流形式输出。右图中DAC0832接成单缓冲形式和单片机接口,运算放大器组成的模拟电压输出电路,完成电流到电压的转换。DAC0832IOUT1IOUT2VREFREF+-XFERCSWR1WR2VCCILED0-D7P0P2.7WRAGNDDGND+5V-5V图10.3DAC0832的单缓冲方式接口8XX51当输入数字为全“1”时,IOUT1最大,为全“0”时,其IOUT1值最小,IOUT1和IOUT2之和为常数,当希望输出模拟电压时需外接运算放大器进行I/V转换。MOVDPTR,#7FFFH;指向0832端口地址NEXT:MOVA,#0MOVX@DPTR,A;输出0VACALLD1MS;延时1msMOVA,#99HMOVX@DPTR,A;输出3VACALLD1MS;延时1msSJMPNEXT例10-1:要求在图10.3输出端产生频率为500Hz的幅值为3V的方波信号。DAC0832的满量程电压为5V。分析:500Hz信号的周期为2ms,要求0832输出1ms高电平,1ms低电平,0V电平对应数字量0,3V对应数字量为X,可按下式计算:5255315399VVXXH解得:C语言程序:#includereg51.h#includeabsacc.h#defineda0832XBYTE[0x7fffmain()unsignedchari,jwhile(1){da0832=0;/*输出0V*/for(j=0;j<=255;j++);/*延时*/da0832=153;/*输出3V*/for(j=0;j<=255;j++);/*延时*/}}MOVDPTR,#7FFFHDA1:MOVR0,#00HDA2:MOVA,R0MOVX@DPTR,AINCR0ACALLTIMERAJMPDA2TIMER为延时子程序例10-2:单片机执行以下汇编程序可在输出端得到锯齿波电压信号,频率随意,幅值为5V,图中0832地址为7FFFH;DAC0832IOUT1IOUT2VREFREF+-XFERCSWR1WR2VCCILED0-D7P0P2.7WRAGNDDGND+5V-5V图10.3DAC0832的单缓冲方式接口8XX51C语言程序:#includereg51.h#includeabsacc.h#defineda0832XBYTE[0X7fffmain(){unsignedchari,jwhile(1)for(i=0;i<=255;i++){da0832=i;/*启动转换*/for(j=0;j<=255;j++);/*延时*/}}10.1.2单片机和并行A/D转换器的接口ALEADDAADDBADDCSTARTEOC~D0D7OECLKVREF+VREF-VCCIN0IN7GNDADC0809ADC0809是逐次逼近型八位A/D转换器,片内有八路模拟开关,可对八路模拟电压量实现分时转换。典型转换速度100μs。片内带有三态输出缓冲器,可直接与单片机的数据总线相连接。ADC0809的引脚见图,其信号意义如下:CLK时钟信号,典型值为500~640KHZ;VREF+、VREF-基准电压输入,通常VREF+接+5V、VREF-接地;ALE地址锁存允许,上升沿锁存ADDC~ADDA的地址信号。START:A/D转换启动信号,上升缘启动A/D转换。EOC:转换完成信号,启动转换后,EOC输出低电平,转换完成后输出高电平。该信号可用作向单片机提出中断申请,或者作为查询信号。OE:数字量输出允许信号,该引脚输入高电平时,转换后的数字量从D0~D7脚输出。IN0~IN7:模拟电压输入,八个引脚可分别接八路模拟信号。ADDA、ADDB、ADDC通道选择信号,其输入电平的组合选择模拟通道IN0~IN7之一:ADDC、ADDB、ADDA模拟通道000IN0001IN1……111IN7…1、采用延时方式,EOC悬空,在启动转换后延时100μs,再读转换结果;2、采用查询方式时,可将EOC接并行口(P1或P3)的某线,检测EOC变高后,再读入转换结果。3、采用中断方式可将EOC经非门反相接到单片机的中断请求端,一旦转换完成EOC变为高电平,向8XX51提出中断请求,进入中断服务后读入转换结果。如图10.12是一个中断方式的接口电路。转换结束信号EOC根据不同的方式和单片机的连结方式不同:图10.12ADC0809和8XX51的连结ALE~2731~D0D7Q0Q1Q2373G1INT1P08XX51RDWRCLKQALEDQALEADDAADDBADDCSTARTEOC~D0D7OECLKIN0IN7VREF+VREF-VCCGNDADC080988P2.7+5V11ALE上输出晶振的1/6的信号。ORG0000HLJMPMAINORG0013HINT1LJMPINT1ORG0030HMAIM:MOVR0,#60HMOVR2,#08HSETBIT1SETBEASETBEX1;开放外部中断1MOVDPTR,#7FF8H;指向0809通道0RD:MOVX@DPTR,A;启动A/D转换HE:MOVA,R2;八路巡回检测数送AJNZHE;等待中断,八路未完继续INT1:MOVXA,@DPTR;读取A/D转换结果MOV@R0,AINCDPTR;输入通道数加1INCR0;存储单元地址加1MOVX@DPTR,A;启动新通道A/DDECR2;待检通道数减1RETI#includereg51.h#defineucharunsignedcharxdatauchar*ad;uchari=0;uchardataadtab[8];voidaddv(void)interrupt2{/*中断服务*/adtab[i]=*ad;/*读入转换数据*/ad++;/*指向下一通道*/i++;/*中断方式接收*/*ad=0;/*启动转换*/}main(){EA=1;EX1=1;IT1=1;/*开中断,下沿触发中断*/ad=0x7ff8;/*置地址指针*/ad=0;/*启动A/D转换*/while(i8){};/*八路未完继续等待中断*/EA=0;/*八路转换完,关中断*/}单片机的内部资源结构、原理、应用编程及外围接口技术都已讲授完毕,大家有了开发系统的基本能力。由于学时有限,且新接口层出不穷,有了基础知识和查阅资料的能力,教材后面内容到需要时完全有能力自学。学习其他的嵌入式困难也不大了。教学内容到此结束,欢迎提出宝贵意见。
本文标题:第10章 应用接口技术
链接地址:https://www.777doc.com/doc-3545219 .html