北京科技大学 嵌入式课程设计报告

合集下载

嵌入式课程设计报告完整版

嵌入式课程设计报告完整版

目录前言 (2)一、U-Boot分析 (3)1、引导程序U-Boot第一阶段分析 (3)2、引导过程 (4)3、程序流程图 (8)二、程序设计 (8)三、心得体会 (9)前言ARM嵌入式处理器已被广泛应用于消费电子厂品、无线通信、网络通信和工业控制等领域。

在嵌入式操作系统中,Linux、Vxworks、WinCE三足鼎立,其中Linux由于其开源性、稳定性、安全性、可裁剪性更是一支独秀。

在嵌入式系统中,如何实现在ARM平台下Linux操作系统的引导工作是嵌入式技术开发的重要环节。

BootLoader就是在操作系统内核运行之前运行的一段小程序。

通过这段小程序,我们可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。

在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader 来完成。

比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。

一、U-Boot分析嵌入式Linux系统中常用的Bootloader引导程序有U-Boot,redboot, blob 和vivii等,其中U-Boot遵循GPL条款的开放源码项目,功能最为强大,U-Boot 对PowerPC系列处理器支持最丰富,同时还支持MIPS,x86,ARM,XScale等诸多常用系列的处理器;U-Boot引导程序分为Stage1和Stage2量大部分,Stage1中主要包括设备初始化、中断设置、时间设置和储存器初始化等工作,并且采用汇编语言实现,而一些通用功能大多采用C语言实现,放在Stage2中。

1、引导程序U-Boot第一阶段分析Stage1的代码在CPU/arm920t/start.s中定义,它包括从系统上电后在0x00000000地址开始执行的部分。

北科大嵌入式课程设计

北科大嵌入式课程设计

嵌入式系统课程设计一、课设目的与要求1、对嵌入式程序开发在课堂教学的基础上有进一步的认识。

2、了解Windows CE下编程,掌握EVC的使用。

3、熟悉PXA270-EP实验设备。

二、课设题目(选做其中一个)1、LED数码管驱动程序(60分)2、GPIO数码管驱动程序(60分)3、Windows CE 计算器(60分)4、文本编辑框(40分)5、滑动条控制显示红、绿、蓝三色的程序(60分)6、LED数字显示控件(70分)三、课设要求(一)编程语言:EVC在Windows 下可以运行用Visual 开发的.net平台上运行的软件,但这样的软件是最上层的软件,离操作系统内核太远了。

不但执行效率相对较低,而且还要把.net框架加到内核中。

所以在大多数情况下,EVC仍然是第一选择。

此次课设也是为了增强同学们在CE下EVC编程能力。

(二)在能达到所有要求基础上,并且实现其它难度较高的技术,文档中加以详细阐述将酌情给与1-10分的附加分。

1、LED数码管驱动程序要求编写一个测试程序,实现PXA270-EP目标板上的LED数码管循环显示数字2,4,6,8。

2、GPIO数码管驱动程序要求编写一个测试程序,实现PXA270-EP目标板的核心板上的LED闪烁产生亮7秒,灭5秒的效果。

3、Windows CE 计算器1)利用对话框设计一个简单的计算器。

2)可以实现加、减、乘、除等功能。

3)显示计算结果,并要求正确。

4、文本编辑框1)利用对话框实现文本显示。

2)对话框中具有显示、清除、退出等功能。

5、滑动条控制显示红、绿、蓝三色的程序1)滑动条是一种交互式的、直观的控件。

它包括一个沿着控件长度滑动的滑块框和用于显示值的范围的可选刻度标志。

2)在对话框中放置了三个滑动条控件,分别显示红色、绿色、蓝色。

