当前位置:文档之家› 单片机原理及接口技术课后习题第9章 答案

单片机原理及接口技术课后习题第9章 答案

第九章复习思考题1. 计算机系统中为什么要设置输入输出接口?输入/输出接口电路是CPU与外设进行数据传输的桥梁。

外设输入给CPU的数据,首先由外设传递到输入接口电路,再由CPU从接口获取;而CPU输出到外设的数据,先由CPU输出到接口电路,然后与接口相接的外设获得数据。

CPU与外设之间的信息交换,实际上是与I/O接口电路之间的信息交换。

2. 简述输入输出接口的作用。

I/O接口电路的作用主要体现在以下几个方面:(1)实现单片机与外设之间的速度匹配;(2)实现输出数据锁存;(3)实现输入数据三态缓冲;(4)实现数据格式转换。

3. 在计算机系统中,CPU与输入输出接口之间传输数据的控制方式有哪几种?各有什么特点?在计算机系统中,CPU与I/O接口之间传输数据有3种控制方式:无条件方式,条件方式,中断方式,直接存储器存取方式。

在无条件方式下,只要CPU执行输入/输出指令,I/O接口就已经为数据交换做好了准备,也就是在输入数据时,外设传输的数据已经传送至输入接口,数据已经在输入接口端准备好;输出数据时,外设已经把上一次输出的数据取走,输出接口已经准备好接收新的数据。

条件控制方式也称为查询方式。

CPU进行数据传输时,先读接口的状态信息,根据状态信息判断接口是否准备好,如果没有准备就绪,CPU将继续查询接口状态,直到其准备好后才进行数据传输。

在中断控制方式下,当接口准备好数据传输时向CPU提出中断请求,如果满足中断响应条件,CPU则响应,这时CPU才暂时停止执行正在执行的程序,转去执行中断处理程序进行数据传输。

传输完数据后,返回原来的程序继续执行。

直接存储器存取方式即DMA方式,它由硬件完成数据交换,不需要CPU的介入,由DMA控制器控制,使数据在存储器与外设之间直接传送。

4. 采用74LS273和74LS244为8051单片机扩展8路输入和8路输出接口,设外设8个按钮开关和8个LED,每个按钮控制1个LED,设计接口电路并编制检测控制程序。

图9.1题3接口电路原理图接口电路原理图如图9.1 源程序:MOV D PTR,#BFFFH ;设置输入/输出口地址COMT:MOVX A,@DPTR ;读取开关状态 NOP ;延时,总线稳定 MOVX @DPTR,A ;输出,驱动LED 显示 NOP;延时,总线稳定AJMP CONT5. 74LS377是8D 触发器,其功能表见表9.17,其中Di 为触发器的数据输入端,Qi 为触发器的数据输出端,G 是使能控制端,CLK 是时钟输入端,Q0为建立稳态输入条件之前,锁存器输出Q 的状态。

采用它为8051单片机扩展1个8位的并行输出口。

图9.2 题5接口电路原理图用74LS377扩展的输出口电路如图9-2所示。

用P2.7与74LS377的使能控制端G 相连,当P2.7为0时,74LS377被选中,如果默认其他未用的地址线为1,则扩展的输出口地址为7FFFH 。

由于MCS-51单片机的WR 接到74LS377的时钟输入端CLK ,当CPU 执行写外部输出口指令MOVX 时,把数据输出到数据总线上,在WR 信号由低变高时,写出的数据被打入74LS377并锁存。

程序如下: MOV DPTR, #7FFFH ;输出口地址 MOV A, R6 ;取数据MOVX @DPTR, A ;输出,6. 74LS245是一种具有双向驱动的8位三态输出缓冲器,它的功能表见表9.18,其中G为使能端,DIR 为方向控制端,A1~A8为A 端的数据输入/输出,B1~B8为B 端的数据输入/输出。

当G 为低电平时,DIR 为高电平把A 端数据传送至B 端;DIR 为低电平,把B 端数据传送至A 端。

在其他情况下不传送数据,并输出呈高阻态。

采用它为8051单片机扩展1个8位的输入口。

80C5180C 51(1) (2) 图9-3 题6采用74LS245扩展输入口的2种电路图9-3为采用74LS245扩展输人接口电路。

电路(1)中,DIR 上拉为高电平,74LS245数据传送方向强制为B 端到A 端,当P2.0为0时,且RD 为低电平时,使能端G 为低电平,74LS245三态门打开,单片机CPU 读取外设输入的数据。

其他情况下,74LS245的三态门呈高阻状态。

电路(2)中,只有单片机读取外设数据时,P2.0=0使74LS245的使能端G 有效,如果RD 为低电平,把74LS245数据传送方向置为A 端到B 端,其A→B 方向的三态门打开,单片机CPU 读取外设输入的数据。

P2.0=1时,使能端G 无效,A 端和B 端处于隔离状态。

图9-3的2个电路都采用P2.0为片选,其输入口地址为0FEFFH (默认未用地址线为1)。

7. 采用8155芯片为8051单片机系统扩展接口,外设为开关组(8个开关组成)和8个LED ,每个开关控制1个LED 。

现需要读取开关组的状态,并把其状态存储到8155芯片RAM 中,若开关组的开关全部断开,则不记录。

设计接口电路并编制检测程序。

