《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 利用LabVIEW產生字模的LED顯示屏設計
利用LabVIEW產生字模的LED顯示屏設計
來源:微型機與應用2012年第5期
王水魚,王 淼
(西安理工大學 自動化與信息工程學院,陜西 西安 710048)
摘要: 介紹了一種基于LabVIEW與FPGA的LED漢字顯示屏,其利用LabVIEW軟件靈活、簡便地從計算機的漢字庫中提取漢字字模并轉換為供FPGA直接調用的十六進制字模數(shù)據(jù)。通過在LabVIEW中進行圖像信息掃描的方式得到任意漢字的字模,然后經串口傳遞給FPGA控制顯示漢字。該方法的字模由上位機生成,省去了建立字模庫步驟,簡化了顯示過程,實用性較強。
Abstract:
Key words :

摘  要: 介紹了一種基于LabVIEWFPGA的LED漢字顯示屏,其利用LabVIEW軟件靈活、簡便地從計算機的漢字庫中提取漢字字模并轉換為供FPGA直接調用的十六進制字模數(shù)據(jù)。通過在LabVIEW中進行圖像信息掃描的方式得到任意漢字的字模,然后經串口傳遞給FPGA控制顯示漢字。該方法的字模由上位機生成,省去了建立字模庫步驟,簡化了顯示過程,實用性較強。
關鍵詞: LabVIEW;點陣字庫;FPGA;LED顯示

 隨著嵌入式技術的發(fā)展,各類智能電子裝置日益增多。在這些電子裝置中經常需要顯示漢字,如各類由LED點陣組成的電子廣告牌與液晶顯示屏,它們都是以“點位點亮”的方式顯示。因此,在顯示漢字時必須通過某些技術手段獲得反映漢字字型點陣數(shù)據(jù)的漢字字模。本文介紹了一種直接利用LabVIEW的圖片處理功能自動生成字符點陣的方法,它比其他字模提取方法簡單直觀。利用該程序無需使用專門的字庫可自動得到各種字符的點陣,然后將顯示信息通過串行傳輸方式發(fā)送到FPGA,通過FPGA驅動相應的二極管發(fā)光顯示信息。本設計的硬件由計算機、FPGA、驅動電路和LED顯示屏構成。結構圖如圖1所示。

1 基于LabVIEW的漢字字模的提取
1.1 點陣字庫

 點陣字庫包括16點陣、24點陣及48點陣字庫等,點陣數(shù)目越多,漢字質量越高,而所用存儲空間也就越多。點陣字庫用于存放各個漢字的字模,在同一字庫中,各漢字字模所占字節(jié)數(shù)相同,以便于查找和提取。對于一個n×n的點陣字符,其生成方法就是在一個具有n×n個小格的坐標紙上書寫字符,若筆畫通過某小格,該小格對應數(shù)字1;筆畫不通過,則對應數(shù)字0。然后將該點陣按行或按列切分為字節(jié)后存儲,就構成了一個字符的點陣數(shù)據(jù)。
1.2 點陣字模的存儲結構
 要顯示一個漢字,就必須知道這個漢字的點陣字模信息,這些字模有16點陣、24點陣和32點陣等。目前技術開發(fā)中常用的是16點陣和24點陣兩種。不同點陣漢字字體又有宋體、仿宋體、黑體、楷體之分。在計算機中,相同點陣、相同字體的字符存放在一個字庫中,稱為一個漢字庫文件。本文所用的16點陣字庫結構采用行排列的形式,共有16行,每行16個點,每行點陣存入2 B,因此,每個字符占用32 B。字節(jié)的存放順序為從左到右、從上到下,如圖2(a)所示。24×24點陣字庫則主要為了打印方便,一般采用以列為主的存儲方式存放字模點陣,如圖2(b)所示。

