利用LabVIEW產(chǎn)生字模的LED顯示屏設(shè)計
.文中介紹了一種直接利用 LabV I EW 的圖片處理功能自動生成字符點(diǎn)陣的方法,利用該程序無需使用專門的字庫可自動得到各種字符的點(diǎn)陣,然后將顯示信息通過串行傳輸方式發(fā)送到單片機(jī),通過單片機(jī)驅(qū)動相應(yīng)的二極管發(fā)光,顯示信息。硬件由計算機(jī)、單片機(jī)、驅(qū)動電路和 LED 顯示屏構(gòu)成,結(jié)構(gòu)如圖 1所示。
圖 1總體結(jié)構(gòu)框圖。
1. 基于 LabV I EW 的漢字字模的提取
1.1. 基于 LabV IEW 的漢字字模的提取方法
現(xiàn)在比較流行的方法是基于漢字字符的編碼方式形成字模。
漢字機(jī)內(nèi)碼與區(qū)位碼的關(guān)系為:
區(qū)位碼=機(jī)內(nèi)碼- 160(1)
對于 16*16點(diǎn)陣字庫,每個漢字占用 32 b i t 其首字節(jié)的起始位置的計算公式為:
首字節(jié)= [ (區(qū)碼- 1)*94+位碼- 1]*32 ( 2)
以此為基點(diǎn)連續(xù)讀取 32 b i t就是此漢字的點(diǎn)陣字模。在 LabV IEW 編程中基本流程為: 以字符串形式輸入一個漢字,按照上述運(yùn)算規(guī)則找出漢字字模首字節(jié)在漢字庫文件HZK16中的位置,從 HZ K 16中以首地址開始連續(xù)讀取 32 b i t的數(shù)據(jù),這樣就得到了一個容量為 32的數(shù)組,即輸入漢字的點(diǎn)陣字模。然后再按照下位機(jī)的構(gòu)建運(yùn)用數(shù)組的算術(shù)運(yùn)算控件對數(shù)組修改,將最終結(jié)果通過串口發(fā)送給單片機(jī),以進(jìn)行顯示。
本系統(tǒng)利用 LabV I EW 的圖片處理功能生成字模,包括漢字、數(shù)字、英文以及各種特殊符號等等,提高工作效率和靈活性。
1.2. 利用 LabV I EW 的圖片處理功能生成字模的設(shè)計
首先設(shè)置一個白色的按鈕,通過屬性節(jié)點(diǎn),把輸入的字符作為這個按鈕的文本顯示。在通過調(diào)用節(jié)點(diǎn),獲取這個布爾的圖像數(shù)據(jù)。將圖像數(shù)據(jù)轉(zhuǎn)化為 8位像素矩陣。同樣的方法獲得一個同樣大小但沒有布爾文本的純白色按鈕的像素矩陣。將 2個矩陣做異或比較。
得到一個二維布爾矩陣,直接輸出這個矩陣就得到了該字符的點(diǎn)陣。生成字符矩陣框圖程序如圖 2所示。
采用比較的方法獲得點(diǎn)陣,因此可以采用這種方法在同一系統(tǒng)中產(chǎn)生數(shù)字、漢字、英文或各種特殊符號的字模點(diǎn)陣,簡化了編程過程,使用方便靈活。
由于 LabV IEW 有很強(qiáng)的格式轉(zhuǎn)化功能,將生成的點(diǎn)陣按照下位機(jī)的驅(qū)動方式運(yùn)用其中數(shù)組的運(yùn)算控件對點(diǎn)陣進(jìn)行修改,得到符合要求的字符串。程序框圖,如圖 3所示。圖中的字模 1為用于上位機(jī)顯示的字符串形式,字模 2為用于串口通信的字符串形式。
LabV IEW 中用于串行通訊的節(jié)點(diǎn)實(shí)際上是 V IS節(jié)點(diǎn),為了方便用戶使用,LabV IEW 將這些節(jié)點(diǎn)單獨(dú)組成 1個子模板,共包含 6個節(jié)點(diǎn)。字模 2通過LabV IEW 的控件 V I SA與單片機(jī)的串口進(jìn)行傳輸。
LabV IEW 本身也具有寫入電子表格文件功能可以將生成的字模儲存為任意格式的文件,相當(dāng)于一個字模提取軟件,用于普通 LED顯示屏設(shè)計。最終的字模提取操作界面即前面板如圖 4所示。
圖 4. 字模提取操作界面。
2. 單片機(jī)控制電路設(shè)計
LED顯示屏的設(shè)計采用以 AT89C51單片機(jī)為核心芯片的電路來實(shí)現(xiàn),主要由 AT89C51芯片、時鐘電路、復(fù)位電路、列掃描驅(qū)動電路 74 HC154、1616 LED點(diǎn)陣等部分組成,電路圖如圖 5所示。
圖 5 硬件電路原理圖。
本設(shè)計所使用的 16*16 LED矩陣是由 4塊 8*8LED共陽極矩陣拼接組成。
把行列總線接在單片機(jī) I /O口,然后把上面分析到的掃描代碼送入總線,就可以得到顯示的漢字了。但是若將 LED 點(diǎn)陣的行列端口全部直接接入AT89C51單片機(jī),則需要使用 32條 I /O 口,這樣會造成 I/O資源的耗盡,系統(tǒng)也再無擴(kuò)充的余地。
因此,在實(shí)際應(yīng)用中只將 LED點(diǎn)陣的 16條行線直接接在 P0 口和 P2 口,至于列選掃描信號則是由 4~ 16線譯碼器 74HC154來選擇控制,這樣列選控制只使用了單片機(jī)的 4個 I /O口,節(jié)約了 I /O資源,為單片機(jī)系統(tǒng)擴(kuò)充使用功能提供了條件。由于 P0口做通用數(shù)據(jù) I/O端口驅(qū)動負(fù)載時,必須外接上拉電阻,因此使用 4.7 k. 排電阻作為 P0 口的上拉電阻。
單片機(jī)上電后由于沒有事先存儲字模而處于黑屏等待狀態(tài),當(dāng)接收到串口傳來的字模數(shù)據(jù)后,單片機(jī)按照設(shè)定的程序在P 0和P 2接口輸出漢字對應(yīng)的代碼電平送至 LED 點(diǎn)陣的行選線,同時在 P1.1,P1.2,P1.3,P1.4接口輸出列選掃描信號,從而選中相應(yīng)的LED發(fā)光,并利用人眼的視覺暫留特性合成整個漢字的顯示。
3. 控制系統(tǒng)的軟件設(shè)計
軟件程序主要由初始化、主程序、中斷程序等構(gòu)成,采用匯編語言編寫。主程序用于 LED顯示,程序流程如圖 6所示。中斷程序主要用于接收上位機(jī)傳送的字模信息,由于 LabV I EW 和下位機(jī)傳遞的數(shù)據(jù)是 ASC II形式的,需要轉(zhuǎn)換為 16進(jìn)制數(shù),具體程序流程如圖 7所示。采用中斷的方式接收數(shù)據(jù)可以提高數(shù)據(jù)傳輸?shù)臅r效性。
4. 結(jié)束語
設(shè)計研究的基于 LabV IEW 和單片機(jī)結(jié)合控制的LED電子屏幕。采用 LabV I EW 編程方法產(chǎn)生字模,通過串口傳遞給單片機(jī),簡化了編程、節(jié)省了單片機(jī)程序運(yùn)行的時間,且可實(shí)現(xiàn)動態(tài)輸入,也可根據(jù)需要隨時修改所需顯示的內(nèi)容,具有較高的實(shí)用價值。
雖然本設(shè)計只使用了一塊 16*16 LED點(diǎn)陣,電路簡單,但是包涵了 LED顯示屏的電路基本原理和基本編程思想,如要進(jìn)行擴(kuò)展,只需擴(kuò)展單片機(jī)的I/O接口,增加一些 LED點(diǎn)陣和相關(guān)芯片,就能設(shè)計出更大面積、更多花樣的 LED顯示屏。
評論