前言

以下内容仅代表个人观点,基于有限的经验和认知整理而成。每个人的视角和背景不同,观点难免存在差异或局限。若存在疏漏或不足之处,欢迎指正与探讨,但请多一份包容。希望通过这些思考,能激发更多有益的交流。
——
观点无高下,讨论有温度
高亮显示在蓝桥杯嵌入式第9、10届均出现了,未来也很有可能会出现,所以还是很有必要学习一下的。

两种高亮显示

1、背景高亮
在这里插入图片描述

2、文本高亮
在这里插入图片描述

介绍代码

sprintf(text,"    number:%x  ",led_sta); //%x输出十六进制%d十进制整数 %f十进制浮点数  %c单个字符
LCD_DisplayStringLine(Line8,(uint8_t *)text);//局部刷新 在第九行显示

操作函数示例(局部高亮)

/*** @brief  在指定行高亮显示字符串片段
  * @param  line  行号 (对应LCD的第几行显示)
  * @param  str   要显示的字符串
  * @param  start 高亮起始位置 (0-19)
  * @param  end   高亮结束位置 (0-19)
  * @note   该函数实现两种显示效果:
  *         1. 非高亮区域:黑色背景显示
  *         2. 高亮区域:黄色背景显示
  */
void highlight(uint8_t line, char *str, uint8_t start, uint8_t end)
{
    // 第一部分:显示非高亮字符(黑色背景)
    // 遍历该行所有字符位置(共20个字符)
    for(uint8_t i = 0; i < 20; i++)
    {
        // 判断当前字符是否在非高亮区域
        if(i < start || i > end)
        {
            // 显示单个字符
            // 参数说明:
            //   line*24 - 行位置计算(每行高度24像素)
            //   320-(16*i) - 列位置计算(屏幕宽度320像素,每个字符宽度16像素)
            //  * 位置计算说明:
            //      320表示从屏幕右侧开始计算(从右向左显示)
            //      16*i表示字符间距(16像素/字符)
            LCD_DisplayChar(line * 24, (320 - (16 * i)), str[i]);
        }
    }
    
    // 第二部分:显示高亮字符(黄色背景)
    LCD_SetBackColor(Yellow);  // 设置背景色为黄色
    
    // 遍历高亮区间的字符
    for(uint8_t i = start; i <= end; i++)
    {
        // 显示高亮字符(使用相同的坐标计算逻辑)
        LCD_DisplayChar(line * 24, (320 - (16 * i)), str[i]);
    }
    
    // 第三部分:恢复默认背景色
    LCD_SetBackColor(Black);  // 重置背景色为黑色(避免影响后续显示)
}

总结

此文仅代表个人愚见。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