OpenEdv-开源电子网

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

求教TFT设置光标位置问题

[复制链接]

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2012-12-20
在线时间
0 小时
发表于 2012-12-28 11:22:02 | 显示全部楼层 |阅读模式
  LCD_SetCursor函数中,
  LCD_WR_DATA(Xpos>>8);
  LCD_WR_DATA(Xpos&0XFF);

这两句做什么用的呢?为什么要右移8位的, TFT起点坐标不是(0,0)的吗?
 用的是9341的屏。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2012-12-20
在线时间
0 小时
 楼主| 发表于 2012-12-28 12:05:31 | 显示全部楼层
//设置光标位置
//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);
}  
回复 支持 反对

使用道具 举报

2

主题

100

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
278
金钱
278
注册时间
2012-4-15
在线时间
0 小时
发表于 2012-12-28 12:59:00 | 显示全部楼层
坐标是16位的,LCD_WR_DATA()函数一次只写8位。所以,先写高8位,再写低8位。
喜欢单片机,没什么道理,就像爱吃水煮鱼,对味而已。
回复 支持 反对

使用道具 举报

2

主题

100

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
278
金钱
278
注册时间
2012-4-15
在线时间
0 小时
发表于 2012-12-28 13:14:57 | 显示全部楼层
回复【楼主位】ty0506:
---------------------------------
楼主你单片机是用的STM32吗?你板子上LCD的数据接口应该是8位的吧。
喜欢单片机,没什么道理,就像爱吃水煮鱼,对味而已。
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2012-12-20
在线时间
0 小时
 楼主| 发表于 2012-12-28 13:39:20 | 显示全部楼层
回复【4楼】爱吃水煮鱼:
---------------------------------
对呀,我用的是STM32,TFT9341是16位数据的。下面是原子大哥写的函数,一次性可以写16位的吧?
//写寄存器函数
//regval:寄存器值
void LCD_WR_REG(u16 regval)

LCD->LCD_REG=regval;//写入要写的寄存器序号  
}
//写LCD数据
//data:要写入的值
void LCD_WR_DATA(u16 data)
{         
LCD->LCD_RAM=data;  
}


把LCD_WR_DATA(Xpos&0XFF);
这句屏蔽了,结果是一样的。
回复 支持 反对

使用道具 举报

2

主题

100

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
278
金钱
278
注册时间
2012-4-15
在线时间
0 小时
发表于 2012-12-28 13:53:42 | 显示全部楼层
回复【5楼】ty0506:
---------------------------------
你一开始贴出的代码是从一个用在8位单片机的程序中移植过来的吧?
喜欢单片机,没什么道理,就像爱吃水煮鱼,对味而已。
回复 支持 反对

使用道具 举报

5

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2012-12-3
在线时间
11 小时
发表于 2012-12-28 13:55:14 | 显示全部楼层

 这应该是9341的一个特点,不管你的9341是16bits界面,还8bits界面,发命令的时候,它只吃D7~D0。

战舰《STM32开发指南库函数版》P261中,原子大神有说9341和其他的不一样,所以单独一个if。


stm32
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2012-12-20
在线时间
0 小时
 楼主| 发表于 2012-12-28 16:14:57 | 显示全部楼层
回复【6楼】爱吃水煮鱼:
---------------------------------
非也,是stm32学习板TFT实验的源程序。
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2012-12-20
在线时间
0 小时
 楼主| 发表于 2012-12-28 16:16:30 | 显示全部楼层
回复【7楼】yxz1212_bao:
---------------------------------
虽然不是很懂,就死记算了、、、
回复 支持 反对

使用道具 举报

5

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2012-12-3
在线时间
11 小时
发表于 2012-12-29 10:34:20 | 显示全部楼层
回复【9楼】ty0506:
---------------------------------
建议你读下9341的ds,再对比9320的ds,看看它们命令的结构就明白了
stm32
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2013-1-17
在线时间
7 小时
发表于 2013-2-25 20:48:05 | 显示全部楼层
mark 看到这 疑问 了解了
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2013-10-16
在线时间
0 小时
发表于 2013-11-6 15:38:55 | 显示全部楼层
有点明白了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-9 08:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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