/**************************************************************************** * 函数名:oledWriteData 输 入:void 输 出:u8 dat 数据 功 能:向OLED写数据 备 注:无 * 日 期:2015.02.01 ****************************************************************************/ void oledWriteData(unsigned char dat) { u8 i; OLED_CS_Clr(); OLED_SCLK_Clr(); OLED_SDA_Set(); OLED_SCLK_Set(); for(i=0;i<8;i++) { OLED_SCLK_Clr(); if(dat&0x80) OLED_SDA_Set(); else OLED_SDA_Clr(); OLED_SCLK_Set(); dat<<=1; } OLED_CS_Set(); }
/* *@功能:0:4线串行模式,向SSD1106写入一个字节。 *@输入:dat:要写入的数据/命令 * cmd:数据/命令标志 0,表示命令;1,表示数据; */ void OLED_WR_Byte(uint8_t dat,uint8_t cmd) { uint8_t i; if(cmd) OLED_DC_Set(); else OLED_DC_Clr(); OLED_CS_Clr(); for(i=0;i<8;i++) //从高位开始传送 { OLED_SCLK_Clr(); if(dat&0x80) OLED_SDIN_Set(); else OLED_SDIN_Clr(); //上升沿锁数据 OLED_SCLK_Set(); dat<<=1; } OLED_CS_Set(); OLED_DC_Set(); }
//向SSD1106写入一个字节。 //dat:要写入的数据/命令 //cmd:数据/命令标志 0,表示命令;1,表示数据; void OLED_WR_Byte(u8 dat,u8 cmd) { u8 i; if(cmd) OLED_DC_Set(); else OLED_DC_Clr(); OLED_CS_Clr(); for(i=0;i<8;i++) { OLED_SCLK_Clr(); if(dat&0x80) OLED_SDIN_Set(); else OLED_SDIN_Clr(); OLED_SCLK_Set(); dat<<=1; } OLED_CS_Set(); OLED_DC_Set(); }
void Write_IIC_Byte(unsigned char IIC_Byte) { unsigned char i; unsigned char m,da; da=IIC_Byte; OLED_SCLK_Clr(); for(i=0; i<8; i++) { m=da; // OLED_SCLK_Clr(); m=m&0x80; if(m==0x80) { OLED_SDIN_Set(); } else OLED_SDIN_Clr(); da=da<<1; OLED_SCLK_Set(); OLED_SCLK_Clr(); } }
void IIC_Wait_Ack() { OLED_SCLK_Set() ; OLED_SCLK_Clr(); }