嵌入式课程设计报告-北京科技大学(共32页).doc

上传人:飞****2 文档编号:12051386 上传时间:2022-04-23 格式:DOC 页数:32 大小:4.22MB
返回 下载 相关 举报
嵌入式课程设计报告-北京科技大学(共32页).doc_第1页
第1页 / 共32页
嵌入式课程设计报告-北京科技大学(共32页).doc_第2页
第2页 / 共32页
点击查看更多>>
资源描述

《嵌入式课程设计报告-北京科技大学(共32页).doc》由会员分享,可在线阅读,更多相关《嵌入式课程设计报告-北京科技大学(共32页).doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上嵌入式控制系统课程设计报告时 间 _学 院 自动化 _专业班级 _姓名 _学号 合 作 者 _ 指导教师 _摘要 随着芯片技术和电子产品智能化的飞速发展,嵌入式技术越来越受到人们的关注,应用领域几乎遍及所有的电子产品:智能机器人、网络通信、军用设备、汽车导航、环境保护、智能仪器等等。嵌入式系统融合了计算机软、硬件技术、通讯技术和半导体微电子技术,针对实际应用系统要求,将相应的计算机直接嵌入到应用系统中,并可针对应用需求对软、硬件进行优化、裁减。本次课程要求在GX-PXA270EP平台下开发出一个简单的windowsCE应用程序,达到初步了解嵌入式软件开发的流程。关键词

2、:嵌入式 软件 windowsCEAbstractWith the rapid development of chip technology and intelligent electronics, embedded technology more and more peoples attention, applications virtually all electronic products: intelligent robots, network communications, military equipment, car navigation, environmental prote

3、ction, intelligent instruments and so on. Embedded system integration of computer hardware and software technology, communication technology and semiconductor microelectronics technology for practical application of the system requirements, the corresponding computer directly into the application sy

4、stem, and application requirements for hardware and software to optimize the cut. This course requires at GX-PXA270EP platform to develop a simple windowsCE application, reaching a preliminary understanding of embedded software development process.Key Words:Embedded system software windowsCE专心-专注-专业

5、目录引言 通过嵌入式控制系统课程的学习并结合本次实验,使学生了解嵌入式系统的开发方法和流程,熟悉Intel XScale硬件平台及其应用处理机的使用方法,熟悉Windows CE嵌入式系统的基本原理、概念。并能针对Intel XScale硬件平台、应用需求自行定制、优化WinCE操作系统,并独立编写可在Intel XScale嵌入式设备上运行的应用程序。本小组由三人组成,程顺均、白茹和马志达。在课程设计中,分工明确,团结协作,最终顺利完成里基本题目的第一个题目并且自行设计一个功能复杂的电子表。程顺均负责了主要的程序设计,白茹和马志达负责硬件的连线等。 LED数码管驱动程序1 实验内容基本功能:

6、要求编写一个测试程序,实现PXA270-EP 目标板上的LED 数码管循环显示数字2,4,6,8。扩展功能:使用数码管和相关控件实现一个24小时制的时钟,液晶屏界面和数码管同时显示时间,并方便更改。2 实验设备1、GX-PXA270EP 实验箱2、装有windows XP的PC3 实验设计原理3.1 LED发光管原理LED(Light Emitting Diode),即发光二极管。是一种半导体固体发光器件。它是利用固体半导体置于一个有引线的架子上,然后四周用环氧树脂密封,起到保护内部芯线的作用,所以LED的抗震性能好。发光二极管的核心部分是由p型半导体和n型半导体组成的晶片,如图3.8.2,在

7、p型半导体和n型半导体之间有一个过渡层,称为p-n结。在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN结加反向电压,少数载流子难以注入,故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。当它处于正向工作状态时(即两端加上正向电压),电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。3.2 八位LED显示器八段LED显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个贺点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及

