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