6、LED数字显示控件1)创建LED数字显示控件2)利用该控件显示数字3)结合LED数字显示控件和PXA270EP实验箱七段数码管同时显示数字(三)完成时间:16周考核时带上课程设计报告(四)课题报告按下列要求用A4幅面打印纸打印(每人1份)1、封面部分:课设题目名称、小组成员分工名单(班级、姓名、学号);2、正文部分:中英文的摘要和关键词,课设目的,课题设计功能与设计特色,模块介绍与使用手册(关键点需要有截图、程序流程、程序源码(带注释)),测试结果性能分析和小结(主要包括在设计过程中的收获)。

嵌入式课程设计报告

嵌入式课程设计报告
译、调试等功能。
调试工具
使用GDB等调试工具进行程序调试, 可实现断点设置、变量查看、堆栈跟
踪等功能。
版本控制工具
使用Git等版本控制工具进行代码管理 ,实现多人协作开发、版本回溯等功 能。
性能分析工具
使用Valgrind等性能分析工具进行程 序性能分析,可实现内存泄漏检测、 函数调用关系分析等功能。
课程设计总结与展望
总结本次课程设计的经验教训和收 获,展望嵌入式系统未来的发展趋 势和应用前景。
02
硬件平台选择与搭建
常见嵌入式硬件平台比较
ARM平台
高性能、低功耗,广泛应用于智能手机、 平板电脑等移动设备。
PowerPC平台
高性能、高可靠性,适用于工业控制、航 空航天等高端应用设备、 数字电视等领域。
07
总结与展望
本次课程设计收获总结
理论与实践结合
通过本次课程设计,深入理解了 嵌入式系统的基本原理,同时将 理论知识应用于实际项目中,实 现了理论与实践的有机结合。
技能提升
在课程设计过程中,掌握了嵌入 式系统开发的基本技能,包括硬 件设计、软件编程和调试技术等 。
团队合作
与团队成员紧密合作,共同完成 了课程设计的任务,提高了团队 协作和沟通能力。
05
系统实现过程与代码展示
关键模块代码实现技巧分享
模块化设计
将系统划分为多个独立的功能模块,每个模块具有明 确的接口和功能,便于代码的管理和复用。
高效算法选择
针对系统需求,选择合适的算法和数据结构,以提高 代码执行效率。
代码优化
通过减少冗余代码、提高代码可读性和可维护性,降 低系统资源消耗。
系统集成测试方法论述
嵌入式课程设计报告

嵌入式系统课程设计报告

嵌入式系统课程设计报告

嵌入式系统课程设计报告一、教学目标本课程的教学目标是使学生掌握嵌入式系统的基本概念、原理和设计方法,能够运用嵌入式系统进行实际项目的开发和实现。

具体来说,知识目标包括了解嵌入式系统的定义、特点、分类和应用领域;掌握嵌入式系统的硬件和软件组成及工作原理;熟悉嵌入式操作系统的基本概念和常用操作系统。

技能目标包括能够使用嵌入式系统开发工具和平台进行程序设计和调试;具备嵌入式系统硬件电路的设计和调试能力;能够运用嵌入式系统进行实际项目的开发和实现。

情感态度价值观目标包括培养学生的创新意识和团队合作精神,提高学生解决实际问题的能力和责任感。

二、教学内容根据课程目标,本课程的教学内容主要包括嵌入式系统的基本概念、原理和设计方法。

具体包括以下几个方面:1. 嵌入式系统的定义、特点、分类和应用领域;2. 嵌入式系统的硬件组成,如处理器、存储器、输入输出接口等;3. 嵌入式系统的软件组成,如固件、操作系统、应用程序等;4. 嵌入式操作系统的基本概念和常用操作系统;5. 嵌入式系统的设计方法和开发流程;6. 嵌入式系统硬件电路的设计和调试方法;7. 嵌入式系统在实际项目中的应用和案例分析。

三、教学方法为了实现课程目标,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

通过多样化的教学方法,激发学生的学习兴趣和主动性。

具体教学方法如下:1. 讲授法:通过讲解嵌入式系统的基本概念、原理和设计方法,使学生掌握相关知识;2. 讨论法:通过分组讨论和课堂讨论,培养学生的思考能力和团队合作精神;3. 案例分析法:通过分析实际项目案例,使学生了解嵌入式系统在实际中的应用和设计方法;4. 实验法:通过实验操作和调试,锻炼学生的动手能力和实际问题解决能力。

