OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9440|回复: 21

LCD横屏问题,XY

[复制链接]

7

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2012-11-13
在线时间
12 小时
发表于 2013-2-27 16:18:44 | 显示全部楼层 |阅读模式
//设置光标位置
//Xpos:横坐标
//Ypos:纵坐标
void LCD_SetCursor(u16 Xpos, u16 Ypos)

  if(lcddev.id==0X9341||lcddev.id==0X6804)
 {     
  LCD_WR_REG(lcddev.setxcmd);
  LCD_WR_DATA(Xpos>>8);
  LCD_WR_DATA(Xpos&0XFF); 
  LCD_WR_REG(lcddev.setycmd);
  LCD_WR_DATA(Ypos>>8);
  LCD_WR_DATA(Ypos&0XFF);
 }else
 {
  if(lcddev.dir==1)Xpos=lcddev.width-1-Xpos;//横屏其实就是调转x,y坐标
  LCD_WriteReg(lcddev.setxcmd, Xpos);
  LCD_WriteReg(lcddev.setycmd, Ypos);
 } 
}  

原子大哥,上面  “if(lcddev.dir==1)Xpos=lcddev.width-1-Xpos;//横屏其实就是调转x,y坐标
”这句话怎么是什么原理?我刚接触LCD方面的资料,想了半天也没有理出个头绪,不知道怎么个思路?所谓调整X,Y坐标,怎么体现出来的?恳请原子大哥帮忙指导指导,让我有点头绪,现在卡在这里过不去了,多谢原子大哥!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-2-27 17:21:24 | 显示全部楼层
其实就是个坐标变换啊。
这个不难吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2012-11-13
在线时间
12 小时
 楼主| 发表于 2013-2-28 10:30:16 | 显示全部楼层
原子大哥,麻烦你再帮忙指导下,为什么只变换X轴,Y轴却没有变换(是不是竖屏的时候原点在左上角,横屏的时候原点在右上角,所以X轴需要lcddev.width-1-Xpos,而Y轴却不需要),我这样理解对不对?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-2-28 16:39:09 | 显示全部楼层
你做一个原点的坐标变换,大概就明白了。
原来(0,0)应该是在左上方。
变换为新的坐标(横屏),那么就应该在左下角了(用原来的坐标表示就是:(0,320)).
原来的x方向,刚好和新坐标的y方向一致,而且值也一致,所以y'=x。
原来的y方向,和新坐标的x方向相反,所以新坐标的x'=320-y
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

221

主题

501

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
金钱
1238
注册时间
2013-1-9
在线时间
121 小时
发表于 2013-4-1 08:54:36 | 显示全部楼层
请问原子兄,竖屏转横屏是不是这个意思?









回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-4-1 09:53:33 | 显示全部楼层
你这是一种。
我的一般竖屏,是左上角为原点。
横屏,当然还是左上角做原点,你这变到右下角了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

221

主题

501

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
金钱
1238
注册时间
2013-1-9
在线时间
121 小时
发表于 2013-4-1 13:42:59 | 显示全部楼层
这样转换后那个红点儿的坐标不还是10,20吗



回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-4-1 13:52:31 | 显示全部楼层
回复 支持 反对

使用道具 举报

221

主题

501

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
金钱
1238
注册时间
2013-1-9
在线时间
121 小时
发表于 2013-4-1 15:04:37 | 显示全部楼层
原子兄,我越来越迷糊了
回复【4楼】正点原子:

你做一个原点的坐标变换,大概就明白了。
原来(0,0)应该是在左上方。
变换为新的坐标(横屏),那么就应该在左下角了(用原来的坐标表示就是:(0,320)).
原来的x方向,刚好和新坐标的y方向一致,而且值也一致,所以y'=x。
原来的y方向,和新坐标的x方向相反,所以新坐标的x'=320-y

---------------------------------
我是根据这段讲解画的第一张图,确定的y = 320-x的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-4-1 16:26:07 | 显示全部楼层
回复【9楼】anazel:
---------------------------------
还是没理解坐标变换。
你在最后横屏标出的是看到的x'和y‘,而不是竖屏的x,y。
竖屏的x,y转换到横屏的x',y',就是我说的那个公式了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

168

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
497
金钱
497
注册时间
2013-4-1
在线时间
25 小时
发表于 2013-4-1 16:28:41 | 显示全部楼层
每个屏都有物理原点,这个点输永远不变的!我们变化横屏竖屏只是在变化XY,改变扫描顺序!你根据你想要的方向与物理原点对比即可!
回复 支持 反对