8、部份英文字母。LED显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED显示器。图 3-1 数码管内部原理图4 实验步骤4.1 加载驱动程序任何简单的硬件在操作系统上调用时都需要驱动程序,数码管也不例外。由于时间的限制,本次实验的开发板上的flash里面已经烧录了加载驱动的windowsCE操作系统,所以只需要打开相应的EVC开发软件开发即可。4.2 添加控件为了让数码管在一个程序下演示两个功能,所以这里添加了一个基本功能的按钮,当按下这个按钮时,数码管进入循环显示状态,数码管从左到右轮流显示,分

9、别显示2、4、6、8,时间间隔为1S。添加按钮控件后,在属性里面更改其外观。图 4-1 添加按钮控件效果图4.3 添加按钮响应程序单独的添加了按钮,只是在界面上多了一个按钮罢了,但是按钮按下后还没有响应程序。在对话框的编辑界面下,双击按钮,输入响应函数名称,即插入了相应的消息处理函数。如复位按钮的处理函数。void CLed_1Dlg:OnButton1() / TODO: Add your control notification handler code herefor(int i = 0; i 3?YNi = 0图 4-2 基本功能实现流程图4.5 时钟功能的实现为了实现时钟,同样需要使

10、用定时器。设备只有4位数码管,所以不显示秒而只显示时和分。在对话框类里面定义成员数组变量,用于保存时间的4个位。Ledshow2Ledshow1Ledshow3Ledshow0图 4-3 四位数码管显示变量表示图显示的4位数字并不是任意的,有一定的约束和规律,如分显示到59时的下一个状态时00而不是60,时显示到23时的下一个状态是00而不是24。这样的规则应该应用于定时响应函数中。也就是void CLed_1Dlg:OnTimer(UINT nIDEvent)的实现代码中。一分钟到分数加一分数59?NYN分归零,小时加一小时数23?小时归零Y显示图 4-4 四位数码管显示变量表示图4.5 按

11、键设置时钟时间与标准时间不一样时,需要进行校正。本次实验的时钟设置的方式有两种,直接输入校正和按钮校正。按钮校正时,一共有8个按键,分别对应4个数字的加操作和减操作。但是由于存储的时候保存为整形,所以不能无节制的加减,得有一定的规则。下面为按键的程序框图。 小时十位加按键按下Ledshow0+Ledshow1 3?NYLedshow0 2?Ledshow0 1?NYYLedshow0 = 0Ledshow0 = 0显示结束图 4-5 小时十位加调整按键响应程序流程小时十位减按钮按下Ledshow0-Ledshow1 3?NYLedshow00?Ledshow09?Ledshow13?NYYLe

12、dshow1 = 0Ledshow1 = 0显示结束图 4-7 小时个位加调整按键响应程序流程图小时个位加按钮按下Ledshow1-Ledshow0 =2?NYLedshow10?Ledshow10?NYYLedshow1 = 3Ledshow1 = 9显示结束图 4-8 小时个位减调整按键响应程序流程图 分钟十位减按键按下Ledshow2-Ledshow25?Ledshow2 = 0显示结束NYYY图 4-9 分钟十位加调整按键响应程序流程图 图 4-10 分钟十位减调整按键响应程序流程图 分钟个位减按键按下Ledshow3-Ledshow39?Ledshow2 = 0显示结束NNYY图 4

13、-11 分钟个位加调整按键响应程序流程图 图 4-12 分钟个位减调整按键响应程序流程图时钟在运行过程中是00:0023:59的24个状态中的一个,所以在调整时间的时候必须要限制其状态。其具体的规则如上面流程图所示:1、 小时个位不能大于22、 当小时个位大于3时,个位不能大于13、 当小时个位小于4时,个位不能大于24、 当小时十位大于1时,个位不能大于35、 当小时十位小于2时,个位不能大于96、 小时的个位和十位都不能小于零7、 分钟十位不能大于5,8、 分钟个位不能大于99、 分钟的十位和个位不能小于零4.5文本框设置时钟文本框是windowsCE中的一个常用的控件,将文本框拖到对话框

14、中,将属性设置为可写,并设置其ID为ID_EDIT1。使用GetDlgItemInt(IDC_EDIT1,&b,FALSE)函数可以读取文本内容,并将其转换为整数。使用sprintf(str,%d,val)可以将获取的整数转换为字符串,最后通过对每个字符减去0的偏移,即可到到四个数字。最后将四个数字赋给时钟的四个变量即可。提交获取字符,转换为整数将整数字符化将字符转换为数字09显示结束图 4-13 文本设置时间提交按钮响应程序流程图5 实验结果5.1 基本功能程序编写好后,下载实验板上,运行起来一个窗口界面。图 5-1 程序运行的窗口点击基本功能按钮就会出现2、4、6、8的轮流显示的效果,每次

15、只显示一位,每一位的显示时间为1S,并且无限循环下去。当按下停止按钮,循环停止。图 5-2 基本功能效果图之一5.2 时钟功能在停止模式下,从文本框中设置好时间提交,则可以设置当前时间,然后按下使用按钮,时钟开始运行。标准时间模式下,一分钟数据时间更新一次。实验中为了方便看到现象,使用SetTimer(1,1000,NULL)替换了SetTimer(1,60000,NULL),这样时间加快了更新。八个按键可以再停止模式或者运行模式调整时间,由于按键处理函数加入了对数字的限制,所以不会得到非法的时间。另外,在用于显示的函数中加入了对文本框的设置函数,所以文本框中的内容,所以文本框的内容始终会与数

16、码管的内容保持一致。图 5-3 时间运行到02:05的效果结论windowsCE是一个界面友好的嵌入式操作系统,系统提供了丰富了控件,极大的方便了用户的开发。C+是优秀的编程语言,在EVC环境下,编写的难度大大降低,尤其是界面的处理。由于实验平台提供了相应的驱动程序,所以本次实验并不需要了解其硬件操作,大大缩短了一个嵌入式应用的开发速度。通过本次嵌入式实验的操作,初步掌握了嵌入式软件开发的流程,对操作系统的裁剪、移植、应用软件的开发有了更加深入的理解。参 考 文 献1 杨旭著. 嵌入式课程设计(小学期) . 北京:北京科技大学,2008.2 古万荣著. Visual C+完全自学手册M .北京

17、:北京.机械工业出版社,2009附 录1 程序清单led_1Dlg.cpp 1/ led_1Dlg.cpp : implementation file#include stdafx.h#include led_1.h#include led_1Dlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CLed_1Dlg dialogCLed_1Dlg:CLed_1Dlg(CWnd* pParent /*=NULL*/): CDialog(CLed_1Dlg:IDD,

18、 pParent)/AFX_DATA_INIT(CLed_1Dlg)/ NOTE: the ClassWizard will add member initialization here/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CLed_1Dlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX)