1.3 點陣字庫原理
?。?)計算區(qū)位碼
 根據(jù)我國頒布的《信息交換用漢字編碼字符集——基本集》,漢字庫中收集了6 763個漢字,其中3 755個為常用漢字,其余為次常用漢字。常用漢字按漢語拼音的順序存放在前面,次常用漢字按偏旁部首的順序存放在最后,整個字庫分94個區(qū),每個區(qū)可存放94個漢字或符號,各漢字或符號所在區(qū)即為區(qū)碼,在區(qū)中的順序號則為位碼。因而,通過區(qū)碼和位碼便可唯一地確定一個漢字或符號,計算公式為:
一個漢字或符號在字庫中的順序號=94×(區(qū)碼-1)+(位碼-1)(1)
如果直接利用漢字的區(qū)位碼作為編碼存儲,就會無法區(qū)分是漢字還是西文字符,為此,對區(qū)位碼作統(tǒng)一變換后作為漢字的存儲代碼,即機內碼。機內碼與區(qū)位碼之間的變換關系如下:
 機內碼高位字節(jié)=區(qū)碼+160
 機內碼低位字節(jié)=位碼+160(2)
 對于16點陣字庫,每個漢字字模使用32 B(16 bit×16 bit),再由式(1)和式(2)可知,一個漢字字模在16點陣字庫中的起始位置可由式(3)求得:
 32×[(機內碼高字節(jié)-161)×94+(機內碼低字節(jié)-161)] (3)
 由于漢字庫前15個區(qū)主要用于存放各種非漢字符號,有些漢字系統(tǒng)為了不同的需要進行了裁減,對此必須特別注意,應根據(jù)所選字庫對式(3)進行適當修改。同樣,一個漢字字模在24點陣字庫中的起始位置應為:
 72×[(機內碼高字節(jié)-176)×94+(機內碼低字節(jié)-161)](4)
?。?)計算漢字點陣數(shù)據(jù)存儲位置偏移量
 偏移量是指字模首字節(jié)距離文件頭的相對位置。其計算原理是:求出被檢索漢字之前的漢字個數(shù),再乘每個漢字所占的字節(jié)數(shù)。1個n×n點陣字符所占字節(jié)數(shù)等于n×n÷8。如16×16點陣占32 B,其偏移量offset計算式為:
 offset=(94×(區(qū)碼-1)+(位碼-1))×32(5)
?。?)移動文件指針讀出點陣字模數(shù)據(jù)
打開點陣字庫文件,將文件指針從文件頭向后移動offset個字節(jié),然后使用文件讀取函數(shù)讀出字模,如使用Windows API函數(shù)。點陣字庫存在分辨率低和不能放大兩個致命的缺點。其中,分辨率低導致不能反映字體形狀細節(jié),也就不能反映豐富多彩的字體,可以通過提高位圖點數(shù)提高分辨率。相較于其他字庫,點陣字模原理簡單且使用非常容易,因此,其在大型顯示屏等戶外電子裝置顯示漢字時得到了廣泛應用。
1.4 漢字字模提取程序
1.4.1 漢字字模提取程序的前面板

 前面板是圖形化用戶界面,用于設置輸入數(shù)值和觀察輸出量,漢字字模提取程序的前面板如圖3所示,它由漢字輸入和漢字顯示等幾部分組成。只需要在漢字輸入窗口輸入一個漢字,由LED控件組成的矩陣就可以模擬真實的LED顯示元件顯示所輸入的漢字。

