ImageVerifierCode 换一换
格式:DOC , 页数:19 ,大小:131.50KB ,
资源ID:1129872      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-1129872.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式技术课程报告.DOC)为本站会员(国***)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

嵌入式技术课程报告.DOC

1、嵌入式技术课程报告课题名称: 嵌入式技术课题负责人名(学号):曾睿(0643111150) 同组成员名单(角色): 无指导教师: 赵辉 李辉评阅成绩: 评阅意见: 提交报告时间:2008 年 12 月 23日课程名称:嵌入式技术 学生姓名:曾睿 学生学号:0643111150-1-基于 C/OS-II 红绿灯控制模拟系统的设计和实现软件工程 专业学生 曾睿 指导老师 赵辉、李辉摘要 红绿灯控制系统是当今现代社会必不可少的一种电子控制设备,属于最常见的实时嵌入式控制系统之一。C/OS-II 是目前最流行的基于优先级的抢占式多任务实时嵌入式操作系统之一,有便于移植、易于裁减、使用方便、可以固化等特

2、点,它使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化,因此在各种工业和交通控制系统中得到了广泛的应用。本文设计和实现了一个 C/OS-II 的红绿灯控制系统,经过在 PC平台上的仿真模拟,提高了最基本的交通控制功能,设计也更加人性化。关键词:C/OS-II,红绿灯控制系统,模拟仿真课程名称:嵌入式技术 学生姓名:曾睿 学生学号:0643111150-2-1. 系统需求本系统需要实现两个方向的红绿灯控制。在屏幕上用绿色的字母G表示绿灯,红色的字母S表示红灯。在相应信号灯字母的下方,用数字表示该信号灯切换的剩余时间。该时间每秒钟减一,减为零时,切换信号灯。信号灯切换时间缺省为 6

3、0秒。某方向由红灯切换为绿灯时,应有 3秒钟的缓冲时间,以确保另一方向的车辆安全通过。即在切换信号灯时,有 3秒钟的时间两个方向的信号灯都是红灯。不能出现两个方向都是绿灯的情况。用户可通过键盘输入信号灯切换时间,切换时间范围为 20秒120秒。用户输入的数字以回车键结束。对于错误的输入,系统可不作任何响应。对于正确的输入,下次信号灯切换后,采用新输入的切换时间。用户键入 ESC键后,退出该模拟程序。2. 系统设计2.1 采用 C/OS-II 做为操作系统内核C/OS-II 是一种基于优先级的抢占式多任务实时操作系统, 包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息 队列

4、)和内存管理等功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化。红绿灯控制系统对时间准确度要求较高,应用广泛,需要时常扩展,这样的要求与 C/OS-II 的特点都很吻合。C /OS-II还是一个完整的、可移植、可固化、可裁剪的占先式实时多任务内核。它的绝大部分代码是用 ANSI的 C语言编写的,包含一课程名称:嵌入式技术 学生姓名:曾睿 学生学号:0643111150-3-小部分汇编代码,使之可供不同架构的微处理器使用。至今,从 8位到6 4位,C/OS-II 已在超过 40种不同架构上的微处理器上运行。如此

5、广泛的应用正好迎合红绿灯控制系统的需求。实际上,C/OS-II 已经通过了非常严格的测试,并且得到了美国航空管理局(Federal Aviation Administration)的认证,可以用在飞行器上。这说明 C/OS-II 是稳定可靠的,可用于与人性命攸关的安全紧要(safety critical)系统。如今交通负担繁重,事故频繁,稳定可靠的红绿灯控制系统尤其重要,在 C/OS-II 下,保证了这一点。除此以外,C/OS-II 的鲜明特点就是源码公开,便于移植和维护。红绿灯控制系统应用广泛,数量众多,移植和维护就显得格外重要,基于 C/OS-II 的设计,可以减少很大的开支。2.2 实现

6、系统的任务设计本模拟系统一共采用了 C/OS-II 下三个任务来实现所有功能。void MyTask(void *data);这是第一个任务 MyTask,它实现了对东西方向路口红绿灯的控制,由于东西方向红绿灯信号是一致的,所以只用一个任务同时控制。void YouTask(void *data);这是第二个任务 YouTask,它实现了对南北方向路口红绿灯的控制,由于南北方向红绿灯信号是一致并与东西方向相反的,所以只用一个任务同时控制。void CtrlTask(void *data);这是第三个任务 CtrlTask,它实现了和用户的交互功能,包括读取用户通过键盘的输入和显示系统响应输入的

7、结果。是本系统人性化体现的主要部分。课程名称:嵌入式技术 学生姓名:曾睿 学生学号:0643111150-4-2.3 系统设计的评价本系统的优点和缺点都比较明显。优点:红绿灯切换时实现了缓冲 3秒,使得安全系数提高;实现了红绿灯切换时间实时更新,方便使用;比较突出的是用户输入错误时会给予提示,方便用户重新输入,更加人性化。缺点:由于红绿灯切换流程问题,使得用户键入新的切换时间后,需要等待下一轮才能更新切换时间;由于屏幕显示问题,当用户输入过多更新要求时,会覆盖整个屏幕,相信这个问题会在以后的深入研究中彻底解决。3. 系统实现3.1 main 函数说明main 函数是基于 C/OS-II 系统应