815MCS-图9.4 题7接口电路接口电路如图9.4所示, 8155的PB 口用作读取开关组状态,PA 口用作控制LED 组,分配地址如下:命令/状态寄存器:0100H ;PA 口:0101H ;PB 口:0102H ; PA 和PB 口为基本输入输出方式。

K0控制LED0,K1控制LED1,以此类推。

设存储开关状态的单元为STA TE 。

程序如下:CMMD EQU 0100H PORTA EQU 0101H PORTB EQU 0102H PORTC EQU 0103HSTATE EQU 20HMOV A,#02H ;初始化,工作方式控制字 MOV DPTR,# 0100H ;控制寄存器地址MOVX @DPTR, A;设置工作方式,初始化完成MOV A,#0FFH MOV DPTR,#0101H MOVX @DPTR,A ;上电后,熄灭LEDNOPMOV STATE,#0FFH;没有开关闭合 DETECT: MOV DPTR,#0102H;PB 口地址MOVX A,@DPTR ;从PB 口读开关状态MOV DPTR,#0101H ;PA 口地址MOVX @DPTR,A;从PA 口输出控制LED 指示灯NOPCJNE A,#0FFH,VALID SJMP DETECTVALID: MOV STATE,A;;记录开关状态AJMP DETECT8. 采用8255芯片为8051单片机系统扩展接口,外设为开关组(8个开关组成)和8个LED ,每个开关对应1个LED 。

现需要每隔50ms 读取一次开关组的状态,并把其状态存储到内部RAM 中。

设计接口电路并编制检测程序。

假设系统晶振频率为12MHz 。

图9.5 单片机与8255接口电路图9.5为接口电路, PA 、PB 、PC 和控制寄存器地址分别为:0000H 、0001H 、0002H 和0003H 。

根据开关K0~K7状态控制LED0~LED7的显示状态,K0控制LED0,依此类推。

设置8255的工作方式,PA 口外接开关,为方式0的输入,PB 口外接LED ,为方式0的输出,则工作方式控制字的标志位D7为1,D6~D3(A 组):0000, D2~D0(B 组):010,组合后的控制字为:10000010,即82H 。

设存储开关状态的单元为STATE ,用定时器/计数器T0定时50ms ,工作方式为方式1,初始值为:1553650216=-M T ms,即3CB0HPORTA EQU 0100H PORTB EQU 0101H PORTC EQU 0102H CMMD EQU 0103H STATE EQU 20H //mian programACALL Ini8255; ACLL IniTimer0 WAIT:JBC TF0,DETECTSJMP WAITDETECT: MOV TH0,#3CHMOV TL0,#0B0HMOV DPTR, #PortB ;PB口地址MOVX A,@DPTR ;从PB口读开关状态MOV DPTR, #PortA ;PA口地址MOVX @DPTR,A ;从PA口输出控制LED指示灯NOPMOV STATE,AAJMP WAITIni8255: MOV A,#82H ;初始化,工作方式控制字MOV DPTR,#CMMD ;控制寄存器地址MOVX @DPTR, A ;设置工作方式,初始化完成MOV A,#0FFHMOV DPTR,#PORTAMOVX @DPTR,A ;上电后,熄灭LEDNOPRETIniTimer0: MOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HSETB TR0RET9. 简述矩阵键盘的行列扫描和线反转法原理。

(1)行列扫描法:在按键识别过程时,依次使行线输出电平,然后检查列线的输入电平,如果所有列线的输入全为高电平,则该行无按键按下;如果不全为高电平,则被按下的按键在本行,且在输入电平变为低电平的列的交叉点上。

(2)线反转法:第一步,首先使行线为输入,列线为输出。

列线全部输出低电平,那么,行线中变为低电平的行线为按键所在的行。

第二步,使行线变为输出,列线变为输入。

行线输出全部为低电平,那么,列线中变为低电平的列线为按键所在的列。

10. 一个简单计数器的电路原理图如图所示。

要求每按一次S键,计数器计数一次,计数值送P1口显示,采用单只数码管显示,计16次后从0开始。

图9.6 题10原理图1 BIT P3.3VALUE EQU 20HORG 0000HLJMP MAINORG 1000HM AIN: SETB P3.3MOV VALUE,#00ACALL DISP ;初始化显示0W AIT0: JB S1,WAIT0;ACALL DEL10MSW AIT1: JB S1,WAIT1 ;判断按下W AIT2: JNB S1,WAIT2;ACALL DEL10MSW AIT3: JNB S1,WAIT3 ;判断释放INC VALUE ;加1ANL VALUE,#00001111B ;仅显示低位ACALL DISP ;显示SJMP WAIT0//显示子程序DISP: MOV A,VALUE ;取显示信息MOV DPTR, #SEG_TAB ;字型码表的首地址MOVC A,@A+DPTR ;通过显示信息查其字型码MOV P1,A ;输出显示NOPRET//延时子程序DEL10MS:MOV R5,#10DELX: MOV R6,#200DEL0: NOPNOPNOPDJNZ R6,DEL0DJNZ R5,DELXRETS EG_TAB: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90HDB 88H, 83H, 0C6H, 0A1H, 86H, 8EH ;以下为显示字型码表,0~9,A~FEND11. 简述LED数码管的静态显示和动态显示原理。

相关主题