宓屽叆寮忚绋嬭璁?- 鍩轰簬LCD鐨勭數瀛愭椂閽熷疄楠?- 鐧惧害鏂囧簱 下载本文

第一章 系统设计

第一节 课题目标及总体方案

一、设计要求

学习LCD与ARM的LCD的控制器的接口原理,掌握内置LCD控制器驱动编写方法和RTC控制方法,在可行性分析的基础上实现以下功能:

1、编写程序实现电子时钟功能,通过实验系统的LCD将时间显示出来; 2、仿照图1在LCD上显示类似的时钟界面;

图1 LCD上显示的时钟界面

3、动态显示当前的时间,包括:年、月、日、时、分、秒,时针,分针、秒针必须为动态实时指示当前的时间。

二、设计方案

基于S3C44B0X的典型嵌入式系统硬件体系结构图如图2所示,通过对S3C44B0X处理器的学习,可以利用其内部的RTC单元和LCD控制器,外接LCD模块、晶振和(后备)电源实现电子实时时钟的功能。主要实现方法为:通过电源和晶振保证处理器的正常工作和时钟来源,通过编程设定RTC单元的工作模式,实现实时时钟的功能;然后根据所要求显示的图形效果,编写程序设定LCD控制器的相应寄存器,将RTC单元和LCD控制器合理有效地结合起来;最终由LCD模块作出相应动作,完成实时时钟的显示功能。

该设计的中英文字符显示方案,有效地利用了嵌入式系统自身的ROM存储容量,其最大的特点是以少量的存储容量为代价,来简单灵活地实现LCD上的字符显示。此方案可以显示所有的一、二级汉字,并且能实现汉字、英文的混合显示,从而方便地构造出良好的人机界面。所讨论的硬件平台是在S3C44BOX和液晶显示器的基础上搭建的,对于实现S3C44BOX与其它类型LCD模块的连接和应用,具有一定的参考价值。

- 4 -

电源 复位 晶振 LCD显示屏 Flash BIOS 基于ARM的 嵌入式微处理器 SDRAM 系统内存 S3C44B0X

USB接口 RS-232接口 JTAG接口 ADC DAC 键盘 图2 S3C44B0X的典型嵌入式系统硬件体系结构

第二节 原理框图

根据课题所要实现的功能,结合S3C44B0X处理器的单元结构,作出如图3所示的原理框图。

图3 原理框图

第三节

程序和芯片的初始化包括: LCD的初始化:

U16 LCD_Init(U8 Lcd_Bpp) {

switch(Lcd_Bpp) {

Case 8:

rLCDCON1=(0)|(2<<5)|(MVAL_USED<<7)|(0x1<<8)|(0x1<<10)|(CLKVAL_COLOR<<12);

- 5 -

程序和芯片的初始化

rLCDCON2=(LINEVAL)|(HOZVAL_COLOR<<10)|(10<<21); rLCDSADDR1= (0x3<<27) | ( ((U32)Video_StartBuffer>>22)<<21 M5D((U32)Video_StartBuffer>>1);

rLCDSADDR2=M5D((((U32)Video_StartBuffer +(SCR_XSIZE*LCD_YSIZE))>>1)) (MVAL<<21)|1<<29;

rLCDSADDR3= (LCD_XSIZE/2) | ( ((SCR_XSIZE-LCD_XSIZE)/2)<<9 ); rREDLUT =0xfdb96420; rGREENLUT=0xfdb96420; rBLUELUT =0xfb40; rDITHMODE=0x0;

rDP1_2 =0xa5a5; rDP4_7 =0xba5da65; rDP3_5 =0xa5a5f; rDP2_3 =0xd6b; rDP5_7 =0xeb7b5ed; rDP3_4 =0x7dbe; rDP4_5 =0x7ebdf; rDP6_7 =0x7fdfbfe; rDITHMODE=0x12210;

rLCDCON1=(1)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<<12); break; default: return 1; }

return 0; }

)| |

中断向量的初始化:

void KeyINT_Init(void) {

if ((rINTPND & BIT_EINT4567)) {

SPC = BIT_EINT4567; }

rINTMSK = ~(BIT_GLOBAL|BIT_EINT4567);

}

RTC的初始化:

void Rtc_Tick_Init(void) {

if ((rINTPND & BIT_TICK)) {

rI_ISPC = BIT_TICK;

}

rINTMSK &= ~(BIT_GLOBAL | BIT_TICK);

rRTCCON = 0x0;

- 6 -

rTICINT = 1 | (1<<7) }

void Rtc_Tick_Init0(void) {

if ((rINTPND & BIT_TICK)) {

rI_ISPC = BIT_TICK; }

rINTMSK &= ~(BIT_GLOBAL | BIT_TICK); rRTCCON = 0x0; rTICINT = 1 | (1<<6); }

第四节 构建功能模块

LCD显示的时钟界面包括:静止不动的圆形钟面和一直在走动的时钟指针。 所以需要构建两个重要的函数实现画圆和画直线。 画圆函数:

该算法是通过X变量的自增,补偿1 修正正方形控制Y变量自减,找到距中心恒定距离的点,其中rs=45,X自0加1增至45。和原点坐标运算,可以在第一象限找到一点,再通过折叠对称找到其他象限的三个点,通过画点函数描绘出。再画他的45度镜像就好了。

- 7 -