当前位置: 首页 > news >正文

基于RT-thread使用STM32F407驱动LCD屏幕

前言

不管哪款LCD,都是同理的,我这款LCD是用的IIC通信。 然后本工程使用普通IO口模拟IIC时序进行通信

一、拿到一款LCD首先确认通信方式,然后确认通信接口

在这里插入图片描述
在这里插入图片描述

二、然后就是确认控制指令,(指令太多放不完,我就放一部分)

在这里插入图片描述

在这里插入图片描述

三、LCD的外围电路设计

在这里插入图片描述

四、新建工程

在这里插入图片描述

五、打开CubeMX

在这里插入图片描述

六、时钟使用外部晶振

在这里插入图片描述

七、配置下载口

在这里插入图片描述

八、打开串口一,调试用

在这里插入图片描述

九、配置时钟线,时钟频率拉满

在这里插入图片描述

十、选择工具链

在这里插入图片描述

十一、生成.c和.h文件

在这里插入图片描述

十二、生成代码

在这里插入图片描述

十三、主函数中这么写

/*
 * @Description:
 * @Author: mzh
 * @Date: 2023-07-31 21:57:47
 * @LastEditors: mzh
 * @LastEditTime: 2023-07-31 22:01:58
 */
/*
 * Copyright (c) 2006-2023, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2023-07-21     RT-Thread    first version
 */
#include "system_deal.h"

int main(void)
{
    SystemStartInit();

    return RT_EOK;
}

十四、在applications文件下新建system_deal文件夹,再在system_deal文件下新建system_deal.c和system_deal.h文件

在这里插入图片描述

十五、继续在system_deal文件夹下新建system_config.h文件

在这里插入图片描述

十六、包含头文件

在这里插入图片描述

十七、在system_deal.c中这么写

在这里插入图片描述

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2025-03-13     Administrator       the first version
 */

#include "system_deal.h"


/*********************************************************************************************************
 ** Function name:       SystemLedRun
 ** Descriptions:        System Led Run
 ** input parameters:    NONE
 ** output parameters:   NONE
 ** Returned value:      NONE
 *********************************************************************************************************/
static void SystemLedRun(void)
{
    static uint8_t l_ucmode = 0;
    if (l_ucmode == 0)
    {
        rt_pin_write(SYS_LED, PIN_HIGH);
        l_ucmode = 1;
    }
    else if (l_ucmode == 1)
    {
        rt_pin_write(SYS_LED, PIN_LOW);
        l_ucmode = 0;
    }
}

/*********************************************************************************************************
 ** Function name:       SysDeal_thread
 ** Descriptions:        SysDeal thread
 ** input parameters:    parameter
 ** output parameters:   NONE
 ** Returned value:      NONE
 *********************************************************************************************************/
static void SysDeal_thread(void* parameter)
{
    // set pin
    rt_pin_mode(SYS_LED, PIN_MODE_OUTPUT);
    rt_pin_write(SYS_LED, PIN_HIGH);

    while (1)
    {
        SystemLedRun();
        rt_thread_mdelay(500);
    }

}


/*********************************************************************************************************
 ** Function name:       SystemDealTaskInit
 ** Descriptions:        System Task Init
 ** input parameters:    NONE
 ** output parameters:   NONE
 ** Returned value:      NONE
 *********************************************************************************************************/
void SystemDealTaskInit(void)
{
    rt_thread_t SysDeal_tid;
    SysDeal_tid = rt_thread_create("sys_ctl", SysDeal_thread, RT_NULL, SYS_THREAD_STACK, SYS_THREAD_PRO, SYS_THREAD_TICK);
    if (SysDeal_tid != RT_NULL)
    {
        rt_thread_startup(SysDeal_tid);
    }
    else
    {
#if DEBUG_LOG_ENABLE
        rt_kprintf("/--> SysDeal create failed!\n");
#endif
    }
}


