久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3685|回復: 3
收起左側

為什么我AT24C02一直顯示255

[復制鏈接]
ID:900102 發表于 2021-4-6 16:35 | 顯示全部樓層 |閱讀模式
#include<stc15f2k60s2.h>
#include<intrins.h>

#define uchar unsigned char
uchar TAB[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0xaa,0xff};
uchar YI,ER,SAN,SI,WU,LIU,QI,BA;
#define DELAY_TIME 5
#define SlaveAddrW 0xA0
#define SlaveAddrR 0xA1
sbit SCL=P2^0;
sbit SDA=P2^1;
void IIC_Delay(unsigned char i);
void IIC_Stop(void);

void Delay1ms()                //@11.0592MHz
{
        unsigned char i, j;

        _nop_();
        _nop_();
        _nop_();
        i = 11;
        j = 190;
        do
        {
                while (--j);
        } while (--i);
}
void IIC_Delay(unsigned char i)  //IIC通信延時程序
{
    do{_nop_();}
    while(i--);        
}
void IIC_Start(void)     //iic啟動程序
{
    SDA = 1;
    SCL = 1;
    IIC_Delay(DELAY_TIME);
    SDA = 0;
    IIC_Delay(DELAY_TIME);
    SCL = 0;       
}

void IIC_Stop(void)                                                        //iic停止
{
    SDA = 0;
    SCL = 1;
    IIC_Delay(DELAY_TIME);
    SDA = 1;
    IIC_Delay(DELAY_TIME);
}
void IIC_SendAck(bit ackbit)                        //iic響應
{
    SCL = 0;
    SDA = ackbit;                                          // 0:應答,1:非應答
    IIC_Delay(DELAY_TIME);
    SCL = 1;
    IIC_Delay(DELAY_TIME);
    SCL = 0;
    SDA = 1;
    IIC_Delay(DELAY_TIME);
}
bit IIC_WaitAck(void)                                                //iic等待應答
{
    bit ackbit;
       
    SCL  = 1;
    IIC_Delay(DELAY_TIME);
    ackbit = SDA;
    SCL = 0;
    IIC_Delay(DELAY_TIME);
    return ackbit;
}
void IIC_SendByte(unsigned char byt)  //發送數據
{
    unsigned char i;

    for(i=0; i<8; i++)
    {
        SCL  = 0;
        IIC_Delay(DELAY_TIME);
        if(byt & 0x80) SDA  = 1;
        else SDA  = 0;
        IIC_Delay(DELAY_TIME);
        SCL = 1;
        byt <<= 1;
        IIC_Delay(DELAY_TIME);
    }
    SCL  = 0;  
}

unsigned char IIC_RecByte(void)        //iic讀取字節
{
    unsigned char i, da;
    for(i=0; i<8; i++)
    {   
            SCL = 1;
        IIC_Delay(DELAY_TIME);
        da <<= 1;
        if(SDA) da |= 1;
        SCL = 0;
        IIC_Delay(DELAY_TIME);
    }
    return da;   
}


void iicwrite(uchar add,uchar dat)
{
        IIC_Start();
//        IIC_SendByte(0xa0);         //啟動寫模式
        IIC_SendByte(0x90);   //AD轉換
        IIC_SendAck(IIC_WaitAck());
       
        IIC_SendByte(add);
        IIC_SendAck(IIC_WaitAck());
        IIC_SendByte(dat);
        IIC_SendAck(IIC_WaitAck());
        IIC_Stop();
}

uchar iicread(uchar add)
{
        uchar temp;
        IIC_Start();
        //IIC_SendByte(0xa0);
        IIC_SendByte(0x90);
        IIC_SendAck(IIC_WaitAck());
       
        IIC_SendByte(add);
        IIC_Stop();
       
        IIC_Start();
        IIC_SendByte(0xa1);            //啟動讀模式
        //IIC_SendByte(0x91);
        IIC_SendAck(IIC_WaitAck());
        temp=IIC_RecByte();                                                //收回參數
        IIC_Stop();
        return temp;
       

}