1.4.2 漢字字模提取程序框圖
 漢字字模提取程序基本流程為:在輸入一個漢字后,得到該漢字的機內碼,從而進一步計算得到該漢字字模首字節(jié)在漢字庫文件HZK16中的位置,同時將一個指明漢字庫文件HZK16路徑的常量送入Open/Create/Replace File VI的file path端口。將文件HZK16打開并得到文件的標識號。將文件HZK16的標識號和得到的漢字字模首字節(jié)地址分別送入Set File Position VI的refnum端口和offset端口,即指明了漢字字模在文件HZK16中的起始位置。接著將得到的refnum送入讀二進制文件節(jié)點Read from Binary File VI的file端口,同時在count端口指明讀取的字節(jié)數(shù)量為32。讀二進制文件節(jié)點就會從漢字庫文件HZK16中,從得到的字模起始位置開始連續(xù)讀取32 B的數(shù)據(jù),這樣就得到了一個容量為32的數(shù)組,即輸入漢字的點陣字模。然后利用一個For循環(huán),將一維數(shù)組的每個十六進制元素通過Number To Boolean Array VI轉化為布爾量,這個布爾量與應該得到的布爾量是前后顛倒的,因此應將轉化的布爾量數(shù)組通過Reverse 1D Array VI再一次顛倒,并通過轉化為16×16矩陣,送入前面板顯示。程序框圖如圖4所示。

2 系統(tǒng)硬件設計概述
 本文需要設計的LED控制系統(tǒng)是基于NiosⅡ的嵌入式系統(tǒng),其硬件平臺體系結構如圖5所示。

 

 

 由圖5可知,該LED顯示控制系統(tǒng)大致可以分為FPGA內部邏輯、存儲器模塊和外圍元件3個部分。FPGA內部邏輯在FPGA芯片內部實現(xiàn),核心是NiosⅡ核,它集成了Avalon總線控制器、片內存儲器、內部定時器、CPU與外圍設備的接口等,在 SoPC Builder中首要設計的就是FPGA內部邏輯。存儲器模塊由外接的Flash、SRAM及SDRAM組成。由于現(xiàn)有的FPGA還不能集成大容量的存儲器,需要外擴Flash及SDRAM存儲器。
3 控制系統(tǒng)的軟件設計
 軟件程序主要由初始化、主程序、中斷程序等構成,采用匯編語言編寫。主程序用于LED顯示,其流程圖如6所示。中斷程序主要用于接收上位機傳送的字模信息,由于LabVIEW和下位機傳遞的數(shù)據(jù)是ASCII形式的,需要轉換為十六進制數(shù)。采用中斷的方式接收數(shù)據(jù)可以提高數(shù)據(jù)傳輸?shù)臅r效性。

 本文設計了基于LabVIEW和FPGA的LED漢字顯示屏。采用LabVIEW編程方法產生字模,通過串口傳遞給FPGA,簡化了編程,節(jié)省了FPGA程序運行時間,不但能實現(xiàn)動態(tài)輸入,還能根據(jù)需要隨時修改需要顯示的內容,具有較高的實用價值。而下位機系統(tǒng)主要采用了FPGA技術、SoPC技術和NiosⅡ處理器技術。
雖然本設計只使用了一塊16×16 LED點陣,電路簡單,但是包含了LED顯示屏的電路基本原理和基本編程思想,如要進行擴展,只需擴展FPGA的I/O接口,增加一些LED點陣和相關芯片,就能設計出面積更大、花樣更多的LED顯示屏。實驗結果表明,本文所設計的系統(tǒng)靈活性和可靠性較高,外圍電路簡單,硬件易升級,功能擴展性增強,是LED控制系統(tǒng)的一個主要發(fā)展方向。
參考文獻
[1] 周立功.SOPC嵌入式系統(tǒng)基礎教程[M].北京:北京航空航天大學出版社,2006.
[2] 褚振勇.翁木云.FPGA設計及應用[M].西安:西安電子科技大學出版社,2002.
[3] Altera Corporation. QuartusII version6.0 handbook[EB/OL].www.altera.com. 2006.
[4] 楊樂平.LabVIEW程序設計與應用(第2版)[M].北京:電子工業(yè)出版社,2005.
[5] 侯國屏.LabVIEW編程與虛擬儀器設計[M].北京:清華大學出版社,2005.

此內容為AET網(wǎng)站原創(chuàng),未經授權禁止轉載。