通用點陣式電子器件的圖形顯示
摘要:分析了通用點陣式電子器件的現(xiàn)狀及其所具有的特點,以繪制二維曲線為例,介紹了采用整數(shù)數(shù)字微分法(INTEGER DDA)的繪制算法,詳細(xì)闡述了點陣式電子器件中的圖形顯示原理,并結(jié)合MGLS-12032A/B液晶和WH4005微型打印機進(jìn)行驗證,取得了比較好的效果。
本文引用地址:http://butianyuan.cn/article/225765.htm關(guān)鍵詞:單片機 圖形顯示 點陣式 MGLS-12032A/B WH4005
1 引言
當(dāng)今世界,電子技術(shù)迅猛發(fā)展,點陣式器件在信息產(chǎn)業(yè)、軍工產(chǎn)業(yè)等領(lǐng)域中得到了廣泛的應(yīng)用,點陣式器件具體包括液晶顯示模塊(LCD)和漢字針式打印機等器件。就顯示器而言,目前,絕大多數(shù)微機化系統(tǒng)中一般采用三種顯示器,即:CRT屏幕顯示器、LED七段顯示器和LCD液晶顯示器。CRT顯示器的功能較強,適用面較廣,但體積大,價格較高,不適合小型化和集成化。LED七段顯示器的體積小,容易控制,但其功能弱,只能顯示有限的數(shù)字和字母。與前面兩者相比,LCD的優(yōu)點較為明顯,它體積小,功能強,控制方便,價格適宜,能適應(yīng)顯示器的發(fā)展方向,因而在通信、家電、大屏幕設(shè)影等領(lǐng)域得到了越來越廣泛的應(yīng)用。與液晶相比,微型打印機也是基于點陣式的器件,與傳統(tǒng)的打印機不同的是,微型打印機具有體積小、便于控制、價格便宜等特點,因而在銀行、超市等收款機中得到廣泛的應(yīng)用。
2 點陣顯示的基于原理和算法步驟
下面以繪制二維坐標(biāo)曲線為例,簡述繪制原理。
在點陣式器件中,二維曲線的繪制工作一般可分為以下兩步:第一是是依據(jù)某種算法計算出所繪圖形的各點坐標(biāo)值,并進(jìn)行存儲。這一步一般需要完成算法程序的編制;第二步是在所應(yīng)用的點陣器件上根據(jù)算法程序所提供的點坐標(biāo),換算出點陣器件上顯示點的位置,即顯示緩沖區(qū)相應(yīng)單元地址及其該單元的內(nèi)數(shù)據(jù)的確定,從而在顯示區(qū)域上組成所需要的顯示圖形。這一步需要完成繪點程序的編制。算法程序是通用的,繪點程序則需要根據(jù)應(yīng)用點陣器件所配的顯示控制的特性來編制。
曲線的繪制最終可以轉(zhuǎn)化為直線的繪制,所以應(yīng)先考慮繪制直線。繪制直線的算法種類較多,為了避免復(fù)雜的浮點運算,筆者采用整數(shù)數(shù)字微分分析法(INTEGER DDA)。先以(Xs,Ys)為起點,(XE,YE)為終點作直線,再使其斜率k=(YE-YS)/(XE-XS)。整數(shù)數(shù)字微分法的基本思想是回避了計算斜率k過程中的除法運算,應(yīng)用ΔY=YE-YS和ΔX=XE-XS之間的關(guān)系,在保證ΔY≥0的條件下將斜率k分成四種情況,然后在每一種情況下用EER指明建立點位置與其實線的差距,以確定相應(yīng)的作點規(guī)則,最后再將終點情況考慮進(jìn)去。這四種情況為:
(1)k=0~1,此時有ΔY≥0,ΔX≥0,且ΔY≤ΔX關(guān)系成立。作點規(guī)則為:
在當(dāng)前(X,Y)點處,若ERR0,則在(X+1,Y)處緩點,且ERR=ERR+ΔY;
若ERR≥0,則在(X+1,Y+1)處繪點,且ERR=ERR+ΔY-ΔX。
然后將新的緩點坐標(biāo)作為當(dāng)前的(X,Y)點,而將所得到的ERR值作為該坐標(biāo)點的偏差值。重復(fù)上述的工作直至X=XE為止。
(X,Y)的初始坐標(biāo)值為(XS,YS),且ERR=0。
(2)k>1,此時有ΔY≥0,ΔX≥0,且ΔY>ΔX。作點規(guī)則為:
在當(dāng)膠(X,Y)點處,若ERR0,則在(X+1,Y+1)處緩點,且ERR=+ΔY-ΔX。
若ERR≥0,則在(X,Y+1)繪點,且ERR=ERR-ΔX。然后將新的繪點坐標(biāo)作為當(dāng)前(X,Y)點,而將所得到的ERR值作為該坐標(biāo)點的偏差值,重復(fù)上述工作直至Y=YE為止。
(X,Y)的初始坐標(biāo)值為(XS,YS),且ERR=0。
(3)當(dāng)k=-1~0時,此時有ΔY≥0,ΔX0,且|ΔY|≤|Δ|。作點規(guī)則為:
在當(dāng)前(X,Y)點處,若ERR0,則在(X-1,Y)處繪點,且ERR=ERR+ΔY;若ERR≥0,則在(X-1,Y)繪點,且ERR=ERR+ΔY+ΔY=ERR+ΔY-|ΔX|。
然后將新的繪點坐標(biāo)作為當(dāng)前(X,Y)點,而所得的ERR值為該坐標(biāo)點的偏差值,重復(fù)上述工作直至X=XE為止。
(X,Y)的初始坐標(biāo)值為(Xs,Ys),且ERR=0。
(4)k-1,有ΔY≥0,ΔX0,且|ΔY|>|ΔX|。作點規(guī)則為:
在當(dāng)前(X,Y)點處,若ERR0,則在(X-1,Y+1)繪點,且ERR=ERR+ΔY+ΔY=ERR+ΔY-|ΔX|;
若ERR≥0,則在(X,Y+1)繪點,且ERR=ERR+ΔY=ERR-|ΔX|。
然后將新的繪點坐標(biāo)作為當(dāng)前的(X,Y)點,而所得到的ERR值為該點坐標(biāo)點的偏差值,重復(fù)上述工作值至Y=YE為止。
(X,Y)點的初始坐標(biāo)值為(XS,YS),且ERR=0。
應(yīng)用MCS-51指令集編制整數(shù)數(shù)字微分法實用算法程序框圖如圖1所示。該程序可完成(0~255,0~255)范圍內(nèi)的任意直線繪制,且所作的直線在點陣液晶顯示屏和微型打印機上顯示的質(zhì)量相當(dāng)不錯。
利用繪制直線的技術(shù)進(jìn)行曲線的繪制實際上就是選擇一些關(guān)鍵點(關(guān)鍵點的選取取與所繪制的曲線有關(guān)),然后計算每兩點之間的連線的坐標(biāo)。但這里需要注意兩點:第一是計算各點的存儲順序問題。在直線繪制當(dāng)中,由于每行或線列只有一點,所以可以邊計算邊打點,不需存儲。但曲線當(dāng)中每行或每列可能有多個點,且點陣式器件顯示或打印時是每行或每列的打印,不能回顯,這一特性使得在顯示同一行或列中的點時,必須將不同的刻計算的點的坐標(biāo)在同一時刻顯示出來,因此必須先存儲,然后在經(jīng)過相關(guān)處理后曲線較為復(fù)雜時,將會致致存儲量的急刷增大,從而需要大容量的數(shù)據(jù)存儲器。所以,需要在設(shè)計電路前先預(yù)測一下,以免發(fā)生存儲溢出。
評論