历史上的今天
返回首页

历史上的今天

今天是:2024年11月08日(星期五)

正在发生

2021年11月08日 | MINI2440裸机实验之LCD

2021-11-08 来源:eefocus

硬件部分

上诉文章中使用的LCD都是常规液晶显示器,但在查看原理图及液晶数据手册时发现我使用的MINI2440开发板上自带的液晶跟文中的液晶并不一致,区别主要体现在只有DE、CLK和RGB引脚,该液晶型号为TD35-TD035STEB2,其时序图如下。


从时序图中可以看出,DE为该液晶屏的主要控制引脚,通过控制DE引脚的下拉就可以控制液晶屏的刷新,但有一个问题就是如何使用s3c2440的LCD控制器来控制该液晶屏呢?


这里我进行了这样的尝试,认为上图中的Tvdisp = LINEVAL +1 ;Tvblank = VSPW+1+VBPD+1;VFPD+1 = 0;Thdisp = HOZVAL+1;


Thblank = HSPW+1 + HBPD+1;HFPD+1 = 0;


其他部分参考了mini2440硬件篇之LCD并对本液晶的特点进行了相应的修改,最终的程序共包含3个文件:


lcd.c


/* lcd.c */

#define rLCDCON1 (*(volatile unsigned int *)0x4D000000)

#define rLCDCON2 (*(volatile unsigned int *)0x4D000004)

#define rLCDCON3 (*(volatile unsigned int *)0x4D000008)

#define rLCDCON4 (*(volatile unsigned int *)0x4D00000C)

#define rLCDCON5 (*(volatile unsigned int *)0x4D000010)

#define rLCDSADDR1 (*(volatile unsigned int *)0x4D000014)

#define rLCDSADDR2 (*(volatile unsigned int *)0x4D000018)

#define rLCDSADDR3 (*(volatile unsigned int *)0x4D00001C)

#define rGPCCON (*(volatile unsigned int *)0x56000020)

#define rGPCUP (*(volatile unsigned int *)0x56000028)

#define rGPDUP (*(volatile unsigned int *)0x56000038)

#define rGPDCON (*(volatile unsigned int *)0x56000030)

 

#define LCD_WIDTH 240

#define LCD_HEIGHT 320

 

#define M5D( n ) ( ( n ) & 0x1fffff )

 

volatile static unsigned short LCD_BUFFER[LCD_HEIGHT][LCD_WIDTH];

 

#define LCD_ADDR ( (unsigned long)LCD_BUFFER ) 

 

void delay(volatile unsigned long count)

{

    while(count--);

}

 

void LCDInit(void)

{

rGPCUP = 0xffffffff;//Disable Pull-up register  

    rGPCCON = 0xaaaa02a8;//设置GPC各引脚对应引脚功能为 VD[7...0],VM,VFRAME,VLINE,VCLK  

      

    rGPDUP = 0xffffffff;//Disable Pull-up register  

    rGPDCON = 0xaaaaaaaa;//设置VD[15:8] 

rLCDCON1 = (6 << 8) | (3 << 5) | (0x0C << 1);

rLCDCON2 = (2 << 24) | ((320 - 1) << 14) | (9 << 0);

rLCDCON3 = (8 << 19) | ((240 - 1) << 8);

rLCDCON4 = (70 << 0);

rLCDCON5 = (1 << 11) | (1 << 0);

rLCDSADDR1 = ( ( LCD_ADDR >> 22 ) << 21 ) | ( ( M5D ( LCD_ADDR >> 1 ) ) << 0 );

rLCDSADDR2 = M5D ( ( LCD_ADDR + LCD_WIDTH * LCD_HEIGHT * 2 ) >> 1 );

rLCDSADDR3 = LCD_WIDTH; 

}

 

void LCDClearScreen( unsigned short usColor)  

{  

    unsigned int x,y ;  

          

    for( y = 0 ; y < LCD_HEIGHT ; y++ )  

    {  

        for( x = 0 ; x < LCD_WIDTH ; x++ )  

        {  

            LCD_BUFFER[y][x] = usColor ;  

        }  

    }  

}

 

void main(void)

{

unsigned int x,y,z=0x0000;

LCDInit();

for(x=0;x<320;x++)

{

for(y=0;y<240;y++)

{

LCD_BUFFER[x][y] = z++;

}

}

rLCDCON1 |= 1;

while(1)

{

}

}


start.S


.text

.global _start

_start:


ldr r0,=0x53000000

mov r1,#0x00

str r1,[r0]    /* disable the watchdog timer */

    ldr sp,=0x34000000    /* set stack pointer */


b  main


Makefile

objs := start.o lcd.o


lcd.bin:$(objs)

arm-linux-ld -Ttext 0x30000000 -o lcd_elf $^

arm-linux-objcopy -O binary -S lcd_elf $@

arm-linux-objdump -D -m arm lcd_elf > lcd.dis

%.o:%.c

arm-linux-gcc -c -o $@ $<

%.o:%.S

arm-linux-gcc -c -o $@ $<

clean:

rm -f lcd_elf *.o


这里要说明的是,这个程序编译完成之后将不在使用JLINK进行下载,而使用友善之臂提供的工具MINITools来直接下载至SDRAM来之前,这个可以从Makefile中的链接地址以及start.S的文件内容看出来,之前不使用该方法下载的原因是为了熟悉及实践SDRAM的操作。


该程序最终的显示效果如下图所示

推荐阅读

史海拾趣

Cypress(赛普拉斯)公司的发展小趣事