/*********************************************************************************************************
 ** Function name:       SystemTaskInit
 ** Descriptions:        System Task Init
 ** input parameters:    NONE
 ** output parameters:   NONE
 ** Returned value:      NONE
 *********************************************************************************************************/
static void SystemTaskInit(void)
{

    SystemDealTaskInit();  // 15


#if SCREEN_CONTROL_ENABLE
    ScreenDealTaskInit(); // 15
#endif





}

/*********************************************************************************************************
 ** Function name:       SystemStartInit
 ** Descriptions:        System Start Init
 ** input parameters:    NONE
 ** output parameters:   NONE
 ** Returned value:      NONE
 *********************************************************************************************************/
void SystemStartInit(void)
{
    SystemTaskInit();
}

十八、在system_deal.h中这么写

在这里插入图片描述

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2025-03-13     Administrator       the first version
 */
#ifndef APPLICATIONS_SYSTEM_DEAL_SYSTEM_DEAL_H_
#define APPLICATIONS_SYSTEM_DEAL_SYSTEM_DEAL_H_

#include <rtdevice.h>
#include <rtthread.h>
#include "board.h"
#include "stdio.h"

#include "system_config.h"
#include "screen_deal.h"


/* system io */
#define SYS_LED              GET_PIN(G, 13)

/* thread information */
#define SYS_THREAD_STACK 1024
#define SYS_THREAD_PRO 15
#define SYS_THREAD_TICK 10



extern void SystemStartInit(void);

#endif /* APPLICATIONS_SYSTEM_DEAL_SYSTEM_DEAL_H_ */

十九、system_config.h中这么写

在这里插入图片描述

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2025-03-13     Administrator       the first version
 */
#ifndef APPLICATIONS_SYSTEM_DEAL_SYSTEM_CONFIG_H_
#define APPLICATIONS_SYSTEM_DEAL_SYSTEM_CONFIG_H_


/* screen config */
#define SCREEN_CONTROL_ENABLE 1

#endif /* APPLICATIONS_SYSTEM_DEAL_SYSTEM_CONFIG_H_ */

二十、在applications文件夹下新建screen_deal文件夹,再在screen_deal文件夹下新建lcd_font.c、lcd_font.c、screen_deal.c、screen_deal.h文件夹。

在这里插入图片描述

二十一、在lcd_font.c中这么写

在这里插入图片描述

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2025-03-13     Administrator       the first version
 */

