当前位置:首页单片机与硬件 > 正文

51单片机使用AT24C02

作者:野牛程序员:2023-12-28 12:08:49单片机与硬件阅读 2756

AT24C02是一种串行EEPROM(Electrically Erasable Programmable Read-Only Memory),通常用于存储小量数据。以下是一个简单的C语言示例代码,用于在51单片机上使用AT24C02 EEPROM。

#include <reg51.h>

#define EEPROM_ADDR 0xA0   // AT24C02的I2C地址
#define DELAY_MS 10        // 延时函数的毫秒数

void delay(unsigned int ms) {
    unsigned int i, j;
    for (i = 0; i < ms; i++)
        for (j = 0; j < 112; j++);
}

void I2C_Start() {
    // 发送起始条件
}

void I2C_Stop() {
    // 发送停止条件
}

void I2C_Write(unsigned char dat) {
    // 向I2C总线写入一个字节的数据
}

unsigned char I2C_Read() {
    // 从I2C总线读取一个字节的数据
    return 0;
}

void EEPROM_WriteByte(unsigned char address, unsigned char data) {
    I2C_Start();
    I2C_Write(EEPROM_ADDR | 0);  // 写入设备地址
    I2C_Write(address);          // 写入EEPROM地址
    I2C_Write(data);             // 写入数据
    I2C_Stop();

    delay(DELAY_MS);  // 等待写入完成
}

unsigned char EEPROM_ReadByte(unsigned char address) {
    unsigned char data;

    I2C_Start();
    I2C_Write(EEPROM_ADDR | 0);  // 写入设备地址
    I2C_Write(address);          // 写入EEPROM地址

    I2C_Start();                 // 重启
    I2C_Write(EEPROM_ADDR | 1);  // 写入设备地址(读模式)
    data = I2C_Read();           // 读取数据
    I2C_Stop();

    return data;
}

void main() {
    unsigned char dataToWrite = 0x55;
    unsigned char readData;

    EEPROM_WriteByte(0, dataToWrite);  // 写入数据到地址0
    readData = EEPROM_ReadByte(0);     // 从地址0读取数据

    // 现在readData中包含从EEPROM读取的数据,你可以在这里处理它

    while (1) {
        // 你的主程序循环
    }
}


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击