72

帖子

0

TA的资源

一粒金砂(初级)

21
 
————————————————————————————————
static void PutPixel(U32 x,U32 y,U16 c)
{
    if(x         frameBuffer16BitTft[(y)][(x)] = c;
}
————————————————————————————————
另外原来是这样,这里三个参数x,y,c
x:代表320*240屏的横坐标 而 不是行数
y:代表320*240屏的纵坐标 而 不是列数

这样的话,我想将320*240屏的右下角的点(即(319,239))设置为蓝色
则PutPixel(319,239,31);
这样设置239*SCR_XSIZE_TFT+319 = 31;
239*SCR_XSIZE_TFT 这个我理解了
可是我觉得不应该是+319呢
不是该239*SCR_XSIZE_TFT+638吗
即239*640+638吗?
嘿嘿。希望娜娜接着回答。
分数都给你了。

回复

76

帖子

0

TA的资源

一粒金砂(初级)

22
 
320*240的屏 它就有320*240个点,因为颜色是16位的,所有如果要填满LCD,要开辟320*240*2字节空间就足够了

320*2是显示一行要的颜色字节个数 一行320个点,一个点2个字节数据,开辟数组时U16类型的,所以一个RGB数值 就占一个存储单元

总共有240行



(0,0)   frameBuffer16BitTft[0][0]
(1,0)    frameBuffer16BitTft[0][1]
(2,0)    frameBuffer16BitTft[0][2]
  .........................
  (320,0)    frameBuffer16BitTft[0][320]

(0,1)    frameBuffer16BitTft[1][0]
..........................

(0,240)    frameBuffer16BitTft[240][0]
............................


(319,239)    frameBuffer16BitTft[239][319]
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

23
 
frameBuffer16BitTft[(y)][(x)] = c;
这个就是y*640+x 这个是二维数组指针 都是这样用的,你看看C语言书吧 上面讲的还是挺清楚的
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

24
 
有答案了,路过一下。。。。。。
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

25
 
学习。
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

26
 
#define LCD_XSIZE_TFT (320)
#define LCD_YSIZE_TFT (240)
#define SCR_XSIZE_TFT (LCD_XSIZE_TFT*2)
#define SCR_YSIZE_TFT (LCD_YSIZE_TFT*2)
这个改成
#define LCD_XSIZE_TFT (320)
#define LCD_YSIZE_TFT (240)
#define SCR_XSIZE_TFT (LCD_XSIZE_TFT)
#define SCR_YSIZE_TFT (LCD_YSIZE_TFT)
试试....... 那个*2应该是历史遗留问题写错了,虽然对程序运行结果没有什么大的影响
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

27
 
可能我问 问题的时候总描述不清楚
所以大家的答案,我总感觉回答的不是地方
娜娜,我知道二维数组,我也知道该看看指针
不过我想问的是
PutPixel(319,239,31);

frameBuffer16BitTft[(y)][(x)] = c;
y*640+x = 239*640+319
可是我觉得这样不对啊
既然239*的是640
那这里为什么加的不是319*2=638呢?
这样理解我觉得应该是
239*640+638 = 31
这样才对啊。
如果是239*640+319
那么余下的呢?401,402....一直到639呢?
希望大家别烦
小弟是有点刨根问底
声明现在我抠的不是指针和数组的问题了
不知道这回我的问题有没有描述清楚

 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

28
 
引用 25 楼 reallyu 的回复:
#define LCD_XSIZE_TFT (320)
#define LCD_YSIZE_TFT (240)
#define SCR_XSIZE_TFT (LCD_XSIZE_TFT*2)
#define SCR_YSIZE_TFT (LCD_YSIZE_TFT*2)
这个改成
#define LCD_XSIZE_TFT (320)
#define LCD_YSIZE_TFT (240)
#define SCR_XSIZE_TFT (LCD_XSIZE_TFT)
#define SCR_YSIZE_TFT (LCD_YSIZE_TFT)
试试....... 那个*2应该是历史遗留问题写错了,虽然对程序运行结果没有什么大的影响

兄弟,你能确定吗?
如果这个*2真的是写错了。那么就全好理解了。
或者我有空的时候去掉这个*2试试
如果也能没问题的话
就说明这个*2是多余的了
虽然一个像素的控制数据是16位,两个字节
但是因为声明的时候已经声明称了U16
所以我也觉得在*2就多余了
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

29
 
我已经将
#define SCR_XSIZE_TFT (LCD_XSIZE_TFT*2)
#define SCR_YSIZE_TFT (LCD_YSIZE_TFT*2)
修改成了
#define SCR_XSIZE_TFT (LCD_XSIZE_TFT)
#define SCR_YSIZE_TFT (LCD_YSIZE_TFT)
重新生成了bootloader的二进制文件
重新下载进了开发板
经过测试,完全没有问题
这个*2确实是多余的
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(中级)

30
 
娜娜是谁? 难道是MM
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

31
 
数组是从0开始的 0---239  个数是240

frameBuffer16BitTft[(y)][(x)] = c;
x=319 y=239 你可以这样理解 他就是指向第Y行 第X列的点   而指针每行指向640个数据

所有现在的指针就要指向y*640+x 这个只是指针的值

但是我们现在每行只要320的数据就够了 因为我们每行只有320个点 看我上面给你的那个表 你可以看出来

点(319,239)    frameBuffer16BitTft[239][319] 现在要取数组指针地址就是239*640+319

虽然你不用后面的,但是开辟了空间了,指针就要指向到它的,呵呵


那个SCR_XSIZE_TFT SCR_YSIZE_TFT 不乘以2是可以的,程序时为了转屏幕的时候 开辟了大点的空间,如果你不转屏 只是显示 用320*240是应该可以的

不知道你能不能理解我说的,嘿嘿

 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

32
 
引用 29 楼 reallyu 的回复:
娜娜是谁? 难道是MM

能够用这么可爱的头像,很有可能是MM:)
佩服cfanlwn的C语言功底。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

