|
keil 4.72 русские шрифты |
|
|
|
Sep 11 2017, 12:29
|
Местный
  
Группа: Участник
Сообщений: 280
Регистрация: 18-03-17
Пользователь №: 95 877

|
Цитата В какой кодировке ? Кодировка ascii получается 1251. Мне нужно выводить тексты на двухстрочный дисплей. Для этого нужна кириллица.
|
|
|
|
|
Sep 11 2017, 13:37
|

Знающий
   
Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663

|
Цитата(Alex_Golubev @ Sep 11 2017, 17:10)  В дисплее кириллица есть. Тогда по даташиту дисплейного контроллера посмотреть как кодовую страницу в нём включить (рискну предположить cp866) или тупо (если он нормально управляется) вытянуть как кириллица в знакогенераторе расположена.
--------------------
Пролетарий умственного труда.
|
|
|
|
|
Sep 12 2017, 01:42
|
Местный
  
Группа: Участник
Сообщений: 280
Регистрация: 18-03-17
Пользователь №: 95 877

|
Более лучше разобрался оказалось кириллица работает. Но в редакторе вместо кириллицы кракозябры. Функции писал сам. CODE 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 Кракозябры сильно мешают мне. Можно конечно писать в редакторе. Но это очень не удобно.
Сообщение отредактировал Alex_Golubev - Sep 12 2017, 01:44
Эскизы прикрепленных изображений
|
|
|
|
|
Sep 12 2017, 05:48
|
Местный
  
Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140

|
Цитата(Alex_Golubev @ Sep 12 2017, 04:42)  Функции писал сам. Код // Перекодировка символа 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 Барин знает толк в извращениях. Раз уж написали таблицу перекодировки, пользуйтесь ей CODE 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 };
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|