Alex_Golubev 0 11 сентября, 2017 Опубликовано 11 сентября, 2017 · Жалоба Привет. Подскажите, что нужно сделать чтобы отображалась корректно русские шрифты в программе keil 4.72? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 11 сентября, 2017 Опубликовано 11 сентября, 2017 · Жалоба https://electronix.ru/forum/index.php?showtopic=101203 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 11 сентября, 2017 Опубликовано 11 сентября, 2017 · Жалоба В какой кодировке ? UTF8 / UTF16 / 1251 / KOI8 ? Вы определить какой у вас русский. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 11 сентября, 2017 Опубликовано 11 сентября, 2017 · Жалоба В какой кодировке ? Кодировка ascii получается 1251. Мне нужно выводить тексты на двухстрочный дисплей. Для этого нужна кириллица. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 11 сентября, 2017 Опубликовано 11 сентября, 2017 · Жалоба Edit - Configuration Encoding Russian Windows 1251 А во что эти буквы компилируются - смотрите в bin/hex или отладчиком. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 11 сентября, 2017 Опубликовано 11 сентября, 2017 · Жалоба Я смотрю что выводит мне дисплей. У меня нет Russian Windows 1251. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 11 сентября, 2017 Опубликовано 11 сентября, 2017 · Жалоба Вам не с кейлом, а с контроллером дисплея разбираться надо; в нём кириллицы вообще может не быть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 11 сентября, 2017 Опубликовано 11 сентября, 2017 · Жалоба В дисплее кириллица есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 11 сентября, 2017 Опубликовано 11 сентября, 2017 · Жалоба В дисплее кириллица есть. Тогда по даташиту дисплейного контроллера посмотреть как кодовую страницу в нём включить (рискну предположить cp866) или тупо (если он нормально управляется) вытянуть как кириллица в знакогенераторе расположена. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 11 сентября, 2017 Опубликовано 11 сентября, 2017 · Жалоба В дисплее кириллица есть. Функции для работы с данным дисплеем написаны и работают в IAR. Но в keil не хотят. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 11 сентября, 2017 Опубликовано 11 сентября, 2017 · Жалоба Keil 5 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 11 сентября, 2017 Опубликовано 11 сентября, 2017 · Жалоба В дисплее кириллица есть. Функции для работы с данным дисплеем написаны и работают в IAR. Но в keil не хотят. Насколько же этот пост отличается от стартового (; подробности клещами вытягиваются. Функции вашего авторства? А содержимое строк для отображения (hex значения подразумеваю) совпадает у IAR-а и Keil-а? Исходники у одного могли быть в win1251, а у другого в юникоде. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 12 сентября, 2017 Опубликовано 12 сентября, 2017 (изменено) · Жалоба Более лучше разобрался оказалось кириллица работает. Но в редакторе вместо кириллицы кракозябры. Функции писал сам. void LCD_cmd (char param) { xdata char i; P2 = P2 & ~RS & ~RW & ~E; for(i=0;i!=REACTTIME;i++); P2 = P2 | E; for(i=0;i!=REACTTIME;i++); P0 = param; for(i=0;i!=REACTTIME;i++); P2 = P2 & ~E; for(i=0;i!=REACTTIME;i++); } void LCD_data(char Data) { xdata char i; P2 = P2 & ~RW | RS; for(i=0;i!=REACTTIME;i++); P2 = P2 | E; for(i=0;i!=REACTTIME;i++); P0 = Data; for(i=0;i!=REACTTIME;i++); P2 = P2 & ~E; for(i=0;i!=REACTTIME;i++); } void LCD_start (void) { LCD_cmd(0x38); LCD_cmd(0x01); LCD_cmd(0x06); LCD_cmd(0x0C); LCD_cmd(SCR_CLR); LCD_cmd(RST_AC); } void SendCharLCD (char chr) { LCD_data(chr); } //-------------------------------- // Таблицы символов // Win code const unsigned char WinTable [] = { 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ь', 'Ы', 'Ъ', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ь', 'ы', 'ъ', 237 ,238, 239, }; // Дисплей code const unsigned char DispTable [] = { 0x41, 0xA0, 0x42, 0xA1, 0xE0, 0x45, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0x4B, 0xA7, 0x4D, 0x48, 0x4F, 0xA8, 0x50, 0x43, 0x54, 0xA9, 0xAA, 0x58, 0xE1, 0xAB, 0xAC, 0xE2, 0x62, 0xAE, 0xAD, 0xAF, 0xB0, 0xB1, 0x61, 0xB2, 0xB3, 0xB4, 0xE3, 0x65, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0x6F, 0xBE, 0x70, 0x63, 0xBF, 0x79, 0xE4, 0x78, 0xE5, 0xC0, 0xC1, 0xE6, 0xC4, 0xC3, 0xC2, 0xC5, 0xC6, 0xC7, }; //-------------------------------- // Перекодировка символа unsigned char WinToDisp ( unsigned char c ) { xdata unsigned char i; for ( i = 0; i < sizeof ( WinTable ); i++ ) if ( c == WinTable [ i ] ) return ( DispTable [ i ] ); return ( c ); } // WinToDisp Кракозябры сильно мешают мне. Можно конечно писать в редакторе. Но это очень не удобно. Изменено 12 сентября, 2017 пользователем Alex_Golubev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 12 сентября, 2017 Опубликовано 12 сентября, 2017 · Жалоба Функции писал сам. // Перекодировка символа unsigned char WinToDisp ( unsigned char c ) { xdata unsigned char i; for ( i = 0; i < sizeof ( WinTable ); i++ ) if ( c == WinTable [ i ] ) return ( DispTable [ i ] ); return ( c ); } // WinToDisp Барин знает толк в извращениях. Раз уж написали таблицу перекодировки, пользуйтесь ей void LCD_Print_Char(char c) { LCD_data(codepage[(uint8_t)c]); } const uint8_t codepage[256]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, 112,113,114,115,116,117,118,119,120,121,122,123,124,125,0xE9,127, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xCA,0xCB,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0xA2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xB5,0,0,0,0,0,0,0, 0x41,0xA0,0x42,0xA1,0xE0,0x45,0xA3,0xA4, 0xA5,0xA6,0x4B,0xA7,0x4D,0x48,0x4F,0xA8, 0x50,0x43,0x54,0xA9,0xAA,0x58,0xE1,0xAB, 0xAC,0xE2,0xAD,0xAE,0x62,0xAF,0xB0,0xB1, 0x61,0xB2,0xB3,0xB4,0xE3,0x65,0xB6,0xB7, 0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0x6F,0xBE, 0x70,0x63,0xBF,0x79,0xE4,0x78,0xE5,0xC0, 0xC1,0xE6,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7 }; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_Golubev 0 12 сентября, 2017 Опубликовано 12 сентября, 2017 · Жалоба Ну так научите меня как правильно делать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться