自定义区域语言

时间:2016-05-22 07:42:33

标签: c

我正在使用8051 MC at89c51系列在C中编写代码,以在16x2 lcd显示器中显示区域语言。

因为默认情况下lcd不会读取区域语言,所以我创建了自定义字符,并将每个字母转换为十六进制。但我不明白的是我可以将转换后的十六进制值放在我的代码中并按我的意图显示?

void main()
{
...
str_lcd("HELLO & WELCOME"); 
delay_ms(3000);
cmd_lcd(0x80);
cmd_lcd(0x01);
...
}

对于“HELLO& WELCOME”,十六进制值为......

{0x40,0x60,0x30,0x1c,0x14,0x14,0x14,0x14},
{0x78,0x08,0x10,0x20,0x18,0x08,0x08,0x08},
{0x20,0x40,0x7c,0x24,0x24,0x04,0x0a,0x11},
{0x78,0x08,0x10,0x20,0x18,0x08,0x08,0x08},

{0x38,0x28,0x38,0x10,0x38,0x28,0x28,0x28},
{0x44,0x44,0x64,0x24,0x24,0x24,0x24,0x3c},
{0x3c,0x40,0x40,0x20,0x18,0x08,0x08,0x08},

{0x00,0x7f,0x55,0x55,0x55,0x55,0x77,0x00},
{0x7c,0x54,0x54,0x54,0x04,0x04,0x04,0x04},
{0x7c,0x10,0x1c,0x04,0x1f,0x04,0x04,0x04},
{0x48,0x48,0x48,0x4e,0x48,0x48,0x48,0x78},  
};

所以任何人都可以帮我,我可以把这个十六进制值放在液晶显示屏上吗?

1 个答案:

答案 0 :(得分:0)

假设每个8字节数组对应一个特定字符,你可以在代码中的任何地方都有一个包含128个这样的8字节数组的表,例如通过一个具有常量字节数组的静态数组,比如

static const unsigned char character_data[128][8] = {
    // Your data here, one entry per character
};

上表中的大部分数据都只是零。

现在其中你把这个表放在了真正重要的地方,编译器和链接器会确保它最终在正确的段中(最有可能在text段中代码)。但是,由于我将其声明为static,因此应将其放置在源文件中,该文件将字符与发送到LCD面板的数据进行转换。