OpenEdv-开源电子网

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

7寸屏内部Flash图片显示

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-3-7
在线时间
0 小时
发表于 2015-3-7 17:39:55 | 显示全部楼层 |阅读模式
5金钱
向各位大侠请教:
     在7寸屏上做内部Flash实验 把7寸屏的gt811.c ctiic.c 添加HARDWARE组,blcd.c替换原先的ILI93XX.C,在blcd.c文件里加了void LCD_Set_Window(u16 sx,u16 sy,u16 width,u16 height)函数,这个函数没修改,也不会修改,编译下载后,字符能正常显示 图片显示乱七八糟。请教怎么修改? 
      void LCD_Set_Window(u16 sx,u16 sy,u16 width,u16 height)函数怎么修改适应7寸屏的?谢谢!
     
void LCD_Set_Window(u16 sx,u16 sy,u16 width,u16 height)
{   
u8 hsareg,heareg,vsareg,veareg;
u16 hsaval,heaval,vsaval,veaval; 
width=sx+width-1;
height=sy+height-1;
if(lcddev.id==0X9341||lcddev.id==0X5310||lcddev.id==0X6804)//6804横屏不支持
{
LCD_WR_REG(lcddev.setxcmd); 
LCD_WR_DATA(sx>>8); 
LCD_WR_DATA(sx&0XFF);  
LCD_WR_DATA(width>>8); 
LCD_WR_DATA(width&0XFF);  
LCD_WR_REG(lcddev.setycmd); 
LCD_WR_DATA(sy>>8); 
LCD_WR_DATA(sy&0XFF); 
LCD_WR_DATA(height>>8); 
LCD_WR_DATA(height&0XFF); 
}else if(lcddev.id==0X5510)
{
LCD_WR_REG(lcddev.setxcmd);LCD_WR_DATA(sx>>8);  
LCD_WR_REG(lcddev.setxcmd+1);LCD_WR_DATA(sx&0XFF);  
LCD_WR_REG(lcddev.setxcmd+2);LCD_WR_DATA(width>>8);   
LCD_WR_REG(lcddev.setxcmd+3);LCD_WR_DATA(width&0XFF);   
LCD_WR_REG(lcddev.setycmd);LCD_WR_DATA(sy>>8);   
LCD_WR_REG(lcddev.setycmd+1);LCD_WR_DATA(sy&0XFF);  
LCD_WR_REG(lcddev.setycmd+2);LCD_WR_DATA(height>>8);   
LCD_WR_REG(lcddev.setycmd+3);LCD_WR_DATA(height&0XFF);  
}else //其他驱动IC
{
if(lcddev.dir==1)//横屏
{
//窗口值
hsaval=sy;
heaval=height;
vsaval=lcddev.width-width-1;
veaval=lcddev.width-sx-1;
}else

hsaval=sx;
heaval=width;
vsaval=sy;
veaval=height;
}
if(lcddev.id==0X8989)//8989 IC
{
hsareg=0X44;heareg=0X44;//水平方向窗口寄存器 (1289的由一个寄存器控制)
hsaval|=(heaval<<8); //得到寄存器值.
heaval=hsaval;
vsareg=0X45;veareg=0X46;//垂直方向窗口寄存器  
}else  //其他驱动IC
{
hsareg=0X50;heareg=0X51;//水平方向窗口寄存器
vsareg=0X52;veareg=0X53;//垂直方向窗口寄存器  
}  
//设置寄存器值
LCD_WriteReg(hsareg,hsaval);
LCD_WriteReg(heareg,heaval);
LCD_WriteReg(vsareg,vsaval);
LCD_WriteReg(veareg,veaval);
LCD_SetCursor(sx,sy); //设置光标位置
}


最佳答案