使用道具 举报

221

主题

501

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
金钱
1238
注册时间
2013-1-9
在线时间
121 小时
发表于 2013-4-2 16:16:54 | 显示全部楼层
原来板子上的9320通过设置把x,y倒一下就是横屏了
lcddev.wramcmd=R34;
lcddev.setxcmd=R33;
lcddev.setycmd=R32;
回复 支持 反对

使用道具 举报

25

主题

163

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
443
金钱
443
注册时间
2012-4-29
在线时间
38 小时
发表于 2013-7-25 22:02:42 | 显示全部楼层
回复【12楼】anazel:

原来板子上的9320通过设置把x,y倒一下就是横屏了
lcddev.wramcmd=R34;
lcddev.setxcmd=R33;
lcddev.setycmd=R32;

---------------------------------
goodidea
回复 支持 反对

使用道具 举报

4

主题

119

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2013-4-6
在线时间
3 小时
发表于 2013-7-26 12:06:36 | 显示全部楼层
LCD主要靠GRAM逐点来做显示.

GRAM的地址排列是绝对的 .  而所谓X,Y座标  却是相对的 .

建议可以多看看GRAM的对应以及8种GRAM对应扫描方式.

会更理解竖屏与横屏在显示上差异性 (其实也就是写入到GRAM的位置不同如此而已) .
回复 支持 反对

使用道具 举报

3

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2016-5-19
在线时间
5 小时
发表于 2016-7-5 23:32:00 | 显示全部楼层
刚看到了这章节,不知道对不对!上传个图片  我的理解是屏幕向右旋转90度,原点座标还是设置在左上角,相对竖屏的座标:新的座标原点(0,0)相对于老的座标原点就是(0,320)!我就是这样理解原子哥的这两句话的“原来的x方向,刚好和新坐标的y方向一致,而且值也一致,所以y'=x。原来的y方向,和新坐标的x方向相反,所以新坐标的x'=320-y
QQ图片20160705231939.png
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-7-20
在线时间
0 小时
发表于 2016-7-20 23:26:04 | 显示全部楼层
本帖最后由 zbhoudini 于 2016-7-20 23:41 编辑
xiaoxin 发表于 2016-7-5 23:32
刚看到了这章节,不知道对不对!上传个图片  我的理解是屏幕向右旋转90度,原点座标还是设置在左上角,相对 ...

应该向左旋转90度吧!
回复 支持 反对

使用道具 举报

6

主题

104

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
436
金钱
436
注册时间
2015-12-11
在线时间
53 小时
发表于 2016-7-26 09:26:19 | 显示全部楼层
原子哥的解释确实让人有点摸不着头脑。。。我也被绕晕了期待有比较详细的图文解释
Try again and there is nothing left to say.
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-9-1
在线时间
1 小时
发表于 2016-9-1 07:28:33 | 显示全部楼层
马克一下
回复 支持 反对

使用道具 举报

21

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
264
金钱
264
注册时间
2013-9-17
在线时间
29 小时
发表于 2016-10-14 15:48:29 | 显示全部楼层
这个问题我也研究了好久  看程序好像横屏的时候lcddev.setxcmd=0x2a命令变成竖屏lcddev.setxcmd=0x2b 这里可以看出XY调换 坐标原点是左上角 变成左下角 只有X的左边变了y的左边没变
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
231
金钱
231
注册时间
2016-8-3
在线时间
31 小时
发表于 2016-10-15 23:02:07 | 显示全部楼层
墨黥天 发表于 2016-7-26 09:26
原子哥的解释确实让人有点摸不着头脑。。。我也被绕晕了期待有比较详细的图文解释

太对了,原子哥讲的太简单。那个公式不像是旋转的公式,到是x轴的翻转公式,y轴不变。
期待有详细的图文解释。
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2016-10-13
在线时间
4 小时
发表于 2016-10-18 19:32:26 | 显示全部楼层
11小小 发表于 2016-10-14 15:48
这个问题我也研究了好久  看程序好像横屏的时候lcddev.setxcmd=0x2a命令变成竖屏lcddev.setxcmd=0x2b 这里 ...

???不太懂
回复 支持 反对

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2016-12-13
在线时间
19 小时
发表于 2016-12-20 17:19:24 | 显示全部楼层
有兴趣的可以看看我的一点浅见。http://www.openedv.com/thread-91282-1-1.html
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 10:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表