2016-05-22 69 views
-1

我正在使用8051 MC at89c51系列编写代码,以在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}, 
}; 

所以任何一个可以帮助我,我可以把这个十六进制值,并在LCD显示屏呢?

回答

0

假设每个8字节阵列对应于一个特定的字符,可以有128例如8字节阵列的一个表中的代码的任何地方,例如,通过具有恒定的字节阵列的一个静态数组,像

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

上表中的大部分数据仅为零。

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

+0

谢谢你,但我不确定我是否理解你的意思,早些时候我尝试过像这样str_lcd(“HELLO&WELCOME”); static const unsigned char character_data [128] [8] = {//你的数据在这里,每个字符一个条目,我在这里插入十六进制值}; delay_ms(3000); cmd_lcd(0x80的); cmd_lcd(0×01);或者你的意思是我把十六进制str_lcd(“”)?我以为我应该创建一个.h和.cpp文件 - – yonah