单片机原理及接口技术课后习题第9章 答案.docx
- 文档编号:3665365
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:32
- 大小:321.38KB
单片机原理及接口技术课后习题第9章 答案.docx
《单片机原理及接口技术课后习题第9章 答案.docx》由会员分享,可在线阅读,更多相关《单片机原理及接口技术课后习题第9章 答案.docx(32页珍藏版)》请在冰豆网上搜索。
单片机原理及接口技术课后习题第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 DPTR,#BFFFHﻩ;设置输入/输出口地址
T:
ﻩﻩMOVXA,DPTR;读取开关状态
ﻩﻩNOPﻩﻩﻩﻩﻩ;延时,总线稳定
ﻩﻩﻩMOVXDPTR,Aﻩ;输出,驱动LED显示
ﻩﻩNOPﻩﻩﻩﻩﻩ;延时,总线稳定
ﻩAJMPCONT
5、74LS377就是8D触发器,其功能表见表9、17,其中Di为触发器得数据输入端,Qi为触发器得数据输出端,就是使能控制端,CLK就是时钟输入端,Q0为建立稳态输入条件之前,锁存器输出Q得状态。
采用它为8051单片机扩展1个8位得并行输出口。
图9、2题5接口电路原理图
用74LS377扩展得输出口电路如图9—2所示。
用P2、7与74LS377得使能控制端相连,当P2、7为0时,74LS377被选中,如果默认其她未用得地址线为1,则扩展得输出口地址为7FFFH.由于MCS-51单片机得接到74LS377得时钟输入端CLK,当CPU执行写外部输出口指令MOVX时,把数据输出到数据总线上,在信号由低变高时,写出得数据被打入74LS377并锁存。
程序如下:
ﻩMOVDPTR,#7FFFHﻩﻩ;输出口地址
ﻩMOVA,ﻩR6ﻩﻩﻩ;取数据
ﻩMOVXDPTR,Aﻩ;输出,
6、74LS245就是一种具有双向驱动得8位三态输出缓冲器,它得功能表见表9、18,其中为使能端,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端,当P2、0为0时,且为低电平时,使能端为低电平,74LS245三态门打开,单片机CPU读取外设输入得数据。
其她情况下,74LS245得三态门呈高阻状态.
ﻩ电路
(2)中,只有单片机读取外设数据时,P2、0=0使74LS245得使能端有效,如果为低电平,把74LS245数据传送方向置为A端到B端,其A→B方向得三态门打开,单片机CPU读取外设输入得数据。
P2、0=1时,使能端无效,A端与B端处于隔离状态。
图9-3得2个电路都采用P2、0为片选,其输入口地址为0FEFFH(默认未用地址线为1)。
7、采用8155芯片为8051单片机系统扩展接口,外设为开关组(8个开关组成)与8个LED,每个开关控制1个LED。
现需要读取开关组得状态,并把其状态存储到8155芯片RAM中,若开关组得开关全部断开,则不记录。
设计接口电路并编制检测程序。
ﻩ
图9、4题7接口电路
接口电路如图9、4所示,8155得PB口用作读取开关组状态,PA口用作控制LED组,分配地址如下:
命令/状态寄存器:
0100H;PA口:
0101H;PB口:
0102H;PA与PB口为基本输入输出方式。
K0控制LED0,K1控制LED1,以此类推.设存储开关状态得单元为STATE。
程序如下:
ﻩCMMDEQU 0100H
ﻩﻩPORTA EQU0101H
PORTBEQU0102H
ﻩPORTCEQU0103H
ﻩﻩSTATEEQU20H
MOVﻩA,#02H ;初始化,工作方式控制字
ﻩMOVDPTR,# 0100H ;控制寄存器地址
ﻩMOVXDPTR,ﻩA ﻩ;设置工作方式,初始化完成
MOV A,#0FFH
ﻩMOVDPTR,#0101H
ﻩﻩMOVXDPTR,A;上电后,熄灭LED
ﻩNOP
ﻩMOVSTATE,#0FFHﻩﻩ;没有开关闭合
DETECT:
MOVﻩDPTR,#0102Hﻩ ﻩ;PB口地址
ﻩﻩMOVXA,DPTR ;从PB口读开关状态
ﻩMOVﻩDPTR,#0101H;PA口地址
ﻩMOVXDPTR,Aﻩﻩ;从PA口输出控制LED指示灯
ﻩﻩNOP
ﻩCJNEA,#0FFH,VALID
ﻩSJMP DETECT
VALID:
ﻩMOV STATE,A;ﻩ;记录开关状态
AJMPDETECT
8、采用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,初始值为:
,即3CB0H
ﻩPORTA EQU0100H
ﻩﻩPORTBEQU0101H
ﻩPORTCEQU0102H
CMMDEQU0103H
ﻩﻩSTATEEQU 20H
//mianprogram
ﻩﻩACALLIni8255;
ﻩACLLIniTimer0
WAIT:
JBC TF0,DETECT
SJMPWAIT
DETECT:
ﻩMOVTH0,#3CH
ﻩﻩMOVTL0,#0B0H
ﻩMOVﻩDPTR,#PortBﻩ ;PB口地址
MOVXA,DPTR ﻩ;从PB口读开关状态
ﻩMOVDPTR,#PortA ﻩ;PA口地址
MOVX DPTR,Aﻩ;从PA口输出控制LED指示灯
NOP
ﻩMOVSTATE,A
AJMPWAIT
Ini8255:
MOVA,#82H ;初始化,工作方式控制字
ﻩﻩMOVﻩDPTR,#CMMD;控制寄存器地址
ﻩﻩMOVXDPTR,ﻩAﻩﻩ;设置工作方式,初始化完成
MOVA,#0FFH
ﻩﻩMOVDPTR,#PORTA
ﻩMOVX DPTR,A ;上电后,熄灭LED
ﻩﻩﻩNOP
ﻩRET
IniTimer0:
ﻩMOVTMOD,#01H
ﻩﻩMOV TH0,#3CH
ﻩﻩMOVTL0,#0B0H
ﻩﻩﻩSETBTR0
ﻩRET
9、简述矩阵键盘得行列扫描与线反转法原理。
(1)行列扫描法:
在按键识别过程时,依次使行线输出电平,然后检查列线得输入电平,如果所有列线得输入全为高电平,则该行无按键按下;如果不全为高电平,则被按下得按键在本行,且在输入电平变为低电平得列得交叉点上。
(2)线反转法:
ﻩ第一步,首先使行线为输入,列线为输出。
列线全部输出低电平,那么,行线中变为低电平得行线为按键所在得行。
第二步,使行线变为输出,列线变为输入。
行线输出全部为低电平,那么,列线中变为低电平得列线为按键所在得列。
10、一个简单计数器得电路原理图如图所示。
要求每按一次S键,计数器计数一次,计数值送P1口显示,采用单只数码管显示,计16次后从0开始。
图9、6 题10原理图
ﻩ1BITﻩP3、3
ﻩﻩVALUEEQU20H
ﻩORG0000H
ﻩLJMPMAIN
ﻩORG1000H
ﻩMAIN:
ﻩSETBP3、3
ﻩﻩMOVVALUE,#00
ﻩﻩACALL DISPﻩﻩﻩ;初始化显示0
ﻩWAIT0:
ﻩJB S1,WAIT0;
ﻩﻩﻩACALLDEL10MS
WAIT1:
JBS1,WAIT1ﻩﻩ;判断按下
ﻩWAIT2:
ﻩJNBS1,WAIT2;
ﻩACALLDEL10MS
ﻩWAIT3:
ﻩJNBS1,WAIT3ﻩ;判断释放
INCVALUEﻩﻩ;加1
ﻩANLVALUE,#00001111B;仅显示低位
ﻩACALLDISPﻩﻩ;显示
ﻩﻩSJMP WAIT0
//显示子程序
DISP:
MOV A,VALUEﻩﻩ;取显示信息
ﻩMOVDPTR,#SEG_TABﻩﻩ;字型码表得首地址
ﻩMOVCA,A+DPTRﻩ;通过显示信息查其字型码
ﻩMOVP1,Aﻩ;输出显示
NOP
ﻩﻩﻩRET
//延时子程序
DEL10MS:
MOVR5,#10
DELX:
ﻩMOVR6,#200ﻩ
DEL0:
ﻩNOP
ﻩﻩNOP
ﻩﻩﻩNOP
ﻩDJNZR6,DEL0
ﻩDJNZR5,DELX
ﻩRET
SEG_TAB:
DB0C0H,0F9H,0A4H,0B0H,99H, 92H, 82H,0F8H,80H,90H
DB88H, 83H, 0C6H,0A1H,86H,8EH ;以下为显示字型码表,0~9,A~F
END
11、简述LED数码管得静态显示与动态显示原理。
(1)静态显示:
在多位静态显示时,各个LED数码管相互独立,公共端接地(共阴极)或接正电源(共阳极)。
每个数码管得8个显示字段控制端分别与一个8位并行输出口相连,只要输出口输出字型码,LED数码管就立即显示出相应得字符,并保持到输出口输出新得字型码。
ﻩ(2)动态显示:
多位LED数码管动态显示方式就是各个LED数码管一位一位地轮流显示。
在硬件电路上,各个数码管得显示字段控制端并联在一起,由一个8位并行输出口控制;各个得LED数码管得公共端作为显示位得位选线,由另外得输出口控制.动态显示时,各个数码管分时轮流地被选通,即在某一时刻只选通一个数码管,并送出相应得字型码,并让该数码管稳定地显示一段短暂得时间,在下一时刻选通另一位数码管,并送出相应得字型码显示,并保持显示一段时间,如此循环,即可以在各个数码管上显示需要显示得字符.
图9、7LED数码管静态显示原理 图9、8LED数码管动态显示原理
12、用P1与P3口作为输出口,设计一个5位得LED数码管显示系统,并在显示器上显示“HELLO"。
图9、9题12接口电路图
接口电路图如图9、9所示,用2片74LS245提高接口得驱动能力,LED数码管为共阴型。
程序如下:
ﻩﻩSEG_OUTEQUP3
BIT_OUTEQU P1
//====================================
ﻩORG0000H
LJMPSTART
ﻩﻩORG0030H
START:
ﻩMOVSP,#60H
ﻩﻩMOVﻩ20H,#40H//显示" HELLO"对应字型表序号编码:
4012 23
ﻩMOV 21H,#12H
ﻩMOV22H,#23H
MOVR1,#30H
MOV R0,#20H
ﻩCALLSPLIT
ﻩﻩINCR0
INCR1
CALLSPLIT
ﻩﻩINCR0
INCR1
ﻩCALLSPLIT
RED:
ﻩACALL DSPLY1
SJMPRED
//===================================
SPLIT:
ﻩMOVA,R0
ﻩﻩANLA,#0F0H
ﻩﻩSWAP A
ﻩMOVR1,A
ﻩﻩINCR1
ﻩMOVA,R0
ﻩANLA,#0FH
ﻩMOV R1,A
ﻩRETﻩ
//===========================================
//6位显示
DSPLY1:
ﻩMOV R0, #30Hﻩﻩﻩ;显示缓冲区地址
MOVR2, #11111110Bﻩ;显示起始位置
REDO:
ACALL DISPﻩﻩ;显示1位
ﻩMOV A,R2ﻩﻩ;计算下一个显示位置
ﻩRL A
MOV R2, A
INC R0 ;修改显示缓冲区地址指针
ﻩXRL A, #10111111B;6位显示完否
JNZREDOﻩﻩ;未完,继续显示
RET ﻩﻩﻩ;返回
//==========================================
ﻩ;显示一位子程序
DISP:
ﻩMOVDPTR,ﻩ#LED_SEGﻩ;字型码表首地址
ﻩMOVﻩA,R0ﻩﻩ;取显示数据
ﻩMOVCA,A+DPTRﻩﻩ;求显示数据得字型码
MOV SEG_OUT,A;输出字型码
MOVA,ﻩR2ﻩﻩ;取显示位置
ﻩMOVﻩBIT_OUT,A;显示
ACALLﻩDL1MS
ﻩMOV A,#0FFHﻩﻩﻩﻩ;稳定显示1ms
ﻩMOV BIT_OUT,A
RET
;字型码表
LED_SEG:
ﻩDB 76H; Hﻩ序号:
00
ﻩﻩﻩDB 79Hﻩ; Eﻩﻩ序号:
01
ﻩﻩﻩDB38H ﻩ;Lﻩﻩﻩ序号:
02
ﻩﻩDB3FHﻩ; 0ﻩﻩ序号:
03
ﻩDB00H ;BLANKﻩ序号:
04
DL1MS:
ﻩMOV R5,#200;12M时延时1ms
DEL:
NOP
NOP
ﻩNOP
DJNZR5,DEL
RET
END
13、一个显示电路如图9、60所示。
请采用串行口方式0实现LED数码管得动态显示,在显示器上自左向右动态显示“654321",每个字符保持时间为0、1s。
图9、10习题13原题电路图
ﻩORG0000H
ﻩLJMP START
ﻩﻩORG 0030H
START:
ﻩMOVSP,#60H
ﻩﻩMOV20H,#12Hﻩ//显示数据
ﻩMOV21H,#34H
ﻩMOV22H,#56H
ﻩMOV R1,#30H
ﻩﻩMOV R0,#20H
ﻩCALL SPLITﻩﻩ//分离BCD码
ﻩﻩINCR0
ﻩINCR1
CALLSPLIT
ﻩﻩINCR0
ﻩINC R1
CALL SPLIT
RED:
ﻩACALLDISPLY
ﻩﻩSJMP RED
//===================================
SPLIT:
MOV A,R0
ﻩANLA,#0F0H
SWAPA
ﻩMOVR1,A
ﻩINCR1
ﻩMOVA,R0
ANL A,#0FH
ﻩMOVR1,A
ﻩRETﻩ
//================================
DISPLY:
MOVR0, #30Hﻩ;显示缓冲区首地址
MOV R2, #05Hﻩﻩ;显示位置,最右端1位
NEXT:
ﻩACALL DISP11ﻩﻩﻩ;显示
INC R0ﻩﻩﻩﻩ;修改显示缓冲区地址指针
ﻩDEC R2ﻩﻩﻩ;计算下一位显示位置
ﻩCJNE R2,#0FFH,NEXTﻩ;6位显示完否?
RETﻩﻩﻩﻩ;显示完返回
;显示1位子程序
DISP11:
MOVA, R0ﻩ;取显示数据
MOV DPTR,#SEG_TAB
ﻩMOVC A, A+DPTR;取显示数据得字型码
ﻩMOV SBUF,Aﻩﻩ;输出字型码
GOON:
JBCTI, DPLY
AJMP GOON
DPLY:
MOVA,R2
MOV P1,Aﻩﻩ;输出显示位置
ﻩACALLDL100MSﻩﻩﻩ;延时
ﻩMOVP1,#07H
ﻩﻩRET
ﻩﻩ;字型码表
SEG_TAB:
DB 0C0H, 0F9H,0A4H,0B0H, 99H, 92H, 82H, 0F8H,80H, 90H
DB88H,83H,0C6H, 0A1H, 86H,8EH
//====================================
DL1MS:
MOVR5,#200;ﻩ12M时延时1ms
DEL:
ﻩNOP
ﻩNOP
ﻩﻩNOP
DJNZR5,DEL
RET
DL100MS:
MOVR6,#100
DELX0:
ﻩACALLDL1MS
ﻩDJNZ R6,DELX0
ﻩﻩRET
ﻩENDﻩ
14、采用8155或8255扩展I/O口,设计一个显示电路显示“654321”。
图9、11 采用8255扩展得LED数码管动态显示接口电路
图9、11为采用8255扩展得LED数码管动态显示接口电路.图中PA口用于输出字型码,PB口用于输出显示位置,LED数码管为共阴型,显示位置采用译码器译码得方式实现。
在电路中采用同相缓冲器74LS07提高PA口得驱动能力,同相驱动器SN75451用于驱动显示器得公共端。
电路中8255得PA与PB口处于基本输入/输出方式得输出模式,PA口地址为0000H,PB口为0001H,命令寄存器地址为0003H。
定义SEG_OUT为PA口地址,BIT_OUT为PB口地址.程序如下:
//定义区
SEG_OUTEQU0000H //PortA输出字型码
BIT_OUTEQU0001H//PortB输出位控码
PortC EQU 0002H//
ﻩCMMD EQU0003H//命令寄存器地址
//========================
ORG0000H
ﻩﻩLJMP START
ﻩORG 0030H
START:
ﻩMOVSP,#60H
ﻩMOVDPTR,#CMMDﻩ//8255初始化
ﻩMOVA,#10000000B //方式0,A/B/C口为输出
ﻩﻩMOVXDPTR,A
NOP
ﻩNOP
MOVﻩ20H,#12Hﻩ//显示数据
ﻩMOV 21H,#24H
ﻩMOV22H,#56H
MOV R1,#30H
ﻩﻩMOV R0,#20H
ﻩCALLSPLIT
ﻩINCR0
ﻩINC R1
ﻩCALL SPLIT
INC R0
ﻩﻩINCR1
ﻩﻩCALLSPLIT
RED:
ACALLDSPLY2
ﻩﻩSJMPRED
//===================================
SPLIT:
MOVA,R0
ANLA,#0F0H
ﻩSWAPA
ﻩMOVR1,A
ﻩﻩINCR1
MOVA,R0
ﻩﻩANLA,#0FH
ﻩﻩMOV R1,A
ﻩﻩRETﻩ
//===========================================
//6位显示
DSPLY2:
MOVR0,#30Hﻩﻩﻩ;显示缓冲区首地址
MOVR2, #00000000Bﻩ;显示起始位置
REDO:
ACALL DISPﻩ;显示1位
ﻩﻩINCR2ﻩﻩﻩﻩ;计算下一次得显示位置
INCR0 ;修改显示缓冲区指针
CJNE R2,#06H, ﻩREDOﻩ;6位显示完否?
ﻩRET ﻩﻩﻩﻩ;显示结束返回
//==========================================
ﻩ;显示一位子程序
DISP:
ﻩMOVﻩDPTR,ﻩ#LED_SEG;字型码表首地址
ﻩMOVﻩA,ﻩR0ﻩﻩﻩ;取显示数据
ﻩMOVCA,A+DPTR;求显示数据得字型码
MOV ﻩDPTR,ﻩ#SEG_OUT;字型码输出口地址
ﻩMOVXDPTR,Aﻩﻩ;输出字型码
ﻩMOVA,ﻩR2ﻩ;取显示位置
ﻩMOV DPTR,ﻩ#BIT_OUT;显示位置输出口地址
MOVXDPTR,ﻩAﻩ;显示
ACALLDL1MS
ﻩMOV A,#0FFHﻩﻩﻩ;稳定显示1ms
MOVXDPTR,ﻩA
ﻩRET
ﻩﻩ;字型码表
LED_SEG:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;'0,1,2,3,4,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机原理及接口技术课后习题第9章 答案 单片机 原理 接口 技术 课后 习题