完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我现在想用GRAM地址自动加减来实现TFT的横屏显示
部分程序如下: #ifdef USE_HORIZONTALLCD_WriteReg(0x003,0x1014);//BGR=1 ID[1:0]=0X01 AM=1#elseLCD_WriteReg(0x003,0x1030);//BGR=1 ID[1:0]=0X11 AM=0#endif /*---------------------显示图片函数-------------------------*///在指定区域内显示图片//图片大小:(xend-xsta+1)*(yend-ysta+1) void LCD_Photo(u16 xsta,u16 ysta,u16 xend,u16 yend,const unsigned char *p){ u16 i;u16 xlen=0,ylen=0;u16 dat=0; #ifdef USE_HORIZONTALxlen=xend-xsta+1;ylen=yend-ysta+1;LCD_WriteReg(0x0210, ysta); //设置显示区域LCD_WriteReg(0x0211, yend);LCD_WriteReg(0x0212, 399-xend);LCD_WriteReg(0x0213, 399-xsta); //432=01AF,400=018F LCD_SetCursor(xsta,ysta); //设置显示起始点LCD_WR_REG(0x0202); for(i=0;i 但是现在的问题是竖屏的时候可以显示,但是横屏的时候显示不正确,我估计是寄存器配置的问题....求高手解答....... |
|
相关推荐
8个回答
|
|
|
横屏显示不正确?????具体点才能回答啊……
|
|
|
|
|
|
就是说竖屏的时候显示正常,横屏的时候显示的图片是错乱的....竖屏和横屏的程序不同的地方就是:0X003寄存器配置不同、显示区域设置不同、起始点设置不同...
|
|
|
|
|
|
你可以试一下显示文字是否正常???文字如果出错,容易分析,图片乱码就是一团糟了
|
|
|
|
|
|
我显示的是XY坐标图,我发现传送图片数据方向不对,照理说方向应该旋转90度,但实际上是180度
|
|
|
|
|
|
建议楼主配合我们的usmart来调试你这个代码,很方便可以得出结果.
|
|
|
|
|
|
我发现配置AM位根本没有效果,AM=1和AM=0时显示的效果是一样的.....
|
|
|
|
|
|
给你一个豪华版的函数:
//设置LCD的自动扫描方向 //0~7:代表8个方向(具体定义见lcd.h) //9320/9325/9328/4531/4535/1505/b505/8989等IC已经实际测试 void LCD_Scan_Dir(u8 dir) { u16 regval=0; u8 dirreg=0; #if USE_HORIZONTAL//使用横屏 switch(dir)//方向转换 { case 0:dir=6;break; case 1:dir=7;break; case 2:dir=4;break; case 3:dir=5;break; case 4:dir=1;break; case 5:dir=0;break; case 6:dir=3;break; case 7:dir=2;break; } #endif if(DeviceCode==0x8989)//8989 IC { dirreg=0X11; regval=0X6040;//65K }else//其他驱动IC { dirreg=0X03; regval=1<<12; } switch(dir) { case L2R_U2D://从左到右,从上到下 regval|=(1<<5)|(1<<4)|(0<<3); break; case L2R_D2U://从左到右,从下到上 regval|=(0<<5)|(1<<4)|(0<<3); break; case R2L_U2D://从右到左,从上到下 regval|=(1<<5)|(0<<4)|(0<<3); break; case R2L_D2U://从右到左,从下到上 regval|=(0<<5)|(0<<4)|(0<<3); break; case U2D_L2R://从上到下,从左到右 regval|=(1<<5)|(1<<4)|(1<<3); break; case U2D_R2L://从上到下,从右到左 regval|=(1<<5)|(0<<4)|(1<<3); break; case D2U_L2R://从下到上,从左到右 regval|=(0<<5)|(1<<4)|(1<<3); break; case D2U_R2L://从下到上,从右到左 regval|=(0<<5)|(0<<4)|(1<<3); break; } LCD_WriteReg(dirreg,regval); } |
|
|
|
|
|
原来是我把寄存器配置错了...应该是LCD_WriteReg(0x003,0x1018);.....谢谢各位了...
|
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
4138 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
3228 浏览 1 评论
2752 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
2181 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
14980 浏览 2 评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
3086浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
1896浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
2066浏览 3评论
1979浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
2168浏览 3评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 07:25 , Processed in 0.915849 second(s), Total 88, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4033