A/D转换器§11.3A/D转换器及其应用一、逐次比较式A/D转换器的基本原理补充二、8位A/D转换器ADC0809的工作原理三、8位A/D转换器ADC0809的应用一、逐次比较式A/D转换器的基本原理1、基本原理示意图2、工作原理模拟电压vi⑴当负启动转换脉冲到来时,逐次逼近寄存器清0;之后,在CLK时钟脉冲同步下,该寄存器从高位开始计数;⑵第一个CLK时钟脉冲同步下,使寄存器输出10000000B,经8位D/A转换器转换成相应的电压v0:若v0vi:比较器输出负电平,控制电路使寄存器输出01000000B;若v0vi:比较器输出正电平,控制电路使寄存器输出11000000B;即第一个CLK时钟决定了D7=1/0⑶如此,…第8个CLK时钟脉冲后,便将vi转换成了与之对应的D7~D0。⑷转换结束,V0=Vi,比较器输出0电平,控制电路立即输出一个低电平作为转换结束信号,使寄存器输出锁存到缓冲器中,从而得到输出数字量。3、主要性能参数:①转换精度——反映ADC的实际输出接近理想输出的精确程度;②转换时间——从输入启动转换信号开始到转换结束,得到稳定的数字输出量为止的时间:百ms~ns。③输入动态范围——D/A转换器允许模拟电压的输入范围:0~5V,或0~10V,或0~20V。1、ADC0809的内部组成⑴8路模拟开关及地址锁存与译码电路——选择8个模拟输入通道信号之一完成A/D转换;⑵8位A/D转换器(逐次逼近型)——完成所选通道的模拟信号的A/D转换;⑶三态输出锁存缓冲—锁存A/D转换后的数字结果;⑷控制逻辑与时序—控制芯片的工作并提供转换所需的时序。二、8位A/D转换器ADC0809的工作原理启动转换脉冲时钟脉冲转换结束信号输出允许信号2、ADC0809引脚功能⑴IN0~IN7—8路模拟电压输入;⑵ALE—地址锁存信号;⑶ADDA/B/C—8路地址线;⑷D0~D7—8位数字信号输出;⑹VREF—基准电压,VREF(+)接VCC,VREF(-)接地;⑸CLK—时钟信号(10K~1.2M);⑺START—转换启动信号;⑻EOC—转换结束信号;⑼OE—输出允许信号:1允许;0禁止,数据线高阻。ALEADDCADDBADDA通道0×××无1000IN01001IN1:::::1111IN73、ADC0809工作过程及时序0809无CS,以START信号和OE信号替代片选信号CS。⑴地址锁存信号ALE=1,将地址ADDA~C锁存于内部地址锁存器中,对应通道输入的模拟电压便送入片内转换电路;⑵ALE的后沿负跳变,作为转换启动信号START=0,转换开始;⑶转换完成后,EOC=0变为EOC=1,转换结束信号,可供CPU查询/中断请求;⑷在OE端,加正允许信号OE=1,便将D0~D7送上系统数据总线。4、ADC0809与双极性(-5V~+5V)模拟信号源的连接电路地连接电路(1)地地连接电路(2)当双极性(-5V~+5V)模拟信号源内阻教小时,使用连接电路(1)。当双极性(-5V~+5V)模拟信号源内阻教小时,使用连接电路(2)。5、ADC0809与CPU的连接⑴直接连接未用MOVAL,07H;通道号07→ALOUT84H,AL;AL→84H:*Y1,07,START,ALECALLDELAY100;延时100µs等待转换结束INAL,84H;读入转换数据:OEHLT从通道7读入转换数据的程序:⑵通过并行芯片与CPU连接①地址译码器*Y0(80H~83H)用来选通8255,*Y1(84H~87H)用来选通ADC0809的输出允许OE;②8255的PB0~PB2分别与ADC0809的ADDA~ADDC相连;8255的PC7、PB4分别与ADC0809的EOC、ALE及START相连。转换结束信号转换启动信号输出允许MOVAL,88H;8255:方式0,PB输出,PC高4位输入OUT83H,ALMOVAL,00H;PB0、PB1、PB2、PB4…=0OUT81H,AL;PB4=0ADDAL,10HOUT81H,AL;PB4=1SUBAL,10HOUT81H,AL;PB4=0LOP:INAL,82H;读入PC7:转换结束信号1TESTAL,80H;AL∧80H:EOC=PC7=1?JZLOP;EOC=PC7=0,循环等待INAL,84H;PC7=1,读入ADC0809数字量HLTPB4输出从0通道输入模拟量,经ADC0809转换后,送入CPU的程序:三、ADC0809的应用ADC0809通过8255与8086CPU相连:080982558086EOCPB0D0~D7PA→ALADDAA0ADDBA1ADDCA2OE(+5V)8255地址1C0H~1C3H0809地址1C8H~1D0H要求:依次对0809的8个通道1C8H~1D0H,各采样转换24次,并存入内存:DS:SIDATA1SEGMENT;定义数据段ORG2000HAREADB200DUP(?)…DATA1ENDSSTACK1SEGMENT;定义堆栈段DB50DUP(?)…STACK1ENDS主程序:CODE1SEGMENT;定义代码段ASSUMEDS:DATA1,SS:STACK1,CS:CODE1START:MOVAL,92H;8255:方式0,PA、PB输入MOVDX,1C3H;8255控制字地址1C3HOUTDX,AL;置8255控制字MOVAX,DATA1MOVDS,AX;置数据段基址DSMOVSI,2000H;置数据偏移地址MOVBL,8;通道数:大循环8次MOVDX,1C8H;0809通道0开始采样转换LOP1:MOVCX,18H;每个通道采样24次LOP2:INAL,DX;1→START:启动转换PUSHDX;将0809某通道地址DX压入堆栈MOVDX,1C1H;8255PB口地址LOP3:INAL,DX;读入PB0:检测EOCTESTAL,01H;AL∧01H:EOC=PB0=1?JZLOP3;EOC=PB0=0,循环等待MOVDX,1C0H;PB0=1,ADC0809数字量在PA口INAL,DX;PA口→ALMOV[SI],AL;数字量存入内存INCSIPOPDX;恢复某通道地址LOOPLOP2;CX-1→CX,CX≠0:循环采样24次INCDX;取下一通道地址DECBL;修改大循环计数值JNZLOP1;BL≠0:循环采样取下一通道HLT习题8.1说明DAC0832芯片中8位输入寄存器和8位DAC寄存器的作用和工作过程。答:⑴DAC0832的8位输入寄存器的作用是:将CPU送来的只在OUT输出指令作用瞬间存在的8位输入数据,锁存下来等待变换。其工作过程是:当*CS=0,*ILE=1时,若*WR1=0,该寄存器输出随输入而变化;若*WR1由0变为1,则*LE1=0:输入数据D0~D7被锁入该寄存器。⑵DAC0832的8位DAC寄存器的作用是:将8位输入寄存器送来的输入数据,锁存下来等待变换,以便8位输入寄存器接收CPU送来的新数据。其工作过程是:当*XFER=*WR2=0时,*LE1=1,该DAC寄存器输出随输入而变化;若*WR2由0变为1,则*LE2=0:输入数据D0~D7被锁入该DAC寄存器。8.2说明D/A变换芯片对输出电路的要求。答:D/A变换芯片输出的是电流,而实际应用系统中需要的往往是模拟电压,所以,D/A变换芯片要求输出电路,能够将输出电流转换成电压输出。8.3A/D变换器如习图8-1,试说明其运行过程和各信号的作用。答:模拟电压加到A/D变换器模拟输入端,转换启动信号START变成高电平后,开始进行D/A变换.转换结束时输出高电平的转换结束信号EOC,作为CPU的查询/中断请求信号。8.4ADC0809通过8255与系统总线相连,如习图8-2,试编写子程序完成通道IN0的A/D数据输入,要求包括8255的初始化。设8255的地址为80H~83H,ADC0809的输出允许使能地址为84H~87H。080982558086EOCPC7STAETPC3D0~D7PA→ALADDAPC0ADDBPC1ADDCPC2子程序:通道IN0的A/D数据→CPUMOVAL,00HOUT83H,AL;PC0=0MOVAL,01HOUT83H,AL;PC1=0MOVAL,02HOUT83H,AL;PC2=0选择通道0MOVAL,06HOUT83H,AL;PC3=0ADDAL,01HOUT83H,AL;PC3=1SUBAL,01HOUT83H,AL;PC3=0PC3输出启动转换LOP:INAL,82H;读入PC7:转换结束信号1TESTAL,80H;AL∧80H:EOC=PC7=1?JZLOP;EOC=PC7=0,循环等待INAL,84H;PC7=1:1→OE,0809→PA→ALHLTSTART:MOVAL,99H;8255:方式0,PA输入、PC输出OUT83H,AL;置8255控制字8.5ADC0809的接口如习图8-3,试编写⑴启动ADC0809转换的程序段;⑵检查ADC0809转换结束的程序段;⑶按习图8-3转换的是哪个通道的模拟信号。答:⑶按习图8-3,ADDA、ADDB和ADDC接+5V,所以,转换的是通道IN7的模拟信号。⑴由于地址40H的译码输出,和*IOW一起经或非门,形成转换信号START,启动ADC0809转换的程序段应为:MOVAL,00HOUT40H,AL⑵由于地址41H的译码输出,作为EOC缓冲器的选通信号,EOC缓冲器的输出接D0,故检查ADC0809转换结束的程序段应为:LOP:INAL,41HTESTAL,01HJZLOPINAL,40H8.6ADC0809与8086的接口如习图8-4,试回答:⑴启动IN7转换的程序段;⑵查询转换结束的程序段;⑶使OE有效的程序段;⑷若CLK88的重复频率为4KHZ,则CLK的重复周期是多少?8255地址:0E4H~0E7H0809地址:0E8H~0EFH⑴地址0EFH的译码输出,和*IOW一起经或非门,形成转换信号START,启动IN7转换的程序段应为:MOVAL,00HOUT0EFH,AL;ADDA~ADDC=1;START=ALE=1⑵由于EOC接8255的PB0,故检查ADC0809转换结束的程序段应为:LOP:INAL,0E5HTESTAL,01HJZLOP⑶使OE有效的程序段;INAL,0EFH;1→OE:打开输出缓冲器⑷若CLK88的重复频率为4KHZ,则CLK的重复周期是:8×1×103/(4×10-3)=2ms8.7有一个温度控制系统如习图8-5。通过8253的通道1产生周期为1s的方波,向8259的IRJ申请中断。若IRi上无中断请求信号IRQ,则CPU响应IRJ,转向相应的中断服务程序INTJ。在INTJ中启动0809,对来自温度传感器的温度IN5进行A/D转换,然后返回主程序。当A/D转换结束后,向8259的IRK发出中断请求。若IRi上无中断请求信号IRQ,则CPU响应IRK,转向相应的中断服务程序INTK.在INTK中通过接通电风扇与加热电炉来调节温度。若IRi上有中断请求信号IRQ,则程序结束返回操作系统。1.25KHZ⑴计算8253/8255/8259的地址;⑵对8253进行初始化;⑶启动ADC0809工作的程序段;⑷在固定优先级方式下,若要满足本题要求,IRI、IRJ和IRK的优先级应如何排列?⑴8259的地址:0C0H~0C7H8253的地址:0C8H~0CFH8255的地址:0D0H~0D7H0809的地址:0D8H~0DFH⑵计数初值:12501250HZ初始化程序:MOVAL,71H;01110001OUT0CBH,ALMOVAL,50HOUT80H,ALMOVAL,12HOUT80H,AL⑶0809的地址:0D8H~0DFH启动ADC0809IN5的程序段:MOVAL,05HOUT0DDH,AL⑷在固定优先级方式下,若要满足本题要求,IRI、IRJ和IRK的优先级应为IRIIRKIRJ.