四、教学资源为了支持教学内容和教学方法的实施,本课程将选择和准备以下教学资源:1.教材:选用权威、实用的嵌入式系统教材,为学生提供系统的学习资料;2. 参考书:推荐学生阅读相关参考书籍,丰富学生的知识体系;3. 多媒体资料:制作课件、教案等多媒体教学资料,提高课堂教学效果;4. 实验设备:准备嵌入式系统开发板、仿真器等实验设备,为学生提供实践操作的机会。

嵌入式课程设计实训报告

嵌入式课程设计实训报告

一、实训目的通过本次嵌入式课程设计实训,使学生掌握嵌入式系统设计的基本原理和方法,提高学生的实际操作能力和创新意识,培养学生的团队协作精神。

同时,通过实训,使学生熟悉嵌入式系统的硬件平台、软件开发环境,掌握嵌入式编程语言,了解嵌入式系统的调试和测试方法。

二、实训内容本次实训以设计一个简单的温室环境监测系统为例,主要包括以下几个方面:1. 系统需求分析温室环境监测系统主要实现对温室内部光照、温度、湿度的实时监测,并根据监测结果自动调节环境参数,确保温室内的作物生长环境稳定。

系统需具备以下功能:(1)实时监测光照、温度、湿度等环境参数;(2)根据预设阈值,自动调节环境参数;(3)通过LCD显示屏实时显示监测数据;(4)通过串口通信将数据传输至上位机;(5)具有按键控制功能,如开关报警、手动调节等。

2. 硬件平台设计本次实训采用STM32系列微控制器作为核心控制单元,结合DS18B20数字温度传感器、DHT11数字湿温度传感器、光敏电阻、LCD显示屏、蜂鸣器、按键等外围设备,构建温室环境监测系统硬件平台。

3. 软件设计(1)系统初始化:初始化微控制器,配置相关外设参数,设置中断优先级等。

(2)数据采集:通过ADC读取光敏电阻的模拟值,计算光照强度;通过DS18B20和DHT11传感器读取温度和湿度数据。

(3)数据处理:对采集到的数据进行处理,如温度、湿度阈值判断,光照强度阈值判断等。

(4)环境参数调节:根据预设阈值,自动调节加热装置、风扇等设备,以实现环境参数的自动调节。

(5)数据显示:通过LCD显示屏实时显示光照、温度、湿度等数据。

(6)串口通信:通过串口将数据传输至上位机。

(7)按键控制:实现报警功能、手动调节等功能。

4. 系统调试与测试在系统开发过程中,对硬件平台和软件进行调试和测试,确保系统稳定运行。

主要测试内容包括:(1)硬件测试:检查各外设是否正常工作,如传感器、显示屏、按键等。

(2)软件测试:测试系统功能是否满足需求,如数据采集、处理、显示、通信等。

嵌入式系统课程设计报告

嵌入式系统课程设计报告

NORTH CHINA UNIVERSITY OF SCIENCE AND TECHNOLOGY 嵌入式系统课程设计报告学生姓名:学号:学院:专业班级:指导教师:同组成员:2016年12 月26 日一、课程设计目的本课程设计是在《嵌入式系统原理与应用》课程的基础上,通过软件编程及仿真调试的实践,进一步掌握嵌入式系统的原理和应用方法,是毕业设计前的一次重要实践,为今后从事嵌入式系统相关工作岗位打下良好的基础。

二、设计题目及要求2.1 设计题目:基于STM32和uC/OS-II的多任务设计2.2 功能实现:使用uC/OS-II的任务管理函数和STM32库函数控制相应的寄存器,完成一个多任务设计。

整个设计共有4个任务,驱动一个LED指示灯闪烁、由3个LED指示灯组成的流水灯、驱动蜂鸣器和利用swd方式进行printf输出。

