发表于: 2019-4-1 11:10:54 | 显示全部楼层

在现今高分辨率图形显示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.png

Mcuxpresso IDE 10.3.0


◾    恩智浦FRDM-KW41Z开发板

◾    适用于FRDM-KW41Z的MCUXpresso SDK v2.2.0:

sdk-for-frdm-kw41z.png

sdk for frdm-kw41z



项目

首先使用默认设置创建一个“空”项目:

create-new-project.png

新建项目

https://github.com/ErichStyger/McuOnEclipseLibrary上克隆GitHub Repository,或将文件下载为zip文件,然后将文件放入项目中:

mculib-with-hd44780-files.png

mculib与hd44780文件


HD44780文件位于专用文件夹中,每个GPIO引脚都有引脚文件。配置头文件位于“config”文件夹中。


如果添加了文件夹,请确保该文件夹没有从构建中排除:

not-excluded-from-build.png

未排除在构建之外


在'source'文件夹中通常有文件'semihost_hardfault.c'。因为McuLib为所有Cortex-M设备提供了自己的版本,所以不需要这个。所以你可以删除它或从构建中排除它:

semihost_hardfault.c.png

semihost_hardfault.c

驱动程序使用了GPIO引脚,因此请确保在项目中使用“manage components”设置为GPIO、Port和Sim提供SDK驱动程序:

manage-components-1.png

管理组件


编译器设置

下一步是告诉编译器在哪里找到头文件。将以下行(复制粘贴)添加到编译器包含路径设置。这将使项目使用比这里讨论的更多(例如Segger RTT、SystemView、Percepio Trace、FreeRTOS、......)。

  1. ../McuLib/config
  2. ../McuLib/config/fonts
  3. ../McuLib/src
  4. ../McuLib/HD44780
  5. ../McuLib/FreeRTOS/Source/include
  6. ../McuLib/FreeRTOS/Source/portable/GCC/ARM_CM4F
  7. ../McuLib/SEGGER_RTT
  8. ../McuLib/SEGGER_Sysview
  9. ../McuLib/TraceRecorder/config
  10. ../McuLib/TraceRecorder/include
  11. ../McuLib/TraceRecorder/streamports/Jlink_RTT/include
复制代码

mculib-includes.png

mculib包括


McuLib配置

主库配置在config / McuLibconfig.h中。此头文件允许非常灵活的驱动程序配置,因此它可以适应许多MCU和内核。


首先要检查CPU / Core设置。由于FRDM-KW41Z上的MCU是ARM Cortex-M0 +,因此使用以下设置:

core-configuration.png

内核设置

cortex-m-identification.png

Cortex-M识别


接下来要检查/配置的是使用的SDK。在我的示例中,使用的是恩智浦MCUXpresso SDK V2.2.0:

sdk-used.png

使用的sdk


Pin Muxing

驱动芯片使用通用的GPIO引脚:至少需要4个数据GPIO引脚,其中有一个使能(E)和一个RS引脚。配置引脚的最简单方法是使用集成在MCUXpresso IDE中的NXP MCUXpresso配置工具:

configured-lcd-pins-in-mcuxpresso-configuration-tools.png

在mcuxpresso配置工具中配置lcd引脚

配置引脚配置头文件中的引脚:

data-pin-configuration.png

数据引脚配置


请注意,对于上面我可以直接使用baord.h头文件中的信息。为了不添加另一个依赖项,引脚GPIO /端口设置和引脚编号保存在每个引脚的专用头文件中,以提高可移植性。


根据您的硬件连接(RS、RW、E1、E2、数据引脚)配置所有引脚。


LCD配置

LCD配置在config / McuHD44780config.h中。这里可以配置字符行数、数据引脚数或读取或显示时序:

hd44780-configuration.png

hd44780配置


驱动程序初始化

在应用程序代码中,必须初始化使用过的驱动程序。 HD44780使用McuWait驱动程序也必须进行初始化。


由于每个显示器可能不同并且可能需要一些时间来启动,因此我建议在访问显示器之前添加延迟。

  1. McuWait_Init();
  2. McuWait_Waitms(50); /* give hardware time to power up */
  3. McuHD44780_Init();
复制代码

它可能需要50毫秒、100毫秒甚至更长时间,因此您必须进行测试。 McuHD44780_Init()将初始化所有引脚和显示屏。之后,可以使用显示屏了。


使用驱动程序

有擦除显示、写入数据或启用闪烁光标等功能的函数。下面的示例代码擦除显示并写入数据/时间:

  1. McuHD44780_Clear();
  2. {
  3.   DATEREC date;
  4.   TIMEREC time;

  5.   buf[0] = '\0';
  6.   McuTimeDate_GetTime(&time);
  7.   McuTimeDate_AddTimeString(buf, sizeof(buf), &time, (uint8_t*)"hh:mm.ss,cc");
  8.   McuHD44780_WriteLineStr(1, (char*)buf);

  9.   buf[0] = '\0';
  10.   McuTimeDate_GetDate(&date);
  11.   McuTimeDate_AddDateString(buf, sizeof(buf), &date, (uint8_t*)"dd.mm.yyyy");
  12.   McuHD44780_WriteLineStr(2, (char*)buf);
  13. }
复制代码

hd44780-display.png

恩智浦FRDM-KW41Z主板hd44780显示屏采用


总结

如果需要一个没有图形的简单显示解决方案,我考虑使用HD44780显示驱动。我在许多项目中使用的是McuLib:它适用于许多微控制器和不同的SDK版本。该驱动程序使用配置头文件,并可轻松集成到Eclipse IDE(MCUXpresso IDE)、SDK和图形配置工具(MCUXpresso配置工具)中。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 47 | 回复: 68



手机版|

GMT+8, 2024-12-21 21:25 , Processed in 0.050774 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表