距离上一次发帖已经过去好久,不得不感叹现在的生活压力之大。面对年底无年终奖的局面,只能默默地来论坛,这个虚拟社区实现自我。
今天周末北京面临最低的-16度,得以有一个合理的理由窝在家里做自己喜欢论坛,做自己喜欢的DIY活动——STM32L053原生支持段式LCD屏。
自己首先DIY了一个段式LCD屏的底座,使用了圆孔座方便更换LCD屏,然后自己焊接了插针,方便使用杜邦线与STM32L053开发板连接,上一张效果图:
硬件已经连接完毕,软件开始登场。使用STcubeMx来生成源代码还是非常方便的,仅需要勾选对应的引脚并在LCD配置界面进行相关参数修改即可。版主LCD屏的硬件参数配置如下:
在生成的软件架构里,我们也只需要添加如下几行代码即可,源代码如下:
int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_LCD_Init(); MX_USART2_UART_Init(); /* USER CODE BEGIN 2 */ HAL_LCD_Write(&hlcd, LCD_RAM_REGISTER0, 0x0000, 0xffff); HAL_LCD_Write(&hlcd, LCD_RAM_REGISTER2, 0x0000, 0xffff); HAL_LCD_Write(&hlcd, LCD_RAM_REGISTER4, 0x0000, 0xffff); HAL_LCD_Write(&hlcd, LCD_RAM_REGISTER6, 0x0000, 0xffff); HAL_LCD_UpdateDisplayRequest(&hlcd); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ }
上面的源代码是让所有的LCD点全亮,于是,LCD屏的显示如下,
通过这个小实验,我们学习如何操作段式液晶屏并用于显示。在实际应用中,仅需要重构显示缓冲区内容,并间隔刷新LCD_RAM即可。
最后,版主也在这里给大家一些小提示,STcubeMx的配置仅仅是默认值,多数参数是需要重新输入的,例如LCD屏的对比度电压值,这里不能使用默认的2.6v,而要选择适合自己的,比如版主的3.26v才能驱动LCD屏。