Sound 发表于 2021-3-4 16:45:25

扩展库使用说明——AT24C02

本帖最后由 陈哲东 于 2021-7-1 15:26 编辑

1-硬件概述


AT24C02支持I2C,总线数据传送协议I2C,总线协议规定任何将数据传送到总线的器件作为发送器。任何从总线接收数据的器件为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式,由于A0、A1和A2可以组成000~111八种情况,即通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上,通过进行不同的配置进行选择器件。

2-引脚定义





3-电路原理图
4-硬件连接



5-图形化模块
1.AT24CXX初始化



2.AT24CXX写数据地址



3.AT24CXX读取数据地址



4.AT24CXX初始化



5.AT24CXX读取数据地址到BUF




6-范例代码


#define SOFTIIC_SCL P1_0
#define SOFTIIC_SCL_OUT {P1M1|=0x01;P1M0|=0x01;}//P1_0开漏输出
#define SOFTIIC_SDA P1_1
#define SOFTIIC_SDA_IN {P1M1|=0x02;P1M0&=~0x02;}//P1_1高阻输入
#define SOFTIIC_SDA_OUT {P1M1|=0x02;P1M0|=0x02;}//P1_1开漏输出

#include <STC8HX.h>
uint32 sys_clk = 24000000;//设置PWM、定时器、串口、EEPROM频率参数
#include "lib/oled.h"
#include "mylib/at24cxx.h"
#include "lib/delay.h"

code uint8 mylist[]={1,2,3,4,5};
xdata uint8 mylist2;

void setup()
{
oled_init();//OLED初始化
at24cxx_init();//AT24CXX初始化
P3M1&=~0x04;P3M0&=~0x04;//双向IO口
P3M1&=~0x08;P3M0&=~0x08;//双向IO口
}

void loop()
{
if(P3_2 == 0){
    delay(10);
    if(P3_2 == 0){
      at24cxx_write(0,mylist,(sizeof(mylist)/sizeof(mylist)));
      oled_clear();//OLED清屏
      oled_show_string(0,0,"ok");
      oled_display();//OLED更新显示
    }
}
if(P3_3 == 0){
    delay(10);
    if(P3_3 == 0){
      at24cxx_read(0,mylist2,(sizeof(mylist)/sizeof(mylist)));
      oled_clear();//OLED清屏
      oled_show_string(0,0,mylist2);
      oled_display();//OLED更新显示
    }
}
}

void main(void)
{
setup();
while(1){
    loop();
}
}


手册资料:





深蓝创梦 发表于 2021-9-27 10:23:27

建议增加个数据擦除的块

蓝利锋 发表于 2023-10-20 03:42:03

试了一下,翻译出错
页: [1]
查看完整版本: 扩展库使用说明——AT24C02