基于ARM9内核的2440开发板的汉字显示与窗口移动的实现

时间:2022-09-30 02:23:40

基于ARM9内核的2440开发板的汉字显示与窗口移动的实现

摘要:当你兴高采烈的拿到一块新买的2440开发板,却不知如何下手的时候,本文想通过一个屏幕显示实验,了解开发板的实验开工过程,将帮助你怎样利用板上资源实现自己的设计目标。

关键词:ARM2440;汉字显示;窗口移动

ARM9具有比单片机强得多的功能,它把单片机的许多外部接口电路都集成到了芯片内部,既降低了成本,又提高了系统的可靠性。但是,ARM9的使用却异常复杂,没有象单片机那样的极易上手,应用之方便了。利用ARM9开发板进行一些二次开发,不失为一种多快好省的办法。

本文使用的开发板型号为:TQ2440,4.3吋屏幕。

一 设计目标

在TQ2440开发板上显示中英字文本,并能通过按键中断实现文字窗口的上、下、左、右移动。

二 实验开工

当你买到一块ARM9开发板的时候,一般会附送一些接口连接线和一张光盘,内部会有一些出厂程序,这是我们应该好好利用的。打开包装,拿出里面的实验板,用随机附带的RS-232串口线,USB线,把ARM9开发板与电脑主机连接起来,并插好开发板电源(先不要打开开发板电源)。

三 建立软件开发环境

(1)启动电脑主机,安装附送光盘上的ADS1.2(在“E:\TQ2440_CD\Windows平台开发工具包\ADS1.2”下,其中“E:”为光盘所在目录)。

(2)安装并设置串口工具软件SecureCRT.exe。这是个将开发板与电脑主机建立起串行连接的串行口连接工具软件,比超级终端好用。该软件包在“E:\TQ2440_CD\Windows平台开发工具包”文件夹下面,找到该软件包并复制到“D:\”下并解压。运行SecureCRT.exe,单击快速连接图标,设置使用的协议为“Serial”,端口为“COM1”,波特率为:115200,并去掉RTS/CTS前面的钩,单击“连接”。将内存选择开关打到“NOR Flash”,打开电源,电脑屏幕提示,发现新硬件,需安装开发板的USB设备驱动程序。该驱动程序包的路径为“E:\TQ2440_CD\Windows平台开发工具\USB下载驱动.rar”,解压后,按提示安装即可。按开发板的复位键,会发现电脑屏幕上出现串口工具窗口,提示选择下载模式。

(3)安装并设置开发板烧写工具软件DWN.exe。该软件包也在“E:\TQ2440_CD\Windows平台开发工具包”文件夹下面,找到该软件包并复制到“D:\”下并解压。该工具软件的设置比较简单,运行DWN.exe,单击菜单 “Configuration”/“Options”,设置波特率为115200,端口为“COM2”,(如有冲突,换一个端口),下载地址为“0x3000000”。

到此,建立软件开发环境基本完成。

四 修改原出厂镜像

(1)修改原出厂程序默认屏幕尺寸

1)复制并解压光盘中自带的测试程序TQ2440_Test_20100607.rar(在“E:\TQ2440_CD\TQ2440测试程序”下)。

2)打开开编辑项目文件TQ2440_test.mcp(比如说是解压缩在“D:\TQ2440_Test_20100607”下),只要双击文件名TQ2440_test.mcp ,即可打开编辑。

3)修改开发板屏幕尺寸大小。因原出厂程序默认的屏幕尺寸为3.5吋,而实际用的,是4.3寸,要修改一下。步骤:a,在标签为TQ2440_test.mcp的窗口中,右击LCD_TFT.c,选择“编译”;2、单击LCD_TFT.c右边的下拉箭头,选择“LCD_TFT.h”;3、将第14行中的“LCDW35”,改为:“LCDW43”,并保存文件;

(2)移植字库

1)复制光盘中的文件:E:\TQ2440_CD\uCOS-II\uCOS-II_20091031.rar 到D盘根目录下并解压。

2)复制D:\uCOS-II_20091031\S3C2440\source\Font_Libs.c到D:\TQ2440_Test_20100607\src中。

3)添加字库文件到项目中:只要在TQ2440_Test.mcp窗口,单击右键,选择:“Add files…”,在弹出的窗口中,打开src文件夹,选中“Font_Libs.c”,点击“打开”,再点击“OK”即可。

(3)让开发板显示汉字

1)在LCD_TFT.c 的开头位置,添加外部数组申明:

extern unsigned char __CHS[];

extern unsigned char __VGA[];

2)打开D:\uCOS-II_20091031\uCOS-II.mcp ,再打开lcd.c ,将里面的Lcd_PutASCII( )、void Lcd_PutHZ( )、Lcd_printf()这三个函数复制到项目D:\TQ2440_Test_20100607\TQ2440_Test.mcp中的LCD_TFT.c 文件末尾并在开头添加函数申明。

