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

发布者:Blissful444最新更新时间:2018-06-04 来源: eefocus关键字:S3C2440  LCD  驱动代码模板 手机看文章 扫描二维码
随时随地手机看文章

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

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


寄存器宏定义:


  1. #define rGPCCON     (*(volatile unsigned long *)0x56000020)  

  2. #define rGPCUP      (*(volatile unsigned long *)0x56000028)  

  3. #define rGPDCON     (*(volatile unsigned long *)0x56000030)  

  4. #define rGPDUP      (*(volatile unsigned long *)0x56000038)  

  5.   

  6. #define rLCDCON1    (*(volatile unsigned long *)0x4D000000)  

  7. #define rLCDCON2    (*(volatile unsigned long *)0x4D000004)  

  8. #define rLCDCON3    (*(volatile unsigned long *)0x4D000008)  

  9. #define rLCDCON4    (*(volatile unsigned long *)0x4D00000C)  

  10. #define rLCDCON5    (*(volatile unsigned long *)0x4D000010)  

  11. #define rLCDSADDR1  (*(volatile unsigned long *)0x4D000014)  

  12. #define rLCDSADDR2  (*(volatile unsigned long *)0x4D000018)  

  13. #define rLCDSADDR3  (*(volatile unsigned long *)0x4D00001C)  

  14. #define rTPAL           (*(volatile unsigned long *)0x4D000050)  


显示缓冲区:


  1. #define LCD_XSIZE   320  

  2. #define LCD_YSIZE   240  

  3.   

  4. unsigned int LCD_BUFFER[LCD_YSIZE][LCD_XSIZE];  


GPIO初始化:


  1. void LCD_GPIO_Init(void)  

  2. {  

  3.     rGPCUP = 0xffffffff;  

  4.     rGPCCON = 0xaaaa02a8;  

  5.   

  6.     rGPDUP = 0xffffffff;  

  7.     rGPDCON = 0xaaaaaaaa;  

  8. }  


LCD初始化:


  1. #define CLKVAL              6  

  2. #define TFT_MODE            3  

  3. #define BPP_MODE_16BIT      0x0c  

  4. #define BPP_MODE_24BIT      0x0D  

  5.   

  6. #define VBPD                9  

  7. #define LINEVAL             (LCD_YSIZE - 1)  

  8. #define VFPD                1  

  9. #define VSPW                2  

  10.   

  11. #define HBPD                6//0x0C  

  12. #define HOZVAL              (LCD_XSIZE - 1)  

  13. #define HFPD                5  

  14. #define HSPW                0//1  

  15.   

  16. #define BPP24BL             0  

  17. #define FRM565              1  

  18. #define INVVCLK             1  

  19. #define INVHSYNC            1  

  20. #define INVVSYNC            1  

  21. #define BSWP                0  

  22. #define HWSWP               0  

  23.   

  24. void LCD_Init(void)  

  25. {  

  26.     LCD_GPIO_Init();  

  27.   

  28.     rLCDCON1 = (CLKVAL << 8) | (TFT_MODE << 5) | (BPP_MODE_24BIT << 1);  

  29.     rLCDCON2 = (VBPD << 24) | (LINEVAL << 14) | (VFPD << 6) | (VSPW << 0);  

  30.     rLCDCON3 = (HBPD << 19) | (HOZVAL << 8) | (HFPD << 0);  

  31.     rLCDCON4 = HSPW;  

  32.     rLCDCON5 = (BPP24BL << 12) | (INVVCLK << 10) | (INVHSYNC << 9) | (INVVSYNC << 8) | (BSWP << 1) | (HWSWP << 0);  

  33.   

  34.     rLCDSADDR1 = ((unsigned int)LCD_BUFFER) >> 1;  

  35.     rLCDSADDR2 = ((unsigned int)LCD_BUFFER + LCD_YSIZE * LCD_XSIZE * sizeof(LCD_BUFFER[0][0])) >> 1;  

  36.     rLCDSADDR3 = LCD_XSIZE*2;  

  37. }  


开启/关闭LCD:


  1. void LCD_ON(void)  

  2. {  

  3.     rLCDCON1 |= 1;  

  4. }  

  5.   

  6. void LCD_OFF(void)  

  7. {  

  8.     rLCDCON1 &= ~1;  

  9. }  


