999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

中文字庫芯片GT30L32S4W在emWin圖形庫中的應用

2015-07-02 08:42:48
單片機與嵌入式系統應用 2015年10期

趙 云

(桂林電器科學研究院有限公司,桂林541004)

引 言

隨著嵌入式系統已滲透入社會生活的很多領域(如電子消費品、醫療儀器、工業環境),無論是普通消費者還是商業用戶,都期待更友好的UI界面體驗。emWin圖形庫是目前廣泛應用于嵌入式系統界面開發的中間件,但em-Win中不能直接使用中文,且只提供庫文件,不開放源代碼,使通過修改emWin源代碼實現中文支持非常困難。如何在emWin中實現中文界面顯示,一直是嵌入式GUI設計中關注的問題。

常用的emWin支持中文的方法有兩種:

①用emWin提供的fontCvt工具生成特定的C語言格式的字庫代碼,加載在ROM空間供em Win調用,缺點是需要占用ROM資源。

②用第三方工具生成字庫文件,然后拷貝到SD卡或燒錄到Flash芯片,供em Win用文件系統方式調用,但用Flash需要額外燒錄,用SD卡又會拖慢顯示速度。

本文的方案把GT30L32S4W字庫映射到emWin的字體顯示接口,使em Win支持中文顯示。這種方式可以避免額外對Flash的燒錄工作,降低使用第三方字庫的風險,也不需要占用MCU的ROM空間,用emWin做界面設計時,可直接調用GT30L32S4W內全部漢字資源,方案框圖如圖1所示。

圖1 GT30L32S4W方案框圖

1 GT30L32S4W和STM32F103ZET6的硬件接口

1.1 簡述GT30L32S4W

GT30L32S4W為上海高通(GOTOP)發布的字庫芯片,支持國標字符集GB2312(6 763個漢字),支持12×12、16×16、24×24、32×32四種點陣字型,總線接口為SPI,封裝為SOP8。

該芯片與STM32F103ZET6的接口電路如圖2所示,可以借鑒參考文獻[3]給出的SPI時序要求,直接調用STM32的庫函數實現GT30L32S4W的SPI讀寫函數。

圖2 STM32F103ZET6和GT30L32S4W硬件SPI1接口電路

1.2 GT30L32S4W連續讀出單個漢字字模

這里給出讀取以DST為首地址的連續no_bytes個字節的實現方法,讀取完成后,字模保存在GUI_Font-DataBuf[]數組,供下一步處理。

2 GT30L32S4W和emWin的軟件接口

2.1 emWin的字庫接口

①結構體GUI_p UC_API為em Win的字符編碼接口,emWin通過 GUI_UC_Set EncodeNone()函數調用了該接口,但是emWin圖形庫不開放源代碼,無法直接修改庫文件。對應的方法是打開UCGUI v3.98開源版本中提供的GUI_UC_EncodeNone.c文件,改寫里面的_GetChar-Code()、_GetCharSize()、_CalcSizeOfChar()、_Encode()這4個函數,增加GB2312編碼的處理,然后把改動過的文件加入工程編譯,可以使GUI_p UC_API指向改動過的函數,實現emWin對GB2312漢字的識別。

②emWin的字符顯示接口為GUIPROP_DispChar(),這個函數的功能是獲取字符字模,再執行畫位圖的函數將字符顯示出來,該函數原型在UCGUI v3.98開源版本的GUICharP.c文件中。修改的方法是參考GUIPROP_DispChar()源代碼,改寫為 GUIPROP_X_DispChar()函數,在獲取字模時先區分英文和漢字,如果為漢字就調用高通字模定位算法,連續讀取一個漢字的字模,然后進行顯示處理。

③加入新字體還需要修改em Win圖形庫中提供的頭文件GUI.H和GUI_TYPE.H,把新字體的顯示方法指向GUIPROP_X_DispChar()函數,這部分的工作在參考文獻[2]中有論述,具體源代碼可以借鑒參考文獻[6]。注意:emWin可以視為是開源的UC/GUI v3.98之后不開源的高級版本。

2.2 高通字庫的通用字模的定位算法

GT30L32S4W支持12×12、16×16、24×24、32×32四種點陣字型,由于參考文獻[2]、[3]和[4]給出不同點陣字型的計算方式不同,使用不方便。這里歸納出一套通用的字庫IC漢字地址計算方法:

①BaseAdd:一套點陣字體在GT30L32S4W芯片中的起始地址,例如16×16點陣的起始地址為0x2 C9D0。

②MSB:一個漢字的內部GB2312編碼為16位,MSB表示該漢字GB2312編碼的高8位。

③LSB:類似MSB,表示一個漢字GB2312編碼的低8位。

