打印

点阵LCD如何英文转中文显示??

[复制链接]
3263|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ARM_FRESH|  楼主 | 2008-5-20 14:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
const unsigned char font6x8[][6] =

{

{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },// sp
。。。。。。。
}
SPILCD_Init();
    for (l=0;l<=5;l++)
       {
LCD_Write_String(1,l,"SPI_LCD TEST."); //显示英文字符串"SPI_LCD TEST."
Delay(1000);
/*****************************************************************
*    函数名     : LCD_Write_Byte 
*    功能      : 逐字节传输数据 
*    参数    : data ,command
*    返回值    : void
******************************************************************/
void LCD_Write_Byte(unsigned char data, unsigned char command)
{
    CHIP_ENABLE;// 使能LCD
    
    if (command == 0)
        CMD_MODE;// 传送命令
    else
        DATA_MODE;// 传送数据

    rSPTDAT1 = data;// 传送数据到SPI寄存器
    while ((rSPSTA1 & 0x01) == 0);// 等待数据传送完毕
    
    CHIP_DISABLE;// 关闭LCD

}


/*****************************************************************
*    函数名     :  LCD_Write_String
*    功能      :  逐字符传送
*    参数    :  X,Y,*S
*    返回值    :  VOID
******************************************************************/
void LCD_Write_String(unsigned char X,unsigned char Y,char *s)
{     char *y;
y=s;
y=y+10;
    LCD_Set_XY(X,Y);
    
    while (*s) 
    {
        LCD_Write_Char(*s);
        s++;
    }
    while (*y)
    {LCD_Write_Char(*y);
y++;}
}

/*****************************************************************
*    函数名     :  LCD_Write_Char
*    功能      :  传输字符串
*    参数    :  c
*    返回值    :  void
******************************************************************/
void LCD_Write_Char(unsigned char c)
{
    unsigned char line;
    
    c -= 32;
    for (line=0; line<6; line++)
    LCD_Write_Byte(font6x8[c][line], 1);
    
}


/*****************************************************************
*    函数名     :   LCD_Set_XY
*    功能      :   设置显示位置
*    参数    :   x,y
*    返回值    :   void
******************************************************************/
void LCD_Set_XY(unsigned char X, unsigned char Y)
{
    LCD_Write_Byte(0x40 | Y, 0);// column
    LCD_Write_Byte(0x80 | X, 0);// row
}
我的是点阵48*84LCD,如何显示中文,我是想显示中文字16*16的大小,修改了char font16*16,for (line=0; line<16; line++)
    LCD_Write_Byte(font16x16[c][line], 1);
为什么显示的中文是乱码了,而且大小只是变长了,没有变大???那位大哥知道呀!

相关帖子

沙发
阿南| | 2008-5-21 13:27 | 只看该作者

如果显示的中文比较少,可以直接

用字模软件生成某个大小(如16*16)的点阵数据.
中文比较多或者是任意的汉字,需要用汉字字库

使用特权

评论回复
板凳
ARM_FRESH|  楼主 | 2008-5-21 21:12 | 只看该作者

还是有问题

const char font[][32]={
//单
    {0x00,0x00,0xF8,0x28,0x29,0x2E,0x2A,0xF8,0x28,0x2C,0x2B,0x2A,0xF8,0x00,0x00,0x00,0x08,0x08,0x0B,0x09,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x09,0x0B,0x08,0x08,0x00}.....
不过出现乱码了,是不是汉字的屏上的位置也要修改一下呀?

使用特权

评论回复
地板
walnutcy| | 2008-5-22 23:43 | 只看该作者

汉字送点阵原理和DOS下显示汉字一样的,

使用特权

评论回复
5
阿南| | 2008-5-23 01:30 | 只看该作者

以什么格式生成的字模,就要以什么样的格式去显示

使用特权

评论回复
6
aibxyz| | 2008-5-23 13:36 | 只看该作者

你的LCD不会是自带英文字库

而你又想显示出中文来。。。。。
这个,如果你的LCD支持画点,那可以自己做个驱动显示中文
要不别想了

使用特权

评论回复
7
ARM_FRESH|  楼主 | 2008-5-24 09:33 | 只看该作者

显示汉字的一种方法

程序里自带了一段英文字库,它是6*8的,我现在想显示16*16(比如上面所说的“单”)
可不可以这样显示,就是说在第一段第一个位置显示“单”代码里的1~8个代码,然后在第一段第二个位置显示9~16的代码,接着把位置指向第二段第一个位置显示16~24的代码,最后指向第二段第二个位置显示25~32的代码
  这样可以吗??

使用特权

评论回复
8
阿穆琪| | 2008-5-25 00:13 | 只看该作者

别当它是字,就当它是单色图片,不就得了!

使用特权

评论回复
9
myforever| | 2008-5-25 17:52 | 只看该作者

找个汉字库,结合英文字库,写LCD的时候分两种情况写就是



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

31

帖子

0

粉丝