清屏函数:


  1. void LCD_ClrScr(unsigned int color)  

  2. {  

  3.     int i, j;  

  4.       

  5.     for(j = 0; j < LCD_YSIZE; j++)  

  6.         for(i = 0; i < LCD_XSIZE; i++)  

  7.             LCD_BUFFER[j][i] = color;  

  8. }  


使用临时调色板清屏:


  1. void LCD_ClrScrUseTPAL(unsigned int color24)  

  2. {  

  3.     rTPAL = (1 << 24) | color24;  

  4. }  


禁止TPAL:


  1. void LCD_DisableTPAL(void)  

  2. {  

  3.     rTPAL &= ~(1 << 24);  

  4. }  


FillRect函数:


  1. void LCD_FillRect(int x0, int y0, int x1, int y1, unsigned int color)  

  2. {  

  3.     int i, j;  

  4.   

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

  6.   

  7.     for(j = y0; j <= y1; j++)  

  8.         for(i = x0; i <= x1; i++)  

  9.             LCD_BUFFER[j][i] = color;  

  10. }  


关键字:S3C2440  LCD  驱动代码模板 引用地址:S3C2440之LCD驱动代码模板(RealView MDK)

上一篇:S3C2440之MMU驱动代码模板(RealView MDK)
下一篇:keil5(MDK5)配置S3C2440裸机开发调试环境

推荐阅读最新更新时间:2024-03-16 16:04

