【蓝桥杯单片机】AT24C02笔记

本文详细介绍了AT24C02芯片的读写操作,包括写入和读取时序,以及提供相应的C语言函数实现。同时提到在与PCF8591配合使用时的数据类型转换问题。
摘要由CSDN通过智能技术生成

一、芯片手册须知

1.AT24C02为2K,器件地址如图所示,读取R为高电平1,写入W为低电平0

2.写入时序

3.读取时序

二、读写代码


//=====AT24C02写入函数=====//
void Write_24C02(unsigned char dat, unsigned char value)
{
	I2CStart();
	I2CSendByte(0xa0); //根据时序图编写,器件地址为10100000即0xa0
	I2CWaitAck();
	I2CSendByte(dat); //写入的地址,如0x01 0x02
	I2CWaitAck();
	I2CSendByte(value); //写入的参数值
	I2CWaitAck();
	I2CStop();
}


//=====AT24C02读取函数=====//
unsigned char Read_24C02(unsigned char addr)
{
	unsigned char temp;
	
	I2CStart();
	I2CSendByte(0xa0); //根据时序图
	I2CWaitAck();
	I2CSendByte(addr); //发送读取地址
	I2CWaitAck();
	I2CStart();
	I2CSendByte(0xa1);
	I2CWaitAck();
	temp = I2CReceiveByte();
	I2CSendAck(1);
	I2CStop();
	return temp;
}

//=====使用函数示例=====//
pos1_dat = Read_24C02(0x01); //读取
pos3_dat = Read_24C02(0x03);

Write_24C02(0x01,pos1_dat); //写入
DelaySMG(2000); //注意延时,等待太短字节不够时间写入
Write_24C02(0x03,pos3_dat);
DelaySMG(2000);

在我后续将AT24C02与PCF8591结合使用时,曾发生一个错误,PCF8591获取到的原始数据0-255转化为电压值显示到数码管,在存储电压值时,应该存储原始数据(字节类型),而不是直接把int型的电压值存到AT24C02,应要读取的时候再进行数据类型转换。

注:本笔记仅作个人学习使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值