OpenEdv-开源电子网

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

请教原子哥,如何让LCD横屏显示

[复制链接]

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2012-9-2
在线时间
12 小时
发表于 2012-10-10 20:12:24 | 显示全部楼层 |阅读模式
我想让这个例程横屏显示,但是无论如何更改 代码中红色的部分,就是不能横屏显示,甚至将这条代码删除都还是竖屏显示,请原子大哥指点一下,谢谢!

例程中关于初始化的部分,读出的芯片代号是9328
 if(DeviceCode==0x9325||DeviceCode==0x9328)//ILI9325
 {
    LCD_WriteReg(0x00e7,0x0010);     
        LCD_WriteReg(0x0000,0x0001);//开启内部时钟
        LCD_WriteReg(0x0001,0x0100);    
        LCD_WriteReg(0x0002,0x0700);//电源开启                   
  //LCD_WriteReg(0x0003,(1<<3)|(1<<4) );  //65K  RGB
  //DRIVE TABLE(寄存器 03H)
  //BIT3=AM BIT4:5=ID0:1
  //AM ID0 ID1   FUNCATION
  // 0  0   0    R->L D->U
  // 1  0   0    D->U R->L
  // 0  1   0    L->R D->U
  // 1  1   0    D->U L->R
  // 0  0   1    R->L U->D
  // 1  0   1    U->D R->L
  // 0  1   1    L->R U->D 正常就用这个.
  // 1  1   1    U->D L->R
        LCD_WriteReg(0x0003,(1<<12)|(3<<4)|(0<<3) );//65K   
        LCD_WriteReg(0x0004,0x0000);                                  
        LCD_WriteReg(0x0008,0x0207);          
        LCD_WriteReg(0x0009,0x0000);        
        LCD_WriteReg(0x000a,0x0000);//display setting        
        LCD_WriteReg(0x000c,0x0001);//display setting         
        LCD_WriteReg(0x000d,0x0000);//0f3c         
        LCD_WriteReg(0x000f,0x0000);
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2011-1-15
在线时间
5 小时
发表于 2012-10-10 20:19:53 | 显示全部楼层
回复【楼主位】bg4aew:
---------------------------------
为什么不用原子大哥扩展例程 横屏显示的思路。
要是想要通过操作显示芯片的寄存器的话 最好读懂那个手册~
回复 支持 反对

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2012-9-2
在线时间
12 小时
 楼主| 发表于 2012-10-10 20:23:00 | 显示全部楼层
回复【2楼】shaotianyu12:
---------------------------------
就是这个吗?
//设置LCD的自动扫描方向 
//0~7:代表8个方向(具体定义见lcd.h) 
//9320/9325/9328/4531/4535/1505/b505/8989等IC已经实际测试     
void LCD_Scan_Dir(u8 dir) 

u16 regval=0; 
u8 dirreg=0; 
#if USE_HORIZONTAL//使用横屏 
switch(dir)//方向转换 

case 0:dir=6;break; 
case 1:dir=7;break; 
case 2:dir=4;break; 
case 3:dir=5;break; 
case 4:dir=1;break; 
case 5:dir=0;break; 
case 6:dir=3;break; 
case 7:dir=2;break;       

#endif 
   if(DeviceCode==0x8989)//8989 IC 

dirreg=0X11; 
regval=0X6040;//65K    
}else//其他驱动IC    

dirreg=0X03; 
regval=1<<12;   

switch(dir) 

case L2R_U2D://从左到右,从上到下 
regval|=(1<<5)|(1<<4)|(0<<3);  
break; 
case L2R_D2U://从左到右,从下到上 
regval|=(0<<5)|(1<<4)|(0<<3);  
break; 
case R2L_U2D://从右到左,从上到下 
regval|=(1<<5)|(0<<4)|(0<<3); 
break; 
case R2L_D2U://从右到左,从下到上 
regval|=(0<<5)|(0<<4)|(0<<3);  
break;   
case U2D_L2R://从上到下,从左到右 
regval|=(1<<5)|(1<<4)|(1<<3);  
break; 
case U2D_R2L://从上到下,从右到左 
regval|=(1<<5)|(0<<4)|(1<<3);  
break; 
case D2U_L2R://从下到上,从左到右 
regval|=(0<<5)|(1<<4)|(1<<3);  
break; 
case D2U_R2L://从下到上,从右到左 
regval|=(0<<5)|(0<<4)|(1<<3);  
break;   
}   
LCD_WriteReg(dirreg,regval); 
}
回复 支持 反对

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2012-9-2
在线时间
12 小时
 楼主| 发表于 2012-10-10 20:24:38 | 显示全部楼层
回复【2楼】shaotianyu12:
---------------------------------
我用过LCD_WriteReg(0x003,0x1018);但是没有用
回复 支持 反对

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2012-9-2
在线时间
12 小时
 楼主| 发表于 2012-10-10 20:31:57 | 显示全部楼层
已经解决/////////////////////////////////////用户配置区///////////////////////////////////  
//以下2个宏定义,定义屏幕的显示方式及IO速度
#define USE_HORIZONTAL  1 //定义是否使用横屏  0,不使用.1,使用.
#define LCD_FAST_IO     1  //定义是否使用快速IO 0,不实用.1,使用
//////////////////////////////////////////////////////////////////////////////////  


 
//TFTLCD部分外要调用的函数    
extern u16  OINT_COLOR;//默认红色    
extern u16  BACK_COLOR; //背景颜色.默认为白色
回复 支持 反对

使用道具 举报

76

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2012-9-19
在线时间
5 小时
发表于 2012-10-26 12:17:40 | 显示全部楼层
回复【5楼】bg4aew:
---------------------------------
有没直接操作寄存器的
具有资深STM32点灯技术,
回复 支持 反对

使用道具 举报

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
发表于 2012-11-16 22:20:06 | 显示全部楼层
回复【5楼】bg4aew:
已经解决/////////////////////////////////////用户配置区///////////////////////////////////   //以下2个宏定义,定义屏幕的显示方式及IO速度 #define USE_HORIZONTAL  1 //定义是否使用横屏  0,不使用.1,使用. #define LCD_FAST_IO     1  //定义是否使用快速IO 0,不实用.1,使用 //////////////////////////////////////////////////////////////////////////////////     //TFTLCD部分外要调用的函数     extern u16  OINT_COLOR;//默认红色     extern u16  BACK_COLOR; //背景颜色.默认为白色
---------------------------------
我用define,怎么出现错误?
http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
回复 支持 反对

使用道具 举报

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
发表于 2012-11-16 22:26:32 | 显示全部楼层
额,我重复定义了,呵呵,只要修改0为1就可以了。555555555
http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-26 10:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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