T 1010 B2B1B0(0~111B) 1高电平为读操作应答ACK 数据0 ACK……数据N 非应答NO ACK 结束STOPР在读数据之前,先写入要读的数据所在的地址。然后,主器件在“应答”位后产生一个启动信号,以终止刚才的写地址操作。随后主器件再次发出控制字,R/W位为1,。24C02接收“应答”信号后,便可读数据,可以读一字节、两字节、……N字节的数据。读完最后一个数据后,主器件发出“非应答”(NO ACK)信号和停止(STOP)信号。如图2.8所示为24系列存储器读操作时序图。Р图 2.8 24c02读时序Р3 软件设计Р3.1 软件总体流程Р软件的设计主要包括:数据从I²C器件的读写,键盘反转读键,数码管扫描显示,数据读取储存逻辑等。其总体流程图如图3.1所示。Р开始Р显示“—”状态Р键值扫描Р C DР关闭数码管Р读取IIC数据Р 任意键Р显示数据,并等待退出Р输入数据Р E FР储存输入Р放弃输入Р图 3.1 程序总体流程Р3.2 I²C器件的读写Р该模块实现 I²C器件RAM中00单元为首地址的连续4个字节的数据读写。读写原理在硬件设计中叙述,由于过程过长在此不复述,其程序流程图3.2、3.3如下:Р开始Р开始Р启动启动Р启动启动Р 写控制字Р 写控制字Р应答启动Р应答启动Р 8位地址Р 8位地址Р应答启动Р应答启动Р启动启动Р 写数据Р 写控制字Р应答启动Р应答启动Р停止启动Р 读一字节Р非应答启动Р停止启动Р 图3.2 读数据流程图图 3.3 写数据流程图Р3.3 键盘反转读键Р本设计程序中用反转法对键盘进行行列扫描,做到去抖动且一次按键只读一次键值。做一次扫描的过程包括,检测是否有按键按下,如果有则延时10ms,以消除前抖动影响,再检测有无按键按下,若有扫描键值,则确认该按键按下,再检测按键是否弹起,延时10ms,消除后抖动影响。流程图如图3.4。