找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1339|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

AT24C02寄存器的讀取有問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1061677 發(fā)表于 2024-6-13 16:47 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式
這是我的代碼,下面貼出主函數(shù)。我預(yù)期的效果是我可以用AT24C02正常存取數(shù)據(jù),但是我發(fā)現(xiàn)case1的時候數(shù)碼管顯示000,這沒問題;case2的時候數(shù)碼管也顯示000,這就不對了。因為0x01這個位置存的是1,case3也沒有問題,case4讀出來數(shù)碼管顯示255,這也有問題。
我想的是,這個數(shù)碼管顯示不對,是不是因為這個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, 下載次數(shù): 1

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

9#
ID:1061677 發(fā)表于 2024-6-14 22:23 | 只看該作者
Y_G_G 發(fā)表于 2024-6-14 18:21
看一下有沒有上拉電阻

今天最后發(fā)現(xiàn)問題了哈,就是軟件模擬i2c的波形不對,存第一個數(shù)是沒問題的,再存就不行了,目前已經(jīng)解決了。
回復(fù)

使用道具 舉報

8#
ID:401564 發(fā)表于 2024-6-14 18:21 | 只看該作者
百二秦關(guān)終屬我 發(fā)表于 2024-6-14 12:54
再三實驗,我發(fā)現(xiàn)偶數(shù)都可以寫進去讀出來,像0,2,4,6都沒問題;但是奇數(shù)1,3,5都寫不進去。

看一下有沒有上拉電阻
回復(fù)

使用道具 舉報

7#
ID:1061677 發(fā)表于 2024-6-14 12:54 | 只看該作者
再三實驗,我發(fā)現(xiàn)偶數(shù)都可以寫進去讀出來,像0,2,4,6都沒問題;但是奇數(shù)1,3,5都寫不進去。
回復(fù)

使用道具 舉報

6#
ID:401564 發(fā)表于 2024-6-14 12:45 | 只看該作者
IIC最好先看應(yīng)答,可以硬件仿真或者是通過一個LED來指示,先驗證IIC的讀寫代碼是否正確,然后再去看其它的功能
回復(fù)

使用道具 舉報

5#
ID:65956 發(fā)表于 2024-6-14 08:30 | 只看該作者
要懂得利用串口打印輸出數(shù)據(jù)方法來調(diào)試你的程序,這樣可以極大的提高調(diào)試不通程序問題解決辦法,只是建議
回復(fù)

使用道具 舉報

地板
ID:1061677 發(fā)表于 2024-6-13 17:03 | 只看該作者
case 2:AT24C02_write_byte(address, 0x01);break;我發(fā)現(xiàn)這個有點問題,因為我存0x02,0x00都是可以存的,就這個存不進去
回復(fù)

使用道具 舉報

板凳
ID:1061677 發(fā)表于 2024-6-13 17:01 | 只看該作者
目前我發(fā)現(xiàn)這個寄存器里存的數(shù),分別是0 0 2 255 4 255 255 255 255 ……怎末感覺存進去的不對呢?
回復(fù)

使用道具 舉報

沙發(fā)
ID:1061677 發(fā)表于 2024-6-13 16:50 | 只看該作者
目前我只保留這幾行,發(fā)現(xiàn)和我想的一樣,AT寄存器里存的就是0 0 2 225

Snipaste_2024-06-13_16-49-49.png (56.71 KB, 下載次數(shù): 14)

Snipaste_2024-06-13_16-49-49.png
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表