历史上的今天
返回首页

历史上的今天

今天是:2025年06月04日(星期三)

正在发生

2018年06月04日 | S3C2440之LCD驱动代码模板(RealView MDK)

2018-06-04 来源:eefocus

好记心不如烂笔头,为方便以后查看代码及代码重复利用,这里贴出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. }  


推荐阅读

史海拾趣

FINDER公司的发展小趣事

在电子行业中,FINDER公司(即Finder芬德)的发展历程充满了创新与进取的故事。以下是五个关于FINDER公司发展起来的相关故事,每个故事均基于事实进行描述:

1. 创立与初步发展

故事背景:FINDER公司由Piero Giordanino于1954年创立,当时他凭借对电子技术的深刻理解和远见卓识,决定投身于继电器制造领域。在成立初期,FINDER专注于研发和生产高质量的继电器产品,以满足当时市场对电子元器件日益增长的需求。

关键事实:Giordanino在1949年就已经获得了第一步继电器的专利,这为他后来创立FINDER公司奠定了坚实的基础。随着技术的不断积累和市场的逐步开拓,FINDER逐渐在继电器领域崭露头角。

2. 产品多样化与技术创新

故事背景:在成立后的几十年里,FINDER公司不断推出新产品,实现了产品线的多样化。从最初的单一继电器产品,逐步扩展到包括步进继电器、光敏继电器、工业继电器、微型和超薄继电器、功率继电器、定时器继电器插座和配件等多个领域。

关键事实:截至当前,FINDER已生产超过14,500种不同类型的机电和电子设备,产品广泛应用于工业自动化、建筑、家庭和办公室等多个领域。同时,FINDER还致力于技术创新,不断研发出具有更高性能、更可靠性的新产品。

3. 全球化布局与市场拓展

故事背景:随着公司规模的扩大和产品线的丰富,FINDER开始将目光投向全球市场。通过设立分支机构、建立销售网络以及与国际知名企业的合作,FINDER逐步实现了全球化布局。

关键事实:目前,FINDER已经在全球范围内设立了多个分支机构和销售网络,覆盖欧洲、美洲、亚洲和非洲等地区。同时,FINDER还与德国SIEMENS、日本OMRON等世界知名电子企业并列为全球三大继电器制造商之一,在欧洲市场享有极高的盛誉。

4. 质量控制与环保生产

故事背景:在快速发展的同时,FINDER始终将产品质量放在首位。通过严格的质量控制体系和环保生产标准,FINDER确保了产品的卓越品质和可持续发展。

关键事实:FINDER的每个产品在出厂前都经过两个彻底的测试周期以确保最高水平的质量。此外,FINDER还尊重国家和欧盟的环保规范,确保其产品符合现行立法要求。在生产过程中采用环保材料和技术减少对环境的影响。

5. 行业认可与荣誉

故事背景:由于卓越的产品质量和持续的技术创新,FINDER在电子行业中获得了广泛的认可和赞誉。公司不仅赢得了众多客户的信赖和支持还获得了多项行业荣誉和认证。

关键事实:FINDER的产品已经通过了三十多个国家四十多个产品安全认证这充分证明了其在产品质量和安全方面的卓越表现。同时FINDER还被评为全球拥有最多质量认证的继电器制造商之一这进一步巩固了其在行业中的领先地位。

这些故事共同展现了FINDER公司在电子行业中的发展历程和成就。从创立初期的艰难起步到如今的全球知名企业FINDER凭借其卓越的产品质量、持续的技术创新以及全球化布局赢得了广泛的认可和赞誉。

顺芯(Everest-semi)公司的发展小趣事

随着技术的不断进步,顺芯公司意识到只有不断创新才能在激烈的市场竞争中立于不败之地。因此,公司加大了在研发方面的投入,积极引进高端人才,并与国内外知名高校和研究机构建立了合作关系。在XXXX年,顺芯公司成功研发出了一款具有自主知识产权的高性能数模混合芯片,填补了国内市场的空白,并获得了多项专利。

Gamewell-FCI ( Honeywell )公司的发展小趣事

顺芯公司成立于XXXX年,初创时期面临着资金短缺、技术壁垒高和市场竞争激烈的挑战。然而,公司的创始人团队凭借对半导体行业的深刻理解和坚定信念,成功吸引了第一轮天使投资。他们夜以继日地研发产品,不断优化技术,终于在XXXX年成功推出了首款高性能的模拟芯片产品,获得了市场的初步认可。

GE (General Electric)公司的发展小趣事
如冷却泵、床头电机等,这些设备通过转换开关或压力开关进行单独或集中控制。
天钰(FITIPOWER)公司的发展小趣事
检查机床指示灯和照明灯是否正常工作,如有故障及时更换。
联智(Celfras)公司的发展小趣事

江西联智集成电路有限公司(简称联智)自2016年成立以来,始终致力于无线充电技术的研发和创新。公司凭借其先进的无线充电TX/RX芯片解决方案,迅速在行业内崭露头角。联智不仅拥有由多名高校博士和高级研发人员组成的核心研发团队,还在中国及韩国设立了研发中心,确保技术的领先性和市场竞争力。

问答坊 | AI 解惑

步进电机定位控制系统VHDL程序与仿真

步进电机定位控制系统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; --系统复位信号      ...…

查看全部问答>

jlink 调试时 axd死机

不知道为什么在台式机上使用jlink调试时一切正常但是 到了笔记本上 有时单步就会造成axd死机 很郁闷 不知道怎么解决…

查看全部问答>

求救!help! WTP WSP 发送MMS 如何使用WTP SAP切割

用WTP协议的分割调用PDU来发送MMS文件,但是不知道怎么编码。 请知道的高手指导指导。。。。。。。。。。…

查看全部问答>

WINCE5.0下的显示驱动问题

最近在调试一个TFT屏,显示的画面上的字有重影,不知道是什么问题?希望有高手指导指导…

查看全部问答>

工作机会VC、嵌入式、硬件,工作地点青岛

三、VC软件工程师 职位名称:VC软件工程师 数量:1名 具体要求: 1.        电子信息技术或计算机相关专业,本科以上学历; 2.        有两年以上C++/VC开发经验 3.        有T ...…

查看全部问答>

请大家帮忙:关于U盘识别,和设备USB接口的疑问

1. XP , WIN7系统都能自动识别U盘,为什么U盘不需要加载USB驱动就能被系统识别?   2. 为什么有的设备需要加载USB驱动后才能工作? 而有的又不需要加载USB驱动就能工作(比如我的数码相机)?   请大家帮我解惑,最好是说说原理,谢 ...…

查看全部问答>

LaunchPad调试nrf24l01果然很给力

资料也多,调试也很方便,果然没选错啊。真后悔当初没买两块。   电压3.5V,发射模块可以直接使用,方便。     下午把发送模式刚刚调好,很是激动啊,明天开始调接收,嘿嘿     [ 本帖最后由 shower.xu 于 2011-10 ...…

查看全部问答>

求测亩仪单片机软件/方案

求测亩仪解决方案 或者GPS导航仪软件改成测亩仪方案 要求稳定,精确等 联系电话 13751022196  于小姐QQ 42831024…

查看全部问答>

求高手帮忙看个错误信息!

求高手帮忙看个问题:什么原因造成的!? …

查看全部问答>

s3c2440中断的使用

看了一个adc驱动代码,用的是request_irq();但是程序里面没有对中断相关寄存器的adc中断使能位打开的语句,我是从单片机转到ARM的新手,请问是不是内核在request_irq函数里直接自动完成寄存器置位的?…

查看全部问答>