//向SSD1106写入一个字节。 //dat:要写入的数据/命令 //cmd:数据/命令标志 0,表示命令;1,表示数据; void OLED_WR_Byte(u8 dat,u8 cmd) { OSStatus err = kUnknownErr; platform_spi_message_segment_t oled_spi_msg = { &dat, NULL, (unsigned long) 1 }; OLED_DC_INIT(); // incase SPI is re-init by other work // 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; // } // *((uint8_t*)oled_spi_msg.tx_buffer) = dat; // oled_spi_msg.length = 1; err = MicoSpiTransfer(&micokit_spi_oled, &oled_spi_msg, 1); UNUSED_PARAMETER(err); // OLED_CS_Set(); OLED_DC_Set(); }
//向SSD1106写入一个字节。 //dat:要写入的数据/命令 //cmd:数据/命令标志 0,表示命令;1,表示数据; void OLED_WR_Byte(u8 dat,u8 cmd) { DATAOUT(dat); if(cmd) OLED_DC_Set(); else OLED_DC_Clr(); OLED_CS_Clr(); OLED_WR_Clr(); OLED_WR_Set(); OLED_CS_Set(); OLED_DC_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 OLED_WR_Byte(uint8_t dat,uint8_t cmd) { #if (FB_OLED && FB_IIC_OLED) if(cmd) { IIC_Start(); Write_IIC_Byte(0x78); //D/C#=0; R/W#=0 Write_IIC_Byte(0x40); //write data Write_IIC_Byte(dat); IIC_Stop(); } else { IIC_Start(); Write_IIC_Byte(0x78); //Slave address,SA0=0 Write_IIC_Byte(0x00); //write command Write_IIC_Byte(dat); IIC_Stop(); } #endif #if (FB_OLED && FB_SPI_OLED) //uint8_t i; uint8_t buffer[1]; buffer[0] = dat; if(cmd) OLED_DC_Set(); else OLED_DC_Clr(); OLED_CS_Clr(); spi_write(QN_SPI1, buffer, 1, oled_write_done); delay(100); OLED_CS_Set(); OLED_DC_Set(); #endif }