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

2024-11-29 11:35:32
推荐回答(2个)
回答(1):

电脑上输入的中文编码一般使用GB2312或GBK编码,发送时发汉字的编码至单片机就可以,汉字库可以存储在内部flash或者外部flash,如外部SPI的flash比较便宜,字库存储时直接从需要存储的首地址连续存储即可,该地址可以记为flash的偏移地址,汉字字库的数据存放地址通过汉字的编码算出,具体算法可参考http://wenku.baidu.com/view/a4b24941336c1eb91a375dc0.html,算出来的地址为字在字库中的偏移地址。
则最后要访问的地址就是:flash偏移地址+字库中偏移地址
读取的数据长度与点阵大小有关,与16*16点阵字库的数据为32字节。
将读取出来的数据直接按画点的方法画至OLED上即可,但需要注意字库的存储方向和屏幕的显示方向。

回答(2):

直接输入“中文”
然后按char *类型一直取到 ‘\0’并逐个往CAN总线上发

接收:
OLED如果带字库字节把接收到的内码丢出去就可以;
如果不含字库
通过比较接收到的数据的第8位,如果是0表示是ACSII字库,按ACSII点阵方式处理
如果第8位是1表示是汉字,用同一种字符集做索引(GB2312、GBK、UTF-8)调用点阵图形