#include "lcd_font.h"
uchar ascii_table_5x7[95][5] = {
    {0x00,0x00,0x00,0x00,0x00}, // space
    {0x00,0x00,0x4f,0x00,0x00}, //!
    {0x00,0x07,0x00,0x07,0x00}, // "
    {0x14,0x7f,0x14,0x7f,0x14}, // #
    {0x24,0x2a,0x7f,0x2a,0x12}, // $
    {0x23,0x13,0x08,0x64,0x62}, // %
    {0x36,0x49,0x55,0x22,0x50}, // &
    {0x00,0x05,0x07,0x00,0x00}, // ]
    {0x00,0x1c,0x22,0x41,0x00}, // (
    {0x00,0x41,0x22,0x1c,0x00}, // )
    {0x14,0x08,0x3e,0x08,0x14}, // *
    {0x08,0x08,0x3e,0x08,0x08}, // +
    {0x00,0x50,0x30,0x00,0x00}, // ,
    {0x08,0x08,0x08,0x08,0x08}, // -
    {0x00,0x60,0x60,0x00,0x00}, //.
    {0x20,0x10,0x08,0x04,0x02}, // /
    {0x3e,0x51,0x49,0x45,0x3e}, // 0
    {0x00,0x42,0x7f,0x40,0x00}, // 1
    {0x42,0x61,0x51,0x49,0x46}, // 2
    {0x21,0x41,0x45,0x4b,0x31}, // 3
    {0x18,0x14,0x12,0x7f,0x10}, // 4
    {0x27,0x45,0x45,0x45,0x39}, // 5
    {0x3c,0x4a,0x49,0x49,0x30}, // 6
    {0x01,0x71,0x09,0x05,0x03}, // 7
    {0x36,0x49,0x49,0x49,0x36}, // 8
    {0x06,0x49,0x49,0x29,0x1e}, // 9
    {0x00,0x36,0x36,0x00,0x00}, // :
    {0x00,0x56,0x36,0x00,0x00}, // ;
    {0x08,0x14,0x22,0x41,0x00}, // <
    {0x14,0x14,0x14,0x14,0x14}, // =
    {0x00,0x41,0x22,0x14,0x08}, // >
    {0x02,0x01,0x51,0x09,0x06}, //?
    {0x32,0x49,0x79,0x41,0x3e}, // @
    {0x7e,0x11,0x11,0x11,0x7e}, // A
    {0x7f,0x49,0x49,0x49,0x36}, // B
    {0x3e,0x41,0x41,0x41,0x22}, // C
    {0x7f,0x41,0x41,0x22,0x1c}, // D
    {0x7f,0x49,0x49,0x49,0x41}, // E
    {0x7f,0x09,0x09,0x09,0x01}, // F
    {0x3e,0x41,0x49,0x49,0x7a}, // G
    {0x7f,0x08,0x08,0x08,0x7f}, // H
    {0x00,0x41,0x7f,0x41,0x00}, // I
    {0x20,0x40,0x41,0x3f,0x01}, // J
    {0x7f,0x08,0x14,0x22,0x41}, // K
    {0x7f,0x40,0x40,0x40,0x40}, // L
    {0x7f,0x02,0x0c,0x02,0x7f}, // M
    {0x7f,0x04,0x08,0x10,0x7f}, // N
    {0x3e,0x41,0x41,0x41,0x3e}, // O
    {0x7f,0x09,0x09,0x09,0x06}, // P
    {0x3e,0x41,0x51,0x21,0x5e}, // Q
    {0x7f,0x09,0x19,0x29,0x46}, // R
    {0x46,0x49,0x49,0x49,0x31}, // S
    {0x01,0x01,0x7f,0x01,0x01}, // T
    {0x3f,0x40,0x40,0x40,0x3f}, // U
    {0x1f,0x20,0x40,0x20,0x1f}, // V
    {0x3f,0x40,0x38,0x40,0x3f}, // W
    {0x63,0x14,0x08,0x14,0x63}, // X
    {0x07,0x08,0x70,0x08,0x07}, // Y
    {0x61,0x51,0x49,0x45,0x43}, // Z
    {0x00,0x7f,0x41,0x41,0x00}, // [
    {0x02,0x04,0x08,0x10,0x20}, // "\"
    {0x00,0x41,0x41,0x7f,0x00}, // ]
    {0x04,0x02,0x01,0x02,0x04}, // ^
    {0x40,0x40,0x40,0x40,0x40}, // _
    {0x01,0x02,0x04,0x00,0x00}, // `
    {0x20,0x54,0x54,0x54,0x78}, // a
    {0x7f,0x48,0x48,0x48,0x30}, // b
    {0x38,0x44,0x44,0x44,0x44}, // c
    {0x30,0x48,0x48,0x48,0x7f}, // d
    {0x38,0x54,0x54,0x54,0x58}, // e
    {0x00,0x08,0x7e,0x09,0x02}, // f
    {0x48,0x54,0x54,0x54,0x3c}, // g
    {0x7f,0x08,0x08,0x08,0x70}, // h
    {0x00,0x00,0x7a,0x00,0x00}, // i
    {0x20,0x40,0x40,0x3d,0x00}, // j
    {0x7f,0x20,0x28,0x44,0x00}, // k
    {0x00,0x41,0x7f,0x40,0x00}, // l
    {0x7c,0x04,0x38,0x04,0x7c}, // m
    {0x7c,0x08,0x04,0x04,0x78}, // n
    {0x38,0x44,0x44,0x44,0x38}, // o
    {0x7c,0x14,0x14,0x14,0x08}, // p
    {0x08,0x14,0x14,0x14,0x7c}, // q
    {0x7c,0x08,0x04,0x04,0x08}, // r
    {0x48,0x54,0x54,0x54,0x24}, // s
    {0x04,0x04,0x3f,0x44,0x24}, // t
    {0x3c,0x40,0x40,0x40,0x3c}, // u
    {0x1c,0x20,0x40,0x20,0x1c}, // v
    {0x3c,0x40,0x30,0x40,0x3c}, // w
    {0x44,0x28,0x10,0x28,0x44}, // x
    {0x04,0x48,0x30,0x08,0x04}, // y
    {0x44,0x64,0x54,0x4c,0x44}, // z
    {0x08,0x36,0x41,0x41,0x00}, // {
    {0x00,0x00,0x77,0x00,0x00}, // |
    {0x00,0x41,0x41,0x36,0x08}, // }
    {0x04,0x02,0x02,0x02,0x01}, // ~
};

