Android app直接i2c读写 i2c读写程序

您所在的位置:网站首页 i2c存储卡读写实验 Android app直接i2c读写 i2c读写程序

Android app直接i2c读写 i2c读写程序

2024-06-30 12:59| 来源: 网络整理| 查看: 265

(1)AT24C02是一种EEPROM元器件,是一种只读寄存器,断电保持,可保存数据100年,

  是一种可擦除读写的芯片,相当于ROM硬盘,在下面实验中充当从机角色;

(2)51在下面实验中充当主机角色;

(3)在IIC总线标准协议上,进行51单片机(主机)和AT24C02(从机)的相互读写数据的操作。

小结:51单片机和各种EEPROM芯片之间可以通过IIC总线标准协议进行数据交互(通信)的。

 

实验:四个独立按键对应四个不同的功能,

k1:将数据写入单片机,断电保存

k2:读取上次保存的数据,断电后仍可读取上次保存的数据

k3:当前数据+1

k4:当前数据清零

------------------------------------------------------------- 采用多文件的框架模式 -------------------------------------------------------------

Android app直接i2c读写 i2c读写程序_数码管

i2c.h:

/* 这个文件进行宏定义:定义I2C串行总线的相关数据端口、方法函数,以及定义一些使用频率较高的元素 */ #ifndef _I2C_H_ // 如果没有定义宏 #define _I2C_H_ // 定义一个宏 // 需要用到51单片机的管脚,所以需要引入库文件 #include // 查单片机原理图可知(其中,SCL是时钟线,SDA是数据线) sbit SCL=P2^1; sbit SDA=P2^0; /* 相关函数 */ // I2C的起始信号函数 void I2cStart(); // I2C的终止信号函数 void I2cStop(); // I2C发送(写入)字节函数,成功返回1,失败返回0 unsigned char I2cSendByte(unsigned char dat); // I2C接收(读取)字节函数,返回读取的数据 unsigned char I2cReadByte(); // AT24C02芯片的写入数据函数 void At24c02Write(unsigned char addr, unsigned dat); // AT24C02芯片的读取数据函数,返回读取的数据 unsigned char At24c02Read(unsigned char addr); #endif // 结束

 i2c.c:

/* 这个文件专门针对I2C模块的编程,其他模块可以新建另外一个文件 */ #include // 引入I2C的库文件 /******************************************************************************* * 函数名 : Delay10us() * 函数功能 : 延时10us * 输入 : 无 * 输出 : 无 *******************************************************************************/ void Delay10us() //误差 0us { unsigned char a,b; for(b=1;b>0;b--) for(a=2;a>0;a--); } /******************************************************************************* * 函数名 : I2cStart() * 函数功能 : 起始信号:在SCL时钟信号在高电平期间SDA信号产生一个下降沿 * 输入 : 无 * 输出 : 无 * 备注 : 起始之后SDA和SCL都为0,表示总线被主机占用 *******************************************************************************/ void I2cStart() { // 根据各个单片机的时序图来写 SDA=1; Delay10us(); SCL=1; Delay10us(); // 建立时间是SDA保持时间>4.7us SDA=0; Delay10us(); // 保持时间是>4us SCL=0; Delay10us(); } /******************************************************************************* * 函数名 : I2cStop() * 函数功能 : 终止信号:在SCL时钟信号高电平期间SDA信号产生一个上升沿 * 输入 : 无 * 输出 : 无 * 备注 : 结束之后保持SDA和SCL都为1;表示总线处于空闲状态 *******************************************************************************/ void I2cStop() { // 根据各个单片机的时序图来写 SDA=0; Delay10us(); SCL=1; Delay10us(); // 建立时间是SDA保持时间>4.7us SDA=1; Delay10us(); // 保持时间是>4us } /******************************************************************************* * 函数名 : I2cSendByte(unsigned char dat) * 函数功能 : 通过I2C发送一个字节。在SCL时钟信号高电平期间,保持发送信号SDA保持稳定 * 输入 : num * 输出 : 0或1。发送成功返回1,发送失败返回0 * 备注 : 发送完一个字节SCL=0,SDA=1 *******************************************************************************/ unsigned char I2cSendByte(unsigned char dat) { unsigned char a=0, b=0; // 最大255,一个机器周期为1us,最大延时255us for(a=0;a>7; dat


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3