教程:带恩智浦微处理器的HD44780显示驱动器


在高分辨率图形液晶显示器的时代,使用字符显示可能看起来有点不合时宜。但是这些显示器对我来说很有价值,因为它们很坚固,有不同形状和数量的线条。这种字符显示对于工业应用来说是更好的解决方案。

hd44780 display with NXP FRDM-KW41Z Board

带有恩智浦FRDM-KW41Z板的hd44780显示器

HD44780 2×16 Character Display for Kinetis and Freedom Board,我使用了处理器专家来生成驱动程序。在本文中,我们将介绍如何将该驱动程序与恩智浦微处理器集成开发环境和软件开发工具包一起使用。

概述

本文介绍了如何将HD44780(或兼容)字符显示器与恩智浦UXpresso软件开发工具包和基于Eclipse的UXpresso集成开发环境配合使用。在本文的帮助下,您应该能够将这些类型的显示器用于恩智浦的任何MCUXpresso SDK项目。

HD44780是一种常用的字符显示控制器,有多种变体。请注意,您的显示器使用的逻辑电平(3.3V或5V)与您想要使用的微控制器相同。

此处使用的驱动程序具有以下功能:

  • 使用配置头文件对驱动程序进行静态配置
  • 支持1、2、3或4行显示
  • 4位或8位GPIO数据总线
  • 支持从显示器读取数据
  • 使用“非标准”显示器的可配置延迟
  • 可变字符宽度设置
  • 可配置的引脚分配
  • 支持自定义字符集
  • 特殊的硬件抽象,适用于任何软件开发工具包和版本

要查看一些示例项目,请参见文章末尾的链接。

软件/工具

作为参考,我在本文中使用了以下软件和工具:

mcuxspresso ide 10 . 3 . 0

  • NXP FRDM-KW41Z
    • FRDM MCuXpresso SDK-KW41Z v 2 . 2 . 0:sdk for frdm-kw41z

    frdm-kw41z的sdk

  • McuOnEclipse驱动器library
  • 项目

    第一步是用这些默认设置创建一个“空”项目:

    create new project

    创建新项目

    克隆GitHub Repository或者将文件下载为zip文件,并将其放入项目中:

    mculib with hd44780 files

    带有hd44780文件的mculib

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

    编译器设置

    下一步是告诉编译器在哪里可以找到头文件。向编译器添加以下行(复制粘贴),并包括路径设置。这将使项目能够使用比这里讨论的更多的东西(例如,西格RTT、系统视图、Percepio Trace、自由操作系统等)。

    ../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 includes

    mculib包括

    MCULib配置

    这个头文件允许非常灵活的驱动程序配置,所以它可以适应许多微处理器和内核。

    第一件事是检查中央处理器/核心设置。由于FRDM-KW41Z上的微控制器是一个ARM Cortex-M0+处理器,因此使用了以下设置:

    core configuration

    核心配置

    cortex m identification

    皮层m识别

    接下来要检查/配置的是所使用的软件开发工具包。在我的示例中,我使用了恩智浦微处理器软件开发工具包2.2.0版:

    sdk used

    使用的sdk

    引脚复用

    该驱动程序使用普通的通用输入输出引脚:您需要至少四个数据通用输入输出引脚和一个使能(E)和遥感引脚(见HD44780 2×16 Character Display for Kinetis and Freedom Board)。配置引脚的最简单方法是使用集成在MCUXpresso集成开发环境中的恩智浦MCUXpresso配置工具:

    configured lcd pins in mcuxpresso configuration tools

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

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

    data pin configuration

    数据引脚配置

    请注意,对于上面的内容,我可以直接使用baord.h头文件中的信息。为了不增加另一个依赖性,管脚GPIO/端口设置和管脚号被保存在每个管脚的专用头文件中,以获得更好的可移植性。

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

    液晶显示器配置

    液晶屏是在配置/微处理器44780配置中配置的。在这里,可以配置字符行数、数据引脚数或可读性或显示时序:

    hd44780 configuration

    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);
    }


    hd44780 display with NXP FRDM-KW41Z Board

    带有恩智浦FRDM-KW41Z板的hd44780显示器

    摘要

    如果一个没有图形的简单显示解决方案是我所需要的,那么我将使用HD44780显示器。我在许多项目中使用了这里显示的McuLib:它与许多不同种类的微控制器和不同的SDK版本一起工作。该驱动程序使用一个配置头文件,并轻松地将它们集成到Eclipse集成开发环境、软件开发工具包和图形配置工具中。

    刻画快乐!

    有用的链接