找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 686|回复: 8
收起左侧

AT24C02寄存器的读取有问题

[复制链接]
ID:1061677 发表于 2024-6-13 16:47 | 显示全部楼层 |阅读模式
这是我的代码,下面贴出主函数。我预期的效果是我可以用AT24C02正常存取数据,但是我发现case1的时候数码管显示000,这没问题;case2的时候数码管也显示000,这就不对了。因为0x01这个位置存的是1,case3也没有问题,case4读出来数码管显示255,这也有问题。
我想的是,这个数码管显示不对,是不是因为这个AT24C02的这几个寄存器存的就是0 0 1 255呢?

#include <REGX51.H>
#include "Delay.h"
#include <intrins.h>
#include "AT24C02.h"
#include "Smg.h"
#include "Key.h"
uchar address, Keynum, save_value=0,read_value,save_buf[3];
void main(void)
{
       
        while(1)
        {
                Keynum = key_scan();
                switch(Keynum)
                {
                        case 0:break;
                        case 1:AT24C02_write_byte(0x00, 0x00);read_value = AT24C02_read_byte(0x00);break;
                        case 2:AT24C02_write_byte(0x01, 0x01);read_value = AT24C02_read_byte(0x01);break;
                        case 3:AT24C02_write_byte(0x02, 0x02);read_value = AT24C02_read_byte(0x02);break;
                        case 4:AT24C02_write_byte(0x03, 0x03);read_value = AT24C02_read_byte(0x03);break;
                }
                save_buf[0] = read_value/100;
                save_buf[1] = read_value%100/10;
                save_buf[2] = read_value%100%10;
                smg_display(save_buf,6);
        }
}


03_51_Example.zip

65.63 KB, 下载次数: 1

回复

使用道具 举报

ID:1061677 发表于 2024-6-13 16:50 | 显示全部楼层
目前我只保留这几行,发现和我想的一样,AT寄存器里存的就是0 0 2 225
Snipaste_2024-06-13_16-49-49.png
回复

使用道具 举报

ID:1061677 发表于 2024-6-13 17:01 | 显示全部楼层
目前我发现这个寄存器里存的数,分别是0 0 2 255 4 255 255 255 255 ……怎末感觉存进去的不对呢?
回复

使用道具 举报

ID:1061677 发表于 2024-6-13 17:03 | 显示全部楼层
case 2:AT24C02_write_byte(address, 0x01);break;我发现这个有点问题,因为我存0x02,0x00都是可以存的,就这个存不进去
回复

使用道具 举报

ID:65956 发表于 2024-6-14 08:30 | 显示全部楼层
要懂得利用串口打印输出数据方法来调试你的程序,这样可以极大的提高调试不通程序问题解决办法,只是建议
回复

使用道具 举报

ID:401564 发表于 2024-6-14 12:45 | 显示全部楼层
IIC最好先看应答,可以硬件仿真或者是通过一个LED来指示,先验证IIC的读写代码是否正确,然后再去看其它的功能
回复

使用道具 举报

ID:1061677 发表于 2024-6-14 12:54 | 显示全部楼层
再三实验,我发现偶数都可以写进去读出来,像0,2,4,6都没问题;但是奇数1,3,5都写不进去。
回复

使用道具 举报

ID:401564 发表于 2024-6-14 18:21 | 显示全部楼层
百二秦关终属我 发表于 2024-6-14 12:54
再三实验,我发现偶数都可以写进去读出来,像0,2,4,6都没问题;但是奇数1,3,5都写不进去。

看一下有没有上拉电阻
回复

使用道具 举报

ID:1061677 发表于 2024-6-14 22:23 | 显示全部楼层
Y_G_G 发表于 2024-6-14 18:21
看一下有没有上拉电阻

今天最后发现问题了哈,就是软件模拟i2c的波形不对,存第一个数是没问题的,再存就不行了,目前已经解决了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表