LCD写入更新问题

时间:2014-10-24 11:14:35

标签: c lcd arduino-uno

我正在使用arduino Uno和16X2 lCD进行编程。我几乎编写了似乎有用的代码。我在更新LCD值时遇到小问题。我不能粘贴我的完整代码,只是粘贴它的一部分。它只是菜单选择和编辑选项。我一个接一个地粘贴。

这是如何在循环中调用

void loop()
{
    LCD_Display();
    CHK_Key();
    wdt_reset();
    Track_loop();
    //Serial.println("..........................");
}

LCD显示程序如下所示

void LCD_Display()
{
    Display_counter1=Display_counter1+1;

    if(Update_Screen==1)
    {
        lcdClear();
        switch(cur_disp_screen_type1)
        {
            case DATE_TIME:digitalClockDisplay();break;
            case COORDINATE:Display_coordinate();break;
            case WIND_SPEED: Display_Wind();break;
            case SOLAR_ANGLE:Display_angle();break;
            case SET_PARAMETER:Set_Parameter();break;
            case GET_PASSWORD:GetEditPassword(Edit_password,4);Blink_Password(current_Password);break;
            case EDIT_MODE:Edit_parameter();break;
            case EDIT_DATE_TIME:ClockEditDisplay(edit_date_time,6); Blink_LCD(cur_edit_item);break;
            case EDIT_TRACK_TIME:Track_Edit_Display(edit_track_time,2);Blink_Track(cur_edit_time_item);break;
            case EDIT_COORDINATE:Edit_Coordinate_Display(edit_cordinate,4);Blink_Coordinate(cur_coordinate_item);break;
            case EDIT_LIMIT:Edit_Limit_Display(edit_limits,4); Blink_Limit(cur_edit_limit);break;
        }
        Update_Screen=0;
        if( cur_disp_screen_type1>DISPLAY_COUNT_MAX)
        {
            cur_disp_screen_type1= DATE_TIME;
        }
    }
    if(Display_counter1>=6)
    {
        Display_counter1=0;Update_Screen=1;
    }
}

我可以正确阅读这些值。编辑时出现问题。所以这是编辑选项的一部分。

void GetEditPassword(int password_data[],int size)
{
    lcd.setCursor(0,0);
    lcd.write("ENTER PASSWORD  ");
    lcd.setCursor(0,1);
    lcd.print(password_data[0]);
    lcd.print(password_data[1]);
    lcd.print(password_data[2]);
    lcd.print(password_data[3]);
    lcd.print("              ");
}

这里我怀疑我是否设置了光标0,0和0,1。因此每次调用函数我都假设这些函数正在更新,因此我可以在编辑时看到后面的字母。我的问题是如何解决这个问题。

void Blink_Password(int Password_pos)
{ 
    int term1;
    int term2;
    lcd.blink();
    delay(40);
    switch(Password_pos)
    {
    case PASSWORD_ITEM1:  lcd.print(password1);Update_Screen=1; 
                          goto PASSWORD;
                          break;

    case PASSWORD_ITEM2:lcd.print(password2);Update_Screen=1; 
                             goto PASSWORD;
                          break;

    case PASSWORD_ITEM3:lcd.print(password3);Update_Screen=1; 
                          goto PASSWORD;
                          break;


    case PASSWORD_ITEM4:lcd.print(password4);Update_Screen=1; 
                           goto PASSWORD;
                          break;                      
    }
PASSWORD:   lcd.setCursor(Blink_password_pos[Password_pos][0],Blink_password_pos[Password_pos][1]);
    lcd.noCursor();//timedBeep(shortBeep,1);
    delay(40);
}

0 个答案:

没有答案