19、;/AFX_DATA_MAP(CLed_1Dlg)/ NOTE: the ClassWizard will add DDX and DDV calls here/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CLed_1Dlg, CDialog)/AFX_MSG_MAP(CLed_1Dlg)ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_WM_DESTROY()ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_BN_CLICKED(IDC_BUTTON3, OnButton3)ON_BN_CLICKED(IDC_BUT

20、TON4, OnButton4)ON_BN_CLICKED(IDC_BUTTON5, OnButton5)ON_BN_CLICKED(IDC_BUTTON6, OnButton6)ON_BN_CLICKED(IDC_BUTTON7, OnButton7)ON_BN_CLICKED(IDC_BUTTON8, OnButton8)ON_BN_CLICKED(IDC_BUTTON9, OnButton9)ON_NOTIFY(NM_OUTOFMEMORY, IDC_SLIDER1, OnOutofmemorySlider1)ON_BN_CLICKED(IDC_BUTTON10, OnButton10)

21、ON_BN_CLICKED(IDC_BUTTON11, OnButton11)ON_BN_CLICKED(IDC_BUTTON12, OnButton12)ON_WM_TIMER()ON_BN_CLICKED(IDC_BUTTON13, OnBasic)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CLed_1Dlg message handlersBOOL CLed_1Dlg:OnInitDialog()CDialog:OnInitDialog();/ Set the icon for this dialog. The framework does this automati