uchar ascii_table_8x16[95][16]={

        /*-- 文字: --*/
        /*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*-- 文字: ! --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,

/*-- 文字: " --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*-- 文字: # --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,

/*-- 文字: $ --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,

/*-- 文字: % --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,

/*-- 文字: & --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,

/*-- 文字: ' --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*-- 文字: ( --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,

/*-- 文字: ) --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,

/*-- 文字: * --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,

/*-- 文字: + --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,

/*-- 文字: , --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,

/*-- 文字: - --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,

/*-- 文字: . --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,

/*-- 文字: / --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,

/*-- 文字: 0 --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,

/*-- 文字: 1 --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

/*-- 文字: 2 --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,

/*-- 文字: 3 --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,

/*-- 文字: 4 --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,

/*-- 文字: 5 --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,

/*-- 文字: 6 --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,

/*--  ����:  7  --*/
/*--  Comic Sans MS12;  �������¶�Ӧ�ĵ���Ϊ����x��=8x16   --*/
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,

/*-- 文字: 8 --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,

/*-- 文字: 9 --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,

/*-- 文字: : --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,

/*-- 文字: ; --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,

/*-- 文字: < --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,

/*-- 文字: = --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,

/*-- 文字: > --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,

/*-- 文字: ? --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,

/*-- 文字: @ --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,

/*-- 文字: A --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,

/*-- 文字: B --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,

/*-- 文字: C --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,

/*-- 文字: D --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,

/*-- 文字: E --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,

/*-- 文字: F --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,

/*-- 文字: G --*/
/*-- Comic Sans MS12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,

/*--  文字:  H  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,

/*--  文字:  I  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

/*--  文字:  J  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,

/*--  文字:  K  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,

/*--  文字:  L  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,

/*--  文字:  M  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,

/*--  文字:  N  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,

/*--  文字:  O  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,

/*--  文字:  P  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,

/*--  文字:  Q  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,

/*--  文字:  R  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,

/*--  文字:  S  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,

/*--  文字:  T  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,

/*--  文字:  U  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,

/*--  文字:  V  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,

/*--  文字:  W  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,

/*--  文字:  X  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,

/*--  文字:  Y  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,

/*--  文字:  Z  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,

/*--  文字:  [  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,

/*--  文字:  \  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,

/*--  文字:  ]  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,

/*--  文字:  ^  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  _  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,

/*--  文字:  `  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  a  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,

/*--  文字:  b  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,

/*--  文字:  c  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,

/*--  文字:  d  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,

/*--  文字:  e  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,

/*--  文字:  f  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

/*--  文字:  g  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,

/*--  文字:  h  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,

/*--  文字:  i  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

/*--  文字:  j  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,

/*--  文字:  k  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,

/*--  文字:  l  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

/*--  文字:  m  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,

/*--  文字:  n  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,

/*--  文字:  o  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,

/*--  文字:  p  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,

/*--  文字:  q  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,

/*--  文字:  r  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,

/*--  文字:  s  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,

/*--  文字:  t  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,

/*--  文字:  u  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,

/*--  文字:  v  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,

/*--  文字:  w  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,

/*--  文字:  x  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,

/*--  文字:  y  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,

/*--  文字:  z  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,

/*--  文字:  {  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,

/*--  文字:  |  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,

/*--  文字:  }  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,

/*--  文字:  ~  --*/
/*--  Comic Sans MS12;  此字体下对应的点阵为:宽x高=8x16   --*/
0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};



