前言
上节讲解了IIC的协议,这节讲讲函数实现。参考之前我们平衡小车的程序,上面用到0.96的屏幕,这个屏幕就是IIC通信的。
基本函数的实现
当 SCL 线是高电平时 ,SDA 线从高电平向低电平切换,表示通讯的起始。
/**********************************************
//IIC Start
**********************************************/
void OLED_IIC_Start()
{
OLED_SCLK_Set() ; //置高SCL引脚
OLED_SDIN_Set(); //置高SDA引脚
OLED_SDIN_Clr(); //置低SDA引脚
OLED_SCLK_Clr(); //置低SCL引脚
}
首先置高SCL,此时将SDA先置高,之后再置低,就完成了从高到低的转换,最后置低SCL位,为下次操作做准备,这就是IIC的开始。是不是很简单、
当 SCL 是高电平时,SDA线由低电平向高电平切换,表示通讯的停止。
/**********************************************
//IIC Stop
**********************************************/
void OLED_IIC_Stop()
{
OLED_SCLK_Set() ;
// OLED_SCLK_Clr();
OLED_SDIN_Clr();
OLED_SDIN_Set();
OLED_SCLK_Clr() ;
}
首先置高SCL,此时将SDA先置低,之后再置高,就完成了从低到高的转换,最后置低SCL位,为下次操作做准备,这就是IIC的结束。是不是很简单、
写操作函数的实现
/**********************************************
// IIC Write byte
**********************************************/
void OLED_Write_IIC_Byte(unsigned char IIC_Byte)
{
unsigned char i;
unsigned char m,da;
da=IIC_Byte; //把将要发送的数据放到da中
OLED_SCLK_Clr(); //先置低SCL引脚
for(i=0;i<8;i++) //一个字节8各位,循环8次
{
m=da; //把数据转到m中
m