OLED屏幕IIC模式在输出推挽下无法工作

2019-07-21 02:15发布

我使用IIC模式驱动OLED屏幕,驱动代码相同,但是配置端口的时候,配置开漏输出OLED能显示,配置推挽输出OLED无法显示。
使用逻辑分析仪显示两种代码时序相同,时间间隔也都基本相同。
请问如何解决?可能是什么原因?
写BYTE代码如下。 [mw_shl_code=c,true]void Write_IIC_Byte(unsigned char IIC_Byte) { unsigned char i; delay_us(time); for(i=0;i<8;i++) { if(IIC_Byte & 0x80) SDA=high; else SDA=low; delay_us(time); SCL=high; delay_us(time); SCL=low; IIC_Byte<<=1; } SDA=1; delay_us(time); SCL=1; delay_us(time); SCL=0; } [/mw_shl_code] 写COMMAND代码如下
[mw_shl_code=c,true]void Write_IIC_Command(unsigned char IIC_Command) { IIC_Start(); Write_IIC_Byte(0x78); //Slave address,SA0=0 Write_IIC_Byte(0x00); //write command Write_IIC_Byte(IIC_Command); IIC_Stop(); } [/mw_shl_code]
START STOP代码
[mw_shl_code=c,true]/********************************************** //IIC Start **********************************************/ void IIC_Start(void) { SCL = high; delay_us(time); SDA = high; delay_us(time); SDA = low; delay_us(time); SCL = low; delay_us(time); } /********************************************** //IIC Stop **********************************************/ void IIC_Stop(void) { SCL = low; delay_us(time); SDA = low; delay_us(time); SCL = high; delay_us(time); SDA = high; delay_us(time); } [/mw_shl_code]





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。