二十二、在lcd_font.h中这么写

在这里插入图片描述

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2025-03-13     Administrator       the first version
 */
#ifndef APPLICATIONS_SCREEN_DEAL_LCD_FONT_H_
#define APPLICATIONS_SCREEN_DEAL_LCD_FONT_H_

#define uchar unsigned char
#define uint unsigned int

extern uchar ascii_table_5x7[95][5];
extern uchar ascii_table_8x16[95][16];



#endif /* APPLICATIONS_SCREEN_DEAL_LCD_FONT_H_ */

二十三、在screen_deal.c中这么写

在这里插入图片描述

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2025-03-13     Administrator       the first version
 */

#include "screen_deal.h"

#include "lcd_font.h"

void gpio_init(void)
{
    rt_pin_mode(MCU_DSP_CS0, PIN_MODE_OUTPUT);
    rt_pin_mode(MCU_DSP_RST, PIN_MODE_OUTPUT);
    rt_pin_mode(MCU_DSP_CD, PIN_MODE_OUTPUT);
    rt_pin_mode(MCU_DSP_SCK, PIN_MODE_OUTPUT);
    rt_pin_mode(MCU_DSP_SDA, PIN_MODE_OUTPUT);

    rt_pin_write(MCU_DSP_CS0, PIN_HIGH);
    rt_pin_write(MCU_DSP_RST, PIN_HIGH);

}

/*写数据到 LCD 模块*/
void transfer_data(int data1)
{
    char i;
    rt_pin_write(MCU_DSP_CS0, PIN_LOW);
    rt_pin_write(MCU_DSP_CD, PIN_HIGH);
    for(i=0;i<8;i++)
    {
        rt_pin_write(MCU_DSP_SCK, PIN_LOW);
        if(data1&0x80)
        {
            rt_pin_write(MCU_DSP_SDA, PIN_HIGH);
        }
        else
        {
            rt_pin_write(MCU_DSP_SDA, PIN_LOW);
        }
        rt_pin_write(MCU_DSP_SCK, PIN_HIGH);
        data1 <<= 1;
    }
}
/*写指令到 LCD 模块*/
void transfer_command(int data1)
{
    char i;
    rt_pin_write(MCU_DSP_CS0, PIN_LOW);
    rt_pin_write(MCU_DSP_CD, PIN_LOW);
    for(i=0;i<8;i++)
    {
        rt_pin_write(MCU_DSP_SCK, PIN_LOW);
        if(data1&0x80)
        {
            rt_pin_write(MCU_DSP_SDA, PIN_HIGH);

        }
        else
        {
            rt_pin_write(MCU_DSP_SDA, PIN_LOW);
        }
        rt_pin_write(MCU_DSP_SCK, PIN_HIGH);
        data1 <<= 1;
    }
}



void lcd_address(uchar page,uchar column)
{
    rt_pin_write(MCU_DSP_CS0, PIN_LOW);
    column=column-1;                            //我们平常所说的第 1 列,在 LCD 驱动 IC 里是第 0 列。所以在这里减去 1
    page=page-1;
    transfer_command(0xb0+page);                //设置页地址。每页是 8 行。一个画面的 64 行被分成 8 个页。我们平常所说的第 1 页,在 LCD 驱动 IC 里是第 0 页,所以在这里减去 1*/
    transfer_command(((column>>4)&0x0f)+0x10);  //设置列地址的高 4 位
    transfer_command(column&0x0f);              //设置列地址的低 4 位
}
/*全屏清屏*/
void clear_screen()
{
    unsigned char i,j;
    rt_pin_write(MCU_DSP_CS0, PIN_LOW);
    for(i=0;i<9;i++)
    {
        lcd_address(1+i,1);
        for(j=0;j<132;j++)
        {
            transfer_data(0x00);
        }
    }
    rt_pin_write(MCU_DSP_CS0, PIN_HIGH);
}


