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

標題: 51單片機普通io口如何模擬轉換為iic接口? [打印本頁]

作者: gagaga123    時間: 2020-12-14 01:12
標題: 51單片機普通io口如何模擬轉換為iic接口?
大佬們,幫幫忙,需要將兩個普通io接口模擬成兩個iic接口,用來進行1602液晶屏的讀寫操作
作者: 壓著我頭發啦    時間: 2020-12-14 07:40
百度一份,改下sbit
作者: 黃youhui    時間: 2020-12-14 09:11
現在網上搜IIC程序基本都是普通IO口模擬的。

stm32任意引腳模擬IIC.rar

2.6 KB, 下載次數: 11


作者: down1    時間: 2020-12-14 09:49
之前百度上看到過
作者: devcang    時間: 2020-12-14 09:54
向買iic屏的商家要一份
作者: xyq7531    時間: 2020-12-14 11:06
上網隨便抄一個I2C單片機驅動就可以了
作者: wj_yuq    時間: 2020-12-14 12:09
請在論壇中找PCF8547模塊的相關內容。
作者: rayin    時間: 2020-12-14 19:49
用51單片機的IO腳模擬I2C的例程可以可以在51黑論壇里找電子萬年歷的例程:用DS1302等串口的時鐘芯片

void write_byte(uchar dat)
{
        ACC=dat;
        RST=1;
        for(a=8;a>0;a--)
        {
                IO=ACC0;
                SCLK=0;
                SCLK=1;
                ACC=ACC>>1;
        }
}
uchar read_byte()
{
        RST=1;
        for(a=8;a>0;a--)
        {
                ACC7=IO;
                SCLK=1;
                SCLK=0;
                ACC=ACC>>1;

        }
        return (ACC);
}
----------------------------------------
void write_1302(uchar add,uchar dat)
{

        RST=0;
        SCLK=0;
        RST=1;
        write_byte(add);
        write_byte(dat);
        SCLK=1;
        RST=0;
}
uchar read_1302(uchar add)
{
        uchar temp;
        RST=0;
        SCLK=0;
        RST=1;
        write_byte(add);
        temp=read_byte();
        SCLK=1;
        RST=0;
        return(temp);
}

void ds1302_init()
{
RST=0;
SCLK=0;

write_1302(0x8e,0x00);
//write_1302(0x80,0x00);
//write_1302(0x82,0x00);
//write_1302(0x84,0x12);
//write_1302(0x8a,0x04);
//write_1302(0x86,0x07);
//write_1302(0x88,0x01);
//write_1302(0x8c,0x10);
write_1302(0x8e,0x80);
}
作者: Y_G_G    時間: 2020-12-14 21:54
現在STC出的很多系列的單片機都是自帶IIC端口的,如果你不會IIC就直接用IIC端口就可以了
不然就去百度一下IIC協議看一下,或者是參考一下24C01的程序
IIC是相對簡單的一個協議的,看個兩三天就差不多了
作者: gagaga123    時間: 2020-12-16 01:39
黃youhui 發表于 2020-12-14 09:11
現在網上搜IIC程序基本都是普通IO口模擬的。

好的,謝謝
作者: gagaga123    時間: 2020-12-16 01:39
rayin 發表于 2020-12-14 19:49
用51單片機的IO腳模擬I2C的例程可以可以在51黑論壇里找電子萬年歷的例程:用DS1302等串口的時鐘芯片

voi ...

好的,謝謝
作者: gagaga123    時間: 2020-12-16 01:40
Y_G_G 發表于 2020-12-14 21:54
現在STC出的很多系列的單片機都是自帶IIC端口的,如果你不會IIC就直接用IIC端口就可以了
不然就去百度一下I ...

好的,謝謝
作者: 湖南    時間: 2020-12-31 14:58
需要在程序中設置的軟IIC接口
作者: 人人學會單片機    時間: 2020-12-31 15:02
void IIC_Delay()
{
        _nop_();_nop_();_nop_();_nop_();_nop_();
}

void IIC_Init()
{
        P2M0&=0x3f;
        P2M1&=0x3f;
        SDA_GPIO=1;
        SCL_GPIO=1;
}

void IIC_Start()//IIC啟動信號
{
        SDA_GPIO=1;
        SCL_GPIO=1;
        IIC_Delay();
        SDA_GPIO=0;
        IIC_Delay();
        SCL_GPIO=0;
        IIC_Delay();
}

void IIC_Stop()//IIC停止信號
{
        SDA_GPIO=0;
        SCL_GPIO=1;
        

        SDA_GPIO=1;
        IIC_Delay();
}

void IIC_Write_Byte(u8 IIC_Byte)//向總線發送一個字節
{
        u8 i;
        SCL_GPIO=0;
        SDA_GPIO=1;
        for(i=0;i<8;i++)
        {
                SDA_GPIO=(bit)(IIC_Byte&0x80);
                IIC_Byte<<=1;
                IIC_Delay();
                SCL_GPIO=1;
                IIC_Delay();
                SCL_GPIO=0;
                IIC_Delay();
        }
}

u8 IIC_Read_Byte()
{
        u8 i,Value;
        SCL_GPIO=0;
        SDA_GPIO=1;
        for(i=0;i<8;i++)
        {
                Value=(Value<<1)|SDA_GPIO;
                IIC_Delay();
                SCL_GPIO=1;
                IIC_Delay();
                SCL_GPIO=0;
                IIC_Delay();
        }
        return Value;
}

u8 IIC_Read_Ack()//單片機檢測IIC從機發來的應答信號
{
        u8 ack=1,i=0;
        SCL_GPIO=1;
        IIC_Delay();
        while((ack)&&(i<5))
        {
                ack=SDA_GPIO;
                i++;
        }
        SCL_GPIO=0;
        return ack;
}

void IIC_Write_Ack(bit ack)//單片機發送應答給從機
{
        SDA_GPIO=ack;
        IIC_Delay();
        SCL_GPIO=1;
        IIC_Delay();
        SCL_GPIO=0;
        IIC_Delay();
        SDA_GPIO=1;
        IIC_Delay();
}

IIC代碼 用我這個




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1