2.3 设计要求:理解和熟练使用KEIL软件、STM32寄存器、STM32库函数和uC/OS-II 任务管理函数,用KEIL软件完成编程和调试,下载到开发板中实现4个设定的任务,并完成课程设计报告。

四个任务分别为:(1)驱动1个LED指示灯闪烁、(2)由3个LED指示灯组成流水灯(3)驱动蜂鸣器发出响声。

(4)利用swd方式进行printf输出。

三、设计原理说明3.1 硬件说明本次课程设计主要使用的是STM32 神舟IV 号开发板为基础进行课程设计的,本节将详细介绍神舟IV号开发板的各部分硬件原理与实现。

(1)开发板资源图(2)MCU开发板的处理器是STM32F107VCT6,该处理器基于ARM V7 架构的Cortex-M3 内核,主频72Mhz,内部含有256K字节的FLASH 和64K字节的SRAM,LQFP100 封装。

(3)蜂鸣器开发板板载一个无源蜂鸣器,用于产品告警或声音提醒。

蜂鸣器连接到了处理器的PA3管脚,当处理器的PA3管脚输出低电平时蜂鸣器开始鸣响,反之处理器的PA3管脚输出高电平时蜂鸣器停止鸣响.(4)指示灯开发板提供了1个电源指示灯和4路通用LED指示灯。

嵌入式课程设计报告毕业论文教案

嵌入式课程设计报告毕业论文教案

嵌入式课程设计报告毕业论文教案一、教学目标通过本课程的学习,学生应该能够:1.了解嵌入式系统设计的基本原理和流程2.掌握基本的嵌入式硬件和软件开发技术3.能够使用开发板和相关工具进行嵌入式系统的设计和开发4.掌握常用的接口协议和通信方式,包括串口通信、SPI、I2C、CAN等5.能够设计和开发基本的嵌入式应用程序,如LED灯的控制、按键的检测、温度传感器的读取等二、教学内容及安排1.嵌入式系统概述内容:介绍嵌入式系统的定义、特点、应用领域、市场和发展趋势等内容。

时间:2学时2.嵌入式系统设计流程内容:介绍嵌入式系统设计的主要步骤和流程,包括需求分析、硬件设计、软件设计、测试和调试等内容。

时间:4学时3.嵌入式开发环境搭建内容:介绍嵌入式开发环境的基本配置和使用,包括Keil C51软件、ST-LINK下载器、ST-FLASH工具等。

时间:4学时4.嵌入式硬件设计内容:介绍嵌入式硬件设计的基本原理和方法,包括硬件选型、电路原理图设计、PCB布局和焊接等内容。

时间:10学时5.嵌入式软件设计内容:介绍嵌入式软件设计的基本原理和方法,包括汇编语言、C语言、编译、调试和下载等内容。

同时讲解如何使用方案手册和数据手册加速学习。

时间:16学时6.嵌入式应用程序设计内容:介绍嵌入式应用程序的设计和开发,包括LED灯的控制、按键的检测、温度传感器的读取、串口通信、SPI/I2C接口的应用等内容。

时间:14学时7.嵌入式系统测试和调试内容:介绍嵌入式系统的测试和调试方法,包括硬件测试、软件测试、仿真测试和调试工具等内容。

时间:4学时三、教学方法1.理论教学与实践结合,提高学生的实际操作能力。

2.讲授代码编写方法,由浅入深、由简到难地进行讲解。

3.组织实验、调试和考试等考核环节,促进学生知识的巩固和提高。

4.引导学生通过网络、图书馆等途径自主学习和获取嵌入式技术知识,培养学生的自主学习和创新能力。

四、教学手段1.教师演示和现场演示,帮助学生理解课程内容并进行实践操作。

嵌入式课程设计报告

嵌入式课程设计报告

嵌入式课程设计报告一、课程设计目的1.1 掌握linux开发环境的搭建;1.2巩固嵌入式交叉编译的开发思想;1.3掌握嵌入式GUI软件设计技。

