第一章第二章三、练习题28.设12位D/A转换器DAC1210与8031接口电路连接,如图示:(1).说明电路控制原理(2).设数据存放在DABUFF为首地址的连续两个存储单元,试编写一完成D/A转换的程序。答:DAC1210是12位的D/A转换器,单片机的数据线接DAC1210的高八位DI4—DI11,数据线的P0.4到P0.7接DAC1210的数据线的低4位DI0---DI3.DAC1210连线接成双缓冲形式。地址码写高8位数据时译码器Y2有效,则B1/B2=1,写高8位数据,地址是1400H写低4位数据时译码器Y3有效,则B1/B2=0,写低4位数据,地址是1C00H将12位数据同时送到12位DA转换电路,译码器Y4有效,地址是2400H解答(2)MOVR0,#DABUFF;DABUFF是内存的首地址MOVA,@R0;首地址存放高8位数据INCR0MOVDPTR,#1400HMOVX@DPTR,A;送高8位数据MOVA,@R0取低4位数据(高4位是有效数据,低4位为0)MOVDPTR,#1C00H;MOVX@DPTR,A送低4位数据MOVDPTR,#2400HMOVX@DPTR,A打开第二级缓冲,将数据送到DA转换电路。29.试用DAC0832芯片设计一个能够输出频率为50HZ的脉冲波电路及程序。1.数据线:单片机(AT89C51)的P0.0-P0.7连接DAC0832的D0-D72.地址线:单片机的A8(P2.0)接CS片选信号,地址是0FEFFH.3.控制线:单片机写信号接WR1.单缓冲控制形式.2:输出NN个方波的程序。START:MOVDPTR,#0FEFFHMOVA,#0MOVR2,#NNST1:MOVX@DPTR,AMOVA#0FFHLCALLDELAY1MSMOVX@DPTR,AMOVA#0HLCALLDELAY19MSDJNZR2,ST1END31.A/D转换器的结束信号EOC有什么作用?根据该信号在I/O控制中的连接方式,A/D转换有几种控制方式?它们各在接口电路和程序设计上有什么特点?答:EOC信号反映A/D转换是否结束,可以用作读转换结果的状态信号,也可以作为中断请求信号。有三种控制方式:(1)。中断方式读数据。(2)查询方式读数据。(3)延时读数据。33.某A/D转换电路如图示(1)。写出A/D转换器的地址。(2)。该电路采用什么控制方式?画出该种转换的程序流程。(3)。用8051单片机汇编语言写出完成上述转换的程序。答:(1)A/D转换的启动地址是7A00H读转换是否结束的地址7A00HA/D转换读数据的地址是7B00H.8255端口A地址是7800H8255端口B地址是7900H8255端口C地址是7A00H,8255控制口地址是7B00H8255的PB口设定为输入,读取A/D转换值,PC4---PC7为输出,作为A/D转换的启动信号(启动脉冲)。PC0---PC3为输入,可以读取EOC,查询是否转换结束,PC3=1转换结束,PC3=0,正在转换。答:(2)该电路采用查询方式读数据。MOVA,#10000011B;8255PB输入,PC0—PC3输入;PC4---PC7输出(方式0)MOVDPTR,#7B00HMOVX@DPTR,A;初始化NOPMOVR0,#BUFF1MOVR2,8STA:MOVDPTR,#7A00H;送启动脉冲MOVA,#0F0HMOVX@DPTR,ANOPMOVA,00HMOVX@DPTR,ASTA0:MOVDPTR,#7A00HMOVXA,@DPTRANLA,#08H;PC3==0?JZSTA1JMPSTA0STA1:MOVDPTR,#7900HMOVXA,@DPTRMOV@R0,AINCR0DJNZR2,STARETEND;过程开始设置采样缓冲区通道号和计数器置初值送通道号和启动A/D转换结束?读转换状态N读转换结果并存缓冲区修改通道号和计数器值及缓冲区指针8路转换完?返回NYY第三章27.试用8255A的C口设计一个4*4=16的阵列,其中0—9为数字键,A---F为功能键,采用查询方式,设计一个接口电路,并编写键扫描程序。32107654BA98FEDCORG0200HKEYPRO:ACALLDISUP;调用显示子程序ACALLKEXAM;检查是否有键按下JZKEYPRO;若无键按下,转KEYPROACALLD10MS;有键按下,去抖。ACALLKEXAM;再判是否有键按下JZKEYPRO;若无键按下,转KEYPROKEY1:MOVR2,#0FEH;输出使X0行为低电平MOVR3,#0;列值和行值寄存器清零MOVR4,#0KEY2:MOVDPTR,#8200H;指向8255C口MOVA,R2;扫描第一行MOVX@DPTR,AMOVDPTR,#8000H;指向8255A口MOVXA,@DPTR;读入列值CPLAANLA,#0FH;JNZKEY3;有键按下,求列值。INCR4;无键按下,行寄存器加1MOVA,R2RLA;左移一位,扫描下一行MOVR2,AJBACC.4,KEY2;四行扫描完?AJMPKEYPROKEY3:CPLA;恢复列值模型KEY4:INCR3;求列值RRCAJCKEY4KEY5:ACALLD10MSACALLKEXAMJNZKEY5;若有键按下,转KEY5,等待键释放MOVA,R4;计算键值CLRCRLCARLCAADDA,R3MOVBUFF,A;存键值AJMPKEYADR;转查找功能键入口地址子程序D10MS:MOVR5,#14HDL:MOVR6,#10FFHDL0:DJNZR6,DL0DJNZR5,DLRETBUFFEQU30HKEXAM:MOVDPTR,#8200HMOVA,#0MOVX@DPTR,AMOVDPTR,#8000HMOVXA,@DPTRCPLAANLA,#0FHRET30.设电路如图:是回答下列问题。(1)说明图中数码管应选哪一种类型的数码管。答:选共阳极。(2)属于哪一种显示方法。静态显示。(3)4位BCD码输入转换成数码管显示和驱动(集电极开路输出)。(4)MOVR0,#60HMOVR1,#DATABUF1MOVA,@R1MOVX@R0,AINCR1MOVR0,#63HMOVA,@R1MOVX@R0,A第四章三,18题程序如下:MOVDPTR,#8300H;8255口A输入,PC4—PC7输入MOVA,#10011000B;8255口B输出,PC0---PC3输出MOVX@DPTR,AMOVR0,#MAXMOVR1,#MINMOVR2,#8MOVR3,#0STT0:MOVDPTR,#8200HMOVA,R3ORLA,#08HMOVX@DPTR,ANOPNOPNOPMOVDPTR,#8200HMOVA,R3MOVX@DPTR,AACALLDELAY0.2MSMOVDPTR,#8000HMOVXA,@DPTRMOVB,ACLRCSUBBA,@R0JNCATM0;大于MAX值,转上限报警。CLRCMOVA,BSUBBA,@R1JCATM1;小于MIN值,转下限报警。ACALLDISUP0;正常值显示。ATM3:INCR3INCR0INCR1DJNZR2,STT0ATM0:ACALLDISUP2;上限报警模式SJMPATM3ATM1:ACALLDISUP3;下限报警模式SJMPATM3END三.19.P114表4.420.某电机控制系统如图。(1)说明图中光电隔离器4N25的作用。PC0为1时,4N25输出端高电平,IRF640导通,电机运行。PC0为0时,4N25输出端低电平,IRF640不导通,电机停转。(4)8255的端口地址符号地址AD8255A/AD8255B/AD8255C/AD8255DORG200HMOVDPTR,#AD8255DMOVA,#10001000B;PC0—PC3输出,PC4—PC7输入(方式0)MOVX@DPTR,ATTT2:MOVDPTR,#AD8255CMOVXA,@DPTRJBACC.7,TTT1MOVA,#0TTT3:MOVX@DPTR,ASJMPTTT2TTT1:MOVA,#1SJMPTTT3