在现今高分辨率图形显示LCD的时代,使用字符显示屏可能看起来有点不合时宜。但这些显示屏对我来说有很大的意义,因为它们非常坚固,可提供不同形状和数量的显示行数。这种字符显示可以是工业应用的更好解决方案。本文将主要介绍如何将字符显示驱动HD44780与NXP MCUXpresso SDK和基于Eclipse的MCUXpresso IDE一起使用。通过本文,您应该能够将这些显示屏用于任何NXP MCUXpresso SDK项目。
HD44780是一种常用的字符显示控制器,有多种型号可供选择。请注意您的显示屏使用与您要使用的微控制器相同的逻辑电平(3.3V或5V)。
该显示驱动芯片具有以下功能: ◾ 使用配置头文件的驱动程序的静态配置 ◾ 支持1、2、3或4行显示 ◾ 4位或8位GPIO数据总线 ◾ 支持从显示器读取数据 ◾ 可配置延迟以使用“非标准”显示 ◾ 可变字符宽度设置 ◾ 可配置的引脚分配 ◾ 支持自定义字符集 ◾ 适用于任何SDK和版本的特殊硬件抽象层
软件/工具 作为参考,我在本文中使用了以下软件和工具: ◾ MCUXpresso IDE 10.3.0 b2200,集成MCUXpresso配置工具
Mcuxpresso IDE 10.3.0
◾ 恩智浦FRDM-KW41Z开发板 ◾ 适用于FRDM-KW41Z的MCUXpresso SDK v2.2.0:
sdk for frdm-kw41z
项目 首先使用默认设置创建一个“空”项目:
新建项目 在https://github.com/ErichStyger/McuOnEclipseLibrary上克隆GitHub Repository,或将文件下载为zip文件,然后将文件放入项目中:
mculib与hd44780文件
HD44780文件位于专用文件夹中,每个GPIO引脚都有引脚文件。配置头文件位于“config”文件夹中。
如果添加了文件夹,请确保该文件夹没有从构建中排除:
未排除在构建之外
在'source'文件夹中通常有文件'semihost_hardfault.c'。因为McuLib为所有Cortex-M设备提供了自己的版本,所以不需要这个。所以你可以删除它或从构建中排除它:
semihost_hardfault.c 驱动程序使用了GPIO引脚,因此请确保在项目中使用“manage components”设置为GPIO、Port和Sim提供SDK驱动程序:
管理组件
编译器设置 下一步是告诉编译器在哪里找到头文件。将以下行(复制粘贴)添加到编译器包含路径设置。这将使项目使用比这里讨论的更多(例如Segger RTT、SystemView、Percepio Trace、FreeRTOS、......)。 - ../McuLib/config
- ../McuLib/config/fonts
- ../McuLib/src
- ../McuLib/HD44780
- ../McuLib/FreeRTOS/Source/include
- ../McuLib/FreeRTOS/Source/portable/GCC/ARM_CM4F
- ../McuLib/SEGGER_RTT
- ../McuLib/SEGGER_Sysview
- ../McuLib/TraceRecorder/config
- ../McuLib/TraceRecorder/include
- ../McuLib/TraceRecorder/streamports/Jlink_RTT/include
复制代码
mculib包括
McuLib配置 主库配置在config / McuLibconfig.h中。此头文件允许非常灵活的驱动程序配置,因此它可以适应许多MCU和内核。
首先要检查CPU / Core设置。由于FRDM-KW41Z上的MCU是ARM Cortex-M0 +,因此使用以下设置:
内核设置
Cortex-M识别
接下来要检查/配置的是使用的SDK。在我的示例中,使用的是恩智浦MCUXpresso SDK V2.2.0:
使用的sdk
Pin Muxing 驱动芯片使用通用的GPIO引脚:至少需要4个数据GPIO引脚,其中有一个使能(E)和一个RS引脚。配置引脚的最简单方法是使用集成在MCUXpresso IDE中的NXP MCUXpresso配置工具:
在mcuxpresso配置工具中配置lcd引脚 配置引脚配置头文件中的引脚:
数据引脚配置
请注意,对于上面我可以直接使用baord.h头文件中的信息。为了不添加另一个依赖项,引脚GPIO /端口设置和引脚编号保存在每个引脚的专用头文件中,以提高可移植性。
根据您的硬件连接(RS、RW、E1、E2、数据引脚)配置所有引脚。
LCD配置 LCD配置在config / McuHD44780config.h中。这里可以配置字符行数、数据引脚数或读取或显示时序:
hd44780配置
驱动程序初始化 在应用程序代码中,必须初始化使用过的驱动程序。 HD44780使用McuWait驱动程序也必须进行初始化。
由于每个显示器可能不同并且可能需要一些时间来启动,因此我建议在访问显示器之前添加延迟。 - McuWait_Init();
- McuWait_Waitms(50); /* give hardware time to power up */
- McuHD44780_Init();
复制代码它可能需要50毫秒、100毫秒甚至更长时间,因此您必须进行测试。 McuHD44780_Init()将初始化所有引脚和显示屏。之后,可以使用显示屏了。
使用驱动程序 有擦除显示、写入数据或启用闪烁光标等功能的函数。下面的示例代码擦除显示并写入数据/时间: - McuHD44780_Clear();
- {
- DATEREC date;
- TIMEREC time;
-
- buf[0] = '\0';
- McuTimeDate_GetTime(&time);
- McuTimeDate_AddTimeString(buf, sizeof(buf), &time, (uint8_t*)"hh:mm.ss,cc");
- McuHD44780_WriteLineStr(1, (char*)buf);
-
- buf[0] = '\0';
- McuTimeDate_GetDate(&date);
- McuTimeDate_AddDateString(buf, sizeof(buf), &date, (uint8_t*)"dd.mm.yyyy");
- McuHD44780_WriteLineStr(2, (char*)buf);
- }
复制代码
恩智浦FRDM-KW41Z主板hd44780显示屏采用
总结 如果需要一个没有图形的简单显示解决方案,我考虑使用HD44780显示驱动。我在许多项目中使用的是McuLib:它适用于许多微控制器和不同的SDK版本。该驱动程序使用配置头文件,并可轻松集成到Eclipse IDE(MCUXpresso IDE)、SDK和图形配置工具(MCUXpresso配置工具)中。 |