,.二、课程设计要求输入信号为 1 路AV 视频信号,要求系统能对 1 路输入信号进行实时采集,数字化处理,压缩,存储,要保证一定的录像质量. 根据设计题目的要求,选择确定ARM 芯片型号,视频采集芯片型号,完成系统硬件设计和程序设计.三、课程设计内容设计原理ARM10 系列微处理器为低功耗的32 位RISC 处理器,最适合用于对价位和功耗要求较高的消费类应用.ARM10 系列微处理器的主要应用领域为:工业控制,Internet 设备,调制解调器设备,移动电话等多种多媒体和嵌入式应用.视频监控系统总体设计首先需要对系统进行总体规划,将系统划分成几个功能模块,确定各个模块的实现方法.整个视频监控系统采用C/S 结构,从主体上分为两部分:服务器端和客户端.服务器端主要包括S3C4510 平台上运行的采集,压缩,传输程序,客户端是PC 机上运行的接收,解压,回放程序.视频监控终端从摄像头捕获实时的视频信息,压缩之后通过以太网传输到视频监控服务器上.视频图像采集和打包发送在服务器端完成,图像的接收解包和回放将在客户端完成. 采集图像数据压缩打包发送接收系统的硬件设计系统采用模块化设计方案,主要包括以下几个模块:主控制器模块,储存电路模块, 外围接口电路模块,电源和复位电路,S3C4510 主控器模块主控器模块是整个系统的核心,采用的S3C4510B 处理器.Samsung 公司的S3C45 10B 是基于以太网应用系统的高性价比16/32 位RISC 微控制器,内含一个由ARM 公司设计的16/32 位ARM7TDMI RISC 处理器核,ARM7TDMI 为低功耗,高性能的16/32 核,系统存储电路模块主控器还需一些外围存储单元如Nand Flash,和SDRAM.Nand Flash 中包含Lin ux 的Bootloader,系统内核,文件系统,应用程序以及环境变量和系统配置文件等;S DRAM 读写速度快,系统运行时把它作为内存单元使用.外围电路模块外围电路主要是以下几个电路,复位电路图,电源电路图以及JTAG 电路,三、课程设计设备及工具硬件:UP-NETARM2410-S嵌入式实验仪、PC机、ov511摄像头;软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMR-LINUX开发环境。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《嵌入式控制系统》课程设计报告学院专业班级姓名学号指导教师 _目录摘要 (4)Abstract (4)引言 (5)带中断LED数码管驱动程序设计 (6)1.设计内容 (6)1.1 基本功能 (6)1.2 扩展功能 (6)1.3创新功能 (6)2.实验设备 (6)3.设计功能块说明 (6)4.设计原理 (7)4.1 LED发光原理 (7)4.2 八位LED显示器 (8)5. 实验步骤 (8)5.1 驱动程序加载 (8)5.2 添加控件 (8)5.3基本功能的实现 (9)5.4 使用指南 (10)6. 实验结果 (10)6.1 基本功能实现结果 (10)6.2 LED数码管清零功能实现结果 (11)6.3 中断计数功能实现结果 (12)6.4 频率设置功能实现结果 (13)7. 心得体会 (14)附录 (16)摘要通过嵌入式控制系统课程的学习并结合本次课程设计,了解嵌入式系统的开发方法和流程,熟悉Intel XScale硬件平台及其应用处理机的使用方法,熟悉Windows CE嵌入式系统的基本原理、概念。

能针对Intel XScale硬件平台、应用需求自行定制、优化WinCE操作系统,并独立编写可在Intel XScale嵌入式设备上运行的应用程序。

本课程设计主要实现了LED数码管的驱动程序,中断计数功能、LED显示清零功能、LED 数字显示频率设置的功能。

