1、I2C总线at24c02芯片使用说明I2C总线at24c02芯片使用说明3.2.5 密码储存电路密码储存电路采用I2C总线at24c02存储芯片存放密码,可实现断电密码不消失,at24c02存储芯片可长期存储信息,可上百万次以上重新擦写。图3-5 密码储存电路2.4.3 I2C总线密码存储芯片at24c02介绍 图2-3 at24c02引脚图(1)引脚功能介绍及相关知识WP:写保护引脚,将该引脚接VCC,E2PROM就实现写保护(只读)。引脚接地或悬空,可以对器件进行读写操作。SCL:串行时钟引脚,串行输入输出时该引脚用于输入时钟。SDA:串行数据输入输出引脚,用来输入输出数据,该引脚为射极开
2、路输出,需接上拉电阻。(2)I2C总线协议只有总线非忙时才被允许进行数据传送,在传送时,当时钟线为高电平,数据线必须为固定状态,不允许有跳变。时钟线为高电平时数据线的任何电平变化将被当作总线的启动或停止条件。(3)起始条件起始调教必须在所有操作命令之前发送。时钟线保持高电平期间,数据线电平从高到低跳变作为I2C总线的启动信号。CAT24Cxxx一直监视SDA和SCL电图2-4 写时序图(8)读操作CAT24C02读操作的初始化方式和写操作一样,仅把R/W位置1,读操作有三种方式:立即地址读、选择地址读、连续读。选择地址读操作时序图如图2-5所示:图2-5 读时序图程序:#include#inc
3、lude#define uint unsigned int#define uchar unsigned charuchar i,date;password 6;uchar code deposit =3,2,5,8,9,2;sbit sda=P34;sbit scl=P35;void nopp(uchar s) uchar n; for(n=0;ns;n+) _nop_();void start() /开始信号 sda=1; nopp(5); scl=1; nopp(5); sda=0; nopp(5);void stop() /停止信号 sda=0; nopp(5); scl=1; nopp
4、(5); sda=1; nopp(5);void response() /应答信号 uchar i; scl=1; nopp(5); while(sda=1)&(i255)i+; scl=0; nopp(5);void write_byte(uchar date) /写一个字节 uchar i,temp; temp=date; for(i=0;i8;i+) scl=0; nopp(5); temp=1; sda=CY; nopp(5); scl=1; nopp(5); scl=0; nopp(5); sda=1; nopp(5);uchar read_byte() /读一个字节 uint i,
5、j; scl=0; nopp(5); sda=1; nopp(5); for(i=0;i8;i+) /循环8次读出一个字节数据 scl=1; nopp(5); j=(j1)|sda; scl=0; nopp(5); return j;void at24_write(uchar address,uchar date) start(); /初始信号 write_byte(0xa0); /写入芯片地址0XA0 response(); /应答信号 write_byte(address); /写入芯片内部寄存器地址ADDRESS response(); /应答信号 write_byte(date); /
6、 写入数据 response(); /应答信号 stop(); / 停止信号uchar at24_read(uchar address) uchar date; start(); / 初始信号 write_byte(0xa0); / 写入芯片地址0XA0 response(); / 应答信号 write_byte(address); / 写入芯片内部寄存器地址ADDRESS response(); / 应答信号 start(); / 初始信号 write_byte(0xa1); / 初始信号 response(); / 写入芯片地址0XA1(读) date=read_byte(); / 读出数据 stop(); / 停止信号 return date; / 返回读出值void main() uchar tt, i ,rsda=1; scl=1; at24_write(8,9);/向at24c02的地址8写入数据 9 delay(50); for(i=0;i6;i+)/将数组中的数据写入at24c02 的地址为0 至5的位置 at24_write(i,depositi); delay(50); tt=at24_read(8);/读地址 8 中的数据 for(r=0;r6;r+)/读取地址为0 至5的数据,存放在数组password 中 passwordr=at24_read(r);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1