我正在使用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);
}