关键字:WINCE 中断数码管驱动AbstractLearning Embedded Control Systems and combining the curriculum design can help us understand the Embedded Control Sy stems’ development methods and processes, and be familiar with Intel XScale Hardware platform and its usage. Know well the basic principles and concepts about WINCE. Design and optimize Windows Embedded Compact and compose Application software program that can operate on the Intel XScale Hardware platform.The main achievement of the curriculum design are drivers for LED, Interrupt Count, clean the results of the LED and set up the display frequency of the LED.Key words: WINCE Interrupt Digital Driving引言随着芯片技术和电子产品智能化的飞速发展,嵌入式技术越来越受到人们的关注,应用领域几乎遍及所有的电子产品:智能机器人、网络通信、军用设备、汽车导航、环境保护、智能仪器等等。

嵌入式系统不仅融合了计算机软、硬件技术、通讯技术和半导体微电子技术,而且针对实际应用系统要求,将相应的计算机直接嵌入到应用系统中,并可针对应用需求对软、硬件进行优化、裁减。

嵌入式控制系统是一门新兴的课程,通过本次课程设计可以更好地掌握这门新技术,对今后的发展有很大帮助。

带中断LED数码管驱动程序设计1.设计内容1.1 基本功能1.实现PXA270-EP 目标板上的LED 数码管循环显示数字2,4,6,8;2.实现LED数码管数字的静态显示;3.通过GPIO控制发光二极管的不同工作状态。

1.2 扩展功能使用实验箱上的按键实现LED数码管的清零工作,进一步扩展了基本功能。

1.3创新功能1.通过编写程序实现对中断次数的计数功能;4.通过中断功能实现对2,4,6,8数字循环显示频率的更改。

2.实验设备1、GX-PXA270EP 实验箱2、装有windows XP的PC3.设计功能块说明该课程设计主要是有4个功能模块组成:LED 数码管循环显示数字2,4,6,8和数码管的静态显示、LED数码管显示数字清零、中断次数计数、更改2,4,6,8数字循环显示频率,通过这四个功能模块的实现加深对嵌入式控制系统的认识和理解。

了解嵌入式系统的开发方法和流程,熟悉Intel XScale硬件平台及其应用处理机的使用方法,熟悉WINCE嵌入式系统的基本原理、概念。

4.设计原理4.1 LED发光原理LED(Light Emitting Diode),即发光二极管。

是一种半导体固体发光器件。

它是利用固体半导体置于一个有引线的架子上,然后四周用环氧树脂密封,起到保护内部芯线的作用,所以LED的抗震性能好。

发光二极管的核心部分是由P型半导体和N型半导体组成的晶片,如图1,在P型半导体和N型半导体间有一个过渡层,称为P-N结。

在某些半导体材料的P-N结中,注入的少数载流子与多数载流子复合时,会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。

P-N结加反向电压,少数载流子难以注入,故不发光。

利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。

当它处于正向工作状态时(即两端加上正向电压),电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。

图1 发光二极管的核心组成部分4.2 八位LED显示器八段LED显示器(见图2)由8个发光二极管组成。

基中7个长条形的发光管排列成“日”字形,另一个点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。

LED显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED 显示器。

图2 八位LED显示器内部原理图5. 实验步骤5.1 驱动程序加载任何简单的硬件在操作系统上调用时都需要驱动程序,数码管也不例外。

由于时间的限制,本次课程设计的开发板上的flsh里面已经烧录了加载驱动的WinCE操作系统,所以只需要打开相应的EVC开发软件开发即可。

5.2 添加控件因为本次课程设计有四个功能模块,需要三个显示控件,一个用于循环显示静态数码管需要显示的数字,一个用于显示中断次数,最后一个则用于显示更改数码管循环显示的频率。

见图3控件设计图。

图3 控件设计图其中,显示按钮是作为数码管静态显示的按钮,如显示1235;亮、灭、闪烁这三个按键是通过GPIO控制发光二极管的状态;测试按键是实现2,4、6、8数码管循环动态显示的按钮;复位按键是实现中断次数清零功能的按钮;Apply按键是启动更改的循环显示周期的按键。

以上就是整个课程设计的全部控制界面,通过不同的按钮操作,实现不同的功能。

