Перекодировка кириллицы на С
Мне необходимо написать код, перекодирующий написанное из Windows 1251 во внутрненнюю кодировку ЖК-дисплея.
В коде ниже написаны коды заглавных кириллических символов, но мне будет достаточно примера с одним символом. Например, символы "А" и "Б" в кодировке Windows 1251 имеют шестнадцатиричную запись 0xC0
и 0xC1
, во внутренней кодировке ЖК-дисплея эти же символы записываются как 0x41
и 0xA0
; как будет выглядеть код, перекодирующий строку "АБ" из кодировки Windows 1251 во внутреннюю кодировку ЖК-дисплея? Язык C51. ЖК-дисплей WH1602B-YYH-CTK.
Надо думать это относительно простая задача, но я разбираюсь в программировании так же, как Кличко в шахматах. Прошу вас, помогите, пожалуйста!
#include "sdk_base.h"
void main (void)
{
//Stroka vivodimaya na ZHK displey
uchar *putstr1 = "Ïðèâåò, Ìèð!Ïðèâåò, Ìèð!Ïðèâåò, Ìèð!"; // Здесь текст в Windows1251 ("Привет, мир!Привет, мир!Привет, мир!")
int i = 0;
//Perekodirovka kirillici
if (putstr1 = "0xC0") {
putstr1 = "0x41"; //bukva A
};
if (putstr1 = "0xC1") {
putstr1 = "0xA0"; //bukva B
};
if (putstr1 = "0xC2") {
putstr1 = "0x42"; //bukva V
};
if (putstr1 = "0xC3") {
putstr1 = "0xA1"; //bukva G
};
if (putstr1 = "0xC4") {
putstr1 = "0xE0"; //bukva D
};
if (putstr1 = "0xC5") {
putstr1 = "0x45"; //bukva E
};
if (putstr1 = "0xC6") {
putstr1 = "0xA3"; //bukva ZH
};
if (putstr1 = "0xC7") {
putstr1 = "0xA4"; //bukva Z
};
if (putstr1 = "0xC8") {
putstr1 = "0xA5"; //bukva I
};
if (putstr1 = "0xCA") {
putstr1 = "0x4B"; //bukva K
};
if (putstr1 = "0xCB") {
putstr1 = "0xA7"; //bukva L
};
if (putstr1 = "0xCC") {
putstr1 = "0x4D"; //bukva M
};
if (putstr1 = "0xCD") {
putstr1 = "0x48"; //bukva N
};
if (putstr1 = "0xCE") {
putstr1 = "0x4F"; //bukva O
};
if (putstr1 = "0xCF") {
putstr1 = "0xA8"; //bukva P
};
if (putstr1 = "0xD0") {
putstr1 = "0x50"; //bukva R
};
if (putstr1 = "0xD1") {
putstr1 = "0x43"; //bukva S
};
if (putstr1 = "0xD2") {
putstr1 = "0x54"; //bukva T
};
if (putstr1 = "0xD3") {
putstr1 = "0xA9"; //bukva U
};
if (putstr1 = "0xD4") {
putstr1 = "0xAA"; //bukva F
};
if (putstr1 = "0xD5") {
putstr1 = "0x58"; //bukva H
};
if (putstr1 = "0xD6") {
putstr1 = "0xE1"; //bukva C
};
if (putstr1 = "0xD7") {
putstr1 = "0xAB"; //bukva CH
};
if (putstr1 = "0xD8") {
putstr1 = "0xAC"; //bukva SH
};
if (putstr1 = "0xD9") {
putstr1 = "0xE2"; //bukva SHA
};
if (putstr1 = "0xDA") {
putstr1 = "0xAD"; //bukva tverdiy znak
};
if (putstr1 = "0xDB") {
putstr1 = "0xAE"; //bukva Ib
};
if (putstr1 = "0xDC") {
putstr1 = "0x62"; //bukva myagkiy znak
};
if (putstr1 = "0xDD") {
putstr1 = "0xAF"; //bukva AEEEEE
};
if (putstr1 = "0xDE") {
putstr1 = "0xB0"; //bukva YUUUUU
};
if (putstr1 = "0xDF") {
putstr1 = "0xB1"; //bukva YUUUUU
};
//-----------------Perviy variant-----------------//
while (putstr1[i] != '\0'){
lputchar(putstr1[i++],1);
};
lputchar(LCD_POS(0x44),0);
while (putstr1[i] != '\0'){
lputchar(putstr1[i++],1);
};
//-----------------Vtoroy variant-----------------//
//while (i != 7){
// lputchar(putstr1[i++],1);
// };
//lputchar(LCD_POS(0x44),0);
//while (k != 15){
// lputchar(putstr1[i++],1);
// };
while (1);
}