收藏 分销(赏)

51单片机读写AT24C02源代码详细注释.doc

上传人:精**** 文档编号:1487003 上传时间:2024-04-29 格式:DOC 页数:8 大小:19.32KB
下载 相关 举报
51单片机读写AT24C02源代码详细注释.doc_第1页
第1页 / 共8页
51单片机读写AT24C02源代码详细注释.doc_第2页
第2页 / 共8页
51单片机读写AT24C02源代码详细注释.doc_第3页
第3页 / 共8页
51单片机读写AT24C02源代码详细注释.doc_第4页
第4页 / 共8页
51单片机读写AT24C02源代码详细注释.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、51单片机读写AT24C02源代码(详细注释) 在P1口上接八个led灯,结果就显示在这八个灯上面。AT24C02的接线方式见程序的顶部的定义。以下是源代码: #include ;/包含头文件typedef unsigned char uchar;typedef unsigned int uint;#define write_c02 0xa0#define read_c02 0xa1sbit sda = P20;sbit scl = P21;void delay() /delay:5us;/i2c:initvoid i2c_init()sda = 1;delay();scl = 1;delay

2、();/delayms:void delayms(uint xms)uchar x, y;for(x = xms; x ; 0; x-) for(y = 110; y ; 0; y-); /start:void start() /启动i2csda = 1;scl = 1;delay();/延时必须大于4.7us,此约为五微秒sda = 0; /在scl为高电平时,sda一个下降沿为启动信号delay();/stop:void stop() /停止i2csda = 0;scl = 1;delay();sda = 1; /在scl为高电平时,sdasda一个上升沿为停止信号delay();/ack

3、:void ack() /应答信号0uchar i = 0; /等待变量scl = 1;/在scl为高电平期间等待应答delay();while(sda = 1) & i 250)/若为应答0即退出,从机向主机发送应答信号i+;/等待一段时间scl = 0; /应答之后将scl拉低delay();/nack:void nack() /非应答scl = 1;/在scl为高电平期间,由主机向从机发送一个1,非应答信号delay();sda = 1;scl = 0; /应答之后将scl拉低delay();/send byte:void send_byte(uchar date)/写一个字节uchar

4、 i, temp;temp = date; /存入要写入的数据,即要发送到sda上的数据for(i = 0; i 8; i+) /发送8位 temp = 1; /to CY 将数据的最高位移入到PSW中的CY位中 scl = 0;/只有在scl为低电平时,才允许sda上的数据变化 delay(); sda = CY; /将CY里的数据发送到sda数据线上 delay(); /可以延时 scl = 1; /在scl为高电平时,不允许sda上的数据变化,使数据稳定 delay(); scl = 0;/允许sda数据线的数据变化,等待下一个数据的传输 delay(); /wait ack:发送完一个

5、字节数据后要主机要等待从机的应答,第九位scl = 0;/允许sda变化delay();sda = 1;/wait:ack,sda拉高等待应答,当sda=0时,表示从机的应答delay();/read: byteuchar read_byte() /读一个字节数据uchar i, j, k;scl = 0; /读之前先允许sda变化delay(); /等待数据for(i = 0; i 8; i+) scl = 1; /不允许sda变化 delay(); /使sda数据稳定后开始读数据 j = sda; /读出sda上的数据 k = (k 1)| j; /将数据通过|运算存入k中 scl = 0

6、;/允许sda变化等待下一位数据的到来 delay(); /delay();/可不用延时return k;/返回读出的数据/write:at24c02 在at24c02中的指定地址写入数据void write_at24c02(uchar address, uchar date)start(); /启动i2csend_byte(write_c02);/写入期间地址和写操作ack(); /从机应答0send_byte(address); /写入写数据的单元地址ack(); /ack0send_byte(date); /在指定地址中写入数据ack(); /从机应答0stop(); /停止i2c /r

7、ead: at24c02 在at24c02的指定地址中读出写入的数据 uchar read_at24c02(address)uchar dat;/用来存储读出的数据start(); /启动i2csend_byte(write_c02); /写入at24c02器件地址和写操作ack(); /从机应答0send_byte(address); /写入要读取AT24C02的数据的单元地址ack(); /从机应答0start(); /再次启动i2csend_byte(read_c02); /写入AT24C02器件地址和读操作ack();/从机应答‘0’dat = read_byte();/读出指定地址中的数据nack(); /主机发出非应答‘1’stop(); /停止i2creturn dat; /返回读出的数据 /main:void main()uchar i;i2c_init();start();while(1) for(i = 0x00; i 0xff; i+) write_at24c02(10, i); delayms(10);/需等待十毫秒 P1 = read_at24c02(10);/1010 1010 delayms(2000);

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服