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