标题: AT24C02寄存器的读取有问题 [打印本页]

作者: 百二秦关终属我    时间: 2024-6-13 16:47
标题: AT24C02寄存器的读取有问题
这是我的代码,下面贴出主函数。我预期的效果是我可以用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


作者: 百二秦关终属我    时间: 2024-6-13 16:50
目前我只保留这几行,发现和我想的一样,AT寄存器里存的就是0 0 2 225

Snipaste_2024-06-13_16-49-49.png (56.71 KB, 下载次数: 14)

Snipaste_2024-06-13_16-49-49.png

作者: 百二秦关终属我    时间: 2024-6-13 17:01
目前我发现这个寄存器里存的数,分别是0 0 2 255 4 255 255 255 255 ……怎末感觉存进去的不对呢?
作者: 百二秦关终属我    时间: 2024-6-13 17:03
case 2:AT24C02_write_byte(address, 0x01);break;我发现这个有点问题,因为我存0x02,0x00都是可以存的,就这个存不进去
作者: aking991    时间: 2024-6-14 08:30
要懂得利用串口打印输出数据方法来调试你的程序,这样可以极大的提高调试不通程序问题解决办法,只是建议
作者: Y_G_G    时间: 2024-6-14 12:45
IIC最好先看应答,可以硬件仿真或者是通过一个LED来指示,先验证IIC的读写代码是否正确,然后再去看其它的功能
作者: 百二秦关终属我    时间: 2024-6-14 12:54
再三实验,我发现偶数都可以写进去读出来,像0,2,4,6都没问题;但是奇数1,3,5都写不进去。
作者: Y_G_G    时间: 2024-6-14 18:21
百二秦关终属我 发表于 2024-6-14 12:54
再三实验,我发现偶数都可以写进去读出来,像0,2,4,6都没问题;但是奇数1,3,5都写不进去。

看一下有没有上拉电阻
作者: 百二秦关终属我    时间: 2024-6-14 22:23
Y_G_G 发表于 2024-6-14 18:21
看一下有没有上拉电阻

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




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1