您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 微型计算机原理与接口技术第十一章课后答案
第十一章1.包含A/D和D/A的实时控制系统主要由哪几部分组成?什么情况下要用多路开关?什么时候要用采样保持器?答:控控制制对对象象计计算算机机传感器传感器放大滤波放大滤波多多路路开开关关MUXMUX采采样样保保持持器器S/HS/HA/DA/D转转换换器器I/OI/O接接口口多多路路开开关关MUXMUXD/AD/A转转换换器器I/OI/O接接口口传感器传感器放大滤波放大滤波执执行行部部件件……控控制制对对象象计计算算机机传感器传感器放大滤波放大滤波多多路路开开关关MUXMUX采采样样保保持持器器S/HS/HA/DA/D转转换换器器I/OI/O接接口口多多路路开开关关MUXMUXD/AD/A转转换换器器I/OI/O接接口口传感器传感器放大滤波放大滤波执执行行部部件件……对多个变化较为缓慢的模拟信号进行A/D转换时,利用多路开关将各路模拟信号轮流与A/D转换器接通,使一个A/D转换器能完成多个模拟信号的转换,节省硬件开销。一个模数转换器完成一次模数转换,要进行量化、编码等操作,每种操作均需化费一定的时间,这段时间称为模数转换时间tc。在转换时间tc内,输入模拟信号x(t)变化速率较高时,在转换过程中,输入模拟量有一个可观的△x,结果将会引入较大的误差。也就是说,在A/D转换过程中,加在转换器上的电平在波动,这样,就很难说输出的数字量表示tc期间输入信号上哪一点的电压值,在这种情况下就要用采样保持器来解决这个问题。2.什么叫采样、采样率、量化、量化单位?12位D/A转换器的分辨率是多少?答:采样就是按相等的时间间隔t从电压信号上截取一个个离散的电压瞬时值,t越小,采样率fs越高。对一个被采样的信号电压的幅度变化范围进行分层,确定某一个采样电压所在的层次,该分层的起始电平就是该采样的数字量,此过程称为量化,每个分层所包含的昀大电压值与昀小电压值之差,称为量化单位,用q表示,量化单位越小,精度越高。12位D/A转换器,2n=4096,其分辨率为1/4096*FSR=0.0244%FSR3.某一8位D/A转换器的端口地址为220H,已知延时20ms的子程序为DELAY_20MS,参考电压为+5V,输出信号(电压值)送到示波器显示,试编程产生如下波形:(1)下限为0V,上限为+5V的三角波(2)下限为1.2V,上限为4V的梯形波。答:(1)由于1LSB=5V/256=0.019V,所以下限电压对应的数据为0/0.019V=0上限电压对应的数据为5V/0.019V=256程序段如下:BEGIN:MOVAL,0;下限值MOVDX,220HUP:OUTDX,AL;D/A转换CALLDELAYINCAL;数值增1CMPAL,00H;超过上限了吗?JNZUP;没有,继续转换DECAL;超过了,数值减量DOWN:OUTDX,AL;D/A转换CALLDELAYDECAL;数值减1CMPAL,00H;低于下限了吗?JNZDOWN;没有JMPBEGIN;低于,转下一个周期(2)下限电压对应的数据为1.2V/0.019V=61=3DH上限电压对应的数据为4V/0.019V=205=0CDH产生梯形波的程序如下:BEGIN:MOVAL,3DH;下限值MOVDX,220HUP:OUTDX,AL;D/A转换CALLDELAYINCAL;数值增1CMPAL,0CDH;到达上限了吗?JNZUP;没有,继续转换OUTDX,ALCALLDELAY_20MS;到达上限延时输出方波DECALDOWN:OUTDX,AL;D/A转换CALLDELAYDECAL;数值减1CMPAL,3DH;到达下限了吗?JNZDOWN;没有,继续OUTDX,ALCALLDELAY_20MS;到达下限延时输出方波INCALJMPUP4.利用DAC0832产生锯齿波,试画出硬件连线图,并编写有关的程序。答:设下限为1.2V,上限为4V,端口地址为300H产生锯齿波的程序如下:BEGIN:MOVAL,3CHMOVDX,300HAGAIN:INCALOUTDX,AL;D/A转换CALLDELAYCMPAL,0CDHJNZAGAINJMPBEGIN5.(1)画出DAC1210与8位数据总线的微处理器的硬件连接图,若待转换的12位数字是存在BUFF开始的单元中,试编写完成一次D/A转换的程序。(2)将DAC1210与具有16位数据总线的8086相连,其余条件同(1),画出该硬件连线和编写D/A转换程序。答:(1)START:MOVDX,220H;指向220H端口MOVCL,4;移位次数MOVBX,BUFF;取要转换的数据SHLBX,CL;BX中数左移4次后向左对齐MOVAL,BH;取高8位OUTDX,AL;写入8位输入寄存器INCDX;口地址为221HMOVAL,BL;取低4位OUTDX,AL;写入4位输入寄存器INCDX;口地址为222HOUTDX,AL;启动D/A转换,AL中可为任意值(2)D11D10D9D8D7D6D5D4D3D2D1D0START:MOVDX,220H;指向220H端口MOVAX,BUFF;取要转换的数据OUTDX,AX;写入8位输入寄存器INCDXINCDX;口地址为222HOUTDX,AL;启动D/A转换,AL中可为任意值6.利用8255A和ADC0809等芯片设计PC机上的A/D转换卡,设8255A的口地址为3C0H~3C3H,要求对8个通道各采集1个数据,存放到数据段中以D_BUF为始址的缓冲器中,试完成以下工作:(1)画出硬件连接图。(2)编写完成上述功能的程序。答:(1)(2)AD_SUBPROCNEARMOVCX,8;CX作数据计数器MOVBL,00H;模拟通道号存在BL中LEADI,D_BUF;缓冲区NEXT_IN:MOVDX,3C2H;8255A端口C地址MOVAL,BLOUTDX,AL;输出通道号MOVDX,3C3H;指向控制口MOVAL,00000111B;PC3置1OUTDX,AL;送出开始启动信号NOP;延时NOPNOPMOVAL,00000110B;PC3复位OUTDX,AL;送出结束启动信号MOVDX,3C2H;C口NO_CONV:INAL,DX;读入C口内容TESTAL,80H;PC7,EOC信号JNZNO_CONV;PC7=1,未开始转换,等待NO_EOC:INAL,DX;PC7=0,已启动转换TESTAL,80H;再查PC7JZNO_EOC;PC7=0,转换未结束,等待MOVDX,3C0H;PC7=1,转换结束,DX指向A口INAL,DX;读入数据MOV[DI],AL;存入缓冲区INCDIINCBL;指向下个通道LOOPNEXT_INRETAD_SUBENDP7.试利用ADC0809,8253和8259A等芯片设计8通道A/D转换电路。系统中用8253作定时器,采用中断方式控制采样率,采样率为500Hz。设8253的通道0输入时钟脉冲为2MHz,输出端OUT0接8259A的IR2,8253的口地址为300H~303H,8259A的口地址为304H和305H,ADC0809的8个输入通道的口地址为308H~30FH,查询EOC信号和状态口地址为306H,ADC0809的输入时钟频率为640KHz,A/D转换的结果依次存入数据段中以BUFFER为始址的内存中,从通道0开始先存入各通道的第一个数据,再存放第二个数据,采集10秒钟后停止工作。要求:(1)画出硬件连线图,可以不画具体的译码电路。(2)编写8253,8259A(只需写入中断屏蔽字)的初始化程序及采集8路模拟信号的中断服务程序。答:(1)308H~30FH306H640KHz(2)因为8253的时钟输入频率为2MHz,而要求的采样频率f=500Hz,即用8253定时,每隔2ms中断一次,因此8253的分频次数(时间常数)N=2MHz/500Hz=4000。采集10秒钟,共采集10s/2ms=5000次,即8253中断次数为5000次。DATASEGMENTBUFFERDB8*5000DUP(?)DATAENDS;数据采集子程序8253初始化编程,通道0,方式2,先写低字节,后高字节,BCD计数,时间常数4000MOVDX,303HMOVAL,00110101BOUTDX,ALMOVDX,300H;通道0MOVAX,4000H;时间常数OUTDX,ALMOVAL,AHOUTDX,AL;8259A设置屏蔽字,仅允许8259A的IR2和键盘中断,其余禁止MOVAL,11111001B;屏蔽字MOVDX,305HOUTDX,AL;向屏蔽寄存器输出屏蔽字;设置数据缓冲区始址到SI中,计数初值到BX中,等待中断,每通道采完5000次后结束中断MOVSI,OFFSETBUFFER;SI指向数据缓冲区MOVBX,5000STI;开中断AGAIN:CMPBX,0JNZAGAINMOVAL,11111101B;采集完,禁止IR2中断MOVDX,305HOUTDX,ALMOVAH,4CH;退出中断INT21H;中断服务程序,对每个通道均采集一个数据,存入BUFFERADINTPROCNEARMOVCX,0008H;设置通道计数器初值MOVDX,308H;DX指向ADC通道0NEXT:OUTDX,AL;启动一次转换PUSHDX;保存通道号MOVDX,306H;DX指向状态口POLL:INAL,DX;读入EOC状态TESTAL,80H;EOC(D7)=0?即开始转换了JNZPOLL;非0,循环等待NO_END:INAL,DX;EOC=0,开始转换TESTAL,80H;再查EOC是否为1JZNO_END;EOC=0,等待转换结束POPDX;EOC=1,恢复通道地址INAL,DX;读取结果MOV[SI],AL;存储到缓冲区INCDX;DX指向下一个通道INCSI;地址指针指向下一个缓冲单元LOOPNEXT;通道计数器减1,结果非0则循环DECBX;为0,缓冲数据计数器减1MOVAL,20HMOVDX,304HOUTDX,ALSTI;开中断IRETADINTENDP8.利用8255A和AD574A设计数据采集系统,输入模拟电压为0~+10V,若每秒采集100个数据,转换后的数据字存放在W_BUF开始的缓冲器中,低字节在前,高字节在后,采满16K字节的数据后停止工作,要求:(1)画出硬件连线图。(2)编写启动AD574A工作和读取转换结果的子程序。答:(1)(2)16K字节的数据共需要8K=8192次采集;8255A的端口地址PORT_AEQU0F0H;A口地址PORT_BEQU0F1H;B口地址PORT_CEQU0F2H;C口地址PORT_CTLEQU0F3H;控制口地址;8255A控制字:A口和B口工作于方式0,A口、B口和C口的上半部分为输入,C口的下半部分为输出LEADI,W_BUFMOVCX,8192AD_CONT:MOVAL,10011010B;方式字OUTPORT_CTL,AL;输出方式字;启动A/D转换MOVAL,00HOUTPORT_C,AL;使CS,CE,CR/均为低NOP;延时NOPMOVAL,04HOUTPORT_C,AL;使CE=1,启动A/D转换NOPNOPMOVAL,03HOUTPORT_C,AL;使CE=0,CS=CR/=1,结束启动状态READ_STS:INAL,PORT_C;读STS状态TESTAL,80H;转换(STS=0)完了吗?JNZREAD_STS;否,则循环等待;转换完成,启动读操作MOVAL,01HOUTPORT_C,AL;使CS=0,CE=0,CR/=1NOPMOVAL,05H;使CE=1,CS=0,CR/=1OUTPORT_C,AL;读取数据,存入BX中INAL,PORT_A;读入高4位数据ANDAL,0FHMOVBH,AL;存入BHINAL,PORT_B;读入低8位MOVBL,AL;存入BLMOV[DI],BX;存入缓冲区INCDIINCDI;结束读操作MOVAL,03H;使CE=0,CS=1OUTPORT_C,AL;结束读操作CALLDELAY_10MS;延
本文标题:微型计算机原理与接口技术第十一章课后答案
链接地址:https://www.777doc.com/doc-4680714 .html