void allinit()
{
        P2=0X80;
        P0=0XFF;
       
        P2=0XA0;
        P0=0X00;
       
        P2=0XC0;
        P0=0XFF;
        P2=0XF0;
        P0=0XFF;


}


void display1()
{
        P2=0XC0;
        P0=0X01;
        P2=0XFF;
        P0=TAB[YI];
        Delay1ms();
       
        P2=0XC0;
        P0=0X02;
        P2=0XFF;
        P0=TAB[ER];
        Delay1ms();

}
void display2()
{
        P2=0XC0;
        P0=0X04;
        P2=0XFF;
        P0=TAB[SAN];
        Delay1ms();
       
        P2=0XC0;
        P0=0X08;
        P2=0XFF;
        P0=TAB[SI];
        Delay1ms();

}
void display3()
{
        P2=0XC0;
        P0=0X10;
        P2=0XFF;
        P0=TAB[WU];
        Delay1ms();
       
        P2=0XC0;
        P0=0X20;
        P2=0XFF;
        P0=TAB[LIU];
        Delay1ms();

}
void display4()
{
        P2=0XC0;
        P0=0X40;
        P2=0XFF;
        P0=TAB[QI];
        Delay1ms();
       
        P2=0XC0;
        P0=0X80;
        P2=0XFF;
        P0=TAB[BA];
        Delay1ms();

}





void main()
{
        uchar num;
        allinit();
       
        YI=11,ER=11;SAN=11;SI=11;WU=11;LIU=0;QI=0;BA=0;
iicwrite(0x00,0);   
        num=iicread(0x00);
        //iicwrite(0x00,num+1);  //AT24C02
       
       
        while(1)
        {
                num=iicread(0x03);
                LIU=num/100;QI=num%100/10;BA=num%10;
                display1();
                display2();
                display3();
                display4();
        }





}

回復

使用道具 舉報

ID:607298 發表于 2021-4-7 09:42 | 顯示全部樓層
EEPROM沒有寫數據,一般都是0xFF(255)
回復

使用道具 舉報

ID:900102 發表于 2021-4-7 16:06 | 顯示全部樓層
lightday 發表于 2021-4-7 09:42
EEPROM沒有寫數據,一般都是0xFF(255)

但是用pcf8591芯片的滑動變阻器會出現一個一直亂跳的數值
回復

使用道具 舉報

ID:883031 發表于 2021-4-7 16:29 | 顯示全部樓層
估計是數據沒寫進去。查一下程序在讀寫IIC時的時序是否正確,這個很重要。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频二区 | 久久久五月天 | 亚洲精品888 | 日韩精品在线视频 | 久草新在线 | 狠狠色综合久久婷婷 | 免费黄色的视频 | 本道综合精品 | 亚洲一区欧美 | 秋霞电影院午夜伦 | 日本一区二区三区在线观看 | 亚洲天堂日韩精品 | 中文在线播放 | 日韩免费一区二区 | 亚洲 中文 欧美 日韩 在线观看 | 一级做受毛片免费大片 | 毛片网站在线观看视频 | 午夜影晥 | 国产精品99久久久久久动医院 | av片在线免费看 | 欧美成人高清 | 久久成人人人人精品欧 | 日韩av成人 | 欧美在线观看一区 | 久久av一区二区三区 | 国产玖玖| 国产一区二区小视频 | 国产精品国产成人国产三级 | www.久草| 亚州精品天堂中文字幕 | 成人在线小视频 | 四虎影院免费在线 | 一区二区三区视频免费观看 | 自拍偷拍第一页 | 精品自拍视频在线观看 | 三级av网址 | 中文字幕日韩一区 | 欧美日韩综合视频 | 亚洲成人一区 | 亚洲一区二区精品视频 | 欧美三区在线观看 |