④FontByte:單個漢字的存儲長度,比如一個12×12點陣漢字需要連續24個字節,32×32點陣需要連續128個字節。如圖3所表示,一個24×24漢字需要3×24共72個字節的存儲長度,讀取字模的時候需要連續讀取72個字節,保存到一個數組里,再等待下一步顯示處理。

圖3 24×24的漢字

⑤Address:由MSB和LSB組成的16位GB2312漢字在字庫IC芯片中的字節地址,如圖3中漢字“高”的GB2312碼為0xB8DF,拆開 MSB就是0xB8,LSB就是0xDF。表1為GT30L32S4W的漢字地址表,可以根據該表將參數代入定位算法得到某個漢字的字模位置。

表1 GT30L32S4W等寬漢字地址表

結 語

本文提供了基于字庫芯片GT30L32S4W的em Win中文顯示方案。圖4所示為em Win調用中文字庫IC的實際效果,界面包括BUTTON控件、TEXT控件和DROPDOWN控件,均顯示正常。

圖4 emWin調用中文字庫IC的實際效果

該方案已應用在寶通公司的尿液分析儀上,證明了該方案對emWin有良好的兼容性。該方案使產品量產時免除了字庫燒錄和測試工序,減少了第三方字符生成軟件的風險,節省了Flash芯片成本,是一種值得推廣的嵌入式系統中文界面支持方案。此外,高通還提供多國語言的字庫芯片,參考該方案可以對emWin顯示日文、韓文做進一步研究。

[1]SEGGER.emWin User&Reference Guide V5.28[EB/OL].[2015-03].www.segger.com.

[2]李建紅,劉丹,徐展.基于UCGUI庫的外擴中文字庫研究與實現[J].計算機工程,2014,40(2):271-274.

[3]高通科技.GT30L32S4W標準漢字字庫芯片用戶手冊V1.0[EB/OL].[2015-03].www.genitop.com.

[4]馮月芹,湯小龍.高通字庫芯片GT23H32S4W的應用[J].單片機與嵌入式系統應用,2013(12):45-47.

[5]陳新,蒲慶文.基于emWin圖形庫的電動汽車液晶儀表設計[J].儀表技術與傳感器,2013(7):105-110.

[6]jdh99.在emWin中顯示字庫芯片GT23L24M0140的字模[EB/OL].[2015-03].http://blog.csdn.net/jdh99.

主站蜘蛛池模板: 香蕉国产精品视频| 亚洲无码高清免费视频亚洲 | 国内精自线i品一区202| 国产福利一区二区在线观看| 国产午夜小视频| 亚洲另类第一页| 亚洲综合片| 在线免费a视频| 亚洲欧美极品| 亚洲视频影院| 午夜啪啪网| 伊人成人在线视频| 国产成人免费高清AⅤ| 91精品啪在线观看国产91| 99精品热视频这里只有精品7| 好紧好深好大乳无码中文字幕| 嫩草国产在线| 日韩视频免费| 乱系列中文字幕在线视频| 国产精品无码AV中文| 国产人人乐人人爱| 99re视频在线| 在线欧美日韩国产| 毛片三级在线观看| 成人日韩视频| 四虎AV麻豆| 超碰91免费人妻| 久久福利网| 九九这里只有精品视频| 欧美一级高清片久久99| 蜜芽一区二区国产精品| AV天堂资源福利在线观看| 狠狠v日韩v欧美v| 狠狠色综合久久狠狠色综合| 久久综合丝袜日本网| 国产精品真实对白精彩久久| 在线观看亚洲国产| www成人国产在线观看网站| www.99在线观看| 91精品免费高清在线| 国产香蕉在线| 国产九九精品视频| 成人免费一区二区三区| 谁有在线观看日韩亚洲最新视频| 亚洲无码日韩一区| 久久人搡人人玩人妻精品 | 久久青草视频| jizz在线免费播放| 91精品国产综合久久不国产大片| 91久久天天躁狠狠躁夜夜| 午夜国产大片免费观看| 一本一道波多野结衣一区二区 | 欧美视频在线第一页| 亚洲码一区二区三区| 国产三级毛片| 久草中文网| 亚洲日韩高清在线亚洲专区| 久久人与动人物A级毛片| 午夜日b视频| 亚洲欧美激情小说另类| 国产簧片免费在线播放| 久久国语对白| 欧美成人aⅴ| 亚洲国产精品VA在线看黑人| 精品久久久久久成人AV| 国产香蕉在线视频| 精品久久蜜桃| 国产全黄a一级毛片| 成人国产一区二区三区| igao国产精品| 国产精品网址你懂的| 国产国产人成免费视频77777 | 二级毛片免费观看全程| 天天综合网色| 九色91在线视频| 伊人色婷婷| 欧美一区日韩一区中文字幕页| 九色91在线视频| 黄色三级毛片网站| 亚洲中字无码AV电影在线观看| 亚洲成a人片| 91精品国产麻豆国产自产在线|