你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

俄文界面

[复制链接]
szllm 提问时间:2018-8-12 18:43 /
哪位做过俄文界面?

我下载了个字库,结果显示乱码。

有好心人发个字库和显示程序提供参考不?

也只要这2个文件。

非常感谢
收藏 评论16 发布时间:2018-8-12 18:43

举报

16个回答
szllm 回答时间:2018-8-20 09:43:08
codysafe 发表于 2018-8-17 16:46
太久了,代码找不到了。显示跟显示英文数字是一样的。把字库里BITMAP到ENDCHAR之间的数据拷出来,放数组 ...

非常感谢。

好像我的代码和你的不一样。

字库文件如下:
这个是用LcmZimo直接生成的。
// ------------------  ASCII×ÖÄ£µÄÊý¾Ý±í ------------------------ //
// Âë±í´Ó0x20~0x7e                                                //
// ×Ö¿â: G:\£¨×ÖÐÍÈ¡Ä££©LcmZimo\Asc8X16E.dat ×ÝÏòÈ¡Ä£Éϸßλ       //
// -------------------------------------------------------------- //
unsigned char const nAsciiDot_8_16[] =              // ASCII
{
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // - -

        0x00,0x00,0x1C,0x3F,0x3F,0x1C,0x00,0x00,0x00,0x00,0x00,0xB0,0xB0,0x00,0x00,0x00, // -!-

        0x00,0x70,0x78,0x00,0x00,0x78,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -"-

        0x04,0x1F,0x1F,0x04,0x1F,0x1F,0x04,0x00,0x40,0xF0,0xF0,0x40,0xF0,0xF0,0x40,0x00, // -#-

        0x1C,0x3E,0x22,0xE2,0xE2,0x33,0x19,0x00,0xC0,0x60,0x20,0x38,0x38,0xE0,0xC0,0x00, // -$-

        0x0C,0x0C,0x00,0x01,0x03,0x06,0x0C,0x00,0x30,0x60,0xC0,0x80,0x00,0x30,0x30,0x00, // -%-

        0x01,0x1B,0x3E,0x27,0x3D,0x1B,0x02,0x00,0xE0,0xF0,0x10,0x10,0xE0,0xF0,0x10,0x00, // -&-

        0x00,0x08,0x78,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -'-

        0x00,0x00,0x0F,0x1F,0x30,0x20,0x00,0x00,0x00,0x00,0xC0,0xE0,0x30,0x10,0x00,0x00, // -(-

        0x00,0x00,0x20,0x30,0x1F,0x0F,0x00,0x00,0x00,0x00,0x10,0x30,0xE0,0xC0,0x00,0x00, // -)-

        0x01,0x05,0x07,0x03,0x03,0x07,0x05,0x01,0x00,0x40,0xC0,0x80,0x80,0xC0,0x40,0x00, // -*-

        0x00,0x01,0x01,0x07,0x07,0x01,0x01,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00, // -+-

        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x78,0x70,0x00,0x00,0x00, // -,-

        0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ---

        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00, // -.-

        0x00,0x00,0x00,0x01,0x03,0x06,0x0C,0x00,0x30,0x60,0xC0,0x80,0x00,0x00,0x00,0x00, // -/-

        0x1F,0x3F,0x20,0x23,0x24,0x3F,0x1F,0x00,0xE0,0xF0,0x90,0x10,0x10,0xF0,0xE0,0x00, // -0-

        0x00,0x08,0x18,0x3F,0x3F,0x00,0x00,0x00,0x00,0x10,0x10,0xF0,0xF0,0x10,0x10,0x00, // -1-

        0x10,0x30,0x21,0x23,0x26,0x3C,0x18,0x00,0x70,0xF0,0x90,0x10,0x10,0x30,0x30,0x00, // -2-

        0x10,0x30,0x22,0x22,0x22,0x3F,0x1D,0x00,0x20,0x30,0x10,0x10,0x10,0xF0,0xE0,0x00, // -3-

        0x03,0x07,0x0D,0x19,0x3F,0x3F,0x01,0x00,0x00,0x00,0x00,0x10,0xF0,0xF0,0x10,0x00, // -4-

        0x3E,0x3E,0x22,0x22,0x23,0x23,0x21,0x00,0x20,0x30,0x10,0x10,0x10,0xF0,0xE0,0x00, // -5-

        0x0F,0x1F,0x32,0x22,0x22,0x03,0x01,0x00,0xE0,0xF0,0x10,0x10,0x10,0xF0,0xE0,0x00, // -6-

        0x30,0x30,0x20,0x21,0x23,0x3E,0x3C,0x00,0x00,0x00,0xF0,0xF0,0x00,0x00,0x00,0x00, // -7-

        0x1D,0x3F,0x22,0x22,0x22,0x3F,0x1D,0x00,0xE0,0xF0,0x10,0x10,0x10,0xF0,0xE0,0x00, // -8-

        0x1C,0x3E,0x22,0x22,0x22,0x3F,0x1F,0x00,0x00,0x10,0x10,0x10,0x30,0xE0,0xC0,0x00, // -9-

        0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00, // -:-

        0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x10,0x70,0x60,0x00,0x00,0x00, // -;-

        0x00,0x01,0x03,0x06,0x0C,0x18,0x10,0x00,0x00,0x00,0x80,0xC0,0x60,0x30,0x10,0x00, // -<-

        0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00, // -=-

        0x00,0x10,0x18,0x0C,0x06,0x03,0x01,0x00,0x00,0x10,0x30,0x60,0xC0,0x80,0x00,0x00, // ->-

        0x18,0x38,0x20,0x23,0x27,0x3C,0x18,0x00,0x00,0x00,0x00,0xB0,0xB0,0x00,0x00,0x00, // -?-

        0x0F,0x1F,0x10,0x13,0x13,0x1F,0x0F,0x00,0xE0,0xF0,0x10,0xD0,0xD0,0xD0,0x80,0x00, // -@-

        0x07,0x0F,0x19,0x31,0x19,0x0F,0x07,0x00,0xF0,0xF0,0x00,0x00,0x00,0xF0,0xF0,0x00, // -A-

        0x20,0x3F,0x3F,0x22,0x22,0x3F,0x1D,0x00,0x10,0xF0,0xF0,0x10,0x10,0xF0,0xE0,0x00, // -B-

        0x0F,0x1F,0x30,0x20,0x20,0x30,0x18,0x00,0xC0,0xE0,0x30,0x10,0x10,0x30,0x60,0x00, // -C-

        0x20,0x3F,0x3F,0x20,0x30,0x1F,0x0F,0x00,0x10,0xF0,0xF0,0x10,0x30,0xE0,0xC0,0x00, // -D-

        0x20,0x3F,0x3F,0x22,0x27,0x30,0x38,0x00,0x10,0xF0,0xF0,0x10,0x10,0x30,0x70,0x00, // -E-

        0x20,0x3F,0x3F,0x22,0x27,0x30,0x38,0x00,0x10,0xF0,0xF0,0x10,0x00,0x00,0x00,0x00, // -F-

        0x0F,0x1F,0x30,0x21,0x21,0x31,0x19,0x00,0xC0,0xE0,0x30,0x10,0x10,0xE0,0xF0,0x00, // -G-

        0x3F,0x3F,0x02,0x02,0x02,0x3F,0x3F,0x00,0xF0,0xF0,0x00,0x00,0x00,0xF0,0xF0,0x00, // -H-

        0x00,0x00,0x20,0x3F,0x3F,0x20,0x00,0x00,0x00,0x00,0x10,0xF0,0xF0,0x10,0x00,0x00, // -I-

        0x00,0x00,0x00,0x20,0x3F,0x3F,0x20,0x00,0xE0,0xF0,0x10,0x10,0xF0,0xE0,0x00,0x00, // -J-

        0x20,0x3F,0x3F,0x03,0x0F,0x3C,0x30,0x00,0x10,0xF0,0xF0,0x00,0x80,0xF0,0x70,0x00, // -K-

        0x20,0x3F,0x3F,0x20,0x00,0x00,0x00,0x00,0x10,0xF0,0xF0,0x10,0x10,0x30,0x70,0x00, // -L-

        0x3F,0x3F,0x1C,0x0E,0x1C,0x3F,0x3F,0x00,0xF0,0xF0,0x00,0x00,0x00,0xF0,0xF0,0x00, // -M-

        0x3F,0x3F,0x1C,0x0E,0x07,0x3F,0x3F,0x00,0xF0,0xF0,0x00,0x00,0x00,0xF0,0xF0,0x00, // -N-

        0x0F,0x1F,0x30,0x20,0x30,0x1F,0x0F,0x00,0xC0,0xE0,0x30,0x10,0x30,0xE0,0xC0,0x00, // -O-

        0x20,0x3F,0x3F,0x22,0x22,0x3E,0x1C,0x00,0x10,0xF0,0xF0,0x10,0x00,0x00,0x00,0x00, // -P-

        0x1F,0x3F,0x20,0x20,0x20,0x3F,0x1F,0x00,0xE0,0xF0,0x10,0x70,0x3C,0xFC,0xE4,0x00, // -Q-

        0x20,0x3F,0x3F,0x22,0x23,0x3F,0x1C,0x00,0x10,0xF0,0xF0,0x00,0x00,0xF0,0xF0,0x00, // -R-

        0x18,0x3C,0x26,0x22,0x23,0x39,0x18,0x00,0x60,0x70,0x10,0x10,0x10,0xF0,0xE0,0x00, // -S-

        0x00,0x38,0x30,0x3F,0x3F,0x30,0x38,0x00,0x00,0x00,0x10,0xF0,0xF0,0x10,0x00,0x00, // -T-

        0x3F,0x3F,0x00,0x00,0x00,0x3F,0x3F,0x00,0xE0,0xF0,0x10,0x10,0x10,0xF0,0xE0,0x00, // -U-

        0x3F,0x3F,0x00,0x00,0x00,0x3F,0x3F,0x00,0x80,0xC0,0x60,0x30,0x60,0xC0,0x80,0x00, // -V-

        0x3F,0x3F,0x00,0x01,0x00,0x3F,0x3F,0x00,0xC0,0xF0,0x70,0xC0,0x70,0xF0,0xC0,0x00, // -W-

        0x30,0x3C,0x0F,0x03,0x0F,0x3C,0x30,0x00,0x30,0xF0,0xC0,0x00,0xC0,0xF0,0x30,0x00, // -X-

        0x00,0x3C,0x3E,0x03,0x03,0x3E,0x3C,0x00,0x00,0x00,0x10,0xF0,0xF0,0x10,0x00,0x00, // -Y-

        0x38,0x30,0x21,0x23,0x26,0x3C,0x38,0x00,0x70,0xF0,0x90,0x10,0x10,0x30,0x70,0x00, // -Z-

        0x00,0x00,0x3F,0x3F,0x20,0x20,0x00,0x00,0x00,0x00,0xF0,0xF0,0x10,0x10,0x00,0x00, // -[-

        0x1C,0x0E,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0x70,0x00, // -\-

        0x00,0x00,0x20,0x20,0x3F,0x3F,0x00,0x00,0x00,0x00,0x10,0x10,0xF0,0xF0,0x00,0x00, // -]-

        0x10,0x30,0x60,0xC0,0x60,0x30,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -^-

        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04, // -_-

        0x00,0x00,0xC0,0xE0,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -`-

        0x00,0x05,0x05,0x05,0x07,0x03,0x00,0x00,0xE0,0xF0,0x10,0x10,0xE0,0xF0,0x10,0x00, // -a-

        0x20,0x3F,0x3F,0x04,0x06,0x03,0x01,0x00,0x10,0xF0,0xE0,0x10,0x10,0xF0,0xE0,0x00, // -b-

        0x03,0x07,0x04,0x04,0x04,0x06,0x02,0x00,0xE0,0xF0,0x10,0x10,0x10,0x30,0x20,0x00, // -c-

        0x01,0x03,0x06,0x24,0x3F,0x3F,0x00,0x00,0xE0,0xF0,0x10,0x10,0xE0,0xF0,0x10,0x00, // -d-

        0x03,0x07,0x05,0x05,0x05,0x07,0x03,0x00,0xE0,0xF0,0x10,0x10,0x10,0x30,0x20,0x00, // -e-

        0x02,0x1F,0x3F,0x22,0x30,0x18,0x00,0x00,0x10,0xF0,0xF0,0x10,0x00,0x00,0x00,0x00, // -f-

        0x03,0x07,0x04,0x04,0x03,0x07,0x04,0x00,0xE4,0xF6,0x12,0x12,0xFE,0xFC,0x00,0x00, // -g-

        0x20,0x3F,0x3F,0x02,0x04,0x07,0x03,0x00,0x10,0xF0,0xF0,0x00,0x00,0xF0,0xF0,0x00, // -h-

        0x00,0x00,0x04,0x37,0x37,0x00,0x00,0x00,0x00,0x00,0x10,0xF0,0xF0,0x10,0x00,0x00, // -i-

        0x00,0x00,0x00,0x00,0x04,0x37,0x37,0x00,0x00,0x0C,0x0E,0x02,0x02,0xFE,0xFC,0x00, // -j-

        0x20,0x3F,0x3F,0x01,0x03,0x06,0x04,0x00,0x10,0xF0,0xF0,0x80,0xC0,0x70,0x30,0x00, // -k-

        0x00,0x00,0x20,0x3F,0x3F,0x00,0x00,0x00,0x00,0x00,0x10,0xF0,0xF0,0x10,0x00,0x00, // -l-

        0x07,0x07,0x06,0x03,0x06,0x07,0x03,0x00,0xF0,0xF0,0x00,0xF0,0x00,0xF0,0xF0,0x00, // -m-

        0x04,0x07,0x03,0x04,0x04,0x07,0x03,0x00,0x00,0xF0,0xF0,0x00,0x00,0xF0,0xF0,0x00, // -n-

        0x03,0x07,0x04,0x04,0x04,0x07,0x03,0x00,0xE0,0xF0,0x10,0x10,0x10,0xF0,0xE0,0x00, // -o-

        0x04,0x07,0x03,0x04,0x04,0x07,0x03,0x00,0x02,0xFE,0xFE,0x12,0x10,0xF0,0xE0,0x00, // -p-

        0x03,0x07,0x04,0x04,0x03,0x07,0x04,0x00,0xE0,0xF0,0x10,0x12,0xFE,0xFE,0x02,0x00, // -q-

        0x04,0x07,0x03,0x06,0x04,0x06,0x03,0x00,0x10,0xF0,0xF0,0x10,0x00,0x00,0x00,0x00, // -r-

        0x02,0x07,0x05,0x04,0x04,0x06,0x02,0x00,0x20,0x30,0x90,0x90,0xD0,0x70,0x20,0x00, // -s-

        0x04,0x04,0x1F,0x3F,0x04,0x04,0x00,0x00,0x00,0x00,0xE0,0xF0,0x10,0x30,0x20,0x00, // -t-

        0x07,0x07,0x00,0x00,0x07,0x07,0x00,0x00,0xE0,0xF0,0x10,0x10,0xE0,0xF0,0x10,0x00, // -u-

        0x00,0x07,0x07,0x00,0x00,0x07,0x07,0x00,0x00,0xC0,0xE0,0x30,0x30,0xE0,0xC0,0x00, // -v-

        0x07,0x07,0x00,0x00,0x00,0x07,0x07,0x00,0xE0,0xF0,0x30,0xE0,0x30,0xF0,0xE0,0x00, // -w-

        0x04,0x06,0x03,0x01,0x03,0x06,0x04,0x00,0x10,0x30,0xE0,0xC0,0xE0,0x30,0x10,0x00, // -x-

        0x07,0x07,0x00,0x00,0x00,0x07,0x07,0x00,0xE2,0xF2,0x12,0x12,0x16,0xFC,0xF8,0x00, // -y-

        0x06,0x06,0x04,0x05,0x07,0x06,0x04,0x00,0x30,0x70,0xD0,0x90,0x10,0x30,0x30,0x00, // -z-

        0x00,0x02,0x02,0x1F,0x3D,0x20,0x20,0x00,0x00,0x00,0x00,0xE0,0xF0,0x10,0x10,0x00, // -{-

        0x00,0x00,0x00,0x3D,0x3D,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0x00,0x00,0x00, // -|-

        0x00,0x20,0x20,0x3D,0x1F,0x02,0x02,0x00,0x00,0x10,0x10,0xF0,0xE0,0x00,0x00,0x00, // -}-

        0x10,0x30,0x20,0x30,0x10,0x30,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -~-

        0x01,0x03,0x06,0x0C,0x06,0x03,0x01,0x00,0xE0,0xE0,0x20,0x20,0x20,0xE0,0xE0,0x00, // --
};

显示代码如下:

/*
        дһ×Ö½ÚÊý¾Ýµ½LCDÖÐ
        ÆÁÄ»¿í¶È:192×Ö½Ú,
        ÆÁÄ»¸ß¶È:8×Ö½Ú
*/
void LCD_VM_NEW(LCD_TYPE qlcd)
{
        INT8U i,j,k,x,y,*src;
        INT16U cnt,Word;

        src = qlcd.src;

        switch(qlcd.type) {
                case 1:        //ASCII 8*16
                        for(i = 0;i < qlcd.size;i ++) {
                                cnt = (*src - ' ');
                                cnt *= 16;          
                                y = qlcd.y + i * 8;
                                for(k = 0;k < 8;k ++) {
                                        x = qlcd.x;
                                        for(j = 0;j < 2;j ++) {
                                                if(x > 7 || y > 191) {
                                                        return;
                                                }
                                                if(qlcd.parg == 0) {
                                                        VM[x + j][y + k] = nAsciiDot_8_16[cnt + j * 8 + k];
                                                }
                                                else if(qlcd.parg == 1) {
                                                        VM[x + j][y + k] |= nAsciiDot_8_16[cnt + j * 8 + k];
                                                }
                                                else if(qlcd.parg == 2) {
                                                        VM[x + j][y + k] = ~ nAsciiDot_8_16[cnt + j * 8 + k];
                                                }
                                                else if(qlcd.parg == 3) {
                                                           VM[x + j][y + k] |= ~ nAsciiDot_8_16[cnt + j * 8 + k];
                                                }
                                                else if(qlcd.parg == 4) {
                                                        VM[x + j][y + k] &= ~ nAsciiDot_8_16[cnt + j * 8 + k];
                                                }
                                        }
                                }
                                src ++;
                        }
                        break;
                case 2:        //ASCII 12*24
                        for(i = 0;i < qlcd.size;i ++) {
                                cnt = (*src - ' ');
                                cnt *= 36;          
                                y = qlcd.y + i * 12;
                                for(k = 0;k < 12;k ++) {
                                        x = qlcd.x;
                                        for(j = 0;j < 3;j ++) {
                                                if(x > 7 || y > 191) {
                                                        return;
                                                }
                                                if(qlcd.parg == 0) {
                                                        VM[x + j][y + k] = nAsciiDot_12_24[cnt + j * 12 + k];
                                                }
                                                else if(qlcd.parg == 1) {
                                                        VM[x + j][y + k] |= nAsciiDot_12_24[cnt + j * 12 + k];
                                                }
                                                else if(qlcd.parg == 2) {
                                                        VM[x + j][y + k] = ~ nAsciiDot_12_24[cnt + j * 12 + k];
                                                }
                                                else if(qlcd.parg == 2) {
                                                        VM[x + j][y + k] |= ~ nAsciiDot_12_24[cnt + j * 12 + k];
                                                }
                                                else if(qlcd.parg == 4) {
                                                        VM[x + j][y + k] &= ~ nAsciiDot_12_24[cnt + j * 12 + k];
                                                }
                                        }
                                }
                                src ++;
                        }
                        break;
                case 3:        //ASCII 24*48
                        for(i = 0;i < qlcd.size;i ++) {
                                cnt = (*src - ' ');
                                cnt *= 144;          
                                y = qlcd.y + i * 24;
                                for(k = 0;k < 24;k ++) {
                                        x = qlcd.x;
                                        for(j = 0;j < 6;j ++) {
                                                if(x > 7 || y > 191) {
                                                        return;
                                                }
                                                if(qlcd.parg == 0) {
                                                        VM[x + j][y + k] = nAsciiDot_24_48[cnt + j * 24 + k];
                                                }
                                                else if(qlcd.parg == 1) {
                                                        VM[x + j][y + k] |= nAsciiDot_24_48[cnt + j * 24 + k];
                                                }
                                                else if(qlcd.parg == 2) {
                                                        VM[x + j][y + k] = ~ nAsciiDot_24_48[cnt + j * 24 + k];
                                                }
                                                else if(qlcd.parg == 3) {
                                                        VM[x + j][y + k] |= ~ nAsciiDot_24_48[cnt + j * 24 + k];
                                                }
                                                else if(qlcd.parg == 4) {
                                                        VM[x + j][y + k] &= ~ nAsciiDot_24_48[cnt + j * 24 + k];
                                                }
                                        }
                                }
                                src ++;
                        }
                        break;
                case 4:        //ºº×Ö  16*16
                        for(i = 0;i < qlcd.size;i ++) {
                                Word = *src + (*(src + 1) << 8);
                                for(cnt = 0;cnt < countof(GB_16);cnt ++) {
                                        if(Word == GB_16[cnt].hz.Word) {
                                                break;
                                        }
                                }
                                if(cnt >= countof(GB_16)) {
                                        return;
                                }          
                                y = qlcd.y + i * 16;
                                for(k = 0;k < 16;k ++) {
                                        x = qlcd.x;
                                        for(j = 0;j < 2;j ++) {
                                                if(x > 7 || y > 191) {
                                                        return;
                                                }
                                                if(qlcd.parg == 0) {
                                                        VM[x + j][y + k] = GB_16[cnt].Msk[j * 16 + k];
                                                }
                                                else if(qlcd.parg == 1) {
                                                        VM[x + j][y + k] |= GB_16[cnt].Msk[j * 16 + k];
                                                }
                                                else if(qlcd.parg == 2) {
                                                        VM[x + j][y + k] = ~ GB_16[cnt].Msk[j * 16 + k];
                                                }
                                                else if(qlcd.parg == 3) {
                                                        VM[x + j][y + k] |= ~ GB_16[cnt].Msk[j * 16 + k];
                                                }
                                                else if(qlcd.parg == 4) {
                                                        VM[x + j][y + k] &= ~ GB_16[cnt].Msk[j * 16 + k];
                                                }
                                        }
                                }
                                src += 2;
                        }
                        break;
                case 5:        //ºº×Ö  24*24
                        for(i = 0;i < qlcd.size;i ++) {
                                Word = *src + (*(src + 1) << 8);
                                for(cnt = 0;cnt < countof(GB_24);cnt ++) {
                                        if(Word == GB_24[cnt].hz.Word) {
                                                break;
                                        }
                                }
                                if(cnt >= countof(GB_24)) {
                                        return;
                                }          
                                y = qlcd.y + i * 24;
                                for(k = 0;k < 24;k ++) {
                                        x = qlcd.x;
                                        for(j = 0;j < 3;j ++) {
                                                if(x > 7 || y > 191) {
                                                        return;
                                                }
                                                if(qlcd.parg == 0) {
                                                        VM[x + j][y + k] = GB_24[cnt].Msk[j * 24 + k];
                                                }
                                                else if(qlcd.parg == 1) {
                                                        VM[x + j][y + k] |= GB_24[cnt].Msk[j * 24 + k];
                                                }
                                                else if(qlcd.parg == 2) {
                                                        VM[x + j][y + k] = ~ GB_24[cnt].Msk[j * 24 + k];
                                                }  
                                                else if(qlcd.parg == 3) {
                                                        VM[x + j][y + k] |= ~ GB_24[cnt].Msk[j * 24 + k];
                                                }
                                                else if(qlcd.parg == 4) {
                                                        VM[x + j][y + k] &= ~ GB_24[cnt].Msk[j * 24 + k];
                                                }
                                        }
                                }
                                src += 2;
                        }
                        break;
                case 6:
                        for(i = 0;i < qlcd.size;i ++) {
                                cnt = *src;
                                cnt *= 16;          
                                y = qlcd.y + i * 8;
                                for(k = 0;k < 8;k ++) {
                                        x = qlcd.x;
                                        for(j = 0;j < 2;j ++) {
                                                if(x > 7 || y > 191) {
                                                        return;
                                                }
                                                if(qlcd.parg == 0) {
                                                        VM[x + j][y + k] = nUseDot_8_16[cnt + j * 8 + k];
                                                }
                                                else if(qlcd.parg == 1) {
                                                        VM[x + j][y + k] |= nUseDot_8_16[cnt + j * 8 + k];
                                                }
                                                else if(qlcd.parg == 2) {                                                          
                                                        VM[x + j][y + k] = ~ nUseDot_8_16[cnt + j * 8 + k];
                                                }
                                                else if(qlcd.parg == 3) {
                                                           VM[x + j][y + k] |= ~ nUseDot_8_16[cnt + j * 8 + k];
                                                }
                                                else if(qlcd.parg == 4) {
                                                        VM[x + j][y + k] &= ~ nUseDot_8_16[cnt + j * 8 + k];
                                                }
                                        }
                                }
                                src ++;
                        }
                        break;
                case 7:        //ºº×Ö  12*12
                        for(i = 0;i < qlcd.size;i ++) {
                                Word = *src + (*(src + 1) << 8);
                                for(cnt = 0;cnt < countof(GB_12);cnt ++) {
                                        if(Word == GB_12[cnt].hz.Word) {
                                                break;
                                        }
                                }
                                if(cnt >= countof(GB_12)) {
                                        return;
                                }          
                                y = qlcd.y + i * 12;
                                for(k = 0;k < 12;k ++) {
                                        x = qlcd.x;
                                        for(j = 0;j < 2;j ++) {
                                                if(x > 7 || y > 191) {
                                                        return;
                                                }
                                                if(qlcd.parg == 0) {
                                                        VM[x + j][y + k] = GB_12[cnt].Msk[j * 12 + k];
                                                }
                                                else if(qlcd.parg == 1) {
                                                        VM[x + j][y + k] |= GB_12[cnt].Msk[j * 12 + k];
                                                }
                                                else if(qlcd.parg == 2) {
                                                        VM[x + j][y + k] = ~ GB_12[cnt].Msk[j * 12 + k];
                                                }  
                                                else if(qlcd.parg == 3) {
                                                        VM[x + j][y + k] |= ~ GB_12[cnt].Msk[j * 12 + k];
                                                }
                                                else if(qlcd.parg == 4) {
                                                        VM[x + j][y + k] &= ~ GB_12[cnt].Msk[j * 12 + k];
                                                }
                                        }
                                }
                                src += 2;
                        }
                        break;
                default:
                        break;
        }
}

这个是CASE 1显示 8*16 的字

调用方式:

定义常量数组:
LCD_TYPE new_number[] = {
                {1,0,0,4,56,"012.400000",sizeof("012.4") - 1,},
                {1,0,0,4,81,"056.800000",sizeof("056.8") - 1,},
                {1,0,0,4,31,"00:00:00     ",sizeof("00:00:00     ") - 1,},
                {1,0,0,4,1,"             ",sizeof("             ") - 1,},
                {1,0,0,4,50,"012.400000",sizeof("012.4") - 1,},
        };

显示:

OSQPost(LcdQsem, (void *)&new_number[3]);




codysafe 回答时间:2018-8-17 16:46:33
szllm 发表于 2018-8-17 15:29
亲,等你的代码呢。

太久了,代码找不到了。显示跟显示英文数字是一样的。把字库里BITMAP到ENDCHAR之间的数据拷出来,放数组里,就是通常用的英文的字库了。只是英文的到0x7F就结束了,这个在0x80之后还有。你英文、数字怎么显示,这个就怎么显示。
只是原来的

char temp[] = "123" ,变成

char temp[] = {0x31,0x32,0x33}
中文注释在keil会有乱码,俄文进去一样会出问题。所以转成HEX数组。
用记事本保存俄文,然后用16进制的打开,就是HEX值了(我习惯用editplus)。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

codysafe 回答时间:2018-8-13 16:13:02
感觉是编码问题,keil下C文件里放其他语言会有问题。俄文是扩展了ASCII码的高128字节。直接复制到keil会结成其他东西。我以前的做法是放txt里保存,再写个小程序获取编码,再复制到keil。
我记得记事本里的在文件开头有个表示编码的东西,后面就是一个字节对应一个字符了,类似ASCII。
一点介绍 http://en.wikipedia.org/wiki/ISO/IEC_8859-5

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

wenyangzeng 回答时间:2018-8-12 20:09:22
本帖最后由 wenyangzeng 于 2018-8-12 20:12 编辑

俄文字模索引与汉字显示一样是全角字模,楼主无法象ASCII显示英文那样操作,必须象显示汉字那样写代码。这是一个烫山芋!

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

szllm 回答时间:2018-8-12 23:20:56
那就有点麻烦。
汉字一般是16*16,这个俄文考虑到LCD的分辨率,只能用16*8,汉字的代码还不能直接引用。

谢谢你先了
wudianjun2001 回答时间:2018-8-13 08:59:43
俄文字符不是等宽的,用等宽的显示出来比较难看,

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

freeelectron 回答时间:2018-8-13 09:01:17
用世界通用语言,english
tanic 回答时间:2018-8-13 13:09:34
俄文?==乱码?
STM1024 回答时间:2018-8-13 15:35:47
肯定你要做字模啊~

评分

参与人数 1蝴蝶豆 +1 收起 理由
zero99 + 1

查看全部评分

琦子 回答时间:2018-8-13 16:09:10
我这有一个pc端的嵌入式转换工具 自己做的 楼主需要不

评分

参与人数 1蝴蝶豆 +1 收起 理由
zero99 + 1

查看全部评分

cdt2000 回答时间:2018-8-13 16:23:36
显示的文字不多可以用图片形式

评分

参与人数 1蝴蝶豆 +1 收起 理由
zero99 + 1

查看全部评分

szllm 回答时间:2018-8-15 09:09:08
codysafe 发表于 2018-8-13 16:13
感觉是编码问题,keil下C文件里放其他语言会有问题。俄文是扩展了ASCII码的高128字节。直接复制到keil会结 ...

方便把字库和显示的代码发给我吗?

谢谢
codysafe 回答时间:2018-8-15 09:46:22
szllm 发表于 2018-8-15 09:09
方便把字库和显示的代码发给我吗?

谢谢

程序要晚上回去找下,字库找到了,处理下就可以像ASCII的点阵字库那样用了。

8859-5.jpg

字库截图

字库截图

iso8859-5.zip

下载

3.75 KB, 下载次数: 17, 下载积分: ST金币 -1

字库

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

szllm 回答时间:2018-8-17 15:29:09
codysafe 发表于 2018-8-13 16:13
感觉是编码问题,keil下C文件里放其他语言会有问题。俄文是扩展了ASCII码的高128字节。直接复制到keil会结 ...

亲,等你的代码呢。


谢谢!
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版