/*显示 16x32 点阵图像、汉字、生僻字或 16x32 点阵的其他图标*/
void display_graphic_16x32(uchar page,uchar column,uchar *dp)
{
    uchar i,j;
    rt_pin_write(MCU_DSP_CS0, PIN_LOW);
    for(j=0;j<4;j++)
    {
        lcd_address(page+j,column);
        for (i=0;i<16;i++)
        {
            transfer_data(*dp);     /*写数据到 LCD,每写完一个 8 位的数据后列地址自动加 1*/
            dp++;
        }
    }
    rt_pin_write(MCU_DSP_CS0, PIN_HIGH);
}

/*显示 32x32 点阵图像、汉字、生僻字或 32x32 点阵的其他图标*/
void display_graphic_32x32(uchar page,uchar column,uchar *dp)
{
    uchar i,j;
    rt_pin_write(MCU_DSP_CS0, PIN_LOW);
    for(j=0;j<4;j++)
    {
        lcd_address(page+j,column);
        for (i=0;i<31;i++)
        {
            transfer_data(*dp);     /*写数据到 LCD,每写完一个 8 位的数据后列地址自动加 1*/
            dp++;
        }
    }
    rt_pin_write(MCU_DSP_CS0, PIN_HIGH);
}


/*显示 16x16 点阵图像、汉字、生僻字或 16x16 点阵的其他图标*/
void display_graphic_16x16(uchar page,uchar column,uchar *dp)
{
    uchar i,j;
    rt_pin_write(MCU_DSP_CS0, PIN_LOW);
    for(j=0;j<2;j++)
    {
        lcd_address(page+j,column);
        for (i=0;i<16;i++)
        {
            transfer_data(*dp);     /*写数据到 LCD,每写完一个 8 位的数据后列地址自动加 1*/
            dp++;
        }
    }
    rt_pin_write(MCU_DSP_CS0, PIN_HIGH);
}

/*显示 8x16 点阵图像、ASCII, 或 8x16 点阵的自造字符、其他图标*/
void display_graphic_8x16(uchar page,uchar column,uchar *dp)
{
    uchar i,j;
    rt_pin_write(MCU_DSP_CS0, PIN_LOW);
    for(j=0;j<2;j++)
    {
        lcd_address(page+j,column);
        for (i=0;i<8;i++)
        {
            transfer_data(*dp);                 /*写数据到 LCD,每写完一个 8 位的数据后列地址自动加 1*/
            dp++;
        }
    }
    rt_pin_write(MCU_DSP_CS0, PIN_HIGH);
}

void display_string_8x16(uint page,uint column,uchar *text)
{
    uint i=0,j,k,n;
    rt_pin_write(MCU_DSP_CS0, PIN_LOW);
    while(text[i]>0x00)
    {
        if((text[i]>=0x20)&&(text[i]<=0x7e))
        {
            j=text[i]-0x20;
            for(n=0;n<2;n++)
            {
                lcd_address(page+n,column);
                for(k=0;k<8;k++)
                {
                    transfer_data(ascii_table_8x16[j][k+8*n]);/*显示 8x16 的 ASCII 字到 LCD 上,y 为页地址,x 为列地址,最后为数据*/
                }
            }
            i++;
            column+=8;

        }
        else
        i++;
    }
}

