嵌入式课程设计Word格式文档下载.docx
《嵌入式课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《嵌入式课程设计Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
4、实验五:
建立宿主机与实验箱的连接6
5、实验六:
USBDevice建立宿主机与试验箱之间的连接8
6、实验七:
在试验箱的WinCE平台上的HelloWorld实验9
7、实验八:
数码管驱动10
8、实验九:
GPIOLed数码管程序11
二、课程设计报告13
1、课程目的13
2、设计题目与功能13
2.1计算器13
2.2滑动条颜色控制14
3、开发工具14
3.1PlatformBuilder5.014
3.2EmbeddedVisualC++14
4、设计过程15
4.1计算器设计15
4.1.1设计思路15
4.1.2控件15
4.1.3代码分析16
4.1.4数码管显示20
4.2滑动条设计21
4.2.1设计思路21
4.2.3代码分析21
4.3测试与调试23
4.3.1计算器测试23
4.3.2滑动条测试24
5、总结与体会25
一、实验报告
实验概述:
GX-PXA270EP(ExperimentPlatform)是一款基于处理器,针对高校嵌入式系统教学和实验科研的平台。
通过嵌入式控制系统课程的学习结合试验,了解嵌入式系统的开发方法和流程,熟悉INTELXSCALEPXA270硬件平台及其应用处理机的使用方法,熟悉WindowsCE嵌入式系统的基本原理、概念。
利用PlatformBuilder定制平台并编译,并能针对INTELXSCALEPXA270硬件平台、应用需求自行控制、优化WinCE操作系统,并采用编程软件eMbeddedVisualC++,独立编写可INTELXSCALEPXA270硬件嵌入式设备上运行的应用程序。
图1
建立并编译WinCE平台
1.1实验目的:
掌握PB下WinCE平台定制
1.2实验内容:
开始利用PlatformBuilder定制平台并编译。
1.3实验流程:
1、安装好PlatformBuilder平台以后,为平台安装PXA270配套的IntelBSP;
2、对于嵌入式操作系统,不同的硬件设备,它的操作系统镜像是不同的,但是基本的操作过程及环境是相同的,所以定制一个系统镜像文件NK.bin。
1.4实验结果:
构建映像,如果构建成功,那么会得到操作系统运行时映像,默认的名字是NK.bin。
1.5实验小结:
构建平台的运行时映像,如下图所示。
选择PlatformBuilder主界面中的BuildOS菜单,确保CopyFiletoReleaseDirectoryAfterBuild和MakeRun-timeImageAfterBuild两项被选中,然后选择BuildOS|Sysgn开始构建。
图2
定制增强型内核
2.1实验目的:
1.熟悉PlatformBuilder集成开发环境以及相关配置。
2.利用PlatfoermBuildr定制一个增强型内核。
2.2实验内容:
定制一个Word,图片浏览等并能从设备接口进行宿主机与目标板通信的内核。
2.3实验流程:
1、在实验3.1的基础上,打开已经创建好的PlatformBuilder(PB),在PB右边的Catalog中添加其他组件;
2、对工程进行配置,并编译,当所有设置完成,开始编译定制好的增强型平台。
编译的结果,生成了Eboot和NK.bin映象文件;
3、完成之后,在终端进行相应配置;
4、启动烧录有Eboot的实验箱,在超级终端按空格键,进入Eboot设置选项;
5、在超级终端中按6,将ProgramRAMimageintoFLASH项由ENABLED切换到DISABLED;
6、当完成Eboot的配置后,键入D,准备下载内核的映象文件NK.bin到实验箱上。
7、映像文件的下载。
2.4实验结果:
试验一和实验二结果见文件夹中NK.bin文件。
2.5实验小结:
当找到相应在PB右边的Catalog中添加其他组件困难时,可采用找到相应的组后单击右键,利用“find“找到所需的组件。
定制SDK并建立EVC下的开发环境
3.1实验目的:
熟悉SDK,配置EVC下的开发环境。
3.2实验内容:
生成SDK并安装,配置EmbeddedVisualC++的开发环境。
3.3实验流程:
1、利用PlatformBuilder平台建立向导,建立平台;
2、编译,下载和运行平台;
3、使用PlatformBuilder定制SDK(软件开发工具包);
4、安装此SDK后,即可实现在此模拟器上运行开发好的应用程序。
3.4实验结果:
实验三结果见文件夹Emulator。
3.5实验小结:
找到SDK保存地址,保存,在在安装SDK后,即可实现在此模拟器上运行开发好的应用程序。
建立宿主机与实验箱的连接
4.1实验目的:
学习掌握利用SMSC91C111网口建立宿主机与试验箱的连接。
4.2实验内容:
利用利用SMSC91C111网口建立宿主机与试验箱的连接。
4.3实验流程:
(1)在弹出的对话框“DeviceProperties”中如下图所示设置,然后单击“Transport”下拉框右边的“Configue…”按钮。
图3
(2)在弹出的对话框“TCP/IPTransportConfiguration”中可以设置超时值、端口号、主机IP,点击Test便可出现模拟器环境
图4
4.4实验结果:
图1显示为为利用网口建立宿主机与试验箱连接上传和下载图。
图5
4.5实验小结:
测试连接成功以后,如下图所示,根据需要依次选择我们所需的SDK、CPU和设备,才能保证正常运行模拟器。
图6
USBDevice建立宿主机与试验箱之间的连接
5.1实验目的:
学习掌握利用USBDevice网口建立宿主机与试验箱的连接。
5.2实验内容:
5.3实验流程:
1、ActiveSync安装;
2、用USB延长线连接试验箱和PC,当PC发现新设备时安装附带的驱动,安装完成以后,打开MicrosoftActiveSync窗口进行连接;
3、在上图我的电脑中双击“我的设备”将打开WINCE同步目录,可以拷贝文件到该目录或将文件从该目录拷贝到PC机。
5.4实验结果:
下图显示为通过USBDevice建立宿主机和试验箱连接后,WinCE显示从电脑上下载的歌曲。
图7
图8WinCE显示下载的歌曲
在试验箱的WinCE平台上的HelloWorld实验
6.1实验目的:
1.熟悉EVC集成开发环境以及相关配置
2.利用EVc编写WinCE的应用程序
6.2实验流程:
(1)在机器已安装实验箱所附带的SDK的基础上,启动MSeMbeddedVisualC++4.0,利用EVC的工程建立向导,建立一个新的工程;
(2)建立宿主机与试验箱之间的连接;
(3)测试连接成功以后,依次选择SDK、CPU和设备;
(4)在EVC环境下点击RUN即可在液晶显示屏上看到程序运行的结果,而在“我的电脑”里也可以看到下载到系统里的.exe文件,双击该文件,亦可运行程序。
6.3实验结果:
下图为利用EVC便携,编译并运行HelloWorld程序在WinCE上的显示。
图9WinCE显示HelloWorld
数码管驱动
7.1实验目的:
2.利用EVc编写一个针对实际硬件的驱动程序
7.2实验内容:
编写一个针对LED的驱动程序。
7.3实验流程:
(1)在3.2节定制好的平台基础上添加LED驱动,在ThirdParty中找到我们安装的BSP中的驱动,将其加入内核,并编译;
(2)启动MSeMbeddedVisualC++4.0,利用EVC的工程建立向导,建立一个新的工程;
(3)在ID为IDD_LED_DIALOG对话框上,编辑如下控件,包括两个:
编辑控件,其ID为IDC_EDIT_NUM,Caption为“显示”的button控件,其ID为IDC_BUTTON_SET。
(4)编写程序;
(5)Build->
RebuildAll,生成可执行文件:
(6)建立连接,传输,运行;
7.4实验结果:
图10利用EVC编写LED数码管驱动的程序,并在WinCE上显示。
图10WinCE上显示“4555”
7.5实验小结:
在测试时,中文出现乱码。
在ResourceView里面的IDD_LED_DIALOG右键选择properties,将弹出如下图所示对话框,Language中选择Chinese(P.R.C)。
只有这样,在以后的对话框中写入中文才不会出现乱码的情况。
GPIOLed数码管程序
8.1实验目的:
1.熟悉EmbeddedVisualC++集成开发环境以及相关配置。
2.利用EmbeddedVisualC++编写一个GPIO的LED应用程序。
8.2实验内容:
参照本实验指导书的步骤,编写一个通过GPIO控制LED的应用程序。
8.3实验流程:
(1)在3.2节定制好的平台基础上添加GPIOLED驱动,在ThirdParty中找到我们安装的BSP中的GPIOLED的驱动,将其加入内核,并编译;
(2)在机器已安装实验箱所附带的SDK的基础上,启动MSeMbeddedVisualC++4.0,利用EVC的工程建立向导,建立一个新的工程;
(3)在D_GPIOLED_DIALOG对话框上,编辑如下控件,包括三个:
Caption为“亮”的button控件,其ID为IDC_BUTTON_ON;
Caption为“灭”的button控件,其ID为IDC_BUTTON_OFF;
Caption为“闪烁”的button控件,其ID为IDC_BUTTON_FLASH。
(6)建立连接,传输,运行。
8.4实验结果:
图11利用EVC编写GPIOLed数码管的程序,并在WinCE上显示。
图11WinCE上显示“LED数码管”
8.5实验小结:
二、课程设计报告
1课程目的
通过嵌入式控制系统课程的学习并结合本次实验,了解嵌入式系统的开发方法和流程,熟悉IntelXScale硬件平台及其应用处理机的使用方法,熟悉WindowsCE嵌入式系统的基本原理、概念。
并能针对IntelXScale硬件平台、应用需求自行定制、优化WinCE操作系统,并独立编写可在IntelXScale嵌入式设备上运行的应用程序。
1、对嵌入式程序开发在课堂教学的基础上有进一步的认识。
2、了解WindowsCE下编程,掌握EVC的使用。
3、熟悉PXA270-EP实验设备。
2设计题目与功能
2.1计算器
在本次嵌入式实训,我们做的题目是用嵌入式知识做个模拟计算器,主要功能是模拟简单计算器的加减乘除功能。
要求系统启动后,先清屏,再在显示屏上自动显示个简易计算器的界面,然后输入数字即可进行简易的整数四则运算。
首先构建嵌入式计算器的整体概念,了解操作系统的引导程序以及装载原理,了解键盘扫描的原理以及理解运算的相应处理过程,多次调试驱动程序和应用程序,最终完成计算器的设计。
设计WinCE计算器主要是四个个功能:
基本运算,清零,错误识别,数码管显示。
1.基本运算:
主要实现加减乘除运算,通过调用EVC的函数实现相关功能。
2.清零:
初始化程序,使各个变量为初始值。
3.错误识别:
输入的值是字符型,通过Wcstod函数转换为双精度浮点型,对错误的输入进行纠正。
4.LED数码管显示:
增强内核,添加数码显示驱动,并在程序里添加相关显示程序。
2.2滑动条颜色控制
在本次嵌入式实训,我们在实现计算器的同时,加入了滑动条控制显示红、绿、蓝三色的功能,功能如下:
1)滑动条是一种交互式的、直观的控件。
它包括一个沿着控件长度滑动的滑
块框和用于显示值的范围的可选刻度标志。
2)在对话框中放置了三个滑动条控件,分别显示红色、绿色、蓝色
3开发工具
3.1PlatformBuilder5.0
PlatformBuilder是微软公司提供给WindowsCE开发人员进行基于WindowsCE平台下嵌入式操作系统定制的集成开发环境。
它提供了所有进行设计、创建、编译、测试和调试
WindowsCE操作系统平台的工具。
它运行在桌面Windows下,开发人员可以通过交互式的环境来设计和定制内核、选择系统特性,然后进行编译和调试。
同时,开发人员还可以利用PlatformBuilder来进行驱动程序开发和应用程序项目的开发等等。
PlatformBuilder的强大功能,已使其成为WindowsCE平台下嵌入式操作系统开发和定制的必备工具。
其SDK输出模板可以将特定系统的SDK导出,这可以是应用程序开发人员使用EVC就可以为特定的系统开发软件。
EVC调试的是应用程序软件,而PlatformBuilder往往要编译整个内核再调试,两者的开发效率是不同的。
3.2EmbeddedVisualC++
EmbeddedVisualc++4.0是微软公司提供的开发嵌入式应用软件的平台,它是VisualC++的子集,EVC和Windows下的VC在界面、语法和开发流程基本一样,EVC的编程也是WINN32的编程,支持WIN
API中的大部分函数,熟悉VC的人很快就会使用EVC进行开发。
EVC和PlatformBuilder的不同之处在于
PlatformBuilder针对的是操作系统的定制,编译目标是整个的内核,虽然
PlatformBuilder也能开发应用程序,但是这些应用程序是作为整个系统的一部分而存在,编译时还是以一个操作系统为单位;
EVC针对的是应用软件开发,特定操作系统的SDK就已经为它提供了系统的运行环境,因此它编译的单位是一个应用程序。
因此,针对于应用程序的开发、编译和测试,在EVC中完成往往是高效合理的。
4设计过程
4.1计算器设计
4.1.1设计思路
首先,新建一个窗体,并在其中放置相应的控件,之后根据具体情况,编写相应代码。
对于每个按钮的的代码段中,分别添加事件触发的相应代码。
分别设四个编辑框,第一个编辑框作为第一个操作数的输入框,第二个编辑框作为操作符的输入框,第三个编辑框则作为第二个操作数的输入框,第四个编辑框则作为计算结果显示框。
同时设立0-9数字的输入键,用来输入相应数字,设立小数计算功能。
四则运算时直接采用计算表达式。
所以,优先级和运算规则皆宜考虑在内。
在进行除法运算时,若遇到除数为0,则运用条件语句执行,并在输出显示屏上输出“E”。
当无运算符输入时,出现错误,显示“Pleasechooseoperator”的提示。
考虑到计算器的操作简便性,所以加入清屏键。
加入数码管驱动程序,实现数码管显示计算结果的功能。
4.1.2控件
计算器的每一个控件的名称如下:
名称
Name
0~9
OnButton0~9
.
OnButtonPoint
+
OnButtonAdd
CLC
OnButtonClear
—
OnButtonSub
=
OnButtonEqu
×
OnButtonMul
edit
OnChangeEdit1
╱
OnButtonDev
表1
4.1.3代码分析
(1)数字键0~9(以1为例):
voidCCalculatorDlg:
:
OnButton1()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData(TRUE);
//刷新数据
CStringstr;
//建立CString类的对象
if(select_flag==1)//选中第一个文本框EDIT1
{
GetDlgItem(IDC_EDIT1)->
GetWindowText(str);
//GetDlgItem返回窗口中指定参数ID的子元素的句柄,可以通过返回的句柄对窗口内的子元素进行操作
//GetWindowText该函数将指定窗口的标题条文本(如果存在)拷贝到一个缓存区内。
SetWindowText(str+_T("
1"
));
//将按键值输出到对话框
}
elseif(select_flag==2)//第二个文本框EDIT2
GetDlgItem(IDC_EDIT2)->
UpdateData(FALSE);
//刷新失败
}
(2)四则运算键(以加法为例):
OnBUTTONAdd()
GetDlgItem(IDC_EDIT4)->
SetWindowText(_T("
+"
//把“+”输出到EDIT4
sign=1;
//"
标志
(3)小数点键:
OnBUTTONPoint()
if(select_flag==1)
."
//将“.”输出到EDIT1
elseif(select_flag==2)
//将“.”输出到EDIT2
(4)清零CLC:
OnBUTTONClear()
GetDlgItem(IDC_EDIT1)->
"
//EDIT1清零
GetDlgItem(IDC_EDIT2)->
//EDIT2清零
GetDlgItem(IDC_EDIT3)->
//EDIT3清零
//EDIT4清零
(5)等号“=”:
voidCCalculatorDlg:
OnBUTTONEqu()
UINTfinal;
//定义一个32位无符号整数。
BYTEdata[4];
//定义一个4位的数组
DWORDbytes;
//bytes为双字
//B