查看完整内容[请看2#楼]

看7寸屏的用户手册。 窗口设置,无非就是起点坐标和终点坐标的设置。 注意:7寸屏只有一种扫描方式(就是地址自增方式),总是从左到右,从上到下(横屏看)
请教各位大侠:在7寸屏上做内部Flash实验 把7寸屏的gt811.c ctiic.c 添加HARDWARE组,blcd.c替换原先的ILI93XX.C,在blcd.c文件里加了void LCD_Set_Window(u16 sx,u16 sy,u16 width,u16 height)函数,这个函数没修改,也不会修改,编译下载后,字符能正常显示,而图片显示乱七八糟。请教怎么修改?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-7 17:39:56 | 显示全部楼层
看7寸屏的用户手册。
窗口设置,无非就是起点坐标和终点坐标的设置。
注意:7寸屏只有一种扫描方式(就是地址自增方式),总是从左到右,从上到下(横屏看)
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-3-7
在线时间
0 小时
 楼主| 发表于 2015-3-7 23:51:21 | 显示全部楼层
是不是这样写:

 void LCD_Set_Window(u16 sx,u16 sy,u16 width,u16 height)
{   
u8 hsareg,heareg,vsareg,veareg;
u16 hsaval,heaval,vsaval,veaval; 
width=sx+width-1;
height=sy+height-1;

//窗口值
hsaval=sx; 
heaval=width;
vsaval=sy;
veaval=height;
hsareg=?;heareg=?;   //水平方向窗口寄存器
vsareg=?;veareg=?;   //垂直方向窗口寄存器  
 
//设置寄存器值
LCD_WriteReg(hsareg,hsaval);
LCD_WriteReg(heareg,heaval);
LCD_WriteReg(vsareg,vsaval);
LCD_WriteReg(veareg,veaval); 

LCD_SetCursor(sx,sy); //设置光标位置
}

hsareg=1;heareg=3;   //水平方向窗口寄存器
vsareg=0;veareg=3;   //垂直方向窗口寄存器

写什么值呢?请教!
请教各位大侠:在7寸屏上做内部Flash实验 把7寸屏的gt811.c ctiic.c 添加HARDWARE组,blcd.c替换原先的ILI93XX.C,在blcd.c文件里加了void LCD_Set_Window(u16 sx,u16 sy,u16 width,u16 height)函数,这个函数没修改,也不会修改,编译下载后,字符能正常显示,而图片显示乱七八糟。请教怎么修改?
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-3-7
在线时间
0 小时
 楼主| 发表于 2015-3-8 18:22:56 | 显示全部楼层
回复【3楼】巾帼:
---------------------------------
在原子大侠的点拨下,成功修改好了,分享给大家
void LCD_Set_Window(u16 sx,u16 sy,u16 width,u16 height)
{   
u16 hsaval,heaval,vsaval; 

hsaval=sx;
heaval=sx+width-1;
vsaval=sy;

//设置寄存器值
LCD_WriteReg(LCD_CUR_X,hsaval);
LCD_WriteReg(LCD_END_X,heaval);
LCD_WriteReg(LCD_CUR_Y,vsaval);
LCD_SetCursor(sx,sy); //设置光标位置

}  
谢谢原子大侠!
请教各位大侠:在7寸屏上做内部Flash实验 把7寸屏的gt811.c ctiic.c 添加HARDWARE组,blcd.c替换原先的ILI93XX.C,在blcd.c文件里加了void LCD_Set_Window(u16 sx,u16 sy,u16 width,u16 height)函数,这个函数没修改,也不会修改,编译下载后,字符能正常显示,而图片显示乱七八糟。请教怎么修改?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-8 22:46:35 | 显示全部楼层
回复【4楼】巾帼:
---------------------------------
恭喜.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-3-7
在线时间
0 小时
 楼主| 发表于 2015-3-9 17:21:48 | 显示全部楼层
又出现问题了,图片大一点就编译不成了,flash不够,7寸屏全屏显示肯定不行,怎么办?
image1.c 图像文件放在哪里?怎么调用?
求助大侠,谢谢!
请教各位大侠:在7寸屏上做内部Flash实验 把7寸屏的gt811.c ctiic.c 添加HARDWARE组,blcd.c替换原先的ILI93XX.C,在blcd.c文件里加了void LCD_Set_Window(u16 sx,u16 sy,u16 width,u16 height)函数,这个函数没修改,也不会修改,编译下载后,字符能正常显示,而图片显示乱七八糟。请教怎么修改?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-9 22:27:20 | 显示全部楼层
回复【6楼】巾帼:
---------------------------------
 放外部flash了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2015-5-26
在线时间
0 小时
发表于 2015-7-25 09:25:29 | 显示全部楼层
回复【4楼】巾帼:
---------------------------------
请问你LCD_CUR_X   LCD_END_X    LCD_CUR_Y  这几个寄存器的地址值是多少呢?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 16:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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