《玩转12864液晶显示图片》由会员分享,可在线阅读,更多相关《玩转12864液晶显示图片(8页珍藏版)》请在金锄头文库上搜索。
1、玩转玩转 12864 液晶显示图片,画点,画任意直线液晶显示图片,画点,画任意直线 通过上一篇的实验,相信大家都掌握了显示字符的基本用法。 下面我们来看一下 12864 液晶更高级的用法。 首先是它的绘图功能。 让我们先来显示一整副的图片吧,也就是 128x64 大小。 在使用绘图功能时,先要打开扩充指令集,然后再打开绘图功能。接着就是送数据显示了。 这里我们首先要弄明白 ST7920 的显示坐标关系。其显示坐标如下。从图中可以看出,X 方向共有 8 个字(16 个字节)Y 方向共有 031 行 分为上下两个屏。 弄懂了之后我们就可以依照此坐标来显示一整屏的图片了。 随便用一个图片的提取转换软
2、件,将一副 126X64 大小的图片转换成字节数据,总共字节 大小为 128*64/8 = 1024 个字节。下面我们来看看这个显示整屏图像的函数 void v_Lcd12864DrawPicture_f( unsigned char code *pPicture ) unsigned char i, j, k ;for( i = 0 ; i 4 ; Tier_bit = X if( Y X1 )Temp = X1 ;X1 = X0 ;X0 = Temp ;for( ; X0 Y1 )Temp = Y1 ;Y1 = Y0 ;Y0 = Temp ;for(; Y0 0 )incx = 1;els
3、e if( delta_x = 0 )v_Lcd12864DrawLineY_f( StartX, StartY, EndY, Color ) ;return ;elseincx = -1 ;if( delta_y 0 )incy = 1 ;else if(delta_y = 0 )v_Lcd12864DrawLineX_f( StartX, EndX, StartY, Color ) ; return ;elseincy = -1 ;delta_x = ABS( delta_x ); delta_y = ABS( delta_y );if( delta_x delta_y )distance
4、 = delta_x ;elsedistance = delta_y ; v_Lcd12864DrawPoint_f( StartX, StartY, Color ) ; /* Draw Line*/for( t = 0 ; t distance )x -= distance ;StartX += incx ;if( y distance )y -= distance ;StartY += incy ; 老规矩,我们用这个函数随便画任意斜率的几条直线看看。 v_Lcd12864DrawLine_f( 0, 0, 127, 63, 1 ) ; v_Lcd12864DrawLine_f( 0, 63, 127, 0 , 1 ) ; v_Lcd12864DrawLine_f( 12, 0, 127, 63, 1 ) ;v_Lcd12864DrawLine_f( 52, 63, 127, 0 , 1 ) ; v_Lcd12864DrawLine_f( 32, 63, 98, 0, 1 ) ; v_Lcd12864DrawLine_f( 67, 0, 127, 63 , 1 ) ;下面是具体的效果图: