蓝桥杯单片机24C02

工作原理

蓝桥杯单片机24C02是一种常见的I2C串行EEPROM存储器芯片,用于在单片机系统中存储数据。其工作原理如下:

1. I2C通信:24C02通过I2C总线与单片机进行通信,I2C总线由两根线SCL(时钟线)和SDA(数据线)组成。通过这两根线,单片机可以向24C02发送读写指令和数据。

2. 地址寻址:24C02具有256个地址,每个地址能够存储1字节的数据。单片机在与24C02通信时需要指定要读写的地址,以便准确访问数据。

3. 读写操作:单片机可以向24C02发送读指令或写指令。读操作会从指定地址读取数据并传输给单片机,写操作则是将单片机发送的数据写入到指定地址。

4. 数据保持:24C02是一种非易失性存储器,数据在断电情况下也能保持。这使得它在系统断电后能够保存重要数据,如配置信息、校准参数等。

总的来说,蓝桥杯单片机24C02通过I2C通信协议与单片机进行数据交互,通过地址寻址来指定数据存储位置,并提供读写操作来实现数据的存储和读取功能。

iic.h

/*
  程序说明: IIC总线驱动程序
  软件环境: Keil uVision 4.10 
  硬件环境: CT107单片机综合实训平台(12MHz)
  日    期: 2011-8-9
*/

#include "iic.h"

//总线启动条件
void IIC_Start(void)
{
	SDA = 1;
	SCL = 1;
	somenop;
	SDA = 0;
	somenop;
	SCL = 0;	
}

//总线停止条件
void IIC_Stop(void)
{
	SDA = 0;
	SCL = 1;
	somenop;
	SDA = 1;
}

//应答位控制
void IIC_Ack(unsigned char ackbit)
{
	if(ackbit) 
	{	
		SDA = 0;
	}
	else 
	{
		SDA = 1;
	}
	somenop;
	SCL = 1;
	somenop;
	SCL = 0;
	SDA = 1; 
	somenop;
}

//等待应答
bit IIC_WaitAck(void)
{
	SDA = 1;
	somenop;
	SCL = 1;
	somenop;
	if(SDA)    
	{   
		SCL = 0;
		IIC_Stop();
		return 0;
	}
	else  
	{ 
		SCL = 0;
		return 1;
	}
}

//通过I2C总线发送数据
void IIC_SendByte(unsigned char byt)
{
	unsigned char i;
	for(i=0;i<8;i++)
	{   
		if(byt&0x80) 
		{	
			SDA = 1;
		}
		else 
		{
			SDA = 0;
		}
		somenop;
		SCL = 1;
		byt <<= 1;
		somenop;
		SCL = 0;
	}
}


unsigned char IIC_RecByte(void)
{
	unsigned char da;
	unsigned char i;
	
	for(i=0;i<8;i++)
	{   
		SCL = 1;
		somenop;
		da <<= 1;
		if(SDA) 
		da |= 0x01;
		SCL = 0;
		somenop;
	}
	return da;
}

代码

void write_24c02(unsigned char addr,unsigned char dat)
{
	IIC_Start();
	IIC_SendByte(0xa0);
	IIC_WaitAck();
	IIC_SendByte(addr);
	IIC_WaitAck();
	IIC_SendByte(dat);
	IIC_WaitAck();
	IIC_Stop();
	
} 
unsigned char  read_24c02()
{
	unsigned char temp;
	IIC_Start();
	IIC_SendByte(0xa0);
	IIC_WaitAck();
	IIC_SendByte(addr);
	IIC_WaitAck();
	IIC_Start();
	IIC_SendByte(0xa1);
	IIC_WaitAck();
	temp=IIC_RecByte();
	 IIC_Ack(1);
	 
	IIC_Stop();
	return temp;
}

你可能感兴趣的:(单片机进阶,蓝桥杯,单片机,嵌入式硬件)