S3C2440的LCD简单应用与实现
rLCDSADDR2=M5D( ((U32)LCD_BUFFER+(LCD_WIDTH*LCD_HEIGHT*4))>>中,寄存器LCDSADDR1和LCDSADDR2用于设置显示缓存区,即把我们定义的那个二维数组告诉s3c2440。其中LCDBANK的9位数据指定LCD的BANK,即显示缓存区的第30位到第22位地址;LCDBASEU的21位数据指定了LCD的基址,即显示缓存区开始地址的第21位到第1位;LCDBASEL的21位数据指定了LCD的尾址,即显示缓存区结束地址的第21位到第1位。例如,我们想要在尺寸为320×240的屏幕上显示24位颜色,定义的显示缓存区数组为LCD_BUFFER[240][320],则LCDBANK等于LCD_BUFFER的第30位到第22位数据值(因为LCD_BUFFER表示的就是数组的首地址),LCDBASEU等于LCD_BUFFER的第21位到第1位数据值,由于是用32位数据表示24为颜色,因此每个像素值是4个字节,所以LCDBASEL等于(LCD_BUFFER+(240×320×4))结果的第21位到第1位的数据值。另外寄存器LCDSADDR3有两个内容:OFFSIZE和PAGEWIDTH。OFFSIZE用于虚拟屏幕的偏移长度,如果我们不使用虚拟屏幕,就把它置为0;PAGEWIDTH定义了视口的宽,单位是半字,如在上面的例子中,PAGEWIDTH应该为320×32÷16。
*/
/***********************************************************************************************/
rLCDINTMSK|=(3); /*屏蔽LCD中断*/
rTCONSEL = 0; /*无效LPC3600*/
rGPGUP=rGPGUP|(1<4); /*GPG4上拉电阻无效*/
rGPGCON=rGPGCON|(3<8); /*设置GPG4为LCD_PWREN*/
rGPGDAT = rGPGDAT | (1<4) ; /*GPG4置1*/
rLCDCON5=rLCDCON5&(~(1<3))|(1<3); /*有效PWREN信号*/
rLCDCON5=rLCDCON5&(~(1<5))|(0<5); /*PWREN信号极性不翻转*/
rLCDCON1|=1; /*LCD开启,必须设置,否则LCD不工作*/
while(1)
{
/*黑色背景,白色实心圆*/
Brush_Background(0x0);
Draw_Circular(0xffffff);
delay(5000000);
/*白色背景,黑色实心圆*/
Brush_Background(0xffffff);
Draw_Circular(0x0);
delay(5000000);
/*蓝色背景,黄色实心圆 */
Brush_Background(0xff);
Draw_Circular(0xffff00);
delay(5000000);
/*绿色背景,品色实心圆*/
Brush_Background(0xff00);
Draw_Circular(0xff00ff);
delay(5000000);
/*红色背景,青色实心圆*/
Brush_Background(0xff0000);
Draw_Circular(0xffff);
delay(5000000);
/*青色背景,红色实心圆*/
Brush_Background(0xffff);
Draw_Circular(0xff0000);
delay(5000000);
/*品色背景,绿色实心圆*/
Brush_Background(0xff00ff);
Draw_Circular(0xff00);
delay(5000000);
/*黄色背景,蓝色实心圆*/
Brush_Background(0xffff00);
Draw_Circular(0xff);
delay(5000000);
}
}
S3C2440LC 相关文章:
- 六 ARM9(S3C2440)的LCD显示-理论知识(11-27)
- S3C2440的LCD编程(11-27)
- s3c2440的LCD应用(11-24)
- S3C2440 LCD字符显示(11-21)
- ARM9(S3C2440)的LCD显示——理论知识(11-21)
- 嵌入式Linux之我行——S3C2440上LCD驱动(FrameBuffer)实例开发讲解(11-20)