单片机汇编9.ppt
《单片机汇编9.ppt》由会员分享,可在线阅读,更多相关《单片机汇编9.ppt(67页珍藏版)》请在课桌文档上搜索。
1、D/A和A/D转换器接口,A/D及D/A转换器的性能指标,分辨率(Resolution)分辨率是指A/D转换器能分辨的最小输出模拟增量,取决于输入数字量的二进制位数。转换精度(Conversion Accuracy)转换精度指满量程时ADC的实际模拟输出值和理论值的接近程度。量程(满刻度范围FULL Scale Range)量程是指输入模拟电压的变化范围。例如某转换器具有10V的单极性范围或-5+5V的双极性范围。则它们的量程都为10V。满刻度只是个名义值,实际的A/D,D/A转换器的最大输出值总是比满刻度值小1/2n,n为转换器的位数。例如12位的A/D转换器,其满刻度值为10V,而实际的最
2、大输出值为:,A/D转换器的主要技术指标,线性度(Linearity)线性度是指ADC的实际转换特性曲线和理想直线之间的最大偏移差。转换时间(Conversion Time)从发出启动转换开始直至获得稳定的二进代码所需的时间称为转换时间,转换时间与转换器工作原理及其位数有关,同种工作原理的转换器,通常位数越多,其转换时间越长。,D/A转换器的主要技术指标,D/A转换器的主要技术指标与A/D转换器基本相同,只是转换时间的概念略有不同,D/A转换器的转换时间又叫建立时间,它是指当输入的二进制代码从最小值突然跳变至最大值时,其模拟输出电压相应的满度跳跃并达到稳定所需的时间。一般而言,D/A的转换时间
3、比A/D要短得多。,DAC芯片类型及接口方法,各种类型的DAC芯片都具有数字量输入端和模拟量输出端及基准电压端。数字输入端有以下几种类型:无数据锁存器,带单数据锁存器,带双数据锁存器,可接收串行数字输入。第1种在与单片机接口时,要外加锁存器,第2种和第3种可直接与单片机接口,第4种与单片机接口十分简单,接收数据较慢,适用于远距离现场控制的场合。模拟量输出有两种方式:电压输出及电流输出。电压输出的DAC芯片相当于一个电压源,其内阻很小,选用这种芯片时,与它匹配的负载电阻应较大。电流输出的芯片相当于电流源,其内阻较大,选用这种芯片时,负载电阻不可太大。,在实际应用中,常选用电流输出的DAC芯片实现
4、电压输出,如图所示,无内部数据锁存器的DAC芯片,尤其是分辩率高于8位的DAC芯片,在设计与8位单片机接口时,要外加数据锁存器作为缓冲器。下图是一种单缓冲器接口。,在10位DAC芯片与8位单片机之间接入两个锁存器,锁存器A锁存10位数据中的低8位,锁存器B锁存高2位。单片机分两次输出数据,先输出低8位数据到锁存器A,后输出高2位数据到锁存器B。设锁存器A和锁存器B的地址分别为002CH和002DH,则执行下列指令后完成一次D/A转换:MOV DPTR,#002CHMOV A,#DATA8MOVX DPTR,A;输出低8位INC DPTRMOV A,#DATA2MOVX DPTR,A;输出高2位
5、这种接口存在一个问题,就是在输出低8位数据和高2位数据之间,会产生“毛剌”现象,如图3.3(b)所示。假设两个锁存器原来的数据为0001111000,现在要求转换的数据为0100001011,新数据分两次输出,第一次输出低8位,这时DAC将把新的8位数据的与原来数据的高2位一起组成0000001011转换成输出电压,而该电压是不需要的,即所谓“毛刺”。,避免产生毛刺的方法之一是采用双组缓冲器结构,如下图所示。,单片机先把低8位数据选通输入锁存器1中,然后将高2位数据选通输入锁存器3中,并同时选通锁存器2,使锁存器2与锁存器3组成10位锁存器向DAC同时送入10位数据由DAC转换成输出电压。当地
6、址如图中所示时,执行以下程序完成一次D/A转换:MOV DPTR,#6000HMOV A,#DATA8MOVX DPTR,A;输出低8位数据INC DPTRMOV A,#DATA2MOVX DPTR,A;输出高2位,并同时输出10位数据,典型D/A转换器芯片DAC0832及接口 DAC0832是一个8位D/A转换器芯片,单电源供电,从+5V+15V均可正常工作,基准电压的范围为10V,电流建立时间为1s,CMOS工艺,低功耗20mm。其内部结构由1个8位输入寄存器、1个8位DAC寄存器和1个8位D/A转换器组成。,DAC0832的内部结构,DAC0832是典型的带内部双数据缓冲器的8位D/A芯
7、片。图中LE是寄存命令,当LE=1时,寄存器输出随输入变化,当LE=0时,数据锁存在寄存器中。当ILE端为高电平,CS与WR1同时为低电平时,使得LE1=1;当WR1变为高电平时,输入寄存器便将输入数据锁存。当XFER与WR2同时为低电平时,使得LE2=1,DAC寄存器的输出随寄存器的输入变化,WR2上升沿将输入寄存器的信息锁存在该寄存器中。,DAC0832的工作方式 DAC0832利用WR1、WR2、ILE、XFER 控制信号可以构成三种不同的工作方式。直通方式 WR1=WR2=0时,数据可以从输入端经两个寄存器直接进入D/A转换器。2)单缓冲方式两个寄存器之一始终处于直通,即WR1=0或W
8、R2=0,另一个寄存器处于受控状态。3)双缓冲方式 两个寄存器均处于受控状态。这种工作方式适合于多模拟信号同时输出的应用场合。,单缓冲方式的接口与应用1单缓冲方式连接 所谓单缓冲方式就是使DAC0832的两个输入寄存器中有一个处于直通方式,而另一个处于受控锁存方式。为使DAC寄存器处于直通方式,应使WR2=0和XFER=0。为此可把这两个信号固定接地,或如电路中把WR2与WR1相连,把XFER与CS相连。为使输入寄存器处于受控锁存方式,应把WR1接8051的WR,ILE接高电平。此外还应把CS接高位地址线或地址译码输出,以便于对输入寄存器进行选择。,DAC0832单缓冲方式接口,2单缓冲方式应
9、用举例-波形发生器在一些控制应用中,需要有一个线性增长的电压(锯齿波)来控制检测过程、移动记录笔或移动电子束等。对此可通过在DAC0832的输出端接运算放大器,由运算放大器产生锯齿波来实现,其电路连接如图所示。,图中的DAC0832工作于单缓冲方式,其中输入寄存器受控,而DAC寄存器直通。假定输入寄存器地址为7FFFH,产生锯齿波的程序清单如下:MOV A,#00H;取下限值 MOV DPTR,#7FFFH;指向0832口地址MM:MOVX DPTR,A;输出 INC A;延时 NOP NOP NOP SJMP MM;反复执行上述程序就可得到如下图所示的锯齿波。,几点说明:(1)程序每循环一次
10、,A加1,因此实际上锯齿波的上升边是由256个小阶梯构成的,但由于阶梯很小,所以宏观上看就如图中所画的先行增长锯齿波。,(2)可通过循环程序段的机器周期数,计算出锯齿波的周期。并可根据需要,通过延时的方法来改变波形周期。若要改变锯齿波的频率,可在AJMP MM指令前加入延迟程序即可。延时较短时可用NOP指令实现(本程序就是如此),需要延时较长时,可以使用一个延长子程序。延迟时间不同,波形周期不同,锯齿波的斜率就不同。(3)通过A加1,可得到正向的锯齿波,反之A减1可得到负向的锯齿波。(4)程序中A的变化范围是0255,因此得到的锯齿波是满幅度的。如要求得到非满幅锯齿波,可通过计算求的数字量的处
11、置和终值,然后在程序中通过置初值和终值的方法实现。,产生矩形波电压的参考程序:ORG 1100HSTART:MOV DPTR,#7FFFH;送DAC0832口地址LOOP:MOV A,#dataH;送高电平数据 MOVX DPTR,A LCALL DELAYH;调用延时子程序 MOV A,#dataL;送低电平数据 MOVX DPTR,A LCALL DELAYL;调用延时子程序 SJMP LCALL,执行上述程序就可得到如下图所示的矩形波,几点说明:(1)以上程序产生的是矩形波,其低点平的宽度由延时子程序DELAYL所延时的时间来决定,高电平的宽度则由DELAYH所延时的时间决定。(2)改变
12、延时子程序DELAYL和的DELAYH延时时间,就可改变矩形波上下沿的宽度。若DELAYL=DELAYH(两者延时一样),则输出的是方波。(3)改变上限值或下限值便可改变矩形波的幅值;单极性输出时为0-5V或0+5V;双极性输出时为-5V+5V。,双缓冲方式的接口与应用 在多路D/A转换的情况下,若要求同步转换输出,必须采用双缓冲方式。DAC0832采用双缓冲方式时,数字量的输入锁存和D/A转换输出是分两步进行的。第一,CPU分时向各路D/A转换器输入要转换的数字量并锁存在各自的输入寄存器中。第二,CPU对所有的D/A转换器发出控制信号,使各路输入寄存器中的数据进入DAC寄存器,实现同步转换输
13、出。下图为两片DAC0832与8031接实现的双缓冲方式连接电路,能实现两路同步输出。,8051与DAC0832的双缓冲方式接口,实现两路同步输出的程序如下:MOV DPTR,#0DFFFH;送0832(1)输入锁存器地址 MOV A,#data1;data1送0832(1)输入锁存器 MOVX DPTR,A;MOV DPTR,#0BFFFH;送0832(2)输入锁存器地址 MOV A,#data2;data2送0832(2)输入锁存器 MOVX DPTR,A;MOV DPTR,#7FFFH;送两路DAC寄存器地址 MOVX DPTR,A;两路数据同步转换输出,8051与12位DAC的接口DA
14、C1208的内部结构和原理 与DAC0832相似,DAC1208也是双缓冲器结构,输入控制线与DAC0832也很相似,和用来控制输入寄存器,和用来控制DAC寄存器,但增加了一条控制线BYTE1/BYTE2,用来区分输入8位寄存器和4位寄存器,当BYTE1/BYTE2=1时,两个寄存器都被选中,BYTE1/BYTE2=0时,只选中4位输入寄存器。,DAC1208内部结构框图,8051和DAC1208的连接,MOV R0,#21H;8位输入寄存器地址MOV R1,#DIG;高8位数据地址MOV A,R1;取高8位数据MOVX R0,A;送DAC1208DEC R0;4位输入寄存器地址INC R1;
15、低4位数据地址MOV A,R1;取低4位数据SWAP A;与高4位数交换MOVX R0,A;送DAC1208MOV R0,#22H;DAC1208的DAC寄存器地址MOVX R0,A;完成12位D/A转换。,设4位输入寄存器地址为20H,8位输入寄存器地址为21H,采用2根译码器输出线作为DAC208的(对应l地址20H和21H)及(对应地址22H),设12位数据存放在内部RAM区的DIG和DIG+1单元中,高8位存于DIG,低4位存于DIG+1。转换程序如下:,ADC接口技术,阶梯波比较式ADC工作原理:,转换开始时,计数器复0,DAC的输出为Vd=0。若输入电压Vi为正,则比较器输出Vc为
16、正,与门打开,计数器对时钟脉冲进行计数,DAC输出即随计数脉冲的增加而增加,如图所示,当Vd Vi时,比较器输出变负,与门关闭,停止计数。计数器的计数值正比于输入电压,完成了从输入模拟量电压到计数器的计数值数字量的转换。,工作原理是单片机通过P1口发送一个8位数据到DAC,比较器对DAC的输出Vs和需要转换的模拟输入量Vx进行比较。比较的结果(为0,表示VsVx)送到单片机的T0引脚,单片机通过测试引脚T0来确定与模拟输入量Vx合适的数值。,用单片机IO口实现比较式ADC,编程思想是先从P1口输出数据10000000B然后测T0,如果T0为0则保持数据最高位D7为1,如果T0为1则清“0”D7
17、位,再从P1口输出数据1000000B,判T0,若T0为0则保持D6位为1,若T0为1则清“0”D6位,如此进行,最后从P1口输出1B,判T0,若T0为0则保持D0位为1,若T0为1则清“0”D0位,至此便得到与Vx对应的8位数值。,AD:MOV R7,#08H;R7存放比较次数 MOV A,#0 MOV R6,#0;R6保存中间结果 MOV R5,#0;R5存放新的测试数据 SETB C;置1进位位CL1:MOV A,R5 RRC A;(R5)带C右环移一位 MOV R5,A ORL A,R6;与R6值相加 MOV P1,A;从P1口输出测试数据 JB T0,L2;若T0为1则不保留此位 M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 汇编

链接地址:https://www.desk33.com/p-246787.html