历史上的今天
今天是:2025年06月04日(星期三)
2018年06月04日 | S3C2440之LCD驱动代码模板(RealView MDK)
2018-06-04 来源:eefocus
好记心不如烂笔头,为方便以后查看代码及代码重复利用,这里贴出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;
}
史海拾趣
|
步进电机定位控制系统VHDL程序与仿真 library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; entity step_motor is port (reset:in STD_LOGIC; --系统复位信号 ...… 查看全部问答> |
|
求救!help! WTP WSP 发送MMS 如何使用WTP SAP切割 用WTP协议的分割调用PDU来发送MMS文件,但是不知道怎么编码。 请知道的高手指导指导。。。。。。。。。。… 查看全部问答> |
|
三、VC软件工程师 职位名称:VC软件工程师 数量:1名 具体要求: 1. 电子信息技术或计算机相关专业,本科以上学历; 2. 有两年以上C++/VC开发经验 3. 有T ...… 查看全部问答> |
|
1. XP , WIN7系统都能自动识别U盘,为什么U盘不需要加载USB驱动就能被系统识别? 2. 为什么有的设备需要加载USB驱动后才能工作? 而有的又不需要加载USB驱动就能工作(比如我的数码相机)? 请大家帮我解惑,最好是说说原理,谢 ...… 查看全部问答> |
|
资料也多,调试也很方便,果然没选错啊。真后悔当初没买两块。 电压3.5V,发射模块可以直接使用,方便。 下午把发送模式刚刚调好,很是激动啊,明天开始调接收,嘿嘿 [ 本帖最后由 shower.xu 于 2011-10 ...… 查看全部问答> |
|
看了一个adc驱动代码,用的是request_irq();但是程序里面没有对中断相关寄存器的adc中断使能位打开的语句,我是从单片机转到ARM的新手,请问是不是内核在request_irq函数里直接自动完成寄存器置位的?… 查看全部问答> |




