单片机原理及接口技术课后习题第9章答案.docx
《单片机原理及接口技术课后习题第9章答案.docx》由会员分享,可在线阅读,更多相关《单片机原理及接口技术课后习题第9章答案.docx(20页珍藏版)》请在冰豆网上搜索。
单片机原理及接口技术课后习题第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,设计接口电路并编制检测控制程序。
图题3接口电路原理图
接口电路原理图如图源程序:
MOVDPTR,#BFFFH;设置输入/输出口地址
COMT:
MOVXA,@DPTR;读取开关状态
NOP;延时,总线稳定
MOVX@DPTR,A;输出,驱动LED显示
NOP;延时,总线稳定
AJMPCONT
5.74LS377是8D触发器,其功能表见表,其中Di为触发器的数据输入端,Qi为触发器的数据输出端,
是使能控制端,CLK是时钟输入端,Q0为建立稳态输入条件之前,锁存器输出Q的状态。
采用它为8051单片机扩展1个8位的并行输出口。
图题5接口电路原理图
用74LS377扩展的输出口电路如图9-2所示。
用与74LS377的使能控制端
相连,当为0时,74LS377被选中,如果默认其他未用的地址线为1,则扩展的输出口地址为7FFFH。
由于MCS-51单片机的
接到74LS377的时钟输入端CLK,当CPU执行写外部输出口指令MOVX时,把数据输出到数据总线上,在
信号由低变高时,写出的数据被打入74LS377并锁存。
程序如下:
MOVDPTR,#7FFFH;输出口地址
MOVA,R6;取数据
MOVX@DPTR,A;输出,
6.74LS245是一种具有双向驱动的8位三态输出缓冲器,它的功能表见表,其中
为使能端,DIR为方向控制端,A1~A8为A端的数据输入/输出,B1~B8为B端的数据输入/输出。
当
为低电平时,DIR为高电平把A端数据传送至B端;DIR为低电平,把B端数据传送至A端。
在其他情况下不传送数据,并输出呈高阻态。
采用它为8051单片机扩展1个8位的输入口。
(1)
(2)
图9-3题6采用74LS245扩展输入口的2种电路
图9-3为采用74LS245扩展输人接口电路。
电路
(1)中,DIR上拉为高电平,74LS245数据传送方向强制为B端到A端,当为0时,且
为低电平时,使能端
为低电平,74LS245三态门打开,单片机CPU读取外设输入的数据。
其他情况下,74LS245的三态门呈高阻状态。
电路
(2)中,只有单片机读取外设数据时,=0使74LS245的使能端
有效,如果
为低电平,把74LS245数据传送方向置为A端到B端,其A→B方向的三态门打开,单片机CPU读取外设输入的数据。
=1时,使能端
无效,A端和B端处于隔离状态。
图9-3的2个电路都采用为片选,其输入口地址为0FEFFH(默认未用地址线为1)。
7.采用8155芯片为8051单片机系统扩展接口,外设为开关组(8个开关组成)和8个LED,每个开关控制1个LED。
现需要读取开关组的状态,并把其状态存储到8155芯片RAM中,若开关组的开关全部断开,则不记录。
设计接口电路并编制检测程序。
图题7接口电路
接口电路如图所示,8155的PB口用作读取开关组状态,PA口用作控制LED组,分配地址如下:
命令/状态寄存器:
0100H;PA口:
0101H;PB口:
0102H;PA和PB口为基本输入输出方式。
K0控制LED0,K1控制LED1,以此类推。
设存储开关状态的单元为STATE。
程序如下:
CMMDEQU0100H
PORTAEQU0101H
PORTBEQU0102H
PORTCEQU0103H
STATEEQU20H
MOVA,#02H;初始化,工作方式控制字
MOVDPTR,#0100H;控制寄存器地址
MOVX@DPTR,A;设置工作方式,初始化完成
MOVA,#0FFH
MOVDPTR,#0101H
MOVX@DPTR,A;上电后,熄灭LED
NOP
MOVSTATE,#0FFH;没有开关闭合
DETECT:
MOVDPTR,#0102H;PB口地址
MOVXA,@DPTR;从PB口读开关状态
MOVDPTR,#0101H;PA口地址
MOVX@DPTR,A;从PA口输出控制LED指示灯
NOP
CJNEA,#0FFH,VALID
SJMPDETECT
VALID:
MOVSTATE,A;;记录开关状态
AJMPDETECT
8.采用8255芯片为8051单片机系统扩展接口,外设为开关组(8个开关组成)和8个LED,每个开关对应1个LED。
现需要每隔50ms读取一次开关组的状态,并把其状态存储到内部RAM中。
设计接口电路并编制检测程序。
假设系统晶振频率为12MHz。
图单片机与8255接口电路
图为接口电路,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,组合后的控制字为:
,即82H。
设存储开关状态的单元为STATE,用定时器/计数器T0定时50ms,工作方式为方式1,初始值为:
,即3CB0H
PORTAEQU0100H
PORTBEQU0101H
PORTCEQU0102H
CMMDEQU0103H
STATEEQU20H
MOVSTATE简述矩阵键盘的行列扫描和线反转法原理。
(1)行列扫描法:
在按键识别过程时,依次使行线输出电平,然后检查列线的输入电平,如果所有列线的输入全为高电平,则该行无按键按下;如果不全为高电平,则被按下的按键在本行,且在输入电平变为低电平的列的交叉点上。
(2)线反转法:
第一步,首先使行线为输入,列线为输出。
列线全部输出低电平,那么,行线中变为低电平的行线为按键所在的行。
第二步,使行线变为输出,列线变为输入。
行线输出全部为低电平,那么,列线中变为低电平的列线为按键所在的列。
10.一个简单计数器的电路原理图如图所示。
要求每按一次S键,计数器计数一次,计数值送P1口显示,采用单只数码管显示,计16次后从0开始。
图题10原理图
1BIT
VALUEEQU20H
ORG0000H
LJMPMAIN
ORG1000H
MAIN:
SETB
MOVVALUE,#00
ACALLDISP;初始化显示0
WAIT0:
JBS1,WAIT0;
ACALLDEL10MS
WAIT1:
JBS1,WAIT1;判断按下
WAIT2:
JNBS1,WAIT2;
ACALLDEL10MS
WAIT3:
JNBS1,WAIT3;判断释放
INCVALUE;加1
ANLVALUE,#00001111B;仅显示低位
ACALLDISP;显示
SJMPWAIT0
0C0F0A0F0C0A简述LED数码管的静态显示和动态显示原理。
(1)静态显示:
在多位静态显示时,各个LED数码管相互独立,公共端COM接地(共阴极)或接正电源(共阳极)。
每个数码管的8个显示字段控制端分别与一个8位并行输出口相连,只要输出口输出字型码,LED数码管就立即显示出相应的字符,并保持到输出口输出新的字型码。
(2)动态显示:
多位LED数码管动态显示方式是各个LED数码管一位一位地轮流显示。
在硬件电路上,各个数码管的显示字段控制端并联在一起,由一个8位并行输出口控制;各个的LED数码管的公共端作为显示位的位选线,由另外的输出口控制。
动态显示时,各个数码管分时轮流地被选通,即在某一时刻只选通一个数码管,并送出相应的字型码,并让该数码管稳定地显示一段短暂的时间,在下一时刻选通另一位数码管,并送出相应的字型码显示,并保持显示一段时间,如此循环,即可以在各个数码管上显示需要显示的字符。
图LED数码管静态显示原理图LED数码管动态显示原理
12.用P1和P3口作为输出口,设计一个5位的LED数码管显示系统,并在显示器上显示“HELLO”。
图题12接口电路图
接口电路图如图所示,用2片74LS245提高接口的驱动能力,LED数码管为共阴型。
程序如下:
SEG_OUTEQUP3
BIT_OUTEQUP1
SPLITSPLITSPLITSPLIT0F12M一个显示电路如图所示。
请采用串行口方式0实现LED数码管的动态显示,在显示器上自左向右动态显示“654321”,每个字符保持时间为。
图习题13原题电路图
ORG0000H
LJMPSTART
ORG0030H
START:
MOVSP,#60H
MOV20H,#12HSPLITSPLITSPLIT0F0C0F0A0F0C0A12MDEL采用8155或8255扩展I/O口,设计一个显示电路显示“654321”。
图采用8255扩展的LED数码管动态显示接口电路
图为采用8255扩展的LED数码管动态显示接口电路。
图中PA口用于输出字型码,PB口用于输出显示位置,LED数码管为共阴型,显示位置采用译码器译码的方式实现。
在电路中采用同相缓冲器74LS07提高PA口的驱动能力,同相驱动器SN75451用于驱动显示器的公共端。
电路中8255的PA和PB口处于基本输入/输出方式的输出模式,PA口地址为0000H,PB口为0001H,命令寄存器地址为0003H。
定义SEG_OUT为PA口地址,BIT_OUT为PB口地址。
程序如下:
SPLITSPLITSPLITSPLIT0F12MDELDEL一个单片机的键盘显示系统采用3×4矩阵式键盘、8位LED数码管显示器。
12个按键定义为数字键0~9、功能键ENTER和STOP。
系统工作时,键入一组数值,按下ENTER键后,新数值替换原来的显示值在显示器上循环显示,按下STOP键,循环显示终止,显示数据被清除。
设计硬件电路和编写相应的程序。
图题15原理图
12MDELDEL12M简述A/D和的作用。
A/D把模拟量变成数字量。
D/A把数字量转换成模拟量。
17.在检测系统中,通常采用均值滤波的方法来消除检测数据的随机干扰,即连续采样多次,取平均值作为测量值。
采用ADC0809设计一个检测系统,对IN5通道接入的模拟采样8次,把它们的均值存放在30H单元。
图题17的MCS-51单片机与ADC0809的接口电路
18.采用ADC0809设计一个8路巡回检测系统,每隔50ms对8个回路检测1次,并把采样值存储在40H开始的区域。
系统晶振频率为12MHz。
接口电路与题17相同。
程序流程图见图。
程序如下:
ORG0000H
LJMPSTART
ORG000BH
LJMPTimer0Interrupt
START:
MOVSP,#60H
LCALLInitTimer0
MOVR0,#40H;置数据区首地址指针
MOVR6,#00H;指向模拟量输入通道0,通道地址的低八位
LOOP:
NOP
LJMPLOOP
InitTimer0:
;定时器0,定时50ms
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
SETBEA
SETBET0
SETBTR0
RET
Timer0Interrupt:
PUSHDPH
PUSHDPL
PUSHACC
MOVTH0,#3CH
MOVTL0,#0B0H
MOVDPH,#0BFH;=0,通道地址的高八位
MOVDPL,R6;模拟通道0
MOVX@DPTR,A;启动A/D转换。
WAITAD:
JB,WAITAD
MOVXA,@DPTR;读A/D转换结果
MOV@R0,A;存转换结果
INCR0;修改数据区指针
INCR6;模拟通道地址加1
CJNER6,#08,EXIT;8个通道全采样完了吗
MOVR6,#00H;8路巡检结束,重新采样模拟量输入通道IN0
MOVR0,#40H;重设数据区首地址指针
EXIT:
POPACC
POPDPL
POPDPH
RETI
END
19.采用2片ADC0809为8051单片机扩展16路模拟量输入通道。
图地址分析:
IC2:
=1,=0,8个通道地址为:
IN0:
8000H;IN1:
8001H
IN2:
8002H;IN3:
8003H
IN4:
8004H;IN5:
8005H
IN6:
8006H;IN7:
8007H
IC3:
=0,=1,8个通道地址为:
IN0:
4000H;IN1:
4001H
IN2:
4002H;IN3:
4003H
IN4:
4004H;IN5:
4005H
IN6:
4006H;IN7:
4007H
图2片ADC0809为8051单片机接口电路图
20.用8051单片机和DAC0832设计一个应用系统,输出连续的三角波。
接口电路和程序框图见图。
ORG0020H
MOVDPTR,#7FFFH;指向0832
LOOP:
MOVR2,#0FFH;循环次数
MOVA,#00H;赋初值
LOOP1:
MOVX@DPTR,A;D/A转换输出
INCA
DJNZR2,LOOP1
MOVR2,#0FEH
LOOP2:
DECA
MOVX@DPTR,A
DJNZR2,LOOP2
ALMPLOOP
END
(a)接口电路(b)程序流程框图
图题20接口电路和程序流程框图
21.用8051单片机和DAC0832设计一个应用系统,连续输出周期为秒的三角波(提示:
每10ms转换1次,三角波的周期等于定时时间×转换次数)。
接口电路如图。
程序框图见图
图题21程序流程图
ORG0000H
LJMPSTART
ORG000BH
LJMPTimer0Interrupt
START:
MOVSP,#60H
LCALLInitTimer0;定时初始化
MOVR6,#0;三角波DA转换值,起始值为0
MOVR7,#0;三角波上升下降标志,0=上升,1=下降
LOOP:
;主处理程序
NOP
NOP
ALMPLOOP
InitTimer0:
MOVTMOD,#01H
MOVTH0,#0D8H
MOVTL0,#0F0H
SETBEA
SETBET0
SETBTR0
RET
Timer0Interrupt:
MOVTH0,#0D8H
MOVTL0,#0F0H
CJNER7,#0,LOOP1
INCR6
CJNER6,#0FFH,LOOP01
MOVR7,#1
LOOP01:
MOVDPTR,#7FFFH;指向0832
MOVA,R6
MOVX@DPTR,A;D/A转换输出
SJMPRET0
LOOP1:
DECR6
CJNER6,#0,LOOP11
MOVR7,#0
LOOP11:
MOVDPTR,#7FFFH;指向0832
MOVA,R6
MOVX@DPTR,A;D/A转换输出
SJMPRET0
RET0:
RETI
END
22.用8051单片机和DAC0832设计一个应用系统,输出占空比为50%的双极性方波,幅值在–5~+5V之间。
接口电路见图,程序流程框图见图。
根据图接口电路的连接关系,可以推导出下列公式:
程序流程框图见图。
程序如下:
ORG1000H
START:
MOVDPTR,#7FFFH
LOOP:
MOVA,#00H
MOVX@DPTR,A
CALLDELAY10MS
MOVA,#0FFH
MOV@DPTR,A
CALLDELAY10MS
JMPLOOP
图接口电路图
图程序流程图