首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌入式C程序设计:正确清除LCD

嵌入式C程序设计:正确清除LCD
EN

Stack Overflow用户
提问于 2015-10-13 22:00:17
回答 1查看 1.3K关注 0票数 0

我试图为嵌入式板(RX63N)编写代码,我想在其中使用LCD和车载开关来实现以下功能:在按下开关时,程序应该根据先前的状态“暂停”或“取消暂停”,而液晶显示应该在暂停时显示“暂停”。在取消暂停时,液晶显示器应该在x和y定义的位置显示自定义图形。它使用函数Set_LCD_Char(N)显示,其中N被定义为来自位图图像的自定义图形。但我需要清理液晶显示器,然后再做任何改变,这是我正在努力的地方。在使用lcd_clear()函数时,在任何地方保持液晶显示为空白(或几乎为空白,即文本和图形非常微弱以致于没有),有人能帮助我吗?这是代码:

代码语言:javascript
复制
while (1)
{
//  lcd_clear();
if(g_sw3_press == true){         //detect switch press
        pause_flag = !pause_flag;
        g_sw3_press = false;    //reset switch

    }

    if (pause_flag){
        RESET_ALL_LEDS();
        jet_x = 0;
        jet_y = 0;
         Set_Font_Bitmap();   //changes from text mode to bitmap
         Set_LCD_Pos(jet_x,jet_y);
         Set_LCD_Char(3);

    }
    else if(!(pause_flag)){ 
        ALL_RED_LEDS_ON();
         Set_Font_8_by_8();         
        lcd_display(LCD_LINE1, "    PAUSED   ");
    }   

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-13 22:45:11

首先,像您正在做的那样做一个繁忙的轮询循环通常不是一个好主意。但我不能推荐任何具体的替代方案,因为平台和操作系统(如果有的话)没有提供(也许您的平台没有对事件的支持)。

不管怎么说,不知道这是不是你需要的答案。但是,由于您要求一个示例,而我无法有效地将代码放入注释中,下面是我的意思。问题是你一直在写和清除液晶显示器。因此,实际上,这两个行动是相互竞争的。因此,解决这个问题的一个方法是只在状态发生变化时更新LCD。

代码语言:javascript
复制
while (1)
{
    if(g_sw3_press == true){         //detect switch press
        pause_flag = !pause_flag;
        g_sw3_press = false;    //reset switch
    } else {
        /* No state change - nothing to do. Poll again. */
        continue;
    }

    lcd_clear(); 
    if (pause_flag){
        RESET_ALL_LEDS();
        jet_x = 0;
        jet_y = 0;
         Set_Font_Bitmap();   //changes from text mode to bitmap
         Set_LCD_Pos(jet_x,jet_y);
         Set_LCD_Char(3);

    } else { 
        ALL_RED_LEDS_ON();
         Set_Font_8_by_8();         
        lcd_display(LCD_LINE1, "    PAUSED   ");
    }   
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33113378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档