stm32,在电脑上输入汉字,通过can口接受并在OLED上显示。。帮我分析下该怎么做,主要是汉字字库不会使用

 我来答
ming_180
2013-02-28 · 超过23用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:54.2万
展开全部
电脑上输入的中文编码一般使用GB2312或GBK编码,发送时发汉字的编码至单片机就可以,汉字库可以存储在内部flash或者外部flash,如外部SPI的flash比较便宜,字库存储时直接从需要存储的首地址连续存储即可,该地址可以记为flash的偏移地址,汉字字库的数据存放地址通过汉字的编码算出,具体算法可参考http://wenku.baidu.com/view/a4b24941336c1eb91a375dc0.html,算出来的地址为字在字库中的偏移地址。
则最后要访问的地址就是:flash偏移地址+字库中偏移地址
读取的数据长度与点阵大小有关,与16*16点阵字库的数据为32字节。
将读取出来的数据直接按画点的方法画至OLED上即可,但需要注意字库的存储方向和屏幕的显示方向。
追问
字库文件“16*16.FON”文件怎么存储在外部flash里面?
追答
比较笨一点的方式是将字库文件转换成数组和程序代码一起烧进stm32的flash,然后再在程序里将数组里的数据写至外部的spi flash。
比较灵活一点的就是通过串口发送至stm32后,stm32再将数据写至SPI FLASH,这个串口的协议可以用xmodem、ymodem等等,具体可以参考stm32的串口IAP例程,该例程使用的是Ymodem协议实现IAP,把底层的flash驱动换为spi的flash驱动就可以了。
百度网友b12a2e039
2013-02-28 · TA获得超过1533个赞
知道小有建树答主
回答量:819
采纳率:0%
帮助的人:689万
展开全部
直接输入“中文”
然后按char *类型一直取到 ‘\0’并逐个往CAN总线上发

接收:
OLED如果带字库字节把接收到的内码丢出去就可以;
如果不含字库
通过比较接收到的数据的第8位,如果是0表示是ACSII字库,按ACSII点阵方式处理
如果第8位是1表示是汉字,用同一种字符集做索引(GB2312、GBK、UTF-8)调用点阵图形
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式