s3c2440 LCD(sony x35)

一、lcd 屏的分类

STN是早期彩屏的主要器件一般的STN仍然是256色的,优点是:价格低,能耗小。

TFT的亮度好,对比度高,层次感强,颜色鲜艳。缺点是比较耗电,成本较高。 

UFB是专门为移动电话和PDA设计的显示屏,它的特点是:超薄,高亮度。可以显示65536色耗电比TFT少,价格和STN差不多。

OLED (Organic Light Emitting Display)即有机发光显示器,在手机LCD上属于新型产品,被称誉为“梦幻显示器”。OLED显示技术与传统的LCD显示方式不同,无需背光灯。


在mini2440 中 我们使用的是sony 的X35 lcd ,属于TFT屏。


二、LCD 系统框图


LCD驱动芯片是控制液晶分子发生变化的模块,它为液晶分子的偏转提供电压。通常情况下,LCD驱动芯片都与液晶屏面板做到一个电路板上。

液晶要能正确的显示图像,除了要有LCD驱动芯片,还要有LCD控制器来给LCD驱动芯片提供必要的数据和控制信号.多数ARM处理器内部都集成有LCD控制器。

三、LCD 控制器



1. REGBANK:由17个可编程的寄存器组和一块
256*16的调色板内存组成,通过这些寄存器,
可以配置LCD控制器.


2.
LCDCDMA:一个专用的DMA,它能自动地
把在帧内存中的视频数据传送到LCD驱动器,通
过使用这个DMA通道,视频数据在不需要CPU
的干预的情况下显示在LCD屏上.

3. VIDPRCS:接收来自LCDCDMA的数据,将数据转换
为合适的数据格式,比如说4/8位单扫,4位双扫显示模
式,然后通过数据端口VD[23:0]传送视频数据到LCD驱
动器;

4.TIMEGEN: 由可编程的逻辑组成,他生成LCD驱动器
需要的控制信号,比如VSYNC、HSYNC、VCLK和
LEND等,而这些控制信号又与REGBANK寄存器组中
的配置密切相关,通过不同的配置,TIMEGEN就能产
生这些信号的不同值,从而支持不同的LCD驱动器(即不
同的STN/TFT屏)。



四、显示过程与时序

1. 显示从屏幕左上角第一行的第一个点开始,一个点一个点地在
LCD上显示,点与点之间的时间间隔为VCLK(像素时钟信号);
当显示到屏幕的最右边就结束这一行(Line),这一行的显示对应时
序图上的HSYNC(水平同步信号

2. 接下来显示指针又回到屏幕的左边从第二行开始显示,显示指
针在从第一行的右边回到第二行的左边是需要一定的时间的,我
们称之为行切换。

3. 以此类推,显示指针就这样一行一行的显示至矩形的右下角才
把一幅图像(帧:frame)显示完成,这一帧的显示时间在时序图上
表示为VSYNC(垂直同步信号)。


五、lcd驱动程序设计。

sony X35 lcd显示屏时序图




屏规格书可以看出:

          某一行的结束到新的一行开始所经历的时间=32dots=行的前消隐+行的肩宽+行的后消隐   (没有对各部分分别规定,只需总和为32)

          某一屏的结束到新的一屏开始所经历的时间=16lines=屏的前消隐+屏的肩宽+屏的后消隐

  VCLK 的 的频率为5Mhz(频率表)


六、编码实现

//显存地址
unsigned short *lcdbuffer = (unsigned short *)0x30800000;

/***********************************************
Function  name  :   lcd_pin_init
Description     :  	lcd 引脚初始化
Input parameter :   none
Return          :   none	 	
Others		    :                     	                    
*************************************************/
void lcd_pin_init(void)
{
	rGPCUP=0xffffffff; 	// Disable Pull-up register
    rGPCCON=0xaaaaaaaa; //Initialize VD[7:0],VM,VFRAME,VLINE,VCLK

    rGPDUP=0xffffffff; // Disable Pull-up register
    rGPDCON=0xaaaaaaaa; //Initialize VD[15:8]
    
    rGPGUP  |= (1<<4) ; //Pull-up Disable   
    rGPGCON |= (3<<8) ; //GPG4 is LCD_PWREN   
}

/***********************************************
Function  name  :   lcd_reg_init
Description     :  	lcd控制器 初始化
Input parameter :   none
Return          :   none	 	
Others		    :                     	                    
*************************************************/
void lcd_reg_init(void)
{	
	//16 bpp for TFT
	rLCDCON1 = (CLKVAL << 8)|(3 << 5)|(12 << 1);
	
	rLCDCON2 = (VBPD << 24)|((LCD_HEIGHT-1) << 14)|(VFPD << 6)|(VSPW);
	
	rLCDCON3 = (HBPD << 19)|((LCD_WIDTH-1) << 8)|(HFPD);
	
	rLCDCON4 = HSPW;
	
	rLCDCON5 = (1 << 11)|(1 << 6)|(1 << 3)|(1 << 2)|(1 << 0);
	
	rLCDSADDR1 = (((unsigned int)lcdbuffer >> 22) << 21)|(((unsigned int)lcdbuffer >> 1) & 0x1fffff);
	
	rLCDSADDR2 = (((unsigned int)lcdbuffer + LCD_HEIGHT*LCD_WIDTH*2)>>1) & 0x1fffff;
	
	//关闭调色板
	rTPAL = 0;
	
	//rTCONSEL    = 0 ;  //LPC3600 LCC3600 无效  
	
	//屏蔽中断
	rLCDINTMSK = (1 << 0);
}


/***********************************************
Function  name  :   lcd_powerEnable
Description     :  	lcd 电源开关
Input parameter :   none
Return          :   none	 	
Others		    :                     	                    
*************************************************/
void lcd_powerEnable()  
{  
    rLCDCON1 |= (1 << 0);    
} 



/***********************************************
Function  name  :   lcd_clean
Description     :  	清屏
Input parameter :   color:将屏幕清成何种颜色
Return          :   none	 	
Others		    :                     	                    
*************************************************/
void lcd_clean(unsigned short color)
{
	int i,j;
	for(i = 0; i < LCD_HEIGHT; i++)
		for(j = 0; j < LCD_WIDTH; j++)
			lcdbuffer[i*LCD_WIDTH + j] = color;
}

/***********************************************
Function  name  :   lcd_init
Description     :  	lcd 初始化
Input parameter :   none
Return          :   none	 	
Others		    :                     	                    
*************************************************/
void lcd_init(void)
{
	lcd_pin_init();
	lcd_reg_init();
	lcd_powerEnable();
	lcd_clean(0xffff);
}

增加模块:三星显示屏的显示原理。

1、三星显示屏 VS 索尼显示屏 

1)CPU的寄存器的配置会不一样。

2)LCD驱动器也要配置,是通过SPI协议把数据写过来。           

   2SPI   协议 ----时序图 

   4根线:CS片选信号线  SCL串行时钟线  SDI串行数据输入线  SDO串行数据输出线

SPI(Serial Peripheral Interface,串行外设接口)是Motorola公司提出的一种同步串行数据传输标准,在很多器件中被广泛应用。

 3、手工写时序 -----I/O模拟 

 1)把相应的管脚配置为输出

 2)把输出引脚的电平拉高、拉低定义好相应的宏。

3)把时序描出来

   4、利用通信协议发送数据:

1)有独立的控制模块----只要把数据写到缓存中,数据会自动发送出去。

2IO口模拟-----IO配置为输出,然后通过写DAT寄存器把信号拉高拉低一位位发送出去。






  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值