void display_string_5x7(uint page, uint column, uchar *text)
{
    uint i=0,j,k;
    rt_pin_write(MCU_DSP_CS0, PIN_LOW);
    while(text[i] > 0x00)
    {
        if((text[i]>=0x20)&&(text[i]<0x7e))
        {
            j=text[i] - 0x20;
            lcd_address(page,column);
            for(k=0;k<5;k++)
            {
                transfer_data(ascii_table_5x7[j][k]);/*显示 5x7 的 ASCII 字到 LCD 上,y 为页地址,x 为列地址,最后为 数据*/
            }
            i++;
            column+=6;
        }
        else
        {
            i++;
        }
    }
}


//==================display a piture of 128*64 dots================
void disp_grap(char *dp)
{
    int i,j;
    for(i=0;i<8;i++)
    {
        rt_pin_write(MCU_DSP_CS0, PIN_LOW);
        transfer_command(0xb0+i);
        transfer_command(0x10);
        transfer_command(0x00);
        for(j=0;j<128;j++)
        {
            transfer_data(*dp);
            dp++;
        }
    }
}
// 横向滚动文字
void scroll_text_demo()
{
    char *text = "RT-Thread Smart IoT System! ";
    int pos = 128; // 初始位置在屏幕右侧

    while(1) {
        clear_screen();
        display_string_8x16(3, pos, text);
        rt_thread_mdelay(60);

        if(--pos < -24*8) // 根据文本长度调整
            pos = 128;
    }
}



// 纵向滚动文字
void vertical_scroll_demo()
{
    uint8_t page = 8;
    char *text = "Hello RT-Thread!";

    while(1) {
        for(int i=0; i<8; i++) {
            clear_screen();
            display_string_8x16(page-i, 20, text);
            rt_thread_mdelay(200);
        }
    }
}


/*LCD 模块初始化*/
void initial_lcd()
{
    gpio_init();
    rt_pin_write(MCU_DSP_CS0, PIN_LOW);   //片选引脚,低电平进行使能
    rt_pin_write(MCU_DSP_RST, PIN_LOW);   /*低电平硬件复位*/
    rt_thread_mdelay(100);    /*复位完毕*/
    rt_pin_write(MCU_DSP_RST, PIN_HIGH);  //复位引脚拉高,停止硬件复位
    rt_thread_mdelay(100);
    transfer_command(0xe2);  /*软复位*/
    rt_thread_mdelay(5);
    transfer_command(0x2c);  /*升压步聚 1*/
    rt_thread_mdelay(5);
    transfer_command(0x2e);  /*升压步聚 2*/
    rt_thread_mdelay(5);
    transfer_command(0x2f);  /*升压步聚 3*/
    rt_thread_mdelay(5);
    transfer_command(0x24);  /*粗调对比度,可设置范围 0x20~0x27*/
    transfer_command(0x81);  /*微调对比度*/
    transfer_command(0x1a);  /*0x1a,微调对比度的值,可设置范围 0x00~0x3f*/
    transfer_command(0xa3);  /*1/9 偏压比(bias)*/
    transfer_command(0xc8);  /*行扫描顺序:从下到上*/
    transfer_command(0xa0);  /*列扫描顺序:从右到左*/
    transfer_command(0x60);  /*起始行:第一行开始*/
    transfer_command(0xaf);  /*开显示*/

    rt_pin_write(MCU_DSP_CS0, PIN_HIGH);
}

static void ScreenDeal_thread(void* parameter)
{
    char str[64];
    initial_lcd();  //lcd初始化
    clear_screen(); //lcd清屏

    while (1)
    {
        sprintf(str, "%s ", "wuyoheihei~!!");

       display_string_5x7(3, 50, str);
       rt_thread_mdelay(50);
    }
}


void ScreenDealTaskInit(void)
{
    rt_thread_t Screen_tid;

    Screen_tid = rt_thread_create("scn_ctl", ScreenDeal_thread, RT_NULL, SCREEN_THREAD_STACK, SCREEN_THREAD_PRO, SCREEN_THREAD_TICK);
    if (Screen_tid != RT_NULL)
    {
        rt_thread_startup(Screen_tid);
    }
    else
    {
#if DEBUG_LOG_ENABLE
        rt_kprintf("/--> Screen create failed!\n");
#endif
    }
}

