- 打卡等级:以坛为家III
 
				- 打卡总天数:661
 
				
				
				- 最近打卡:2025-11-04 07:56:51
 
				  
  
荣誉版主 
 
	- 积分
 - 4485
 
 
 
 
 | 
 
 
发表于 2025-8-1 11:02:27
|
显示全部楼层
 
 
 
 
这是一个关于屏幕旋转显示的问题.  
不知道你"我换320跟240互换也没起到作用"是怎样换的? 
 
一般而言, 先看显示屏的初始化函数中,关于X方向和Y方向的设置, 这就决定了显示屏坐标与内存地址的扫描关系. 其次要注意各显示函数使用时的坐标范围. 
 
就你所提供的截图看, 你是在竖屏的方式下, 实验了本实验的程序. 
那么, 当执行清屏函数时, 原程序X方向0...319, Y方向0...239, 现在用在竖屏,X方向0...239, Y方向0...319, 所以扫描不到Y方向的240...319范围, 所以下面部分就是原始杂乱数据...花屏了. 
显然,要改变显示屏初始化函数中,关于屏方向坐标的设置了. 
 
在我的程序源码中, 是有关于屏幕转换预设宏的: 
在LCD9341.H文件中: 
//支持横竖屏快速定义切换 
#define LCD_DIR  3    //液晶屏顺时针旋转方向0:0度旋转,1:90度旋转,2:180度旋转,3:270度旋转 
理论上讲, 只要改变为 
#define LCD_DIR  0 
或者        
#define LCD_DIR  2  
就可以让屏程序竖屏显示了. 
但是就本实验而言, 并非可以简单地使用, 而是要对具体的图像定位等着做相应的改变才行, 否则有些显示还会失真的, 比如,原先的图片数据是按横向扫描的, 当屏幕旋转后, 图像就乱了.因此要重新制作图像数据. 
因此, 给两个建议选择: 
一是改为横屏显示, 实验本实验程序. 
二是确定竖屏显示,其它有关显示函数以及具体坐标定位作相应修改. 
另外,要注意, 市售的显示屏模块,或是经过厂商二次开发的, 即使同型号驱动,也可能存在一些差异, 这就要细看对应手册了. 要弄清楚显示屏内寄存器各位的作用. 
这方面, 可参考本实验程序中LCD_Init()的源码. 基本上每行代码都有注释的, 
可特别关注: 
LCD_WR_CMD(0x36); ..... 
LCD_WR_CMD(0x2A); ..... 
LCD_WR_CMD(0x2B); ..... 
等几行的设置... 
 
预祝实验顺利. |   
 
 
 
 |