供应紧张持续到 2-3月LCD TV面板价格依然维持较大涨幅
自2020年6月以来,LCD TV面板价格持续上涨。而进入2021年,由于上游原材料供应偏紧,加之市场需求持续强劲,2-3月TV面板价格仍维持较大涨幅。 群智咨询TV研究总监张虹表示,海外“宅经济”和财政刺激的双重利好效应仍持续,欧美等区域终端零售表现持续强劲,同时,叠加厂商回补库存需求,上半年TV整机厂商面板备货意愿强烈。而供应端,上游材料特别是各类IC的供应缺口逐步放大,且短期内难以解决,部分面板厂的有效供应受到较大的冲击。 整体来看,一季度全球LCD TV面板市场供应紧缺,预计二季度将维持供应紧张的趋势。持续供应紧张推动头部面板厂商价格策略转为激进,群智咨询(Sigmaintell)预计,2~3月LCD TV主流尺寸价格将维
[手机便携]
s3c2440学习之路-009 nor flash的简单配置
1.原理 1.1 Bank的划分 2440支持nand flash 和 nor flash启动, 不过nor flash启动时使用的是最保守的配置,即相关的时钟设置成最小值以保证低性能的nor flash也可以工作。nor flash启动时,CPU是从nor flahs读取指令,因为nor flash的访问速度慢导致程序执行的也慢,所以要加快nor flash的运行。这就需要修改nor flash配置相关的寄存器,让其达到最高的访问速度。 2440将内存的控制分成了8个Bank, 通过GCSn引脚来控制。nor flash接在Bank0上,通过GCS0来控制。这个控制是由2440自动来完成,当你访问的内存地址在0x0000_0
[单片机]
<font color='red'>s3c2440</font>学习之路-009 nor flash的简单配置
嵌入式环境下分层的串行帧通信的设计与实现
嵌入式系统之间的通信通常有两种方式:并行通信和串行通信。并行方式传输数据速度快,但占用的通信线多,传输数据的可靠性随距离的增加而下降,只适用于近距离的数据传送。在远距离数据通信中,一般采用串行通信方式,它具有占用通信线少、成本低等优点。目前RS 232串口是PC机与通信工业中应用最广泛的一种串行接口,它应用于点对点通信模式,实际使用中多采用最简单的三线方式连接,即两端设备的串口只连接收、发、地三根线,即可实现简单的全双工通信。通信协议是两端设备数据交换的语言,是通信可靠性的保证,在保证功能的前提下,通信协议应该力求简洁。   1 系统通信需求   本系统主要完成野外环境下时间间隔测量和瞬态数据采集的功能,系统内各模块均选
[单片机]
嵌入式环境下分层的串行帧通信的设计与实现
联盛德 HLK-W806 (四): 软件SPI和硬件SPI驱动ST7735液晶LCD
ST7735介绍 ST7735是用于驱动最大162x132像素的TFT驱动芯片, 396(128*3色)x162线输出, 可以直接以SPI协议, 或者8位/9位/16位并行连接外部控制器. 显示数据可以存储在片内的132 x 162 x 18 bits内存中, 显示内存的读写不需要外部时钟驱动. ST7735有几种不同的型号: ST7735, ST7735R, ST7735S, -R和-S型号和初始型号功能一致, 但是增加了垂直滚动, 另外容忍更高的电压(最高到4.8V). 使用ST7735S的128x160 TFT LCD模块 连接 ST7735的LCD模块有128x128, 128x160等不同分辨率, 对外的接
[单片机]
联盛德 HLK-W806 (四): 软件SPI和硬件SPI<font color='red'>驱动</font>ST7735液晶<font color='red'>LCD</font>
需求太大 三星用LCD电视生产线加造OLED手机屏
三星显示器(Samsung Display)是三星子公司,也是全球领先OLED制造商。由于中国智能手机企业对OLED屏幕的需求旺盛,三星决定将部分LCD电视面板生产线转化为OLED智能手机面板生产线,明年三星的OLED屏幕年产能将会达到2亿块。 本周三,产业人士透露称,三星已经拆除位于忠清道(Tangjeong)的L7-1 LCD电视面板生产线,将它腾出来生产OLED智能手机面板,三星希望将OLED智能手机面板月产能提高到2000万块。 明年,苹果将会推出OLED iPhone,中国是全球最大智能手机市场,中国企业也追随苹果步伐,开始拥抱OLED屏幕。三星显示器工厂生产的OLED面板大部分提供给三星电子和中国手机制造商。 三星显示
[家用电子]
武林教你学PIC32(十四)并口操作PMP点亮液晶LCD
并行主端口(Parallel Master Port,PMP)是一个 8 位 /16 位并行 I/O 模块,专用于与通信外设、 LCD、外部存储器件以及单片机等多种并行器件进行通信。由于并行外设接口的多样化,PMP 模 块具有高度可配置性。 PMP 模块的主要特性包括: • 最多 16 条可编程地址线 • 最多 2 条片选线 • 可编程选通选项 - 独立的读和写选通,或 - 带使能选通的读 / 写选通 • 地址自动递增 / 自动递减 • 可编程地址 / 数据复用 • 可编程控制信号的极性 • 支持传统并行从端口 • 支持增强型并行从端口 - 地址支持 - 4 字节深自动递增缓冲区 • 施密特触发器或 TTL 输入缓冲器 • 可编程
[单片机]
武林教你学PIC32(十四)并口操作PMP点亮液晶<font color='red'>LCD</font>
mini2440 LCD驱动
mini2440集成了lcd控制器的接口,板子上接的lcd硬件是统宝240*320,TFT型lcd。lcd驱动对应的文件为s3c2410fb.c。要读懂这个驱动必须了解linux platform子系统的知识。因为这个驱动是以platform驱动的形式注册到内核。而且还需要frambuffer驱动的知识,因为这个驱动还是frambuffer接口的。lcd驱动在模块初始化的时候,调用platform注册函数将自己注册到内核,利用linux设备模型核心的机制调用platform_bus总线的match函数找到相应的设备,然后由linux设备模型核心调用s3c2410fb.c中的s3c2410fb_probe ,进行硬件相关初始化,并初
[单片机]
夏普42.8亿美元建设液晶十代线 面板价格下滑
7月20日消息,据日本经济新闻报道,夏普将投资5000亿日元(约合42.8亿美元)建设一条第十代TFT LCD生产线。该公司计划于2007年第三季度动工,量产将始于2008年中期。届时夏普将可以生产2850×3050mm玻璃基板,可切割为8块57英寸面板,或6块65英寸面板。 夏普方面则对报道未置可否。该公司也是全球首家宣布计划建立第八代液晶生产线的厂商。去年7月,夏普曾透露将投资14.5亿美元建立一家第八代工厂,其液晶屏将在今年的九十月份在日本建成投产,主要用于生产45英寸和52英寸液晶电视。 三星-索尼、LG-飞利浦以及我国台湾友达、奇美等曾宣称将在2007年或2008年量产第八代液晶屏的企业,出于投入产出的考虑,目前对相关
[焦点新闻]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved