0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用小凌派RK2206开发板点亮LCD屏并实现字符显示的教程

海阔天空的专栏 来源: 凌智电子 作者: 凌智电子 2022-06-10 14:22 次阅读

一、简介

LCD的应用很广泛,简单如手表上的液晶显示屏,仪表仪器上的液晶显示器或者是电脑笔记本上的液晶显示器,都使用了LCD。在一般的办公设备上也很常见,如传真机,复印机,以及一些娱乐器材玩具等也常常见到LCD的足迹。

本小节使用的是ST7789V, 用于单片驱动262K色图像TFT-LCD, 包含 720(240*3色) x 320 线输出, 可以直接以SPI协议, 或者8位/9位/16位/18位并行连接外部控制器。ST7789V显示数据存储在片内240x320x18 bits内存中, 显示内存的读写不需要外部时钟驱动。

接下来先看本案例的实际操作视频

二、硬件电路设计

模块整体硬件电路如图1所示,电路中包含了电源电路、液晶接口以及小凌派-RK2206开发板连接的相关引脚。

图片

图1 硬件电路图

其中,液晶屏ST7789V的相关引脚资源如图2所示。

图片

图2 液晶屏ST7789V硬件资源示意图

其中,LCD液晶屏引脚功能描述,如下表1所示。

表1 LCD液晶屏引脚功能表

序号

LCD引脚

功能描述

1

D/C

指令/数据选择端,L:指令,H:数据

2

RESET

复位信号线,低电平有效

3

SPI_MOSI

SPI数据输入信号线

4

SPI_CLK

SPI时钟信号线

5

SPI_CS

SPI片选信号线,低电平有效

6

GND

电源地引脚

7

5V

5V电源输入引脚

其中,LCD液晶屏与小凌派-RK2206开发板连接如图3所示。

图片

图3 2.4寸液晶屏和小凌派-RK2206开发板连接图

三、软件设计

本章节将利用小凌派-RK2206开发板上的GPIO和SPI接口方式来点亮2.4寸液晶屏,并实现ASCII字符的显示及汉字的显示。

1. 主程序设计

如图4所示为LCD液晶屏主程序流程图,开机LiteOS系统初始化后,进入主程序。主程序首先进行GPIO和SPI总线初始化,然后配置LCD液晶屏设备,最后进入循环中。在循环中,主程序控制SPI对LCD液晶屏进行ASCII字符和汉字显示。

图片

图4 主程序流程图

2. LCD初始化程序设计

LCD初始化程序主要分为GPIO和SPI总线初始化,配置LCD两部分。

其中,GPIO初始化首先用LzGpioInit()函数将GPIO0_PC3初始化为GPIO引脚,然后用LzGpioSetDir()将引脚设置为输出模式,最后调用LzGpioSetVal()输出低电平。

poYBAGKi4CuAbAQTAABFlzouriM127.png

SPI初始化首先用SpiIoInit()函数将GPIO0_PC0复用为SPI0_CS0n_M1,GPIO0_PC1复用为SPI0_CLK_M1,GPIO0_PC2复用为SPI0_MOSI_M1。其次调用LzI2cInit()函数初始化SPI0端口

pYYBAGKi4IqAJYtBAABHniMtx1M466.png

配置LCD主要是配置ST7789V的工作模式,具体代码如下所示:

poYBAGKi4JOAHXSWAAKagnXxroY718.png

3. LCD的点数据设计

ST7789V采用SPI通信方式,数据传输协议如下:

4-Line Serial Interface => 16-bit/pixel(RGB 5-6-5-bit input),65K-Color,3Ah="05h"

数据传输时序图如图5所示。

图片

图5 ST7789V液晶屏SPI数据传输时序图

也就是每个像素占用2个字节,RGB为5+6+5。因此,往LCD液晶屏发送某一个像素信息的程序如下所示:

pYYBAGKi4NiANrRHAADzR4yfHf4961.png

4. LCD的ASCII字符显示设计

预先将规定字号的ASCII字符的LCD液晶屏像素信息存放于在lcd_font.h源代码文件中。该表格依照ASCII的数值来存放像素信息。例如:空格的ASCII数值是0x0,则程序将像素放到第一行像素中,如下源代码所示。

poYBAGKi4N2AZEllAADOtTogvWc987.png

当需要将某一个字号的ASCII字符投射到LCD液晶屏时,程序根据字号大小找到对应的字号的ASCII字符像素表,然后根据ASCII字符的数值找到对应的像素行,最后将该像素行数据依次通过SPI总线发送给LCD液晶屏。如下源代码所示。

poYBAGKi4SGAPC3KAAFhZlVAO7I632.png


5. LCD的汉字显示设计

同上原理,程序将某一个特定字号的汉字信息存放于一个数据结构体数组中。该数据结构体包含字体编码Index和像素数据Msk。具体原代码如下所示。

pYYBAGKi4SSAKdh-AABt5-CfVI0507.png

通过汉字像素软件将对应的汉字和像素存放于lcd_font.h文件中。具体源代码如下所示。

pYYBAGKi4WmALcezAAC1ZTB-ODY449.png

当程序需要将某一个特定字号的汉字投射到LCD液晶屏时,程序就根据对应的字号查找对应字号的tfontXX数组,并将对应的像素行数据发送给LCD液晶屏。具体源代码如下所示。

