【蓝桥杯】解决LCD使用LED亮灭混乱的办法

比赛板用的是stm32f103RB芯片,64管脚,LED与LCD同用了管脚PC8PC15(对应LED1LED8),所以板子上增用了一个锁存器——M74HC573。在控制LED的时候,只需在输出对应电平后,给锁存器的LE(N—LE,对应PD2)管脚一个上升沿脉冲即可把对应的电平锁存到锁存器的输出端(Q1~Q8),从而控制LED。

对LCD的操作会影响LED的亮灭,如对LCD的行写会点亮所有的LED。

解决办法如下: 即操作LCD之前保存GPIOC相关寄存器的值,对LCD操作结束后,重新恢复原值。

void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)
void LCD_WriteRAM_Prepare(void)
void LCD_WriteRAM(u16 RGB_Code)

在上面LCD.c中三个函数的开头结尾分别添加如下代码:
开头:

unsigned short PCOUT = GPIOC->ODR;

结尾:

GPIOC->ODR=PCOUT;

【蓝桥杯】解决LCD使用LED亮灭混乱的办法_第1张图片
【蓝桥杯】解决LCD使用LED亮灭混乱的办法_第2张图片

【蓝桥杯】解决LCD使用LED亮灭混乱的办法_第3张图片

你可能感兴趣的:(蓝桥杯)