二十四、在screen_deal.h中这么写

在这里插入图片描述

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2025-03-13     Administrator       the first version
 */
#ifndef APPLICATIONS_SCREEN_DEAL_SCREEN_DEAL_H_
#define APPLICATIONS_SCREEN_DEAL_SCREEN_DEAL_H_

#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#include <Ctype.h>

#include "stdio.h"

#define COL(x, per_word) (x*per_word)

/* screen param */
#define SCREEN_THREAD_STACK     2048
#define SCREEN_THREAD_PRO       16
#define SCREEN_THREAD_TICK      10


/*********************************screen*************************************************/
#define MCU_DSP_CS0      GET_PIN(E, 2)
#define MCU_DSP_RST      GET_PIN(E, 3)
#define MCU_DSP_CD       GET_PIN(E, 4)
#define MCU_DSP_SCK      GET_PIN(E, 5)
#define MCU_DSP_SDA      GET_PIN(E, 6)

extern void ScreenDealTaskInit(void);

#endif /* APPLICATIONS_SCREEN_DEAL_SCREEN_DEAL_H_ */

二十五、包含头文件

在这里插入图片描述

二十六、编译通过,有一些警告是有关变量类型的,不用在意

在这里插入图片描述

二十七、在这个屏幕线程里改这里就能显示出文字

在这里插入图片描述

二十八、下载程序后就能在屏幕上显示出字了

在这里插入图片描述

二十九、这里的3表示第3行,50表示第50列

在这里插入图片描述

三十、这个是LCD的初始化,具体指令的含义需要对照指令表查看

在这里插入图片描述

三十一、这里是与LCD通信的IO口,具体可以根据实际使用情况进行修改

在这里插入图片描述

相关文章:

  • 【HCIA-晴天老师】15-VLAN的Hybrid配置笔记
  • Camera2 API拍照失败问题实录:从错误码到格式转换的排坑之旅
  • Python实现生产者消费者模型-多进程与多线程处理
  • 基于Redis分布锁+事务补偿解决数据不一致性问题
  • 大数据E10:基于Spark和Scala编程解决一些基本的数据处理和统计分析,去重、排序等
  • 论文阅读:2023 EMNLP SeqXGPT: Sentence-level AI-generated text detection
  • 盛铂科技国产SLMF315超低相位噪声频率综合器介绍
  • SpringBoot有几种获取Request对象的方法
  • 龙虎榜——20250321
  • 第五章 起航18 管理会议信息同步
  • 计算机操作系统(三) 操作系统的特性、运行环境与核心功能(附带图谱更好对比理解))
  • 游戏引擎学习第173天
  • JAVA————十五万字汇总
  • QPrintDialog弹出慢的问题
  • 图表的黄金比例
  • clamav服务器杀毒(Linux服务器断网状态下如何进行clamav安装、查杀)
  • Office 2024 专业版系统安装
  • 黑马程序员-微服务开发-MybatisPlus的使用
  • 【LLM学习】论文学习-Qlora: QLoRA: Efficient Finetuning of Quantized LLMs
  • docker compose部署minio报错
  • 习近平将出席中国—拉美和加勒比国家共同体论坛第四届部长级会议开幕式并发表重要讲话
  • 体验中国传统文化、采购非遗文创,波兰游客走进上海市群艺馆
  • 瑞士联邦主席凯勒-祖特尔、联邦副主席帕姆兰会见何立峰
  • 构筑高地共伴成长,第六届上海创新创业青年50人论坛在沪举行
  • 报告:4月份新增发行的1763亿元专项债中,投向房地产相关领域约717亿元
  • 七方面118项任务,2025年知识产权强国建设推进计划印发