8051单片机连接LCD双屏幕时如何用同一按键实现不同界面计数递增
解决方案
你的代码问题出在increment()递增函数没有绑定当前显示界面,固定只修改第一个界面对应的temp变量,你已经定义的count变量本身就是界面状态标识,可以直接用来做判断分支,修改方法如下:
- 修改
increment()函数逻辑,根据当前界面状态选择要累加的变量:
void increment(void) { if (button2 == 1) // 检测到递增按键按下 { // count=1对应界面1,count=0对应界面2 if (count == 1) { temp++; if (temp > 0x39) temp = 0x30; lcd_dout(temp); } else { temp1++; if (temp1 > 0x39) temp1 = 0x30; lcd_dout(temp1); } } set_cursor_position(1, 0); button2 = 0; }
- (可选优化)可以把界面状态变量重命名+加宏定义提升代码可读性:
// 原count变量替换为下面的定义 #define SCREEN1 1 #define SCREEN2 0 unsigned char current_screen = SCREEN1; // 初始默认显示界面1 // 对应修改切屏函数的判断逻辑即可,后续维护不需要再记0和1对应哪个界面
修改完成后,在哪个界面按下递增按键,就会累加对应界面的计数值,两个界面的(1,0)位置计数互相独立。
内容的提问来源于stack exchange,提问作者jack
相关产品推荐
相关产品推荐