poYBAGKi4XGAQgEdAADG7LZerqo275.png

四、编译过程

1、打开sdk下面路径的文件

/vendor/lockzhiner/rk2206/samples/b4_lcd/lcd_example.c

注意:Gitee已有相关源代码,请大家根据上述的需求修改相关源代码

网址:https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk2206-openharmony3.0lts/tree/master/vendor/lockzhiner/rk2206/samples/b4_lcd

2、修改编译脚本

修改 vendor/lockzhiner/rk2206/sample 路径下 BUILD.gn 文件,指定 lcd_example 参与编译。

"./b4_lcd:lcd_example",

修改 device/lockzhiner/rk2206/sdk_liteos 路径下 Makefile 文件,添加 -llcd_example 参与编译。

hardware_LIBS = -lhal_iothardware -lhardware -llcd_example

3、编译固件

hb set -root .

hb set

hb build -f

来源:凌智电子

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • lcd
    lcd
    +关注

    关注

    34

    文章

    4411

    浏览量

    167040
  • 开发板
    +关注

    关注

    25

    文章

    4933

    浏览量

    97159
  • RK2206
    +关注

    关注

    0

    文章

    34

    浏览量

    1763
收藏 人收藏

    评论

    相关推荐

    基于OpenHarmony+小RK2206开发板制作的简易示波器

    基于OpenHarmony + 小RK2206开发板制作的简易示波器,实时采集波形,实时计算实时
    的头像 发表于 05-10 09:02 4385次阅读

    RK2206鸿蒙开发板原理图硬件资料分享

    RK2206鸿蒙开发板原理图和硬件datasheet资料分享,需要的自取~
    发表于 04-01 17:16

    RK2206鸿蒙开发板原理图硬件资料

    RK2206鸿蒙开发板原理图和硬件datasheet资料分享,需要的自取~
    发表于 04-01 17:39

    轻量系统开发套件介绍:睿智捷 | 小-RK2206 开发板套件

    睿智捷 | 小-RK2206 开发板套件是由福州市睿智捷电子有限公司出品,主控器为瑞芯微
    发表于 04-21 13:39

    【小RK2206开发板试用体验】安装编译环境的分享

    : hb build -f 然后就OK了。[OHOS INFO] lockzhiner-rk2206 build success到这里编译环境就可以。【思考】对于这个ubuntu下的编译环境的建立,还得花点心思才行。要几个视频、文档结合来看。最后希望大家上手小
    发表于 05-01 14:39

    【小RK2206开发板试用体验】小隔空操作迪文COF智能

    这次有幸获得小RK2206开发板试用,选择的模块是手势,通过官方例程,进行了基础的测试,非常顺利。之后就想结合其他东西,多玩一玩。刚好之前有迪文的妍姐提供的迪文COF智能
    发表于 05-06 13:57

    【小RK2206开发板试用体验】第2章 源码编译与固件下载

    开发环境:开发系统:Ubuntu 20.04开发板:小-RK2206
    发表于 05-08 14:02

    【小RK2206开发板试用体验】第3章 应用开发

    开发环境:开发系统:Ubuntu 20.04开发板:小-RK2206
    发表于 05-08 14:07

    RK2206开发板实现LCD液晶显示的设计

    1、如何在小-RK2206开发板LCD液晶显示
    发表于 08-11 17:00

    基于小RK2206的智能电子宠物

    MySQL数据库实现RK2206、K210等开发板的数据通讯。L298N驱动器、电源电压检测模块、MPU6050传感器、LCD显示模块等组
    发表于 01-19 12:48

    基于OpenHarmony系统和小RK2206开发板的避障小车

    这是一款基于OpenHarmony系统和小-RK2206开发板的避障小车。同时,小车上搭载了超声波测距模块、舵机模块、红外寻迹模块、直流电机模块。
    的头像 发表于 04-21 07:58 4877次阅读

    基于小RK2206开发板所制作的简易示波器

    基于OpenHarmony + 小RK2206开发板制作的简易示波器,实时采集波形,实时计算实时
    的头像 发表于 05-06 17:09 1747次阅读
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>开发板</b>所制作的简易示波器

    智电子:小-RK2206开发板顺利通过开放原子开源基金会兼容性测评

    3月18日,智电子小-RK2206开发套件顺利完成OpenAtomOpenHarmony(以下简称“OpenHarmony”)3.0L
    的头像 发表于 04-13 09:56 981次阅读
    <b class='flag-5'>凌</b>智电子:小<b class='flag-5'>凌</b><b class='flag-5'>派</b>-<b class='flag-5'>RK2206</b><b class='flag-5'>开发板</b>顺利通过开放原子开源基金会兼容性测评

    -RK2206开发板:UART控制案例

    -RK2206开发板:UART控制案例一、简介通用异步收发传输器(UniversalAsynchronousReceiver/Transmitter),通常称作UART。它将要传
    的头像 发表于 06-14 11:12 988次阅读
    小<b class='flag-5'>凌</b><b class='flag-5'>派</b>-<b class='flag-5'>RK2206</b><b class='flag-5'>开发板</b>:UART控制案例

    基于小RK2206开发板wifi-tcp通信实验

    基于小RK2206开发板wifi-tcp通信实验在开发过程中想要与开发板进行通信一般使用串口
    的头像 发表于 06-14 11:10 1230次阅读
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>开发板</b>wifi-tcp通信实验