OpenEdv-开源电子网

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

LCD的一个奇怪问题

[复制链接]

13

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2012-11-17
在线时间
18 小时
发表于 2012-12-2 20:39:38 | 显示全部楼层 |阅读模式

void LCD_Init(void)
{
// u16 DeviceCode;
 RCC->APB2ENR|=1<<3;  //PORTB时钟使能
 RCC->APB2ENR|=1<<4;  //PORTC时钟使能
 RCC->APB2ENR|=1<<0;  //辅助时钟使能
 JTAG_Set(SWD_ENABLE); //禁止JTAG,使能SWD
 //PORTB推挽输出
 GPIOB->CRL=0x33333333;
 GPIOB->CRH=0x33333333;
 GPIOB->ODR&=0xFFFF;
 //PORTC推挽输出
 GPIOC->CRL&=0x00FFFFFF;
 GPIOC->CRL|=0X33000000;
 GPIOC->CRH&=0xFFFFF000;
 GPIOC->CRH|=0x00000333;
 GPIOC->ODR&=0x07C0;
 delay_ms(50);
// LCD_WriteReg(0x0000,0x0001);
// delay_ms(50);
 LCD_ReadReg(0x0000);      //读取LCD型号,但没给赋值给其他变量     
// printf("LCD ID:%x\n",DeviceCode);
 

//LCD寄存器初始化
 LCD_WriteReg(0x0000,0x0000);
 LCD_WriteReg(0x0000,0x0000);
 LCD_WriteReg(0x0000,0x0000);
 LCD_WriteReg(0x0000,0x0000);
  
 LCD_WriteReg(0x00a4,0x0001);
 delay_ms(20);   
 LCD_WriteReg(0x0060,0x2700);
 LCD_WriteReg(0x0008,0x0202);
  
 LCD_WriteReg(0x0030,0x0214);
 LCD_WriteReg(0x0031,0x3715);
 LCD_WriteReg(0x0032,0x0604);
 LCD_WriteReg(0x0033,0x0e16);
 LCD_WriteReg(0x0034,0x2211);
 LCD_WriteReg(0x0035,0x1500);
 LCD_WriteReg(0x0036,0x8507);
 LCD_WriteReg(0x0037,0x1407);
 LCD_WriteReg(0x0038,0x1403);
 LCD_WriteReg(0x0039,0x0020);
  
 LCD_WriteReg(0x0090,0x001a);
 LCD_WriteReg(0x0010,0x0000);
 LCD_WriteReg(0x0011,0x0007);
 LCD_WriteReg(0x0012,0x0000);
 LCD_WriteReg(0x0013,0x0000);
 delay_ms(20);
  
 LCD_WriteReg(0x0010,0x0730);
 LCD_WriteReg(0x0011,0x0137);
 delay_ms(20);
 
 LCD_WriteReg(0x0012,0x01b8);
 delay_ms(20);
  
 LCD_WriteReg(0x0013,0x0f00);
 LCD_WriteReg(0x002a,0x0080);
 LCD_WriteReg(0x0029,0x0048);
 delay_ms(20);
 
 LCD_WriteReg(0x0001,0x0100);
 LCD_WriteReg(0x0002,0x0700);
 LCD_WriteReg(0x0003,0x1230);
 LCD_WriteReg(0x0008,0x0202);
 LCD_WriteReg(0x000a,0x0000);
 LCD_WriteReg(0x000c,0x0000);
 LCD_WriteReg(0x000d,0x0000);
 LCD_WriteReg(0x000e,0x0030);
 LCD_WriteReg(0x0050,0x0000);
 LCD_WriteReg(0x0051,0x00ef);
 LCD_WriteReg(0x0052,0x0000);
 LCD_WriteReg(0x0053,0x013f);
 LCD_WriteReg(0x0060,0x2700);
 LCD_WriteReg(0x0061,0x0001);
 LCD_WriteReg(0x006a,0x0000);
 //LCD_WriteReg(0x0080,0x0000);
 //LCD_WriteReg(0x0081,0x0000);
 LCD_WriteReg(0x0090,0X0011);
 LCD_WriteReg(0x0092,0x0600);
 LCD_WriteReg(0x0093,0x0402);
 LCD_WriteReg(0x0094,0x0002);
 delay_ms(20);
  
 LCD_WriteReg(0x0007,0x0001);
 delay_ms(20);
 LCD_WriteReg(0x0007,0x0061);
 LCD_WriteReg(0x0007,0x0173);
  
 LCD_WriteReg(0x0020,0x0000);
 LCD_WriteReg(0x0021,0x0000);  
 LCD_WriteReg(0x00,0x22);

 LCD_LED=1;//点亮背光
}

上面是型号为B505的LCD的初始化

int main(void)
{

 u16 i=0,DeviceCode;
 u16 color[6]={0xf800,0x01cf,0x841f,0x8430,0xffff,0xffe0};
 Stm32_Clock_Init(9);
 delay_init(72);
 uart_init(72,9600);
 LED_Init();
 LCD_Init();
 while(1)
 {
  DeviceCode=LCD_ReadReg(0x0000);
  printf("LCD ID:%x\n",DeviceCode);
  LCD_Clear(color);
  i++;
  if(i>=6)
   i=0;
  LED0=!LED0;
  delay_ms(1000);
 }
}
主函数是发送LCD ID和切换屏幕颜色。
现在问题来了,如果我把LCD初始化函数中红色字体注释掉,屏幕就变白色,主函数中执行切换颜色的代码没实际效果,这是为什么?


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

13

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2012-11-17
在线时间
18 小时
 楼主| 发表于 2012-12-2 21:53:06 | 显示全部楼层
回复【2楼】正点原子:
不注释掉就正常?
---------------------------------
是的
回复 支持 反对

使用道具 举报

18

主题

102

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2012-12-2
在线时间
0 小时
发表于 2012-12-2 22:17:42 | 显示全部楼层
注释掉 是不是就读取不到型号的代码 
回复 支持 反对

使用道具 举报

13

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2012-11-17
在线时间
18 小时
 楼主| 发表于 2012-12-2 22:29:42 | 显示全部楼层
回复【4楼】电子好学者:
注释掉 是不是就读取不到型号的代码 
---------------------------------
注释掉,只是屏幕白屏,但我主函数里面还有读取LCD ID的代码,这部分执行有效果,可以发送ID。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-12-2 23:51:47 | 显示全部楼层
这就比较怪了,呵呵.加上吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
434
金钱
434
注册时间
2013-3-18
在线时间
82 小时
发表于 2013-3-23 18:20:57 | 显示全部楼层
lcd初始化之前读才行吧!!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-22 13:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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