日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

总结一下嵌入式OLED显示屏显示中文汉字的办法

發布時間:2025/4/16 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 总结一下嵌入式OLED显示屏显示中文汉字的办法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

這個問題以為很簡單,但最后花很多功夫才能完成,所以總結一下分享給大家。

解決思路

UTF-8->Unicode->GB2312->點陣編碼,其中Unicode轉GB2312要轉碼表,GB2312轉點陣編碼要HZK16字庫。

代碼:https://github.com/lyaohe/UTF-8toGB2312

解決過程

經多番研究,OLED顯示屏顯示中文最簡單還是用HZK16字庫轉點陣編碼,這里有一個算法:

《UCDOS下點陣字庫在嵌入式OLED應用中的移植》

http://www.cqvip.com/read/read.aspx?id=25100512#

想要完整的算法,自行搜索。

當時使用這個算法,在Linux下測試,不對,在Windows測試,轉換編碼正確。

那就奇怪了,經具體了解發現HZK16字庫是符合GB2312標準的16×16點陣字庫

在Linux下使用UTF-8編碼,肯定不對啦,于是找UTF-8的點陣字庫,沒有找到,只好用UTF-8轉GB2312。

在Fedora,有系統函數轉換字符編碼,iconv輕松把UTF-8轉GB2312,可是編譯到板子上始終沒有轉換成功。

又陷入難題,研究發現,使用uclibc庫有iconv函數,但不支持GB2312,氣餒。

網上有同學編譯libiconv庫,可是編譯出來有1M+,有點大,占太空間了。

又要重新思考如何解決,連同事也叫我先放棄這個,先完成其他工作。

我還是不放棄,感覺快要完成,就卡那里,很不服氣。

想嘗試自己動手寫函數實現UTF-8轉GB2312,找資料發現可以實現的。

思路是UTF-8轉Unicode,Unicode轉GB2312,Unicode轉GB2312需要轉換表

測試UTF-8轉Unicode函數,轉換成功。

再到Unicode轉GB2312,可是網上只有GB2312轉Unicode轉換表,要自己動手改成Unicode轉GB2312編碼表,也順便要排個順利,可以二分查找,更快轉換成GB2312。

Unicode轉GB2312其實就是查找,使用二分查找,拿到GB2312的編碼,但不會使用這個編碼,與直接打印出來編碼不同。

經研究GB2312編碼才發現,弄懂幾個知識點,原始編碼,通行編碼,機內碼。

//機內碼與通行碼的關系 unsigned char* str="啊"; printf("0x%X%X\n",str[0],str[1]); //機內碼 printf("0x%X%X\n",str[0] & 0xff,str[1] & 0xff ); //通行編碼

也終于解決Unicode轉GB2312的轉換。

最后把代碼都整合起來就行了,我也把代碼分享出來,托管到Github,自行參考。

https://github.com/lyaohe/UTF-8toGB2312

轉載于:https://my.oschina.net/lyaohe/blog/386813

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的总结一下嵌入式OLED显示屏显示中文汉字的办法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。