一、AT24C02
AT24C02是一种掉电数据不丢失的存储器,用于保存单片机运行时想要永久保存的数据。存储介质是E2PROM,通讯接口是I2C,容量有256字节。
补充存储器知识:存储器分为易失性存储器(RAM)、非易失性存储器(ROM)。RAM分为:静态存储器(SRAM)、动态存储器(DRAM)。ROM分为:掩膜ROM(Mask ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(E2PROM)、闪存(Flash)、硬盘软盘光盘等。
二、原理图
引脚 | 功能 |
VDD、VSS | 电源(1.8V~5.5V ) |
WE# | 写保护(高电平有效) |
SCL、SDA | I2C接口 |
E0、E1、E2 | I2C地址 |
三、I2C
1.I2C总线结构
I2C是Philips公司开发的一种通用数据总线,同步半双工带数据应答。
SCL和SDA配置成开漏输出模式,并且加上拉电阻。上拉电阻和开漏输出共同组成“线与”功能,解决多机通信互相干扰问题。
2.I2C时序
起始条件(Start):SCL高电平期间,SDA电平由高到低。
结束条件(Stop):SCL高电平期间,SDA电平由低到高。
发送一个字节(SendByte):SCL低电平期间,主机将数据放到SDA,然后拉高SCL,从机读取数据。循环8次。(先发送高位)
接收一个字节(ReceiveByte):SCL低电平期间,从机将数据放到SDA,拉高SCL,主机读取数据。循环8次。(先接受高位;接收数据之前,主机释放对SDA控制权)
发送应答(SendACK):接收完一个字节,主机发送一位数据,1表示应答,0表示非应答。
接收应答(ReceiveACK):发送完一个字节数据,主机接收一位数据,1表示应答,0表示非应答。(主机释放对SDA控制权)
3.I2C数据帧
发送一帧数据:向谁发什么
读取一帧数据:向谁收什么
先发送再接收数据帧:向谁收指定的什么
四、AT24C02数据帧
1.字节写
2.字节读
3.AT24Cxx芯片寻址
AT24C02器件地址,前四位固定为1010,A2、A1、A0为低电平000,R/W高电平为读地址,低电平为写地址。由此可得,AT24C02写地址为0xA0,读地址为0xA1。
五、实验
1.AT24C02数据存储
实验现象:按键1按下加一,按键2按下减一,按键3按下写入,按键4按下读取。
用到LCD1602、Key、Delay模块。
I2C.c
I2C.h
AT24C02.c
AT24C02.h
main.c
2.秒表(定时器扫描按键、数码管)
实验现象:按键1控制秒表值启停,按键2控制秒表值清零,按键3控制秒表值写入,按键4控制秒表值读出。
Timer0.c
Timer0.h
Key.c
Key.h
Nixie.c
Nixie.h
I2C.c
I2C.h
AT24C02.c
AT24C02.h
Delay.c
Delay.h
main.c