8、用程序开发必需的主函数,它主要用来初始化 C/OS-II,保存 DOS环境,安装中断,创建第一个任务并启动 C/OS-II 的多任务管理。调用 OSInit() 调用 PC_DOS 调用 PC_VectSet(SaveReturn() uCOS,OSCtxSw)调用OSTaskCreate调用OSStart()课程名称:嵌入式技术 学生姓名:曾睿 学生学号:0643111150-5-3.2 各个任务的实现说明MyTask 实现东西方向信号的控制,首先安装 C/OS-II 时钟,然后定义一个计时器,初始为红绿灯切换一轮的时间,每秒递减 1,在任务主循环中,根据计时器计时,一半的时间显示绿色字母“

9、G ”表示目前处于绿灯,一半显示红色字母“S”表示目前处于红灯,一轮计时中拿出 6 秒显示红色字母“S”以实现每轮 2 个 3 秒的缓冲时间。在MyTask 中定义了第二个任务 YouTask。安装时钟定义 YouTask初始计时器递减 1满足红灯条件 满足绿灯条件满足 为显示“S” 缓 0 显示“G”冲条件显示“S”课程名称:嵌入式技术 学生姓名:曾睿 学生学号:0643111150-6-YouTask实现南北方向信号的控制,首先定义一个计时器,初始为红绿灯切换一轮的时间,每秒递减 1,在任务主循环中,根据计时器计时,一半的时间显示红色字母“S”表示目前处于红灯,一半显示绿色字母“G”表示目

10、前处于绿灯,一轮计时中拿出 6秒显示红色字母“S”以实现每轮 2个 3秒的缓冲时间。在 YouTask中定义了第三个任务CtrlTask。定义 CtrlTask初始计时器递减 1满足绿灯条件 满足红灯条件满足 为显示“G” 缓 0 显示“S”冲条件显示“S”CtrlTask实现与用户的交互,为用户输出提示信息,使用PC_GetKey( /定义 MyTask 任务堆栈区OS_STK YouTaskStkTASK_STK_SIZE;/定义 YouTask 任务堆栈区OS_STK CtrlTaskStkTASK_STK_SIZE;/定义 CtrlTask 任务堆栈区INT16S key; /用于读取

11、用户输入INT32U SwichTime =126; /切换一轮的时间,初始为 126INT32U change=0; /中间变量,用于接受 input 并赋给 SwichTimeINT32U MyTime; /MyTask 计时器课程名称:嵌入式技术 学生姓名:曾睿 学生学号:0643111150-8-INT32U YouTime; /YouTask 计时器void MyTask(void *data); /声明任务,控制一个方向的信号灯void YouTask(void *data); /声明任务,控制另一个方向的信号灯void CtrlTask(void *data); /声明任务,控制

12、用户输入/*主函数*/void main (void)OSInit(); /初始化 uCOS_IIPC_DOSSaveReturn(); /保存 Dos 环境PC_VectSet(uCOS, OSCtxSw); /安装 uCOS_II 中断OSTaskCreate(MyTask, /创建任务 MyTask(void*)0, /给任务传递参数/使任务 MyTask 的优先级别为 0OSStart(); /启动 uCOS_II 的多任务管理/*任务 MyTask*/void MyTask (void *pdata)char mt5; /用于显示剩余时间#if OS_CRITICAL_METHOD

13、= 3 /选择函数实现方法OS_CPU_SR cpu_sr;#endifpdata = pdata; /防止编译器报错MyTime = SwichTime; /初始 MyTask 计时器OS_ENTER_CRITICAL(); /关中断PC_VectSet(0x08, OSTickISR); /安装 uCOS_II 时钟中断向量PC_SetTickRate(OS_TICKS_PER_SEC);/设置 uCOS_II 时钟频率OS_EXIT_CRITICAL(); /开中断OSStatInit(); /初始化 uCOS_II 的统计任务课程名称:嵌入式技术 学生姓名:曾睿 学生学号:064311

14、1150-9-OSTaskCreate(YouTask, /创建任务 YouTask(void*)0, /给任务传递参数/使任务 YouTask 的优先级别为 2printf(“n Signal Lamp Control System“);for (;) /MyTask 主循环if (MyTime=0) /计时器减为 0,一轮结束if(change=20 /转换公式change=0; /切换时间改变完毕,清 0MyTime=SwichTime; /计时器重新计时MyTime-=1; /计时器递减 1PC_DispStr(3, 4, /在 3,4 位置显示 East,白色字体“East“,DISP_BGND_BLACK+DISP_FGND_WHITE );PC_DispStr(13, 4, /在 13,4 位置显示 West,白色字体“West“,DISP_BGND_BLACK+DISP_FGND_WHITE );PC_DispStr(32, 4, /在 32,4 位置显示 South,白色字体“South“,DISP_BGND_BLACK+DISP_FGND_WHITE );PC_DispStr(42, 4, /在 42,4 位置显示 North,白色字体

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。