5.3基本功能的实现windowsCE是一个界面友好的嵌入式操作系统,系统提供了丰富了控件,极大的方便了用户的开发。

C++是优秀的编程语言,在EVC环境下,编写的难度大大降低,尤其是界面的处理。

由于实验平台提供了相应的驱动程序,所以本次实验并不需要了解其硬件操作,大大缩短了一个嵌入式应用的开发速度。

通过本次嵌入式实验的操作,初步掌握了嵌入式软件开发的流程,对操作系统的裁剪、移植、应用软件的开发有了更加深入的理解。

5.4 使用指南1.启动PC机,打开编写好的软件;2.在显示框中输入想要LED显示的数字,然后按显示按钮即可;3.通过点击亮、灭、闪烁这三个按键实现发光二极管的不同工作状态的切换;4.通过点击测试按键实现2,4、6、8数码管循环动态显示;5.通过复位按键实现中断次数清零的功能;6.通过设置闪烁周期(0~9),点击Apply按键启动更改的循环显示周期。

6. 实验结果6.1 基本功能实现结果基本功能主要包括数码管的静态显示和2、4、6、8数字的循环显示,见图4和图5图4数码管静态显示画面图5 LED数码管循环显示2,4,6,76.2 LED数码管清零功能实现结果通过控制面板上的操作按键,实现清零功能,当按键按下去之后,四个LED数码管的显示数字全部都会变为零。

见图6图6数码管清零结果6.3 中断计数功能实现结果中断计数功能的实现是通过实验箱上的按键实现的,每按一次按键,中断次数就会加一,通过控件上的复位按钮可以实现中断次数清零功能。

见图7.图7中断计数功能实现结果6.4 频率设置功能实现结果闪烁周期可以通过键盘输入来进行设置,本课程设计设置的为0~9之间,基值为100ms,通过改变闪烁周期来控制2、4、6、8循环显示的频率。

见图8.和图9.图8 闪烁周期为5时的结果图9 闪烁周期为9时的结果7. 心得体会WINCE是一个界面友好的嵌入式操作系统,系统提供了丰富了控件,极大的方便了用户的开发。

C语言是优秀的编程语言,在EVC环境下,编写的难度大大降低,尤其是界面的处理。

由于实验平台提供了相应的驱动程序,所以本次实验并不需要了解其硬件操作,大大缩短了一个嵌入式应用的开发速度。

通过本次嵌入式实验的操作,初步掌握了嵌入式软件开发的流程,对操作系统的裁剪、移植、应用软件的开发有了更加深入的理解。

这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于解决。

在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后进行解决,。

课设中我们不仅培养了独立思考、动手操作的能力,也增强了我们的团队协作能力。

有什么不懂不明白的地方要及时请教老师或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识。

