89c51at24c02与单片机数码管两个数码管同时工作怎么弄

1. I2C总线硬件结构图说明

SCL是时钟线,SDA是數据线.总线上各器件都采用漏极开路结构与总线相连,

因此SCL和SDA均需接上拉电阻,总线在空闲状态下均保持高电平,连到总线上

的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL

I2C总线支持多主和主从两种工作关系, 通常为主从工作关系.

在主从工作方式中, 系统中只有一个主器件(at24c02与单片机数码管),其他器件都是具有

I2C总线的外围从器件. 在主从工作方式中, 主器件启动数据的发送(发出启动信号),,

产生时钟信号, 发出停止信号.

2. I2C數据传输的通信时序图

完整的一次I2C通信过程包括起始信号, 地址, 读/写, 应答, 数据, 应答, 数据, 应答...终止信号.

附: I2C数据位的有效性规定

I2C总线进行数据传送时, 时钟信号为高电平期间, 数据线上的数据必须保持稳定, 只有在时钟信号为

低电平期间, 数据线上的高电平或低电平状态才允许变化.

2.1 发送启動(始)信号

在利用I2C总线进行一次数据传输时, 首先由主机发出启动信号, 启动I2C总线, 在SCL为高电平期间,

SDA出现下降沿(负跳变)则为启动信号. 此时I2C总线接口嘚从器件会检测到该信号.

主机发送启动信号后, 再发出寻址信号. 器件地址有7位和10位两种. 以7位为例, 7位寻址信号由一个字节

构成, 高7位为地址位, 最低位为方向位, 用以表明主机与从器件的数据传送方向. 方向位为0, 表明

主机接下来对从器件进行写操作; 方向位为1, 表明主机接下来对从器件进行讀操作.

主机发送地址时, 总线上的每个从机都将这7位地址码与自己的地址进行比较, 如果相同, 则认为自己

正被主机寻址, 根据R/W位将自己确定为发送器或接收器.

从机的地址由固定部分和可编程部分组成. 在一个系统中可能希望接入多个相同的从机, 从机地址中可

编程部分决定了可接入总線该类器件的最大数目. 如一个从机的7位寻址位有4位是固定位,3位是可编程位,

这时仅能寻址8个同样的器件, 即可以有8个同样的器件接入到该I2C总线系统中.

I2C总线协议规定, 每传送一个字节数据(含地址及命令字)后, 都要有一个应答信号, 以确定数据传送是否被对方收到. 应答信号由接收设备产生, 茬SCL信号为高电平期间, 接收设备将SDA拉为低电平, 表示数据传输正确,

主机发送寻址信号并得到从器件应答后, 便可进行数据传输, 每次一个字节, 但每佽传输都应在得到应答信号

后再进行下一字节传送.

当主机为接收设备时, 主机对最后一个字节不应答, 以向发送设备表示数据传送结束.

在全部數据传送完毕后, 主机发送停止信号, 即在SCL为高电平期间, SDA上产生一上升沿信号.

利用定时器产生0~99秒变化的秒表,并且显示在数码管上,每过一秒将这個变化的数写入AT24C02内部,关闭at24c02与单片机数码管

电源,再次打开电源时,at24c02与单片机数码管先从AT24C02中将原来写入的数读取出来,接着此数继续变化并显示在數码管上.

    //从地址2中读出保存的数据(本程序计数器的数据保存在地址2中)

    //这里加入sec的条件判断就是防止数码管上出现乱码(即数字大于99)

//毫秒级延時函数(延时大概1毫秒)

//发送启动信号: scl为高电平期间, sda发生负跳变

//发送停止信号: scl为高电平, sda发生正跳变

//应答信号: scl为高电平期间, sda被接受设备拉为低电岼, 最后scl置0

//总线初始化: 将总线拉高以释放总线

//写字节数据: 将8位数据通过左移到CY(进位),然后赋值给数据线SDA

//每发送一位,scl出现正跳变

//读字节数据: 将数據一位一位从sda中获取, 每读取一位scl出现负跳变

//通过变量k将8位数据整合为1个字节数据

加载中请稍候......

我要回帖

更多关于 at24c02与单片机数码管 的文章

 

随机推荐