Перейти к содержанию
    

keil 4.72 русские шрифты

Привет.

Подскажите, что нужно сделать чтобы отображалась корректно русские шрифты в программе keil 4.72?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В какой кодировке ?

UTF8 / UTF16 / 1251 / KOI8 ?

Вы определить какой у вас русский.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В какой кодировке ?
Кодировка ascii получается 1251.

Мне нужно выводить тексты на двухстрочный дисплей. Для этого нужна кириллица.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Edit - Configuration

Encoding

Russian Windows 1251

 

А во что эти буквы компилируются - смотрите в bin/hex или отладчиком.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вам не с кейлом, а с контроллером дисплея разбираться надо; в нём кириллицы вообще может не быть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В дисплее кириллица есть.

Тогда по даташиту дисплейного контроллера посмотреть как кодовую страницу в нём включить (рискну предположить cp866) или тупо

(если он нормально управляется) вытянуть как кириллица в знакогенераторе расположена.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В дисплее кириллица есть. Функции для работы с данным дисплеем написаны и работают в IAR. Но в keil не хотят.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В дисплее кириллица есть. Функции для работы с данным дисплеем написаны и работают в IAR. Но в keil не хотят.

Насколько же этот пост отличается от стартового (; подробности клещами вытягиваются. Функции вашего авторства? А содержимое строк для отображения (hex значения подразумеваю) совпадает у IAR-а и Keil-а? Исходники у одного могли быть в win1251, а у другого в юникоде.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Более лучше разобрался оказалось кириллица работает. Но в редакторе вместо кириллицы кракозябры. Функции писал сам.

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

Кракозябры сильно мешают мне. Можно конечно писать в редакторе. Но это очень не удобно.

post-95877-1505180599_thumb.png

post-95877-1505180605_thumb.png

Изменено пользователем Alex_Golubev

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Функции писал сам.

// Перекодировка символа
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
                   };

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...