左图是原图,右图是
仿真出来的图
用LCD12864显示图片的时候,水平方向只有屏幕左边16个点会显示,垂直方向能够全部显示,大家能够帮忙回答一下吗?谢谢
- void v_Lcd12864DrawPicture_f( unsigned char code *pPicture )
- {
- unsigned char i, j, k ;
- v_Lcd12864SendCmd_f( 0x34 );
- for( i = 0 ; i < 2 ; i++ )//·ÖÉÏÏÂÁ½ÆÁд
- {
- for( j = 0 ; j < 32 ; j++ )
- {
- v_Lcd12864SendCmd_f( 0x80 + j ) ;//дY×ø±ê
- if( i == 0 ) //дX×ø±ê
- {
- v_Lcd12864SendCmd_f( 0x80 ) ;
- }
- else
- {
- v_Lcd12864SendCmd_f( 0x88 ) ;
- }
- for( k = 0 ; k < 16 ; k++ ) //дһÕûÐÐÊý¾Ý
- {
- v_Lcd12864SendData_f( *pPicture++ ) ;
- }
- }
- }
- v_Lcd12864SendCmd_f( 0x36 ) ;
- v_Lcd12864SendCmd_f( 0x30 ) ;
- }
复制代码
感谢你耐心的回复。
i的确是用来区分两个屏的,不过是上下两个屏。我用的这个12864在绘图显示模式的时候,分成上下两个128*32的屏幕。
显示的方向,是一个字节横向显示。每2个字节组成水平方向的基本单位,所以上半个屏幕的横坐标是0~7,下半个屏幕的横坐标是8~15。如图
我看器件手册上面说,在写入的时候不需要手动改横坐标,每写完2个字节横坐标会自动加1,这也就是为什么我只设置了两次横坐标 :sendCmd(0x80) 写上半个屏幕的时候;sendCmd(0x88)。(0x80和0x88的低几位才是用来存储地址信息的)。我怀疑是水平方向的地址没有自动增加,导致只有0x80和0x88这两个水平位置所对应的这一大列写入了数据。
j是用来写半个屏幕的,上面半个屏幕32行,下面也是。
我下去写一下测试的程序。
再次感谢你耐心的回复!
一周热门 更多>