免费论文查重: 大雅 万方 维普 turnitin paperpass

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

最后更新时间:2024-04-16 作者:用户投稿原创标记本站原创 点赞:36274 浏览:162215
论文导读:
摘要:当你兴高采烈的拿到一块新买的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_2010060

7.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_2009103

1.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”即可。
论文导读:ntf_Buf;unsignedinti=0;//va_start(ap,fmt);//vsprintf(__LCD_Printf_Buf,fmt,ap);//va_end(ap);4)将voidLcd_printf(unsignedintx,unsignedinty,unsignedintc,unsignedintbk_c,unsignedintst,char*fmt,...)改为:voidL源于:毕业论文致谢格式www.7ctime.com
 (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 L源于:毕业论文致谢格式www.7ctime.com
cd_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<<4)|(3<<0)|(3<<8)|(3<<2))) | ((2<<4)|(2<<0)|(2<<8)|(2<<2)) ;//GPF4,2,1,0 set EINT
rEXTINT0 &= ~(7|(7<<4)|(7<<8)|(7<<16));
rEXTINT0 |= (0|(0<<4)|(0<<8)|(0<<16));//set eint0,1,2,4 falling edge int
rEINTPEND |= (1<<4);//clear eint 4
rEINTMASK &= ~(1<<4);//enable eint 4
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<<11) | (0x3f<<5) | (0x00));
Lcd_printf(16*i,16*j+16*0,0x0000,(0x1f<<11) | (0x3f<<5) | (0),1,"海燕");
Lcd_printf(16*i,16*j+16*1,0x0000,(0x1f<<11) | (0x3f<<5) | (0),1,"在苍茫的大海上,狂风卷集着乌云。在乌云和大海之间,海燕象黑色的闪电");
……
……
Lcd_printf(16*i,16*j+16*31,0x0000,(0x1f<<11) | (0x3f<<5) | (0),1,"--让暴风雨来得/更猛烈些吧!....");
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;
f论文导读:=0){i=i+1;flag=1;}ClearPending(BIT_EINT2);}}3)在keyscan()函数中,添加全局变量定义:inti,j,flag;4)在标签为TQ2440_test.mcp的窗口中,选中所有文件,单击“Project”/“Compile”,重新编译文件。再单击“Project”/“Make”,连接文件;如发现“0”个错误,这说明一切正常。检查
lag=1;
}
ClearPending(BIT_EINT1);
}
if(rINTPND==BIT_EINT4_7)
{
ClearPending(BIT_EINT4_7);
if(rEINTPEND&(1<<4))
{
Uart_Printf("eint4\n");
if (flag==0)
{
j=j-1;
flag=1;
}
rEINTPEND |= 1<< 4;
}
}
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,内存选择开头打到Nor摘自:毕业论文答辩www.7ctime.com
flash ,打开开发板电源或按复位键,在串口工具窗口中,选择a 进入等待下载状态;
3)打开烧写工具DNW ,单击菜单项“USB Port”/“Tranit ”,找到需要烧写的 .bin 文件,双击,即可完成目标文件烧写至NandFlash 中。
(6)检查烧写成果
将内存选择开关打到“NandFlash ”,按开发板上的复位键重新启动,在SecureCRT 窗口中,会显示刚烧写的测试程序功能选择菜单,选择功能:“4:Test interupt and key scan ”,即可在开发板屏幕上显示刚才输入的汉字,按开发板上的上、下、左、右键,还能移动文字窗口。