【AT24C02】存储模块-51单片机程序分析

视频讲解

简介

AT24C02是一款串行电可擦除编程只读存储器(EEPROM)。存储器可存储256个字节数据,分为16页每页16字节,随机字寻址需要8位数据字地址,具有低功耗CMOS技术,自定时编程周期。AT24C02为SOT23-5、SOP-8、DIP-8三种封装。由于其具有接口方便,体积小,数据掉电不丢失等特点,在仪器仪表及工业自动化控制中得到广泛的应用。

 

 

【AT24C02】存储模块-51单片机程序分析

 

【AT24C02】存储模块-51单片机程序分析

【AT24C02】存储模块-51单片机程序分析AT24C02采用的是IIC的通信方式,因此只需要掌握IIC的通信协议即可轻松的使用AT24C02,具体的IIC讲解请看 【IIC】IIC通信协议-51单片机程序分析 - 电子校园网

软件流程图

AT24C02读一个字节

【AT24C02】存储模块-51单片机程序分析

AT24C02写一个字节

【AT24C02】存储模块-51单片机程序分析

程序分析

at24c02.c

/**********************************
作者:特纳斯电子
网站:https://www.mcude.com
联系方式:46580829(QQ)
淘宝店铺:特纳斯电子
**********************************/

/**********************************
包含头文件
**********************************/
#include "at24c02.h"


/**********************************
函数定义
**********************************/
/****
*******AT24C02延时函数
*****/
void At24c02_Delay(void)
{
	uchar i;
	i=10;
	while(i--);
}

/****
*******AT24C02延时函数
*****/
void At24c02_Delay1(uchar x)
{
    unsigned int i;
    for(i=0;i<x;i++);
}

/****
*******总线初始化,拉高释放总线函数
*****/
void At24c02_Init(void)
{
    AT24C02_SCL=1; 
    At24c02_Delay(); 
    AT24C02_SDA=1; 
    At24c02_Delay();
}

/****
*******开始信号,上升沿
*****/
void At24c02_Start(void)
{
    AT24C02_SDA=1;	//发送起始条件的数据信号
    At24c02_Delay(); 
    AT24C02_SCL=1; 	//发送起始条件的时钟信号
    At24c02_Delay();
    AT24C02_SDA=0;	//发送起始信号
    At24c02_Delay(); 
    AT24C02_SCL=0;	//钳住IIC总线,准备发送或接收数据 
    At24c02_Delay();
}

/****
*******结束信号,下降沿
*****/
void At24c02_Stop(void)
{
    AT24C02_SDA=0;	//发送结束条件的数据信号 
    At24c02_Delay(); 
    AT24C02_SCL=1;	//发送结束条件的时钟信号 
    At24c02_Delay(); 
    AT24C02_SDA=1;	//发送结束信号 
    At24c02_Delay();
}

/****
*******IIC总线时钟或应答信号
*****/
void At24c02_Clock(void)
{
    uchar i=0;
    AT24C02_SCL=1; 
    At24c02_Delay();
    while ((AT24C02_SDA==1)&&(i<255))
        i++;
    AT24C02_SCL=0; 
    At24c02_Delay();
}

/****
*******写一个字节
*****/
void At24c02_Writex(uchar j)
{  
    uchar i,temp;
    temp=j;
    for (i=0;i<8;i++)
    {
        temp=temp<<1;
        AT24C02_SCL=0; 
        At24c02_Delay();
        AT24C02_SDA=CY;		//最高位移入PSW寄存器CY位中 
        At24c02_Delay(); 
        AT24C02_SCL=1; 
        At24c02_Delay();
    }
    AT24C02_SCL=0; 
    At24c02_Delay(); 
    AT24C02_SDA=1; 
    At24c02_Delay();
}

/****
*******读取一个字节
*****/
uchar At24c02_Readx(void)
{
    uchar i,j,k=0;
    AT24C02_SCL=0; 
    At24c02_Delay(); 
    AT24C02_SDA=1;
    for (i=0;i<8;i++)
    {  
        At24c02_Delay(); 
        AT24C02_SCL=1; 
        At24c02_Delay();
        if (AT24C02_SDA==1) 
            j=1;
        else 
            j=0;
        k=(k<<1)|j;		//将8个独立的位放在一个字节中
        AT24C02_SCL=0;
    }
    At24c02_Delay(); 
    return(k);
}

/****
*******向AT24C02的地址address中写入一个字节的数据info
*****/
void At24c02_Write_Add(uchar address,uchar info)
{
    At24c02_Start(); 
    At24c02_Writex(0xa0);
    At24c02_Clock(); 
    At24c02_Writex(address);
    At24c02_Clock(); 
    At24c02_Writex(info);
    At24c02_Clock(); 
    At24c02_Stop();
    At24c02_Delay1(50);
}

/****
*******从AT24C02的地址address中读取一个字节的数据
*****/
uchar At24c02_Read_Add(uchar address)
{
    uchar i;
    At24c02_Start(); 
    At24c02_Writex(0xa0);
    At24c02_Clock(); 
    At24c02_Writex(address);
    At24c02_Clock(); 
    At24c02_Start();
    At24c02_Writex(0xa1); 
    At24c02_Clock();
    i=At24c02_Readx(); 
    At24c02_Stop();
    At24c02_Delay1(10);
    return(i);
}

at24c02.h

/**********************************
作者:特纳斯电子
网站:https://www.mcude.com
联系方式:46580829(QQ)
淘宝店铺:特纳斯电子
**********************************/

#ifndef _AT24C02_H_
#define _AT24C02_H_


/**********************************
包含头文件
**********************************/
#include "main.h"


/**********************************
PIN口定义
**********************************/
sbit AT24C02_SCL=P1^5;																//AT24C02时钟引脚
sbit AT24C02_SDA=P1^6;																//AT24C02数据引脚


/**********************************
函数声明
**********************************/
void At24c02_Init(void);  														//At24c02初始化函数
void At24c02_Write_Add(uchar address,uchar info);			//At24c02写入数据函数
uchar At24c02_Read_Add(uchar address);								//At24c02读取数据函数

#endif

数据手册

1733822909-AT24C02

下载权限
查看
  • 免费下载
    评论并刷新后下载
    登录后下载
  • {{attr.name}}:
您当前的等级为
登录后免费下载登录 小黑屋反思中,不准下载! 评论后刷新页面下载评论 支付以后下载 请先登录 您今天的下载次数(次)用完了,请明天再来 支付积分以后下载立即支付 支付以后下载立即支付 您当前的用户组不允许下载升级会员
您已获得下载权限 您可以每天下载资源次,今日剩余
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索