通用点阵式电子器件的图形显示
摘要:分析了通用点阵式电子器件的现状及其所具有的特点,以绘制二维曲线为例,介绍了采用整数数字微分法(INTEGER DDA)的绘制算法,详细阐述了点阵式电子器件中的图形显示原理,并结合MGLS-12032A/B液晶和WH4005微型打印机进行验证,取得了比较好的效果。
本文引用地址:http://www.amcfsurvey.com/article/225765.htm关键词:单片机 图形显示 点阵式 MGLS-12032A/B WH4005
1 引言
当今世界,电子技术迅猛发展,点阵式器件在信息产业、军工产业等领域中得到了广泛的应用,点阵式器件具体包括液晶显示模块(LCD)和汉字针式打印机等器件。就显示器而言,目前,绝大多数微机化系统中一般采用三种显示器,即:CRT屏幕显示器、LED七段显示器和LCD液晶显示器。CRT显示器的功能较强,适用面较广,但体积大,价格较高,不适合小型化和集成化。LED七段显示器的体积小,容易控制,但其功能弱,只能显示有限的数字和字母。与前面两者相比,LCD的优点较为明显,它体积小,功能强,控制方便,价格适宜,能适应显示器的发展方向,因而在通信、家电、大屏幕设影等领域得到了越来越广泛的应用。与液晶相比,微型打印机也是基于点阵式的器件,与传统的打印机不同的是,微型打印机具有体积小、便于控制、价格便宜等特点,因而在银行、超市等收款机中得到广泛的应用。
2 点阵显示的基于原理和算法步骤
下面以绘制二维坐标曲线为例,简述绘制原理。
在点阵式器件中,二维曲线的绘制工作一般可分为以下两步:第一是是依据某种算法计算出所绘图形的各点坐标值,并进行存储。这一步一般需要完成算法程序的编制;第二步是在所应用的点阵器件上根据算法程序所提供的点坐标,换算出点阵器件上显示点的位置,即显示缓冲区相应单元地址及其该单元的内数据的确定,从而在显示区域上组成所需要的显示图形。这一步需要完成绘点程序的编制。算法程序是通用的,绘点程序则需要根据应用点阵器件所配的显示控制的特性来编制。
曲线的绘制最终可以转化为直线的绘制,所以应先考虑绘制直线。绘制直线的算法种类较多,为了避免复杂的浮点运算,笔者采用整数数字微分分析法(INTEGER DDA)。先以(Xs,Ys)为起点,(XE,YE)为终点作直线,再使其斜率k=(YE-YS)/(XE-XS)。整数数字微分法的基本思想是回避了计算斜率k过程中的除法运算,应用ΔY=YE-YS和ΔX=XE-XS之间的关系,在保证ΔY≥0的条件下将斜率k分成四种情况,然后在每一种情况下用EER指明建立点位置与其实线的差距,以确定相应的作点规则,最后再将终点情况考虑进去。这四种情况为:
(1)k=0~1,此时有ΔY≥0,ΔX≥0,且ΔY≤ΔX关系成立。作点规则为:
在当前(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。作点规则为:
在当胶(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|≤|Δ|。作点规则为:
在当前(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|。作点规则为:
在当前(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指令集编制整数数字微分法实用算法程序框图如图1所示。该程序可完成(0~255,0~255)范围内的任意直线绘制,且所作的直线在点阵液晶显示屏和微型打印机上显示的质量相当不错。
利用绘制直线的技术进行曲线的绘制实际上就是选择一些关键点(关键点的选取取与所绘制的曲线有关),然后计算每两点之间的连线的坐标。但这里需要注意两点:第一是计算各点的存储顺序问题。在直线绘制当中,由于每行或线列只有一点,所以可以边计算边打点,不需存储。但曲线当中每行或每列可能有多个点,且点阵式器件显示或打印时是每行或每列的打印,不能回显,这一特性使得在显示同一行或列中的点时,必须将不同的刻计算的点的坐标在同一时刻显示出来,因此必须先存储,然后在经过相关处理后曲线较为复杂时,将会致致存储量的急刷增大,从而需要大容量的数据存储器。所以,需要在设计电路前先预测一下,以免发生存储溢出。
评论