OLED液晶模块SSD1306
#define OLED_VCC_EN() do{ GPIO_WriteHigh(GPIOD,GPIO_PIN_2);}while(0)
//******************************************************************************
#define OLED_CS_ENABLE() do{GPIO_WriteLow(GPIOD,GPIO_PIN_6);}while(0)
#define OLED_CS_DISENABLE() do{GPIO_WriteHigh(GPIOD,GPIO_PIN_6);}while(0)
#define CONTROL_IS_DATA() do{GPIO_WriteHigh(GPIOD,GPIO_PIN_5);}while(0)
#define CONTROL_IS_COMMAND() do{GPIO_WriteLow(GPIOD,GPIO_PIN_5);}while(0)
#define SCLK_OLED_H() do{GPIO_WriteHigh(GPIOD,GPIO_PIN_4);}while(0)
#define SCLK_OLED_L() do{GPIO_WriteLow(GPIOD,GPIO_PIN_4);}while(0)
#define SDIN_OLED_H() do{GPIO_WriteHigh(GPIOD,GPIO_PIN_3);}while(0)
#define SDIN_OLED_L() do{GPIO_WriteLow(GPIOD,GPIO_PIN_3);}while(0)
void write_command(unsigned char dat)
{
u8 i;
OLED_CS_ENABLE();
uDelay(20);
CONTROL_IS_COMMAND();
uDelay(20);
for(i=0; i<8; i++)
{
SCLK_OLED_L();
uDelay(20);
if((dat & 0x80)==0x80)
SDIN_OLED_H();
else
SDIN_OLED_L();
SCLK_OLED_H();
dat = (dat<<1);
}
//CONTROL_IS_DATA();
OLED_CS_DISENABLE();
}
void write_data(unsigned char dat)//数据
{
u8 i;
OLED_CS_ENABLE();
uDelay(20);
CONTROL_IS_DATA();
uDelay(20);
for(i=0; i<8; i++)
{
SCLK_OLED_L();
uDelay(20);
if((dat & 0x80)==0x80)
SDIN_OLED_H();
else
SDIN_OLED_L();
uDelay(20);
SCLK_OLED_H();
dat = (dat<<1);
}
uDelay(20);
//CONTROL_IS_DATA();
OLED_CS_DISENABLE();
}
void uDelay(unsigned char l)
{
while(l--);
}
阅读(2481) | 评论(0) | 转发(0) |