问题发现: 我最近买了个0.96寸TFT屏学习用STM32驱动显示屏,但是下载商家给的开机例程后发现显示的颜色与宏定义的颜色相反,在查找手册后找到了解决方案。
逛论坛发现是反演设置的问题 查找数据手册找到控制此功能的寄存器 可以看出0x21控制该功能
原来是我设置了反演,把它注释掉就行了:
附带函数代码及宏定义
#define OLED_SCLK_Clr() GPIO_ResetBits(GPIOA,GPIO_Pin_5)
#define OLED_SCLK_Set() GPIO_SetBits(GPIOA,GPIO_Pin_5)
#define OLED_SDIN_Clr() GPIO_ResetBits(GPIOA,GPIO_Pin_7)
#define OLED_SDIN_Set() GPIO_SetBits(GPIOA,GPIO_Pin_7)
#define OLED_RST_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_0)
#define OLED_RST_Set() GPIO_SetBits(GPIOB,GPIO_Pin_0)
#define OLED_DC_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_1)
#define OLED_DC_Set() GPIO_SetBits(GPIOB,GPIO_Pin_1)
#define OLED_CS_Clr() GPIO_ResetBits(GPIOA,GPIO_Pin_4)
#define OLED_CS_Set() GPIO_SetBits(GPIOA,GPIO_Pin_4)
#define OLED_BLK_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_10)
#define OLED_BLK_Set() GPIO_SetBits(GPIOB,GPIO_Pin_10)
#define OLED_CMD 0
#define OLED_DATA 1
void LCD_Writ_Bus(u8 dat)
{
u8 i;
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();
}
void LCD_WR_REG(u8 dat)
{
OLED_DC_Clr();
LCD_Writ_Bus(dat);
}
问题成功解决!
刚开始学习显示屏的使用,如有笔误还请指正。
|