附录程序清单// ledDlg.cpp : implementation file#include "stdafx.h"#include "led.h"#include "ledDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CLedDlg dialogCLedDlg::CLedDlg(CWnd* pParent /*=NULL*/): CDialog(CLedDlg::IDD, pParent){//{{AFX_DATA_INIT(CLedDlg)// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CLedDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CLedDlg)// NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CLedDlg, CDialog)//{{AFX_MSG_MAP(CLedDlg)ON_BN_CLICKED(IDC_BUTTON_SET, OnButtonSet)ON_WM_DESTROY()ON_BN_CLICKED(IDC_BUTTON_ON, OnButtonOn)ON_BN_CLICKED(IDC_BUTTON_OFF, OnButtonOff)ON_BN_CLICKED(IDC_BUTTON_FLASH, OnButtonFlash)ON_WM_TIMER()ON_BN_CLICKED(IDC_BUTTON_TEST, OnButtonTest)ON_BN_CLICKED(IDC_BUTTON_RESET, OnButtonReset)ON_BN_CLICKED(IDC_BUTTON_APPLY, OnButtonApply)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CLedDlg message handlersBOOL CLedDlg::OnInitDialog(){CDialog::OnInitDialog();// Set the icon for this dialog. The framework does this automatically // when the application's 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(m_hDev == INVALID_HANDLE_VALUE){AfxMessageBox(_T("打开设备失败"));}m_hDev2 = CreateFile(_T("GIO1:"),GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);if(m_hDev2 == INVALID_HANDLE_VALUE){AfxMessageBox(_T("打开设备失败"));}m_hDev3 = CreateFile(_T("KEY1:"),GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);if(m_hDev3 == INVALID_HANDLE_VALUE){AfxMessageBox(_T("打开设备失败"));}m_test=false;m_flash=false;n=0;ntime=0;flashtime=5;SetTimer(1,100,NULL);return TRUE; // return TRUE unless you set the focus to a control }void CLedDlg::OnButtonSet(){// TODO: Add your control notification handler code hereBOOL b;BYTE data[4];DWORD bytes;//KillTimer(1);m_test=FALSE;UINT val =GetDlgItemInt(IDC_EDIT_NUM,&b,FALSE);memset(data,0,4);if(b){int i,n;char str[16];n = sprintf(str,"%d",val);n = n > 4 ? 4:n;for(i=0;i<n;i++){data[i]=ledfont[str[i]-'0'];}}WriteFile(m_hDev,data,4,&bytes,NULL);}void CLedDlg::OnDestroy(){CDialog::OnDestroy();// TODO: Add your message handler code here CloseHandle(m_hDev);}void CLedDlg::OnButtonOn(){// TODO: Add your control notification handler code here //KillTimer(1);m_flash=FALSE;m_bValue = FALSE;WriteFile(m_hDev2,&m_bValue,4,&m_dwBytes,NULL);}void CLedDlg::OnButtonOff(){// TODO: Add your control notification handler code here//KillTimer(1);m_flash=FALSE;m_bValue = TRUE;WriteFile(m_hDev2,&m_bValue,4,&m_dwBytes,NULL);}void CLedDlg::OnButtonFlash(){// TODO: Add your control notification handler code herem_flash=!m_flash;}void CLedDlg::OnTimer(UINT nIDEvent){// TODO: Add your message handler code here and/or call defaultBYTE test[4]={2,4,6,8};BYTE data[4];DWORD bytes;DWORD val=0;static DWORD oldval=1;int i;ntime++;if(ntime >= flashtime){if(m_flash==TRUE){m_bValue=!m_bValue;WriteFile(m_hDev2,&m_bValue,4,&m_dwBytes,NULL);}if(m_test==TRUE){memset(data,0,4);for(i=0;i<4;i++){data[i]=ledfont[test[(i+n)%4]];}n++;n=n%4;WriteFile(m_hDev,data,4,&bytes,NULL);}ntime = 0;}if(ReadFile(m_hDev3,&val,sizeof(val),&bytes,NULL)){if(val!=oldval){SetDlgItemInt(IDC_EDIT_INTERRUPT,val,FALSE);oldval=val;m_test=FALSE;for(i=0;i<4;i++){data[i]=ledfont[0];}WriteFile(m_hDev,data,4,&bytes,NULL);}}else{TCHAR str[64];wsprintf(str,TEXT("Error %d"),GetLastError());SetDlgItemText(IDC_EDIT_INTERRUPT,str);}CDialog::OnTimer(nIDEvent);CDialog::OnTimer(nIDEvent);}void CLedDlg::OnButtonTest(){// TODO: Add your control notification handler code herem_test=!m_test;}void CLedDlg::OnButtonReset(){// TODO: Add your control notification handler code hereDWORD bytes;DWORD val=0;WriteFile(m_hDev3,&val,sizeof(DWORD),&bytes,NULL);}void CLedDlg::OnButtonApply(){// TODO: Add your control notification handler code hereBOOL b;UINT val =GetDlgItemInt(IDC_EDIT_FLASHTIME,&b,FALSE);if(b){int n;char str[16];n = sprintf(str,"%d",val);flashtime=str[0]-'0';if(flashtime==0){flashtime=1;}}}。

相关文档
最新文档