单片机应用技术 设计一个多功能智能控制器(拓展项目) 用I2C总线芯片PCF8563设计一个日历时钟.docVIP

  • 47
  • 0
  • 约1.15万字
  • 约 17页
  • 2021-01-28 发布于北京
  • 举报

单片机应用技术 设计一个多功能智能控制器(拓展项目) 用I2C总线芯片PCF8563设计一个日历时钟.doc

PAGE PAGE 59 用I2C总线芯片PCF8563设计一个日历时钟 日历已经是我们生活中不可少的事物,电脑上有,手机上有。最让人疑惑的是:无论几天没开机,日历也总是最新的,那它是如何更新的呢? 通过本进阶学习和训练,你将能够:掌握 通过本进阶学习和训练,你将能够:掌握I2C总线使用方法,PCF8563时钟芯片的用法,设计完成一个万年历时钟。 【进阶任务】 用PCF8563时钟芯片做一个日历时钟,要求能在数码管显示:小时-分钟-秒,并且能调整时间。 【课前行动】 一、想一想、写一写 1.什么是I2C总线?它的传输协议是怎样的? 2.PCF8563芯片都有哪些功能? 3.向PCF8563芯片内部存入一个数据的流程是怎样的? 4.从PCF8563芯片内部读出一个数据的流程是怎样的? 5.比较单总线和I2C总线的优劣。 二、做一做 完成本进阶,总结经验。 【知识学习】 一、I2C总线的基础知识 I2C总线(Inter IC BUS)是Philips公司推出的芯片间串行传输总线。I2C总线是一种双向二线制总线,它的结构简单,可靠性和抗干扰性能好。目前很多公司都推出了基于I2C总线的外围器件,例如我们将要学习的24C02芯片,就是一个带有I2C总线接口的E2PROM存储器,具有掉电记忆的功能,方便进行数据的长期保存。 1.I2C总线结构 I2C总线结构很简单,只有两条线,包括一条数据线(SDA)和一条串行时钟线(SCL)。具有I2C接口的器件可以通过这两根线接到总线上,进行相互之间的信息传递。连接到总线的器件具有不同的地址,CPU根据不同的地址进行识别,从而实现对硬件系统简单灵活的控制。采用I2C总线系统结构如图 7-7所示。 图7-7 I2C总线系统结构图 其中,SCL是时钟线,SDA是数据线总线上的各器件都采用漏极开路结构,与总线相连,因此,SCL、SDA均需接上拉电阻,上拉电阻的典型值是10K。总线在空闭状态下均保持高电平。 I2C总线支持多主和主从两种工作方式,通常为主从工作方式。在主从工作方式中,系统中只有一个主器件(单片机),总线上其它器件都是具有I2C总线的外围从器件。在主从工作方式中,主器件启动数据的发送(发出启动信号),产生时钟信号,发出停止信号。为了实现通信,每个从器件均有唯一一个唯一的器件地址。 2.数据传输协议? SDA传送数据是以字节为单位进行的。每个字节必须是8位,但是传输的字节数量不受限制,首先传送的是数据的最高位。每次传送一个字节完毕,必须接收到从机发出的一个应答位,才能开始下一个字节的传输。如果没有接受到应答位,主机则产生一个停止条件结束本次的传送。那么从机应该发出什么信号算是产生了应答呢?这个过程是这样的。当主器件传送一个字节后,在第9个SCL时钟内置高SDA线,而从器件的响应信号将SDA拉低,从而给出一个应答位。 IC总线的数据传输协议如下:? (1)、主器件发出开始信号?起始信号 (2)、主器件发出第一个字节,用来选通相应的从器件。其中前7位为地址码,第8位为方向位(R/W)。方向位为“0”表示发送,方向位为“1”表示接受。? (3)、从机产生应答信号,进入下一个传送周期,如果从器件没有给出应答信号,此时主器件产生一个结束信号使得传送结束,传送数据无效。? (4)、接下来主、从器件正式进行数据的传送,这时在I2C总线上每次传送的数据字节数不限,但每一个字节必须为8位(传送的时候先送高位,再送低位)。当一个字节传送完毕时,再发送一个应答位(第9位),如上一条所述,这样每次传送一个字节都需要9个时钟脉冲。数据的传送过程如下图7-8所示: 图7-8 数据的传送时序图 1)发送起始信号 在利用I2C总线进行一次数据传输时,首先由主机发出启动信号启动I2C总线。在SCL为高电平期间,SDA出现上升沿则为启动信号。此时具有I2C总线接口的从器件会检测到该信号。 2)发送寻址信号 主机发送启动信号后,再发出寻址信号。寻址信号高7位为地址位,最低位为方向位,用以表明主机与从器件的数据传送方向。方向位为“0”,表明主机对从器件的写操作;方向位为“1”时,表明主机对从器件的读操作。 3)应答信号 I2C总线协议规定,每传送一个字节数据(含地址及命令字)后,都要有一个应答信号,以确定数据传送是否正确。应答信号由接收设备产生,在SCL信号为高电平期间,接收设备将SDA拉为低电平,表示数据传输正确,产生应答。 4)数据传输 主机发送寻址信号并得到从器件应答后,便可进行数据传输,每次一个字节,(高位在前)但每次传输都应在得到应答信号后再进行下一字节传送。如果在较长的时间没有收到从机的应答就认为从机以正确接收了数据(这点可以由编程人员自己决

文档评论(0)

1亿VIP精品文档

相关文档