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

[复制链接]
4329|8
 楼主| ARM_FRESH 发表于 2008-5-20 14:19 | 显示全部楼层 |阅读模式
const&nbsp;unsigned&nbsp;char&nbsp;font6x8[][6]&nbsp;=<br /><br />{<br /><br />{&nbsp;0x00,&nbsp;0x00,&nbsp;0x00,&nbsp;0x00,&nbsp;0x00,&nbsp;0x00&nbsp;},//&nbsp;sp<br />。。。。。。。<br />}<br />SPILCD_Init();<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(l=0;l&lt=5;l++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />LCD_Write_String(1,l,&quot;SPI_LCD&nbsp;TEST.&quot;);&nbsp;//显示英文字符串&quot;SPI_LCD&nbsp;TEST.&quot;<br />Delay(1000);<br />/*****************************************************************<br />*&nbsp;&nbsp;&nbsp;&nbsp;函数名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;LCD_Write_Byte&nbsp;<br />*&nbsp;&nbsp;&nbsp;&nbsp;功能&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;逐字节传输数据&nbsp;<br />*&nbsp;&nbsp;&nbsp;&nbsp;参数&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;data&nbsp;,command<br />*&nbsp;&nbsp;&nbsp;&nbsp;返回值&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;void<br />******************************************************************/<br />void&nbsp;LCD_Write_Byte(unsigned&nbsp;char&nbsp;data,&nbsp;unsigned&nbsp;char&nbsp;command)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;CHIP_ENABLE;//&nbsp;使能LCD<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(command&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CMD_MODE;//&nbsp;传送命令<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DATA_MODE;//&nbsp;传送数据<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;rSPTDAT1&nbsp;=&nbsp;data;//&nbsp;传送数据到SPI寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((rSPSTA1&nbsp;&&nbsp;0x01)&nbsp;==&nbsp;0);//&nbsp;等待数据传送完毕<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CHIP_DISABLE;//&nbsp;关闭LCD<br /><br />}<br /><br /><br />/*****************************************************************<br />*&nbsp;&nbsp;&nbsp;&nbsp;函数名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;LCD_Write_String<br />*&nbsp;&nbsp;&nbsp;&nbsp;功能&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;逐字符传送<br />*&nbsp;&nbsp;&nbsp;&nbsp;参数&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;X,Y,*S<br />*&nbsp;&nbsp;&nbsp;&nbsp;返回值&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;VOID<br />******************************************************************/<br />void&nbsp;LCD_Write_String(unsigned&nbsp;char&nbsp;X,unsigned&nbsp;char&nbsp;Y,char&nbsp;*s)<br />{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*y;<br />y=s;<br />y=y+10;<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_Set_XY(X,Y);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(*s)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_Write_Char(*s);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s++;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(*y)<br />&nbsp;&nbsp;&nbsp;&nbsp;{LCD_Write_Char(*y);<br />y++;}<br />}<br /><br />/*****************************************************************<br />*&nbsp;&nbsp;&nbsp;&nbsp;函数名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;LCD_Write_Char<br />*&nbsp;&nbsp;&nbsp;&nbsp;功能&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;传输字符串<br />*&nbsp;&nbsp;&nbsp;&nbsp;参数&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;c<br />*&nbsp;&nbsp;&nbsp;&nbsp;返回值&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;void<br />******************************************************************/<br />void&nbsp;LCD_Write_Char(unsigned&nbsp;char&nbsp;c)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;line;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;-=&nbsp;32;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(line=0;&nbsp;line&lt6;&nbsp;line++)<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_Write_Byte(font6x8[c][line],&nbsp;1);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br /><br />/*****************************************************************<br />*&nbsp;&nbsp;&nbsp;&nbsp;函数名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;LCD_Set_XY<br />*&nbsp;&nbsp;&nbsp;&nbsp;功能&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;设置显示位置<br />*&nbsp;&nbsp;&nbsp;&nbsp;参数&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;x,y<br />*&nbsp;&nbsp;&nbsp;&nbsp;返回值&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;void<br />******************************************************************/<br />void&nbsp;LCD_Set_XY(unsigned&nbsp;char&nbsp;X,&nbsp;unsigned&nbsp;char&nbsp;Y)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_Write_Byte(0x40&nbsp;|&nbsp;Y,&nbsp;0);//&nbsp;column<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_Write_Byte(0x80&nbsp;|&nbsp;X,&nbsp;0);//&nbsp;row<br />}<br />我的是点阵48*84LCD,如何显示中文,我是想显示中文字16*16的大小,修改了char&nbsp;font16*16,for&nbsp;(line=0;&nbsp;line&lt16;&nbsp;line++)<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_Write_Byte(font16x16[c][line],&nbsp;1);<br />为什么显示的中文是乱码了,而且大小只是变长了,没有变大???那位大哥知道呀!
阿南 发表于 2008-5-21 13:27 | 显示全部楼层

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

用字模软件生成某个大小(如16*16)的点阵数据.<br />中文比较多或者是任意的汉字,需要用汉字字库
 楼主| ARM_FRESH 发表于 2008-5-21 21:12 | 显示全部楼层

还是有问题

const&nbsp;char&nbsp;font[][32]={<br />//单<br />&nbsp;&nbsp;&nbsp;&nbsp;{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}.....<br />不过出现乱码了,是不是汉字的屏上的位置也要修改一下呀?<br />
walnutcy 发表于 2008-5-22 23:43 | 显示全部楼层

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

  
阿南 发表于 2008-5-23 01:30 | 显示全部楼层

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

  
aibxyz 发表于 2008-5-23 13:36 | 显示全部楼层

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

而你又想显示出中文来。。。。。<br />这个,如果你的LCD支持画点,那可以自己做个驱动显示中文<br />要不别想了
 楼主| ARM_FRESH 发表于 2008-5-24 09:33 | 显示全部楼层

显示汉字的一种方法

程序里自带了一段英文字库,它是6*8的,我现在想显示16*16(比如上面所说的“单”)<br />可不可以这样显示,就是说在第一段第一个位置显示“单”代码里的1~8个代码,然后在第一段第二个位置显示9~16的代码,接着把位置指向第二段第一个位置显示16~24的代码,最后指向第二段第二个位置显示25~32的代码<br />&nbsp;&nbsp;这样可以吗??
阿穆琪 发表于 2008-5-25 00:13 | 显示全部楼层

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

  
myforever 发表于 2008-5-25 17:52 | 显示全部楼层

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

<br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

31

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部