码迷,mamicode.com
首页 > 其他好文 > 详细

S3C2440之LCD驱动代码模板(RealView MDK)

时间:2015-03-03 16:44:33      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:s3c2440   lcd   keil   

好记心不如烂笔头,为方便以后查看代码及代码重复利用,这里贴出S3C2440 LCD控制初始化代码。使用友善MINI2440开发板,LCD为320*240,开发环境为RealView MDK 4.22。

该源码结构简单明了,原始工程下载地址:点击打开链接


寄存器宏定义:

#define rGPCCON		(*(volatile unsigned long *)0x56000020)
#define rGPCUP		(*(volatile unsigned long *)0x56000028)
#define rGPDCON		(*(volatile unsigned long *)0x56000030)
#define rGPDUP		(*(volatile unsigned long *)0x56000038)

#define rLCDCON1	(*(volatile unsigned long *)0x4D000000)
#define rLCDCON2	(*(volatile unsigned long *)0x4D000004)
#define rLCDCON3	(*(volatile unsigned long *)0x4D000008)
#define rLCDCON4	(*(volatile unsigned long *)0x4D00000C)
#define rLCDCON5	(*(volatile unsigned long *)0x4D000010)
#define rLCDSADDR1	(*(volatile unsigned long *)0x4D000014)
#define rLCDSADDR2	(*(volatile unsigned long *)0x4D000018)
#define rLCDSADDR3	(*(volatile unsigned long *)0x4D00001C)
#define rTPAL			(*(volatile unsigned long *)0x4D000050)

显示缓冲区:

#define LCD_XSIZE	320
#define LCD_YSIZE	240

unsigned int LCD_BUFFER[LCD_YSIZE][LCD_XSIZE];

GPIO初始化:

void LCD_GPIO_Init(void)
{
	rGPCUP = 0xffffffff;
	rGPCCON = 0xaaaa02a8;

	rGPDUP = 0xffffffff;
	rGPDCON = 0xaaaaaaaa;
}

LCD初始化:

#define CLKVAL				6
#define TFT_MODE			3
#define BPP_MODE_16BIT		0x0c
#define BPP_MODE_24BIT		0x0D

#define VBPD				9
#define LINEVAL				(LCD_YSIZE - 1)
#define VFPD				1
#define VSPW				2

#define HBPD				6//0x0C
#define HOZVAL				(LCD_XSIZE - 1)
#define HFPD				5
#define HSPW				0//1

#define BPP24BL				0
#define FRM565				1
#define INVVCLK				1
#define INVHSYNC			1
#define INVVSYNC			1
#define BSWP				0
#define HWSWP				0

void LCD_Init(void)
{
	LCD_GPIO_Init();

	rLCDCON1 = (CLKVAL << 8) | (TFT_MODE << 5) | (BPP_MODE_24BIT << 1);
	rLCDCON2 = (VBPD << 24) | (LINEVAL << 14) | (VFPD << 6) | (VSPW << 0);
	rLCDCON3 = (HBPD << 19) | (HOZVAL << 8) | (HFPD << 0);
	rLCDCON4 = HSPW;
	rLCDCON5 = (BPP24BL << 12) | (INVVCLK << 10) | (INVHSYNC << 9) | (INVVSYNC << 8) | (BSWP << 1) | (HWSWP << 0);

	rLCDSADDR1 = ((unsigned int)LCD_BUFFER) >> 1;
	rLCDSADDR2 = ((unsigned int)LCD_BUFFER + LCD_YSIZE * LCD_XSIZE * sizeof(LCD_BUFFER[0][0])) >> 1;
	rLCDSADDR3 = LCD_XSIZE*2;
}

开启/关闭LCD:

void LCD_ON(void)
{
	rLCDCON1 |= 1;
}

void LCD_OFF(void)
{
	rLCDCON1 &= ~1;
}

清屏函数:

void LCD_ClrScr(unsigned int color)
{
	int i, j;
	
	for(j = 0; j < LCD_YSIZE; j++)
		for(i = 0; i < LCD_XSIZE; i++)
			LCD_BUFFER[j][i] = color;
}

使用临时调色板清屏:

void LCD_ClrScrUseTPAL(unsigned int color24)
{
	rTPAL = (1 << 24) | color24;
}

禁止TPAL:

void LCD_DisableTPAL(void)
{
	rTPAL &= ~(1 << 24);
}

FillRect函数:

void LCD_FillRect(int x0, int y0, int x1, int y1, unsigned int color)
{
	int i, j;

	if((x0 > x1) || (y0 > y1))	return;

	for(j = y0; j <= y1; j++)
		for(i = x0; i <= x1; i++)
			LCD_BUFFER[j][i] = color;
}


S3C2440之LCD驱动代码模板(RealView MDK)

标签:s3c2440   lcd   keil   

原文地址:http://blog.csdn.net/hexiaolong2009/article/details/44038645

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!