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