33
 
娜娜,转屏幕的意思是?
是支持屏幕旋转吗?还是什么意思呢。

“那个SCR_XSIZE_TFT SCR_YSIZE_TFT
不乘以2是可以的,程序时为了转屏幕的时候
开辟了大点的空间,如果你不转屏
只是显示 用320*240是应该可以的”

其实娜娜,指针我懂了,不是不懂指针这些

我开始不懂的是*2,大家都说是因为1个像素
由两个字节来控制。所以才*2。我就是觉得
这个答案不准确。我觉得*2,根本就不是因为
“1个像素由两个字节”的原因。

现在你说是因为转屏而开辟大一点的空间,
可能为我的疑问找到了一个新的答案,
不过娜娜再说一下
什么是转屏,谢谢。

 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

34
 
引用 31 楼 ljdtj 的回复:
引用 29 楼 reallyu 的回复:
娜娜是谁? 难道是MM

能够用这么可爱的头像,很有可能是MM:)
佩服cfanlwn的C语言功底。

cfanlwn就是娜娜,的确是MM,呵呵。
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

35
 
可能我和我的问题有点难缠
不过我就是想彻彻底底
真真正正的弄懂问题
嘿嘿
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

36
 
好久没来  帮顶。。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

37
 
引用 34 楼 joyzml 的回复:
可能我和我的问题有点难缠
不过我就是想彻彻底底
真真正正的弄懂问题
嘿嘿


LZ有很好的求学精神。
我看过LZ的blog中分析bootloader的文章,对我们这些初学者帮助很大。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

38
 
1个像素由两个字节 是U16的来源 我们说的320*240*2说的是字节个数

就刚才那个转屏问题,其实我也不是很懂 是我当时学的时候 同事就那么跟我说的,好像跟移屏有关系,他让我看手册的420页 我也不是很明白 平时我都是用的 320*240的,呵呵 反正是可以正常显示的

你可以好研究一下
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

39
 
手册的420页,好。
我去看下。
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

40
 
刚打开手册。扫了一眼。
讲的是 虚拟显示(VIRTUAL DISPLAY)
S3C2440A支持水平和垂直滚动(scrolling)
正如娜娜同事所说,的确和这个有关

回过头来再看:
#define SCR_XSIZE_TFT (LCD_XSIZE_TFT*2)
#define SCR_YSIZE_TFT (LCD_YSIZE_TFT*2)

这个SCR的前缀应该就是“滚动”(scrolling)
英文单词的缩写
感谢娜娜
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表