林佳楠
(集美大學(xué) 誠毅學(xué)院 信息工程系,福建 廈門 361021)
POV,英文Persistance Of Vision 的縮寫,即視覺暫留的意思[1].用POV 的原理來做顯示屏,優(yōu)勢主要是能以少量LED 實(shí)現(xiàn)傳統(tǒng)方式下大量LED 才能實(shí)現(xiàn)的顯示屏.例如POV 的16 個(gè)LED 可以輕松地同時(shí)顯示16 個(gè)漢字,而傳統(tǒng)LED 屏需要4 096 個(gè)LED.此外,它體積小巧,便于安裝在適當(dāng)?shù)膱龊希滹@示效果如漂浮在半空中.不過,由于其顯示原理利用了視覺暫留效應(yīng),因而在開發(fā)設(shè)計(jì)階段一直有個(gè)問題,就是相關(guān)軟件都沒有仿真模型可供顯示效果的仿真調(diào)試,必須要等待機(jī)械硬件實(shí)體制作完成才能看到顯示效果,給相關(guān)的研發(fā)設(shè)計(jì)等帶來諸多不便.為此,本文基于Proteus 的POV-LED 仿真模型,運(yùn)用單片機(jī)編程的方法實(shí)現(xiàn)數(shù)學(xué)模型計(jì)算,在Proteus 軟件仿真中獲得預(yù)測顯示效果圖.
POV-LED 就是利用視覺暫留效應(yīng)的旋轉(zhuǎn)電子燈.原理是利用人眼具有視覺暫留的特性,當(dāng)畫面以一定的速度刷新時(shí),我們看到的就是連續(xù)的圖像[2].采用高速旋轉(zhuǎn)的電機(jī)帶動(dòng)電路板高速旋轉(zhuǎn),從視覺效果上就會(huì)產(chǎn)生一種圓盤狀的 LED 顯示屏的狀態(tài).POV-LED 是利用機(jī)械轉(zhuǎn)動(dòng)動(dòng)態(tài)掃描代替?zhèn)鹘y(tǒng)逐行掃描方式,是一種新型的顯示屏,具有成本低,可視范圍大的特點(diǎn),是 LED 顯示屏的一個(gè)新的發(fā)展方向,其實(shí)質(zhì)就是與機(jī)械轉(zhuǎn)動(dòng)配合起來的動(dòng)態(tài)掃描顯示技術(shù).
這里只以基于POV 的圓形旋轉(zhuǎn)LED 顯示屏為例子[3].旋轉(zhuǎn)掃描其顯示器件只有一列LED,呈條狀排布于電路板上,由機(jī)械旋轉(zhuǎn)運(yùn)行到某一位置時(shí)就顯示該位置的狀態(tài),到下一位置后又顯示下一位置的狀態(tài),即一列圖像要完成全部圖像的顯示(如圖1 所示),掃描過程由機(jī)械轉(zhuǎn)動(dòng)更換位置來實(shí)現(xiàn)的[4].
圖1 POV-LED 實(shí)例
目前,用于這類單片機(jī)系統(tǒng)仿真調(diào)試最流行的軟件是Proteus,但是Proteus 自帶的庫中沒有任何關(guān)于運(yùn)動(dòng)掃描的LED 仿真模型,也沒有人發(fā)表過研究關(guān)于如何在Proteus 軟件中進(jìn)行相關(guān)仿真的.
因此,本研究設(shè)計(jì)一個(gè)POV-LED 顯示效果模塊的proteus 模型,能直接用于proteus 電路仿真,且使用方法直觀方便.
既然POV-LED 顯示的原理是當(dāng)轉(zhuǎn)動(dòng)到合適的角度時(shí)點(diǎn)亮合適的LED 就可以顯示需要顯示的內(nèi)容,要進(jìn)行POV-LED 顯示效果仿真,解決的問題就是在Proteus 軟件中制作一個(gè)元件來仿真:每次POV-LED去更新LED 顯示的時(shí)候,由仿真模塊記錄下來相應(yīng)的信息,當(dāng)旋轉(zhuǎn)掃描完成,仿真模塊根據(jù)記錄的信息由數(shù)學(xué)模型推算顯示效果并顯示.
為了討論,先進(jìn)行一些參數(shù)說明.設(shè)一共有N個(gè)LED 燈等距排列,每個(gè)LED 燈的軸向?qū)挾葹閐,LED燈之間的間隙距是s,s0為第一個(gè)LED 燈離旋轉(zhuǎn)軸距離,如圖2 所示:
圖2 尺寸參數(shù)標(biāo)注
那么整個(gè)旋轉(zhuǎn)平面的半徑R為
那么最終效果圖I的長為2R,寬為2R,中心點(diǎn)為O(R,R).
設(shè)POV-LED 去更新LED 顯示的頻率為每旋轉(zhuǎn)2π即一周更新M次(分辨率),那么每次更新所掃過的扇區(qū)角度δ為δ=2π/M,總共M個(gè)扇區(qū).
舉例,LED 數(shù)量為8,一周更新10 次,每個(gè)扇區(qū)角度為δ=π/5,每個(gè)LED 每次更新數(shù)據(jù)所掃過的軌跡為一段角度π/5 的圓弧.如圖3 所示:
圖3 LED 數(shù)8,分辨率10
設(shè)最靠近旋轉(zhuǎn)軸的LED 燈序號為1,則最末尾LED 燈序號為N,LED 為共陰極.設(shè)電路初始角度為0,如圖3 所示,旋轉(zhuǎn)方向?yàn)槟鏁r(shí)針.將旋轉(zhuǎn)一周的LED 數(shù)據(jù)存于二維矩陣D[N,M]中.顯然位于D中哪一行表示對應(yīng)哪個(gè)LED 燈,位于D中哪一列表示對應(yīng)于哪個(gè)扇區(qū).
如圖3 所舉的例子,要顯示這么一個(gè)圖像所存的數(shù)據(jù)矩陣D(共陰極,1 表示亮,0 表示滅)為:
假設(shè)最終效果圖上任意一點(diǎn)值為I(x,y),因?yàn)樾D(zhuǎn)掃描天然對應(yīng)極坐標(biāo)(r,θ),所以需要先求點(diǎn)I(x,y)對應(yīng)的半徑r和角度θ,如下:
顯然r決定了I(x,y)其屬于哪個(gè)LED 燈顯示的范圍,θ決定了其所屬的扇區(qū).
如果I(x,y)對應(yīng)于數(shù)據(jù)矩陣D中的D(i,j),那么根據(jù)平面幾何的原理可以推導(dǎo)得出x,y,i,j之間需要滿足條件:
如果不滿足上述條件,則該點(diǎn)不位于任何LED 運(yùn)動(dòng)軌跡的覆蓋范圍,亮度為0.
到此,可以總結(jié)推導(dǎo)出I(x,y)的表達(dá)式如下:
在Proteus 軟件中,我們運(yùn)用單片機(jī)編程的方法來實(shí)現(xiàn)上述設(shè)計(jì)的數(shù)學(xué)模型,將預(yù)測POV-LED 的顯示效果展示于LCD 屏上.
仿真模塊以和POV-LED 更新速率同步的方式讀取整排LED 的顯示數(shù)據(jù),暫存于數(shù)組中.當(dāng)一周掃描完成后,根據(jù)上述數(shù)學(xué)模型計(jì)算得到相應(yīng)的顯示數(shù)據(jù),寫入LCD 屏顯示.如圖4 所示:
圖4 仿真模型程序流程圖
利用這個(gè)仿真模型,放入到POV-LED 仿真電路中,加載相關(guān)程序,即使還沒制作實(shí)物電路,也可以通過仿真模型知道顯示效果了.如下圖5 所示,這里因?yàn)槠?,僅展示仿真模型的顯示部分.仿真模型中的單片機(jī)通過IO 口通信實(shí)時(shí)獲取POV-LED 的數(shù)據(jù).
圖5 仿真模型效果圖
從上述測試舉例和前文圖1 對比可以看出,仿真模型預(yù)測的顯示效果基本和實(shí)物效果相當(dāng).需要說明的是,LCD 分辨率有效,為了能夠?qū)⑿Ч麍D寫入LCD 顯示,數(shù)學(xué)計(jì)算時(shí)比實(shí)際略微縮減了LED 燈的數(shù)量,但這并不影響顯示效果的判斷.
本研究在Proteus 軟件中,實(shí)現(xiàn)了一個(gè)用于POV-LED 測試的仿真模型,可以比較方便地得到輸出效果圖.這樣,在沒有制作出POV-LED 硬件實(shí)物的情況下,也可以通過完全的軟件仿真確定POV-LED 程序設(shè)計(jì)是否準(zhǔn)確和有效.因此,該仿真模型具有較高的實(shí)用性.