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

  • 格式:doc
  • 大小:264.00 KB
  • 文档页数:15

下载文档原格式

  / 15
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第十章复习思考题答案

1. 与并行扩展方法相比,串行总线扩展方法有哪些优点?

与并行扩展方法相比,串行总线扩展传输连线少,可以使应用系统的硬件设计简化;串行总线的故障自诊断和调试也更为简单。

2. 在I2C总线中,主机和从机是如何确定的?它们在总线工作时起什么作用?

I2C总线是一个多主机总线,即总线上可以有一个或多个主机(或称主控制器件),总线运行由主机控制。主机是指启动数据的传送(发启动状态)、发出时钟信号、发出终止信号的器件。通常,主机由单片机或其它微处理器担任。被主机访问的器件叫从机,它可以是其它单片机或外围芯片,如:A/D、D/A、LED或LCD驱动、串行存储器芯片。

3. 在I2C总线主从系统中,S状态和P状态是由哪一方发出的?它们的作用是什么?

S状态和状态P是由主机发出的。在总线上出现S状态后,标志着总线处于“忙”状态。如果总线上出现P状态时,在该状态出现一段时间后,总线处于“闲”状态。

4. 简述I2C总线的数据传输过程。

传输到SDA上的数据必须为8位。每次传输的字节数不受限制。每个字节后必须跟1个应答(Acknowledge,ACK)位。数据传输时,首先传送最高位,如果从机暂时不能接收下一个字节数据,例如从机响应内部中断,那么可以使SCL保持为低电平,迫使主机处于等待状态;当从机准备就绪后,再释放SCL,使数据传输继续进行。图10-1中,ACK为应答时钟,S表示启动状态,Sr表示重新启动状态,P表示停止状态。

图10-1 I2C总线的数据传输

5. 简述I2C总线的从机地址的格式,在工作过程中器件如何识别对它的读写操作的?

每个连接在I2C总线的器件都具有唯一确定的地址。在任何时刻,I2C总线上只能有一个主机对总线实行控制权,分时地实现点对点的数据传送。器件的地址由7位组成,它与1

R/)构成了I2C总线数据传输时启动状态S之后第1个字节。

位方向位(W

当主机发送了第1个字节后,系统中的每个从机(器件)都在S状态之后把高7位与本机的地址比较,如果与本机地址一样,则该从机被主机选中,是接收数据还是发送数据由R/确定。

W

从机地址由固定位和可编程位组成。固定位由器件出厂时给定,用户不能自行设置,它是器件的标识码,通常为A6~A3。如I/O接口芯片PCF8574的器件标识码0100。从机地址中的可编程位(A3~A0)为器件的地址,当系统中使用了多个相同的器件时,从机地址中的可编程位,可使这些器件具有不同的地址;这些可编程位也规定了I2C总线上同类芯片的最大个数,如在同一系统中最多可使用8个PCF8574。

6. 采用MAX128监测8路模拟量,已知所有模拟量的电压范围为0~5V,设计程序对8路模拟量循环检测,并把结果存在内部RAM的40H单元开始的区域。

系统晶振频率为12MHz,作为I2C总线的SDA的I/O口线定义为VSDA,作为时钟线SCL的I/O口线定义为VSCL。

程序流程图:

图10-2 程序流程图汇编源代码:(部分子程序为参见教材)

VSDA BIT P1.6 ;定义虚拟I2C总线数据线端口VSCL BIT P1.7 ;定义虚拟I2C总线时钟线端口CHN EQU 50H

ORG 0000H

JMP MAIN

ORG 0030H

MAIN:

MOV R3,#8

MOV R1,#40H

MOV CHN,#0

AD_LOOP:

LCALL MAX128_READ

LCALL DELAY100MS

INC CHN

DJNZ R3,AD_LOOP

JMP MAIN

MAX128_READ:

LCALL STAT

MOV A,#01010000B ;器件地址,写操作

LCALL WRBYT ;写入一个字节

LCALL CACK ;检查应答位

JB F0,$

MOV A,CHN

SWAP A

ANL A,#01110000B

ORL A,#10001000B ;控制字节,CHN通道

LCALL WRBYT ;写入一个字节

LCALL CACK ;检查应答位

JB F0,$

LCALL STOP

LCALL DELAY100MS

LCALL STAT

MOV A,#01010001B ;器件地址,读操作

LCALL WRBYT ;写入一个字节

LCALL CACK ;检查应答位

JB F0,$

LCALL DELAY10MS ;延时10ms 转换时间

LCALL RDBYT ;读取一个字节

MOV @R1,A ;存放高字节

INC R1

LCALL MACK ;发送应答标志位

LCALL RDBYT ;读取一个字节

ANL A,#0F0H

MOV @R1,A ;存放低字节

INC R1

LCALL MNACK ;发送非应答位/数据

LCALL STOP ;发送结束IIC信号

RET

7. 单片机应用系统采用MAX128作为A/D转换器,现要求每隔50ms对CH6通道采样一次,并把采样值存在R6和R7中。

设系统晶振频率为12MHz,作为I2C总线的SDA的I/O口线定义为VSDA,作为时钟线SCL的I/O口线定义为VSCL。程序流程图如图图10-3所示。

图10-3程序流程图汇编源代码:(部分子程序为参见教材)

VSDA BIT P1.6 ;定义虚拟I2C总线数据线端口VSCL BIT P1.7 ;定义虚拟I2C总线时钟线端口ORG 0000H

JMP MAIN

ORG 0030H

MAIN:

LCALL MAX128_READ

LCALL DELAY50MS ;延时50MS

JMP MAIN

MAX128_READ:

LCALL STAT

MOV A,#01010000B ;器件地址,写操作

LCALL WRBYT ;写入一个字节

LCALL CACK ;检查应答位

JB F0,$

MOV A,#11101000B ;控制字节,6通道

LCALL WRBYT ;写入一个字节

LCALL CACK ;检查应答位

JB F0,$

LCALL STOP

LCALL DELAY10MS

LCALL STAT

MOV A,#01010001B ;器件地址,读操作

LCALL WRBYT ;写入一个字节

LCALL CACK ;检查应答位

JB F0,$

LCALL DELAY10MS ;延时10ms 转换时间