22、cally/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small iconCenterWindow(GetDesktopWindow();/ center to the hpc screen/ TODO: Add extra initialization herem_hDev = CreateFile(_T(LED2:),GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);if

23、(m_hDev = INVALID_HANDLE_VALUE)AfxMessageBox(_T(打开设备失败!请联系程顺均);m_hDev_IO = CreateFile(_T(GPIO1:),GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);if(m_hDev_IO = INVALID_HANDLE_VALUE)AfxMessageBox(_T(打开设备失败!请联系程顺均);return TRUE; / return TRUE unless you set the focus to a controlvoid CLed_1Dlg:OnButton1()/ TOD

24、O: Add your control notification handler code herefor(int i = 0; i 4; i+)ledshowi = 0; /复位,清零show(); /调用显示函数,显示void CLed_1Dlg:show() /CLed_1Dlg类的成员函数,用于数码管驱动和文本框的显示BYTE data4;DWORD bytes;char str416;CString all; /用于文本框显示的字符串for(int i = 0; i 4; i+)datai = ledfontledshowi; /获取显示码WriteFile(m_hDev,data,

25、4,&bytes,NULL); /驱动数码管显示for(i = 0; i 2 | ledshow0*10 + ledshow1 23 )ledshow0 = 0; /清零show(); /调用显示函数void CLed_1Dlg:OnButton3()/ TODO: Add your control notification handler code hereledshow0-;if(ledshow0 3) /十位不能小于零,个位已经大于3ledshow0 = 1;/此时个位最大为1else if(ledshow0 0 & ledshow1 23 | ledshow1 9)ledshow1 =

26、 0;show(); /调用显示函数void CLed_1Dlg:OnButton5()/ TODO: Add your control notification handler code hereledshow1-;if(ledshow1 0 & 2 != ledshow0) /个位不能小于零,小时小于20ledshow1 = 9;/个位置9else if(ledshow1 5)ledshow2 = 0; /分钟十位不能大于5show(); /调用显示函数void CLed_1Dlg:OnButton7()/ TODO: Add your control notification handl

27、er code hereledshow2-;if(ledshow2 9) /分钟个位不能大于9ledshow3 = 0;show(); /调用显示函数void CLed_1Dlg:OnButton9()/ TODO: Add your control notification handler code hereledshow3-;if(ledshow3 4 ? 4 : n;for(i = 0; i 9) /分钟个位大于9ledshow3 = 0; /分钟数个位清零ledshow2+; /分钟十位加一if(ledshow2 5) /如果分钟十位大于5ledshow2 = 0; /如果分钟十位清零

28、ledshow1+; /小时个位加一if(ledshow0*10 + ledshow1 23 | ledshow1 9)/如果小数数大于/23或者个位大于9,清零ledshow1 = 0; /小时个位清零ledshow0 +; /小时十位加一if(ledshow0 2) /如果小时十位大于2ledshow0 = 0; /小时十位清零show();else if(1 = basic_flag)for(int i = 0; i 4)numofshow = 0;CDialog:OnTimer(nIDEvent);void CLed_1Dlg:OnBasic()/ TODO: Add your con

29、trol notification handler code herebasic_flag = 1; /设置系统为基本功能SetTimer(1,1000,NULL); /一秒钟一次中断2 程序清单led_1Dlg.h/ led_1Dlg.h : header file/#if !defined(AFX_LED_1DLG_H_53B1_45DC_A958_9C77B50C2E22_INCLUDED_)#define AFX_LED_1DLG_H_53B1_45DC_A958_9C77B50C2E22_INCLUDED_#if _MSC_VER = 1000#pragma once#endif /

30、 _MSC_VER = 1000/ CLed_1Dlg dialogconst BYTE ledfont = 0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6;/CString editstring;class CLed_1Dlg : public CDialog/ Constructionpublic:CLed_1Dlg(CWnd* pParent = NULL);/ standard constructorHANDLE m_hDev;HANDLE m_hDev_IO;bool m_bvalue;DWORD m_dwWrittenBytes;BYTE basic_flag;BYTE numofshow;void CLed_1Dlg:show(); int ledshow4;/ Dialog Data/AFX_DATA(CLed_1Dlg)enum IDD = IDD_LED_1_DIALOG ;/ NOTE: the ClassWizard will add data members here

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