OpenEdv-开源电子网

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

新人求解LCD问题,请高手不吝指教.

[复制链接]

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2013-4-8
在线时间
9 小时
发表于 2013-5-7 21:58:20 | 显示全部楼层 |阅读模式

//在指定区域内填充指定颜色块   
//(sx,sy),(ex,ey):填充矩形对角坐标,区域大小为ex-sx+1)*(ey-sy+1)  
//color:要填充的颜色
void LCD_Color_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 *color)

 u16 height,width;
 u16 i,j;
 width=ex-sx+1;   //得到填充的宽度
 height=ey-sy+1;  //高度
  for(i=0;i<height;i++)
 {
   LCD_SetCursor(sx,sy+i);    //设置光标位置
  LCD_WriteRAM_Prepare();     //开始写入GRAM
  for(j=0;j<width;j++) LCD->LCD_RAM = color[i*height+j];//写入数据
 }  

调用函数,这里的该u16 *color怎么设置?  它是一个指针变量,应该是一个数组的地址吧,

但我在程序里没找到这个数组的定义,也不知道这个数组里应该是什么样的数值?
求解?


 

 

回首不再遥远
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

54

主题

1008

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2385
金钱
2385
注册时间
2012-11-22
在线时间
403 小时
发表于 2013-5-7 22:08:04 | 显示全部楼层
&BLUE像这样不就好了吗。
态度决定一切
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2013-4-8
在线时间
9 小时
 楼主| 发表于 2013-5-7 22:20:24 | 显示全部楼层
试过了,不行。只有新建一个color数组才行。但是填充的颜色不对,乱码!  就是不知道这个数组里该放些什么样的数值,这些数值从哪里来?
不过这些数值肯定是跟填充颜色有关的。
回首不再遥远
回复 支持 反对

使用道具 举报

27

主题

274

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
472
金钱
472
注册时间
2011-11-2
在线时间
11 小时
发表于 2013-5-7 23:09:24 | 显示全部楼层
看下调用怎么传参就知道了
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2013-4-8
在线时间
9 小时
 楼主| 发表于 2013-5-7 23:54:41 | 显示全部楼层
不明白,希望更详细的解释!
回首不再遥远
回复 支持 反对

使用道具 举报

27

主题

274

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
472
金钱
472
注册时间
2011-11-2
在线时间
11 小时
发表于 2013-5-8 00:05:34 | 显示全部楼层
回复【5楼】回首不再遥远:
---------------------------------
看下哪里调用了这个函数  看看这个调用函数的最后一个参数是什么
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-6 15:32:31 | 显示全部楼层
这个函数是指:填充色块。
比如你填充:30*30大小的区域,那么color就必须有900个颜色的数组传递进来,否则会溢出。
这个函数就可以给每一个点填充不同的颜色,如果你的数组刚好构成一幅画,那么通过这个函数填充,就可以直接将你的一幅画显示在LCD上面了。
此函数设置的目的,就是弥补LCD_Fill的不足(该函数只能填充单色色块),弥补LCD_Drow_Point函数的速度慢的缺点,从而实现一个区域图片/色条/色块的快速填充显示。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2013-8-18
在线时间
0 小时
发表于 2013-9-10 09:07:31 | 显示全部楼层

我也研究了下 现在可以使用了。

代码样例如下:


调用:
 LCD_Color_Fill(10,310,59,359, (u16 *)gImage_100);
函数“:

void LCD_Color_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 *color)

 u16 height,width;
 u16 i,j;
 width=ex-sx+1;   //得到填充的宽度
 height=ey-sy+1;  //高度
  for(i=0;i<height;i++)
 {   
  for(j=0;j<width;j++)
  {
   LCD_SetCursor(sx+j,sy+i);    //设置光标位置
  LCD_WriteRAM_Prepare();     //开始写入GRAM  
  LCD->LCD_RAM=color[i*height+j]; 
  }//写入数据
 }  
}

图像文件:img.h 见附件}// 图像文件为 16位真彩色。

const unsigned char gImage[5000] = { /* 0X00,0X10,0X32,0X00,0X32,0X00,0X01,0X1B, */
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00………………省略 4000多个

 

img.h

50.23 KB, 下载次数: 56

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-10 23:04:31 | 显示全部楼层
回复【8楼】天地绝飞:
---------------------------------
谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2013-4-8
在线时间
9 小时
 楼主| 发表于 2013-9-26 12:48:12 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
非常感谢!
回首不再遥远
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2013-4-8
在线时间
9 小时
 楼主| 发表于 2013-9-26 12:48:33 | 显示全部楼层
回复【8楼】天地绝飞:
---------------------------------
谢谢分享!
回首不再遥远
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-13 05:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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