Форум myROBOT.ru » Лаборатория » Микроконтроллеры » Беда с WH2002L

Страниц (2): « 1 [2]
 

16. FranzSib - 03 Сентября, 2011 - 21:18:27 - перейти к сообщению
Ну вроде выводит текст теперь. То что у меня весь экран засвечивался это я контраст перекрутил)
17. FranzSib - 04 Сентября, 2011 - 00:13:59 - перейти к сообщению
А не подскажите таблицу кодировки символов, а то весь вечер пропарился ничего не смог сделать, хотя экран заявлен как англо-русский.
18. nest - 04 Сентября, 2011 - 00:37:36 - перейти к сообщению
вы читали даташит на контроллер дисплея?
HD44780, там есть две таблицы, одна с китайскими символами, вторая - с кирилицей.
вот оттуда и брать коды к кирилице.

Но можно было и самому накалякать: увеличивайте счётчик в цикле и выводите его как символ
19. FranzSib - 04 Сентября, 2011 - 07:41:18 - перейти к сообщению
nest пишет:
вы читали даташит на контроллер дисплея?
HD44780, там есть две таблицы, одна с китайскими символами, вторая - с кирилицей.
вот оттуда и брать коды к кирилице.

Но можно было и самому накалякать: увеличивайте счётчик в цикле и выводите его как символ

Да я как раз эту таблицу последней пробовал, выводил на дисплей коды, выводило какойто левый знак. Попробую сам пробить адреса как вы говорите, хотя это довольно смешно, придётся вручную подбирать все коды.
20. nest - 04 Сентября, 2011 - 11:59:05 - перейти к сообщению
ну все коды подбирать не надо, оно всё по алфавиту Улыбка
21. FranzSib - 04 Сентября, 2011 - 12:03:29 - перейти к сообщению
nest пишет:
ну все коды подбирать не надо, оно всё по алфавиту Улыбка

Состряпал двухмерный массив, не думал что настолько геморно будет, не одной таблице не соответствует по кодам.
22. nest - 04 Сентября, 2011 - 12:23:12 - перейти к сообщению
латинские то соответствуют?
23. FranzSib - 04 Сентября, 2011 - 12:24:02 - перейти к сообщению
nest пишет:
латинские то соответствуют?

Только если писать прям буквами, если лесть в коды то полный мусор лезет
24. nest - 04 Сентября, 2011 - 12:41:42 - перейти к сообщению
значит что то вы не так делаете.

LCD_Data(0x33); - так?
25. FranzSib - 04 Сентября, 2011 - 12:53:40 - перейти к сообщению
nest пишет:
значит что то вы не так делаете.

LCD_Data(0x33); - так?

Ну да
(Добавление)
Может подскажете кто знает Си лучше чем я, вот сделал функцию которая получает строку, и посимвольно просматривает её, если символ есть в массиве то заменяет его кодом из массива, если нету то оставляет как есть, почемуто работает неправильно.

CODE:

int Func (char* Data)
{
size_t LenData = strlen( Data ) + 1; /*Длинна строки*/
char* TempBuffer = ( char* ) malloc( LenData ); /*Выделение памяти под буфер размером со строку Data*/
int k;
char *IndexData = &Data[0];
char *IndexBuffer = &TempBuffer[0];

unsigned char* Symbols[107][2] =
{
{"А",65}, {"Б",160}, {"В",66}, {"Г",161}, {"Д",224}, {"Е",69},
{"Ё",162}, {"Ж",163}, {"З",164}, {"И",165}, {"Й",166}, {"К",75},
{"Л",167}, {"М",77}, {"Н",72}, {"О",79}, {"П",168}, {"Р",80},
{"С",67}, {"Т",84}, {"У",169}, {"Ф",170}, {"Х",88}, {"Ц",225},
{"Ч",171}, {"Ш",172}, {"Щ",226}, {"Ъ",173}, {"Ы",174}, {"Ь",173},
{"Э",175}, {"Ю",176}, {"Я",177},

{"а",97}, {"б",178}, {"в",179}, {"г",180}, {"д",227}, {"е",101},
{"ё",181}, {"ж",182}, {"з",183}, {"и",184}, {"й",185}, {"к",186},
{"л",187}, {"м",188}, {"н",189}, {"о",111}, {"п",190}, {"р",112},
{"с",99}, {"т",191}, {"у",121}, {"ф",228}, {"х",120}, {"ц",229},
{"ч",192}, {"ш",193}, {"щ",230}, {"ъ",194}, {"ы",195}, {"ь",196},
{"э",197}, {"ю",198}, {"я",199},

{"!",32}, {" ",33}, {"^",94}, {"#",35}, {"$",36}, {"%",37},
{"&",38}, {"'",39}, {"(",40}, {")",41}, {"*",42}, {"+",43},
{",",44}, {"-",45}, {".",46}, {"/",47}, {"0",48}, {"1",49},
{"2",50}, {"3",51}, {"4",52}, {"5",53}, {"6",54}, {"7",55},
{"8",56}, {"9",57}, {":",58}, {";",59}, {"<",60}, {">",61},
{"?",62}, {"[",91}, {"]",93}, {"_",95}, {"~",237}, {"@",238},
{"`",200}, {"|",201}, {"№",206}
}; //~ - колокоьчик, @ - еврокруг, ` - <<, | - >>, { = левая ковычка, } - правая ковычка, № - f

while( *IndexData )
{
for(k=-1; k<sizeof(Symbols);k++)
{
if( *Symbols[k][0] == *IndexData )
{
*IndexBuffer = Symbols[k][1];
LCDsendChar(Symbols[k][1]);
goto next;
}
*IndexBuffer = *IndexData;
LCDsendChar(*IndexData);
}
next:
IndexData++;
IndexBuffer++;
}
//sprintf(Temp, TempBuffer);
return TempBuffer;
}
26. nest - 04 Сентября, 2011 - 13:01:28 - перейти к сообщению
странно.
если буквами работает, а кодами нет - чтото не так с кодом.
27. FranzSib - 04 Сентября, 2011 - 13:04:06 - перейти к сообщению
Функция должна вернуть строчку где русские символы и ещё кое какие заменены кодами.
28. mihail - 04 Сентября, 2011 - 18:19:04 - перейти к сообщению
Абстрактный пример вывода символа:
function('П');
function('\x8F');
В обоих случаях на экране появится буква П.