You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

8051单片机连接的LCD按下按键时如何返回初始显示屏幕

8051 LCD界面返回初始屏实现方案

你可以根据硬件情况选择以下两种实现方案,优先推荐复用现有按键的方案,不需要额外修改硬件:

方案1:复用现有模式按键(短按切换界面,长按返回初始屏)

原理是检测按键按下的时长,小于设定阈值走原有滚动切换逻辑,大于阈值直接跳转回初始屏。修改后代码如下:

#include <stdio.h>
#include <string.h>
#include <stdint.h>

void change_screen(void);    
int count = 0;
// 长按阈值,单位和你现有delay函数一致,比如delay是1ms的话,1000对应1秒
#define LONG_PRESS_THRESHOLD 1000 

void change_screen(void)
{ 
    if (modebutton == 1) {      // 检测到按键按下
        uint16_t press_time = 0;
        // 统计按键按下时长
        while(modebutton == 1) {
            delay(1);
            press_time++;
            if(press_time >= LONG_PRESS_THRESHOLD) {
                // 触发长按,返回初始屏
                count = 0;
                display_screen0(); // 替换为你的初始屏显示函数
                while(modebutton == 1); // 等待按键松开
                modebutton = 0;
                return;
            }
        }
        // 短按逻辑,保留原有切换逻辑
        delay(100); // 消抖
        if (count == 0) {                       
            count++;
            display_screen1();      
        } else if (count == 1) {          
            count++;            
            display_screen2();      
        } else if (count == 2) {          
            display_screen3(); 
            count = 0;       
        } 
        modebutton=0;
     } 
}

修改说明

  • 新增长按阈值宏,可根据自己的操作习惯调整触发时长
  • 增加按下时长统计逻辑,长按触发后直接重置界面计数到0,跳转初始屏
  • 原有短按切换逻辑完全保留,不影响原有使用习惯

方案2:新增独立返回按键

如果硬件有空余IO口,可以单独加一个返回按键,代码修改量更小:

// 新增返回按键检测逻辑,放到主循环或者change_screen函数中都可以
if(returnbutton == 1) {
    delay(100); // 消抖
    if(returnbutton == 1) {
        count = 0;
        display_screen0(); // 显示初始屏
        while(returnbutton == 1); // 等待按键松开
        returnbutton = 0;
    }
}

注意事项

  • 如果你默认的初始屏就是screen1,把display_screen0()替换为display_screen1(),对应调整count重置后的数值即可
  • 按键消抖时长根据你的硬件实际情况调整,避免误触发

内容的提问来源于stack exchange,提问作者greetal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 21:15:03