本帖最后由 jinglixixi 于 2020-6-9 13:53 编辑
在掌握了I2C接口的模拟后,我们可以接下来学习SPI接口的模拟,进而来驱动SPI接口的LCD5110屏来实现显示功能。 该OLED屏与MCU的连接关系为: LCD_CLK——PB11 LCD_DIN——PB12 LCD_LED——3.3V LCD_CS ——GND LCD_DC ——PB5 LCD_RST——PB4 其余的两个引脚则接3.3V工作电源
定义GPIO口读取电位及输出高低电平的语句为: #define LCD_CLK_H GPIO_SetPinLevel(GPIOB, GPIO_PIN11, GPIO_LEVEL_HIGH); // PB11 #define LCD_CLK_L GPIO_SetPinLevel(GPIOB, GPIO_PIN11, GPIO_LEVEL_LOW);
#define LCD_DIN_H GPIO_SetPinLevel(GPIOB, GPIO_PIN12, GPIO_LEVEL_HIGH); // PB12 #define LCD_DIN_L GPIO_SetPinLevel(GPIOB, GPIO_PIN12, GPIO_LEVEL_LOW);
#define LCD_DC_H GPIO_SetPinLevel(GPIOB, GPIO_PIN5, GPIO_LEVEL_HIGH); // PB5 #define LCD_DC_L GPIO_SetPinLevel(GPIOB, GPIO_PIN5, GPIO_LEVEL_LOW);
#define LCD_CS_H GPIO_SetPinLevel(GPIOA, GPIO_PIN8, GPIO_LEVEL_HIGH); // PA8 #define LCD_CS_L GPIO_SetPinLevel(GPIOA, GPIO_PIN8, GPIO_LEVEL_LOW);
#define LCD_RST_H GPIO_SetPinLevel(GPIOB, GPIO_PIN4, GPIO_LEVEL_HIGH); // PB4 #define LCD_RST_L GPIO_SetPinLevel(GPIOB, GPIO_PIN4, GPIO_LEVEL_LOW);
设置相关引脚为输出功能的函数为: void LCD_GPIO_Cogfig(void)
{
GPIO_SetFunc(GPIOA, GPIO_PIN8, GPIO_FUN0);
GPIO_SetFunc(GPIOB, GPIO_PIN4, GPIO_FUN0);
GPIO_SetFunc(GPIOB, GPIO_PIN5, GPIO_FUN0);
GPIO_SetFunc(GPIOB, GPIO_PIN11, GPIO_FUN0);
GPIO_SetFunc(GPIOB, GPIO_PIN12, GPIO_FUN0);
GPIO_SetDir(GPIOA, GPIO_PIN8, GPIO_OUT);
GPIO_SetDir(GPIOB, GPIO_PIN4, GPIO_OUT);
GPIO_SetDir(GPIOB, GPIO_PIN5, GPIO_OUT);
GPIO_SetDir(GPIOB, GPIO_PIN11, GPIO_OUT);
GPIO_SetDir(GPIOB, GPIO_PIN12, GPIO_OUT);
}
LCD5110初始化函数为: void LCD5110_Init(void)
{
LCD_GPIO_Cogfig();
mdelay(800);
LCD_reset_hard;
LCD_write_cmd(0x21);
LCD_write_cmd(0x06);
LCD_write_cmd(0x13);
LCD_write_cmd(0xc8);
LCD_write_cmd(0x20);
LCD_write_cmd(0x0c);
LCD_write_cmd(Y_Page_Addr);
LCD_write_cmd(X_Col_Addr);
LCD_clr_scr();
}
实现图示显示效果的主程序为: int main(void)
{
InitDelay();
mdelay(100);
LCD5110_Init();
LCD_prints(0,0,"AC8701 TEST");
LCD_prints(0,1,"LCD5110 ");
LCD_prints(0,2,"jinglixixi");
while(1);
}
LCD5110屏显示效果
|