欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

單片機(jī)+AT24C02能讀取不能寫入?附程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
代碼如下
#include<i2.h>

void Delay10us()                //@11.0592MHz
{
        unsigned char i;

        i=2;
        while (--i);
}

void I2cStart()//I2c開始信號(hào)
{
        SCL=1;//SCL在高電平時(shí)SDA從高電平轉(zhuǎn)為低電平就是開始信號(hào)
        Delay10us();
        SDA=1;
        Delay10us();//保持狀態(tài)時(shí)間要大于4.7us以便讀取
        SDA=0;
        Delay10us();//保持狀態(tài)時(shí)間要大于4us以便讀取
        SCL=0;//結(jié)束后恢復(fù)初始狀態(tài)
        Delay10us();
}

void I2cStop()//I2c結(jié)束信號(hào)
{
        SCL=1;//SCL在高電平時(shí)SDA從低電平轉(zhuǎn)為高電平就是結(jié)束信號(hào)
        Delay10us();
        SDA=0;
        Delay10us();//保持狀態(tài)時(shí)間要大于4.7us以便讀取
        SDA=1;
        Delay10us();//保持狀態(tài)時(shí)間要大于4us以便讀取
        SCL=0;//結(jié)束后恢復(fù)初始狀態(tài)
        Delay10us();
}
u8 I2cSendBaty(u8 dat)//發(fā)送一個(gè)字節(jié)的數(shù)據(jù)
{
        
        //SCL在高電平時(shí)讀取SDA數(shù)據(jù)在低電平時(shí)允許改變SDA數(shù)據(jù)改變
        u8 i,j=0,k=0;
        SCL=0;
        for(i=0;i<8;i++)
        {
                j=dat>>(7-i);
                SDA=j%2;
                Delay10us();
                SCL=1;//開始讀取數(shù)據(jù)
                Delay10us();
                SCL=0;
        }
        SDA=1;//開始檢測(cè)從機(jī)是否接收完成
        Delay10us();
        SCL=1;
        while(SDA)//判斷SDA狀態(tài)(低電平時(shí)說明接收完成)
        {
                k++;
                if(k>200)//超時(shí)判斷
                {
                        SDA=0;
                        Delay10us();
                        return 0;//返回接收失敗
                }
        }
        SCL=0;
        Delay10us();
        return 1;//返回接收完成
}

u8 I2cReadBaty()//讀取一個(gè)字節(jié)的數(shù)據(jù)
{
        u8 i,dat=0;
        SDA=1;
        Delay10us();
        for(i=0;i<8;i++)
        {
                SCL=1;
                Delay10us();
                dat<<=1;
                dat|=SDA;
                Delay10us();
                SCL=0;
                Delay10us();
        }
        return dat;
}

void At24c02Write(u8 Chip_addr,u8 M_addr,u8 dat)//IC芯片寫入數(shù)據(jù)
{
        I2cStart();//數(shù)據(jù)寫入開始
        I2cSendBaty(Chip_addr);//發(fā)送儲(chǔ)存芯片地址
        I2cSendBaty(M_addr);//發(fā)送儲(chǔ)存芯片儲(chǔ)存地址
        I2cSendBaty(dat);//發(fā)送儲(chǔ)存數(shù)據(jù)
        I2cStop();//I2c結(jié)束信號(hào)
}

u8 At24c02Read(u8 Chip_addr,u8 M_addr,u8 dat)//IC芯片讀取數(shù)據(jù)
{
        u8 ret=0;
        I2cStart();//數(shù)據(jù)寫入開始
        I2cSendBaty(Chip_addr);//發(fā)送儲(chǔ)存芯片地址
        I2cSendBaty(M_addr);//發(fā)送儲(chǔ)存芯片儲(chǔ)存地址
        I2cStart();//數(shù)據(jù)寫入開始
        I2cSendBaty(Chip_addr+1);//發(fā)送儲(chǔ)存芯片地址
        ret= I2cReadBaty();//讀取一個(gè)字節(jié)的數(shù)據(jù)
        I2cStop();//I2c結(jié)束信號(hào)
        return ret;
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:399179 發(fā)表于 2023-4-19 20:10 來自觸屏版 | 只看該作者
24C02有個(gè)寫保護(hù)引腳
回復(fù)

使用道具 舉報(bào)

板凳
ID:123289 發(fā)表于 2023-4-20 15:08 | 只看該作者
再仔細(xì)閱讀芯片的手冊(cè)。
回復(fù)

使用道具 舉報(bào)

地板
ID:807182 發(fā)表于 2023-4-21 19:39 | 只看該作者
引腳沒有拉高

1.png (63.02 KB, 下載次數(shù): 45)

1.png
回復(fù)

使用道具 舉報(bào)

5#
ID:1073275 發(fā)表于 2023-4-21 21:56 來自觸屏版 | 只看該作者
引腳拉高
回復(fù)

使用道具 舉報(bào)

6#
ID:984048 發(fā)表于 2023-4-21 23:35 | 只看該作者
要把引腳拉高
回復(fù)

使用道具 舉報(bào)

7#
ID:727796 發(fā)表于 2023-4-23 21:13 | 只看該作者

能正常讀取數(shù)據(jù)就是不能寫入,這個(gè)有問題的話不是也不能讀取嗎
回復(fù)

使用道具 舉報(bào)

8#
ID:807182 發(fā)表于 2023-4-25 14:11 | 只看該作者
chenl_l_ 發(fā)表于 2023-4-23 21:13
能正常讀取數(shù)據(jù)就是不能寫入,這個(gè)有問題的話不是也不能讀取嗎

可能是這個(gè)原因啊,因?yàn)槲铱茨阍趯戇M(jìn)去的時(shí)候并沒有對(duì)SDA引腳配置為輸出模式
回復(fù)

使用道具 舉報(bào)

9#
ID:807182 發(fā)表于 2023-4-25 14:12 | 只看該作者
發(fā)送和接收數(shù)據(jù)時(shí)是需要通過改變SDA引腳的輸入輸出模式的
回復(fù)

使用道具 舉報(bào)

10#
ID:727796 發(fā)表于 2023-4-26 18:47 | 只看該作者
暖西夏 發(fā)表于 2023-4-25 14:12
發(fā)送和接收數(shù)據(jù)時(shí)是需要通過改變SDA引腳的輸入輸出模式的

不是地址最后以為來控制讀寫模式嗎
回復(fù)

使用道具 舉報(bào)

11#
ID:727796 發(fā)表于 2023-4-26 21:53 | 只看該作者
暖西夏 發(fā)表于 2023-4-25 14:12
發(fā)送和接收數(shù)據(jù)時(shí)是需要通過改變SDA引腳的輸入輸出模式的

知道咋回事兒了,發(fā)送寫入24C02數(shù)據(jù)后從機(jī)不會(huì)拉低SDA的電平,使SDA處于高電平[img][/img]
回復(fù)

使用道具 舉報(bào)

12#
ID:727796 發(fā)表于 2023-4-26 21:56 | 只看該作者

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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