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

上传人:b****3 文档编号:3665365 上传时间:2022-11-24 格式:DOCX 页数:32 大小:321.38KB
下载 相关 举报
单片机原理及接口技术课后习题第9章 答案.docx_第1页
第1页 / 共32页
单片机原理及接口技术课后习题第9章 答案.docx_第2页
第2页 / 共32页
单片机原理及接口技术课后习题第9章 答案.docx_第3页
第3页 / 共32页
单片机原理及接口技术课后习题第9章 答案.docx_第4页
第4页 / 共32页
单片机原理及接口技术课后习题第9章 答案.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

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

《单片机原理及接口技术课后习题第9章 答案.docx》由会员分享,可在线阅读,更多相关《单片机原理及接口技术课后习题第9章 答案.docx(32页珍藏版)》请在冰豆网上搜索。

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

单片机原理及接口技术课后习题第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,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 实习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1