Как следует из комментария ikegami, ваша проблема заключается в следующем коде:
void Print_string(void)
{
/////problem below//////
char* string=0;
/////problem above/////
Unicode_text=Greek_text;
strcpy_P(string,Unicode_text[1]);
lcd_print_unicode(string);
}
У вас есть указатель на символьный буфер, указывающий на 0. Теперь 0 МОЖЕТ быть выделенным буфером для вашей целевой strcopy, но, скорее всего, это не так (вероятно, это векторная таблица).
strcpy_P
не выделяет для вас буфер. Он записывает только в буфер, указатель которого вы указали.
Превратите
char * string=0;
в
char string[MAX_EXPECTED_STRING_LENGTH_PLUS_TERMINATING_0];
, и ваша проблема будет решена.