近年来,随着汽车电子、物联网等应用领域的快速发展,Cypress也制定了新的发展战略。公司将以MCU+存储+USB为核心产品,为汽车电子、物联网等应用领域提供完整的嵌入式系统解决方案。为了实现这一目标,Cypress将继续加大研发投入,推动技术创新和产品升级。同时,公司还将加强与国际合作伙伴的合作,共同开拓新的市场和应用领域。

Control Sciences Inc公司的发展小趣事

随着技术的不断进步,Control Sciences Inc开始寻求更广阔的市场空间。公司积极参与国内外各大电子展会,展示其先进的产品和技术。同时,公司还加大了市场推广力度,与多个知名企业建立了战略合作关系。通过这些努力,Control Sciences Inc的产品逐渐走进了更多的企业和家庭,其品牌影响力也日益增强。

Adafruit公司的发展小趣事

Control Sciences Inc深知人才是企业发展的核心。因此,公司一直注重人才培养和引进。公司不仅设立了专门的研发机构,吸引了大批优秀的科研人才,还定期组织员工培训和交流活动,提高团队的整体素质。这些措施使得Control Sciences Inc的团队越来越强大,为公司的发展提供了有力的人才保障。

百佳(BAIJIA)公司的发展小趣事

百佳公司深知技术创新是企业发展的核心动力。因此,他们不断加大研发投入,引进先进技术和设备,推动产品的升级换代。通过不断创新,百佳公司成功开发出了一系列具有自主知识产权的电子产品,不仅提升了企业的核心竞争力,也为行业的发展做出了重要贡献。

General Semiconductor ( Vishay )公司的发展小趣事

Vishay一直致力于技术创新和产品升级。在2001年,公司收购了全球二极管和整流器领先制造商General Semiconductor,这一收购极大地增强了Vishay在二极管和整流器领域的实力。同时,Vishay还通过收购RFWaves公司,涉足无线领域,为公司带来了新的增长动力。此外,Vishay还在全球范围内布局制造基地和销售办事处,确保能够为客户提供优质的产品和服务。

FRIWO公司的发展小趣事

FRIWO公司自成立以来,始终在技术领域保持领先地位。从便携式收录机问世之初,FRIWO就凭借其先进的技术在该领域崭露头角。随后,随着技术的不断进步,FRIWO迅速将业务扩展到Atari计算机、摄影机等新兴领域,并成功成为这些领域的电源解决方案提供商。近年来,FRIWO更是专注于移动电话充电器市场,凭借其卓越的技术实力和创新能力,成为了世界上移动电话充电器的最主要供应商。这一系列的成功,彰显了FRIWO在电子行业中的技术领先地位和多元化发展战略。

问答坊 | AI 解惑

先闪光后响铃电话机的选材

原理图有了,可是不会选择材料,不知道各个电子元器件都应该是什么型号,有大虾能帮帮忙指点下吗?电流响铃瞬间是90V交流电。标明SCR的并不是可控硅,应该是双向晶闸管输出型光耦。 [ 本帖最后由 sky880502 于 2010-3-22 09:57 编辑 ]…

查看全部问答>

在mfc中有更换按钮背景图消息,在ce下有类似消息么

我点击另外一个按钮想更换之前创建的btn背景图,所以就采用向btn窗口句柄发送消息 sendMessage(g_Wnd,BM_SETIMAGE,(WPARAM)IMAGE_BITMAP,(LPARAM)bitmap);---->在CE中提示 error C2065: \'BM_SETIMAGE\' : undeclared identifier BM_SETIMAGE--- ...…

查看全部问答>

硬件街机游戏开发,单片机游戏开发,CPLD/FPGA、ARM平台游戏开发群成立

本超级QQ群成立,上限人数为500。 目标是发展中国游戏产业,提升硬件游戏开发技术交流。提供大的平台。 发展的方向是游戏动漫相结合,此群不是网络游戏开发,为单板街机游戏开发。 所属第三产业。以电脑板游戏开发为主体,希望大家能在这个平 ...…

查看全部问答>

wince taskbar window

各位大侠,小弟最近想把wince 桌面改成winxp风格的,可不知道任务栏和开始菜单如何改,希望那位高手帮帮忙,万分感谢!!…

查看全部问答>

TMS320C6XXX(“达芬奇”)处理器的可靠复位发生

TMS320C6XXX(“达芬奇”)处理器的可靠复位发生…

查看全部问答>

STM32和PC机进行USB通信资料

                                 我现在做一个通过USB实现STM32和PC机进行通信的方案,感觉无从下手,希望有经验的朋友,能分享一下经验,在下不胜 ...…

查看全部问答>

at89s52和nrf24l01的问题

最近做个抢答器,用nrf24l01做无线收发模块,单片机控制,其实做的时候思路不是很清晰,看了datasheet还有网上一个程序,他原本是用个3v的单片机做的,我用的这个是5v的,MI,MO,SCK口都是接的P1口那几个最后好像没什么反应,我是直接接上去的...昨天看了下 ...…

查看全部问答>

msp430跟ad9850怎么接

短学期的实习内容是dds信号发生器的设计,单片机老师要求用430,查了几天资料还是一头雾水,想知道msp430f149跟ad9850的管脚是怎么接的,求高手赐教。…

查看全部问答>

求助 电脑耳机孔输出的信号怎样接到ADC0809的输入端

求助 电脑耳机孔输出的信号怎样接到ADC0809的输入端 [ 本帖最后由 chinauk 于 2011-10-15 16:42 编辑 ]…

查看全部问答>