第一章 系统设计
第一节 课题目标及总体方案
一、设计要求
学习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 -