|
本帖最后由 陈哲东 于 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[512];
- 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[0])));
- 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[0])));
- oled_clear();//OLED清屏
- oled_show_string(0,0,mylist2);
- oled_display();//OLED更新显示
- }
- }
- }
- void main(void)
- {
- setup();
- while(1){
- loop();
- }
- }
复制代码
手册资料:
AT24C02.PDF
(4.9 MB, 下载次数: 42)
|
|