3)删除 Lcd_printf ( ) 函数中开头的这几行(或加上“// ”):

// char __LCD_Printf_Buf[256];

// va_list ap;

// unsigned char *pStr = (unsigned char *)__LCD_Printf_Buf;

unsigned int i = 0;

// va_start(ap,fmt);

// vsprintf(__LCD_Printf_Buf,fmt,ap);

// va_end(ap);

4)将 void Lcd_printf(unsigned int x,unsigned int y,unsigned int c,unsigned int bk_c,unsigned int st,char *fmt,...) 改为:void Lcd_printf(unsigned int x,unsigned int y,unsigned int c,unsigned int bk_c,unsigned int st,char *pStr) ,可避免许多编译错误。

(4)让开发板全屏显示汉字并实现窗口移动

1)在void KeyScan_Test(void) 函数中,加入:

void KeyScan_Test(void)

{

Uart_Printf("\nKey Scan Test,press ESC key to exit !\n");

rGPBUP = rGPBUP & ~0x03f0|0x03f0; // LED [8:5] => UP En

rGPBCON = rGPBCON & ~0x3d57fc|0x3d57fc; //LED[8:5] => OUTPUT;

rGPFCON = rGPFCON & (~((3

rEXTINT0 &= ~(7|(7

rEXTINT0 |= (0|(0

rEINTPEND |= (1

rEINTMASK &= ~(1

ClearPending(BIT_EINT0|BIT_EINT1|BIT_EINT2|BIT_EINT4_7);

pISR_EINT0 = pISR_EINT1 = pISR_EINT2 = pISR_EINT4_7 = (U32)Key_ISR;

EnableIrq(BIT_EINT0|BIT_EINT1|BIT_EINT2|BIT_EINT4_7);

i=0;

j=0;

flag=0;

while (1)

{

Lcd_ClearScr((0x1f

Lcd_printf(16*i,16*j+16*0,0x0000,(0x1f

Lcd_printf(16*i,16*j+16*1,0x0000,(0x1f

……

……

Lcd_printf(16*i,16*j+16*31,0x0000,(0x1f

while(!flag)

{

Delay(200);

}

flag=0;

} // while (1) 循环结束

}

2)在键盘中断处理函数中作如下修改:

static void __irq Key_ISR(void)

{

U8 key;

U32 r;

EnterCritical(&r);

if(rINTPND==BIT_EINT1)

{

if (flag==0)

{

j=j+1;

flag=1;

}

ClearPending(BIT_EINT1);

}

if(rINTPND==BIT_EINT4_7)

{

ClearPending(BIT_EINT4_7);

if(rEINTPEND&(1

{

Uart_Printf("eint4\n");

if (flag==0)

{

j=j-1;

flag=1;

}

rEINTPEND |= 1

}

}

if(rINTPND==BIT_EINT0)

{

Uart_Printf("eint0\n");

if (flag==0)

{

i=i-1;

flag=1;

}

ClearPending(BIT_EINT0);

}

if(rINTPND==BIT_EINT2)

{

Uart_Printf("eint2\n");

if (flag==0)

{

i=i+1;

flag=1;

}

ClearPending(BIT_EINT2);

}

}

3)在keyscan( ) 函数中,添加全局变量定义:

int i,j,flag ;

4)在标签为TQ2440_test.mcp的窗口中,选中所有文件,单击“Project”/“Compile”,重新编译文件。再单击“Project”/“Make”,连接文件;如发现“0”个错误,这说明一切正常。检查“D:\TQ2440_Test_20100607\TQ2440_Test_Data\DebugRel ”目录下,有没有“TQ2440_Test.bin ”文件,这就是可用于开发板烧写的文件。

(5)烧写目标文件

步骤:1)连接好串行口线、USB线,开发板电源;

2)打开串口工具SecureCRT,内存选择开头打到Norflash ,打开开发板电源或按复位键,在串口工具窗口中,选择a 进入等待下载状态;

3)打开烧写工具DNW ,单击菜单项“USB Port”/“Transmit ”,找到需要烧写的 .bin 文件,双击,即可完成目标文件烧写至NandFlash 中。

(6)检查烧写成果

将内存选择开关打到“NandFlash ”,按开发板上的复位键重新启动,在SecureCRT 窗口中,会显示刚烧写的测试程序功能选择菜单,选择功能:“4:Test interupt and key scan ”,即可在开发板屏幕上显示刚才输入的汉字,按开发板上的上、下、左、右键,还能移动文字窗口。

上一篇:从服装的用途来谈服装的功能设计 下一篇:做自己的庄家