OpenEdv-开源电子网

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

LCD横向显示

[复制链接]

14

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2013-4-21
在线时间
0 小时
发表于 2013-7-16 10:00:44 | 显示全部楼层 |阅读模式
主函数里用 LCD_Fill(0,0,10,10,BLACK);
在LCD.h中用#define USE_HORIZONTAL  1 
但是LCD上却没有显示,我用的是2.4寸的tft,求解?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-16 10:13:22 | 显示全部楼层
2.4的LCD是在我们这里买的么?
用在哪款开发板上?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2013-4-21
在线时间
0 小时
 楼主| 发表于 2013-7-16 10:28:49 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
就是自带的啊
回复 支持 反对

使用道具 举报

38

主题

131

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2013-7-15
在线时间
0 小时
发表于 2013-7-16 13:21:57 | 显示全部楼层
表示一直用的横屏。。。
回复 支持 反对

使用道具 举报

14

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2013-4-21
在线时间
0 小时
 楼主| 发表于 2013-7-16 14:53:38 | 显示全部楼层
回复【4楼】TDB:
---------------------------------
求教,我用的是mini板,或者发一个横屏的测试程序给我好吗,从纵向改到横向是不是就改那条语句就可以了呢
回复 支持 反对

使用道具 举报

14

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2013-4-21
在线时间
0 小时
 楼主| 发表于 2013-7-16 15:22:03 | 显示全部楼层
 


字符串可以横向显示,但是不能显示填充颜色,在主函数里调用LCD_Fill(2,8,20,22,BLUE);在TFT里只显示上面一条线,求原子大大教一下~~~

while(1)
 {  
  LCD_Fill(2,8,20,22,BLUE);
  OINT_COLOR=RED;  
  LCD_ShowString(30,50,"Mini STM32 ^_^"); 
  LCD_ShowString(30,70,"2.4'/2.8' TFTLCD TEST"); 
  LCD_ShowString(30,90,"ATOM@ALIENTEK");
  LCD_ShowString(30,110,"2010/12/30");          
   
  
  LED0=!LED0;     
  delay_ms(100); 
 } 
回复 支持 反对

使用道具 举报

14

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2013-4-21
在线时间
0 小时
 楼主| 发表于 2013-7-16 15:23:02 | 显示全部楼层
纵向显示的话  LCD_Fill(2,8,20,22,BLUE);
这个函数是可以用的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-16 16:35:03 | 显示全部楼层
不知道你的是不是最新例程.
最新例程的实现方式:
//在指定区域内填充单个颜色
//(sx,sy),(ex,ey):填充矩形对角坐标,区域大小为ex-sx+1)*(ey-sy+1)   
//color:要填充的颜色
void LCD_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 color)
{          
u16 i,j;
u16 xlen=0;
u16 temp;
if((lcddev.id==0X6804)&&(lcddev.dir==1)) //6804横屏的时候特殊处理  
{
temp=sx;
sx=sy;
sy=lcddev.width-ex-1;   
ex=ey;
ey=lcddev.width-temp-1;
  lcddev.dir=0;  
  lcddev.setxcmd=0X2A;
lcddev.setycmd=0X2B;    
LCD_Fill(sx,sy,ex,ey,color);  
  lcddev.dir=1;  
   lcddev.setxcmd=0X2B;
lcddev.setycmd=0X2A;    
  }else
{
xlen=ex-sx+1;  
for(i=sy;i<=ey;i++)
{
  LCD_SetCursor(sx,i);       //设置光标位置 
LCD_WriteRAM_Prepare();      //开始写入GRAM   
for(j=0;j<xlen;j++)LCD_WR_DATA(color); //设置光标位置      
}
}  
}>
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

14

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2013-4-21
在线时间
0 小时
 楼主| 发表于 2013-7-16 17:12:01 | 显示全部楼层
哦哦,确实不一样啊,看来要更新例程了
另外想问一下我用的固件库是3.5版本的,而固件库操作手册是2.0版本的,这个有没有资料呢
回复 支持 反对

使用道具 举报

38

主题

131

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2013-7-15
在线时间
0 小时
发表于 2013-7-16 18:22:50 | 显示全部楼层
回复【5楼】gh1134537617:
--------------------------------- 回复【5楼】gh1134537617:
---------------------------------
貌似有个宏是不是

#define USE_HORIZONTAL  1 //定义是否使用横屏   0,不使用.1,使用. 
#define LCD_FAST_IO     1  //定义是否使用快速IO 0,不实用.1,使用 

找找看
回复 支持 反对

使用道具 举报

38

主题

131

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2013-7-15
在线时间
0 小时
发表于 2013-7-16 20:05:48 | 显示全部楼层
这个好像能从驱动改,我看来ili9320的数据手册,上面介绍了  R03  ,R60  这两个寄存器,但是很迷糊,实例一下,没结果,原子哥帮忙解释一下不?

两个寄存器和功能























































































回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-16 21:24:19 | 显示全部楼层
R60就不要去管了,基本都是靠R30设置.
至于具体效果,我也是边改边看的.不好举例.
如果你会用我们的usmart工具的话,就比较简单了,可以写一个函数,直接通过串口不停的设置R30这个寄存器,来观察各种设置对LCD的影响.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

119

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2013-4-6
在线时间
3 小时
发表于 2013-7-17 08:23:36 | 显示全部楼层
简化版的区块填充函式供参考.....   适合常用的 "由左至右, 从上到下" (L2R_U2D) 的扫描方式.
支持横屏与竖屏显示...  速度优化!



void LCD_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 color) 
{           

u16   i;

if (USE_HORIZONTAL==1)    // 按螢幕預設方向調整寫入窗口設置
       Lcd_SetRegion(sy, (LCD_W-1)-ex, ey, (LCD_W-1)-sx);    // 設定顯示視窗框對應
else
   Lcd_SetRegion(sx, sy, ex, ey);    // 設定顯示視窗框對應
 
    for(i=0;i<(ex-sx+1)*(ey-sy+1);i++)
{
LCD_WriteRAM_Prepare();        // 寫入GRAM命令  
LCD_WriteRAM(color);    // 寫入顏色值

}
}
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-17 10:51:36 | 显示全部楼层
LCD_WriteRAM_Prepare();        // 寫入GRAM命令  
放到外面速度更快.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-17 10:52:03 | 显示全部楼层
另外不调用LCD_WriteRAM函数,直接黏贴函数里面的内容到for循环,还可以加快.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

119

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2013-4-6
在线时间
3 小时
发表于 2013-7-17 12:26:43 | 显示全部楼层
谢谢原子哥提点....

知道了..

您的BMP显示程序,   我也做了点修改,  一次设定窗口对应GRAM,  不是一行一行再查一次.....
速度也可以提高50%

谢谢提供这么多源代码,  让我们方便太多了......
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-17 19:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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