我使用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]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
没事儿,我这个IIC是纯输出。
一周热门 更多>