————————————————————————————————————————————
参考地址:
http://blog.csdn.net/junyeer/article/details/46480863
http://blog.csdn.net/bob_fly1984/article/details/22690381
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
硬件结构:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
总线特征:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
工作方式:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
通信时序(主从工作方式):
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
————————————————————————————————————————————
AT24C02
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
主要型号:
ATMEL公司生产的AT24C系列EEPROM中具有I2C总线接口。
这类芯片可以解决掉电而造成的数据丢失的问题,可以保存数据100年,擦写100w次以上。
芯片地址固定部分为1010
型号 |
存储容量 |
AT24C01 |
128*8 |
AT24C02 |
256*8 |
AT24C04 |
512*8 |
AT24C08 |
1024*4 |
AT24C16 |
2048*8 |
芯片特性:略
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
引脚描述:
- A0/A1/A2是3条地址线,用于确定芯片的硬件地址,在上图系统中均接地,选择000
- 第4脚和第8脚为正负电源
- 第5脚为SDA串行数据输入/输出,与单片机P3.5相连
- 第6脚为SCL串行时钟输入线,与单片机P3.6相连
- SDA和SCL都需要与正电源间接一个5.1k欧上拉电阻
- 第7脚写保护功能接地
- 24C02中带有片内地址寄存器,每写入或读出一个数据字节后,该地址寄存器自动+1,实现对下一个存储单元的读写。为降低总的写入时间,一次操作可以写入多达8个字节的数据。
————————————————————————————————————————————
AT24C02应用实例
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
设计要求:
- 采用定时中断方式,设计一个0~59s变化的秒表,将每次显示在数码管上的时间存入AT24C02中
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
设计思路:
- 通过定时器50ms触发中断,每次触发中断时中断计数,到达1s时flag标识为1
- 在死循环中始终显示当前秒数
- 每次秒数变化时写入flag清零并写入AT24C02中
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
硬件清单及连线情况:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
实现代码:
1 #include <reg51.h>
2 typedef unsigned char uchar;
3 typedef unsigned int uint;
4 sbit scl = P3 ^ 0;
5 sbit sda = P3 ^ 1;
6 uchar second = 0;
7 uchar count = 0;
8 bit flag = 0;
9 uchar code table[] =
10 {
11 0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xF6, 0xE