点阵式液晶图形显示模块画图功能的实现

技术分类: 电源技术  消费电子设计  | 2005-10-30
来源:电子产品世界 | 赵伟杰 范蟠果

       在LCD屏幕上画正弦波,我们可以事先按一定采样率算出相应的点值。然后转换为LCD屏幕上点的坐标值,因为这样可以很直观地控制将要给相应位置显示的信息。以240×128的屏幕为例,它的标范围是纵坐标0_127,横坐标0~29。要在240×128的屏幕上画两个完整的正弦波,幅值为30(纵向30个点),每个周期采样45个点,并带有横坐标和纵坐标。构造正弦波表格:

       TABLE_SIN[45]={ 0,4,8,12,16,19,22,25,27,29,30,30,30,29,28,26,24,21,18,14,10,6,2,-2,-6,-10,-14,-18,-21,-24,-26,-28,-29, -30,-30,-30,-29,-27,-25,-22,-19,-16,-12,-8, -4,0}

       因为画图的显示单元是1×8,一次画一个点,故画图时写入代码值是80H,40H,20H,10H,08H,04H,02H,01H,并且还要将正弦波的值转换为这几个值中的的一个,构造码值表格TABLE_DOT[8]={0x80,0x40,0x20

,0x10,0x08,0x04,x02,0x01}。

       下面介绍坐标转换过程:

       正弦波的幅值代表的是它离横坐标的距离。假设原点在LCD屏幕上的坐标值是(1,60),则将第i个点幅值转换为纵坐标的值是60-TABLE_SIN[i],它的横坐标是i/8的商数,代码值是TABLE_DOT[i/8的余数],这样我们调用画图程序就可以实现画正弦波。下面是具体画图的几个主要函数。

       在主程序中有以下调用语句:

       for(i=10;i<110;i++)/画横坐标

       graphic(0x80,2,i);

       for(i=1;i<29;i++)/画纵坐标

       graphic(0x0ff,i,64);

       for(i=0;i<118;i++)/画正弦波

       graphic(TABLE_DOT[i%8],2+i/8,64-TABLE_SIN[i]);

       下面是屏读函数,读出给出缓冲区地址的值,并返回结果:

       unsigned char pindu(x,y)

       unsigned char x,y;{

       unsigned char value;

       w2d(x,y,0x24);

       wd(0x0e0);

       value="r1d"();/从LCD缓冲区读数据

       return value;

       }

       下面是在屏幕上画一个点的画点函数:

       void graphic(code,x,y)

       unsigned char code,x,y;/x坐标0~29

       { unsigned int xy;/坐标变换中间变量

  

1】【2】【3
加载中

对文章的评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销