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