




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式控制系统课程设计报告时 间 _学 院 自动化 _专业班级 _姓名 _学号 合 作 者 _ 指导教师 _摘要 随着芯片技术和电子产品智能化的飞速发展,嵌入式技术越来越受到人们的关注,应用领域几乎遍及所有的电子产品:智能机器人、网络通信、军用设备、汽车导航、环境保护、智能仪器等等。嵌入式系统融合了计算机软、硬件技术、通讯技术和半导体微电子技术,针对实际应用系统要求,将相应的计算机直接嵌入到应用系统中,并可针对应用需求对软、硬件进行优化、裁减。本次课程要求在gx-pxa270ep平台下开发出一个简单的windowsce应用程序,达到初步了解嵌入式软件开发的流程。关键词:嵌入式 软件 windo
2、wsceabstractwith 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 protection, intell
3、igent 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 system, and app
4、lication 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目录摘要1abstract1引言1led数
5、码管驱动程序21 实验内容22 实验设备23 实验设计原理23.1 led发光管原理23.2 八位led显示器24 实验步骤34.1 加载驱动程序34.2 添加控件34.3 添加按钮响应程序44.4 基本功能的实现44.5 时钟功能的实现54.5 按键设置时钟64.5文本框设置时钟125 实验结果135.1 基本功能135.2 时钟功能14结论15参 考 文 献16附 录171 程序清单led_1dlg.cpp172 程序清单led_1dlg.h27引言 通过嵌入式控制系统课程的学习并结合本次实验,使学生了解嵌入式系统的开发方法和流程,熟悉intel xscale硬件平台及其应用处理机的使用方
6、法,熟悉windows ce嵌入式系统的基本原理、概念。并能针对intel xscale硬件平台、应用需求自行定制、优化wince操作系统,并独立编写可在intel xscale嵌入式设备上运行的应用程序。本小组由三人组成,程顺均、白茹和马志达。在课程设计中,分工明确,团结协作,最终顺利完成里基本题目的第一个题目并且自行设计一个功能复杂的电子表。程顺均负责了主要的程序设计,白茹和马志达负责硬件的连线等。 led数码管驱动程序1 实验内容基本功能:要求编写一个测试程序,实现pxa270-ep 目标板上的led 数码管循环显示数字2,4,6,8。扩展功能:使用数码管和相关控件实现一个24小时制的时
7、钟,液晶屏界面和数码管同时显示时间,并方便更改。2 实验设备1、gx-pxa270ep 实验箱2、装有windows xp的pc3 实验设计原理3.1 led发光管原理led(light emitting diode),即发光二极管。是一种半导体固体发光器件。它是利用固体半导体置于一个有引线的架子上,然后四周用环氧树脂密封,起到保护内部芯线的作用,所以led的抗震性能好。发光二极管的核心部分是由p型半导体和n型半导体组成的晶片,如图3.8.2,在p型半导体和n型半导体之间有一个过渡层,称为p-n结。在某些半导体材料的pn结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,
8、从而把电能直接转换为光能。pn结加反向电压,少数载流子难以注入,故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管,通称led。当它处于正向工作状态时(即两端加上正向电压),电流从led阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。3.2 八位led显示器八段led显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个贺点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。led显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极led显示器;另一种是8个发光二极管的阴极都连在一起的
9、,称之为共阴极led显示器。图 3-1 数码管内部原理图4 实验步骤4.1 加载驱动程序任何简单的硬件在操作系统上调用时都需要驱动程序,数码管也不例外。由于时间的限制,本次实验的开发板上的flash里面已经烧录了加载驱动的windowsce操作系统,所以只需要打开相应的evc开发软件开发即可。4.2 添加控件为了让数码管在一个程序下演示两个功能,所以这里添加了一个基本功能的按钮,当按下这个按钮时,数码管进入循环显示状态,数码管从左到右轮流显示,分别显示2、4、6、8,时间间隔为1s。添加按钮控件后,在属性里面更改其外观。图 4-1 添加按钮控件效果图4.3 添加按钮响应程序单独的添加了按钮,只
10、是在界面上多了一个按钮罢了,但是按钮按下后还没有响应程序。在对话框的编辑界面下,双击按钮,输入响应函数名称,即插入了相应的消息处理函数。如复位按钮的处理函数。void cled_1dlg:onbutton1() / todo: add your control notification handler code herefor(int i = 0; i 3?yni = 0图 4-2 基本功能实现流程图4.5 时钟功能的实现为了实现时钟,同样需要使用定时器。设备只有4位数码管,所以不显示秒而只显示时和分。在对话框类里面定义成员数组变量,用于保存时间的4个位。ledshow2ledshow1led
11、show3ledshow0图 4-3 四位数码管显示变量表示图显示的4位数字并不是任意的,有一定的约束和规律,如分显示到59时的下一个状态时00而不是60,时显示到23时的下一个状态是00而不是24。这样的规则应该应用于定时响应函数中。也就是void cled_1dlg:ontimer(uint nidevent)的实现代码中。一分钟到分数加一分数59?nyn分归零,小时加一小时数23?小时归零y显示图 4-4 四位数码管显示变量表示图4.5 按键设置时钟时间与标准时间不一样时,需要进行校正。本次实验的时钟设置的方式有两种,直接输入校正和按钮校正。按钮校正时,一共有8个按键,分别对应4个数字的
12、加操作和减操作。但是由于存储的时候保存为整形,所以不能无节制的加减,得有一定的规则。下面为按键的程序框图。 小时十位加按键按下ledshow0+ledshow1 3?nyledshow0 2?ledshow0 1?nyyledshow0 = 0ledshow0 = 0显示结束图 4-5 小时十位加调整按键响应程序流程小时十位减按钮按下ledshow0-ledshow1 3?nyledshow00?ledshow09?ledshow13?nyyledshow1 = 0ledshow1 = 0显示结束图 4-7 小时个位加调整按键响应程序流程图小时个位加按钮按下ledshow1-ledshow0
13、=2?nyledshow10?ledshow10?nyyledshow1 = 3ledshow1 = 9显示结束图 4-8 小时个位减调整按键响应程序流程图 分钟十位减按键按下ledshow2-ledshow25?ledshow2 = 0显示结束nyyy图 4-9 分钟十位加调整按键响应程序流程图 图 4-10 分钟十位减调整按键响应程序流程图 分钟个位减按键按下ledshow3-ledshow39?ledshow2 = 0显示结束nnyy图 4-11 分钟个位加调整按键响应程序流程图 图 4-12 分钟个位减调整按键响应程序流程图时钟在运行过程中是00:0023:59的24个状态中的一个,所
14、以在调整时间的时候必须要限制其状态。其具体的规则如上面流程图所示:1、 小时个位不能大于22、 当小时个位大于3时,个位不能大于13、 当小时个位小于4时,个位不能大于24、 当小时十位大于1时,个位不能大于35、 当小时十位小于2时,个位不能大于96、 小时的个位和十位都不能小于零7、 分钟十位不能大于5,8、 分钟个位不能大于99、 分钟的十位和个位不能小于零4.5文本框设置时钟文本框是windowsce中的一个常用的控件,将文本框拖到对话框中,将属性设置为可写,并设置其id为id_edit1。使用getdlgitemint(idc_edit1,&b,false)函数可以读取文本内容,并将
15、其转换为整数。使用sprintf(str,%d,val)可以将获取的整数转换为字符串,最后通过对每个字符减去0的偏移,即可到到四个数字。最后将四个数字赋给时钟的四个变量即可。提交获取字符,转换为整数将整数字符化将字符转换为数字09显示结束图 4-13 文本设置时间提交按钮响应程序流程图5 实验结果5.1 基本功能程序编写好后,下载实验板上,运行起来一个窗口界面。图 5-1 程序运行的窗口点击基本功能按钮就会出现2、4、6、8的轮流显示的效果,每次只显示一位,每一位的显示时间为1s,并且无限循环下去。当按下停止按钮,循环停止。图 5-2 基本功能效果图之一5.2 时钟功能在停止模式下,从文本框中
16、设置好时间提交,则可以设置当前时间,然后按下使用按钮,时钟开始运行。标准时间模式下,一分钟数据时间更新一次。实验中为了方便看到现象,使用settimer(1,1000,null)替换了settimer(1,60000,null),这样时间加快了更新。八个按键可以再停止模式或者运行模式调整时间,由于按键处理函数加入了对数字的限制,所以不会得到非法的时间。另外,在用于显示的函数中加入了对文本框的设置函数,所以文本框中的内容,所以文本框的内容始终会与数码管的内容保持一致。图 5-3 时间运行到02:05的效果结论windowsce是一个界面友好的嵌入式操作系统,系统提供了丰富了控件,极大的方便了用户
17、的开发。c+是优秀的编程语言,在evc环境下,编写的难度大大降低,尤其是界面的处理。由于实验平台提供了相应的驱动程序,所以本次实验并不需要了解其硬件操作,大大缩短了一个嵌入式应用的开发速度。通过本次嵌入式实验的操作,初步掌握了嵌入式软件开发的流程,对操作系统的裁剪、移植、应用软件的开发有了更加深入的理解。参 考 文 献1 杨旭著. 嵌入式课程设计(小学期) . 北京:北京科技大学,2008.2 古万荣著. visual c+完全自学手册m .北京:北京.机械工业出版社,2009附 录1 程序清单led_1dlg.cpp 1/ led_1dlg.cpp : implementation file
18、#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, pparent)/afx_data_init(cled_1dlg)/ note: the classwizard will add member i
19、nitialization 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);/afx_data_map(cled_1dlg)/ note: the classwizard will add ddx and ddv calls
20、 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_button4, onbutton4)on_bn_clicked(idc_button5, onbutton5)on_bn_clicked(idc_butt
21、on6, 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)on_bn_clicked(idc_button11, onbutton11)on_bn_clicked(idc_button12, onbutton
22、12)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 automatically/ when the applications main window is not a dialogseticon(m_hicon, tr
23、ue);/ 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(m_hdev = invalid_handle_value)afxmessagebox(_t(打开设备失败!请联系程顺均);m_hdev_io =
24、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()/ todo: add your control notification handler code herefor(int i = 0; i 4; i+)le
25、dshowi = 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,4,&bytes,null); /驱动数码管显示for(i = 0; i 2 | ledshow0*10 + ledshow1 23 )ledshow
26、0 = 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 = 0;show(); /调用显示函数void cled_1dlg:onbutton5()/ todo: add your control notifi
27、cation 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 handler code hereledshow2-;if(ledshow2 9) /分钟个位不能大于9ledshow3 = 0;show(); /调用显示函数
28、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; /如果分钟十位清零ledshow1+; /小时个位加一if(ledshow0*10 + ledshow1 23 | ledshow1 9)/如果小数数大于/23或者个位
29、大于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 control notification handler code herebasic_flag = 1; /设置系统为基本功能settimer(1,100
30、0,null); /一秒钟一次中断2 程序清单led_1dlg.h/ led_1dlg.h : header file/#if !defined(afx_led_1dlg_h_95659977_53b1_45dc_a958_9c77b50c2e22_included_)#define afx_led_1dlg_h_95659977_53b1_45dc_a958_9c77b50c2e22_included_#if _msc_ver = 1000#pragma once#endif / _msc_ver = 1000/ cled_1dlg dialogconst byte ledfont = 0x
31、fc,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/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 33840-2025水套加热炉通用技术要求
- 河南省郑州市2025届高三下学期二模试题 英语 含解析
- 球馆火灾应急专项预案(3篇)
- 行政管理复习提纲试题与答案
- 银鸽火灾应急预案(3篇)
- 制定火灾应急处置预案(3篇)
- 法学概论考试中的解决方案与应对策略与试题与答案
- 运输车队火灾应急预案(3篇)
- 2025年IT行业的未来机遇试题及答案
- 网络管理员考试全局分析技巧试题及答案
- 博物馆环境卫生保洁方案
- 产品方案设计模板
- 人民大2023张占录-张正峰-国土空间规划学课件第2章-国土空间规划原理
- 2024考研408真题+答案
- 静脉治疗护理技术操作标准解读
- 公司行政服务接待工作培训
- 2024年江西省高考物理试卷真题(含答案解析)
- 基于单片机的汽车智能照明系统-毕业设计(论文)
- 技术人员外包服务合同(3篇)
- 赛力斯招聘在线测评题
- 《中医基础理论》课程教案
评论
0/150
提交评论