本帖最后由 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屏显示效果
|