嵌入式系统课程设计报告(使用ADS编写交通灯程序及实时温度采集系统程序,含proteus图)
嵌入式系统课程设计报告

嵌入式系统课程设计报告一、教学目标本课程的教学目标是使学生掌握嵌入式系统的基本概念、原理和设计方法,能够运用嵌入式系统进行实际项目的开发和实现。
具体来说,知识目标包括了解嵌入式系统的定义、特点、分类和应用领域;掌握嵌入式系统的硬件和软件组成及工作原理;熟悉嵌入式操作系统的基本概念和常用操作系统。
技能目标包括能够使用嵌入式系统开发工具和平台进行程序设计和调试;具备嵌入式系统硬件电路的设计和调试能力;能够运用嵌入式系统进行实际项目的开发和实现。
情感态度价值观目标包括培养学生的创新意识和团队合作精神,提高学生解决实际问题的能力和责任感。
二、教学内容根据课程目标,本课程的教学内容主要包括嵌入式系统的基本概念、原理和设计方法。
具体包括以下几个方面:1. 嵌入式系统的定义、特点、分类和应用领域;2. 嵌入式系统的硬件组成,如处理器、存储器、输入输出接口等;3. 嵌入式系统的软件组成,如固件、操作系统、应用程序等;4. 嵌入式操作系统的基本概念和常用操作系统;5. 嵌入式系统的设计方法和开发流程;6. 嵌入式系统硬件电路的设计和调试方法;7. 嵌入式系统在实际项目中的应用和案例分析。
三、教学方法为了实现课程目标,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
通过多样化的教学方法,激发学生的学习兴趣和主动性。
具体教学方法如下:1. 讲授法:通过讲解嵌入式系统的基本概念、原理和设计方法,使学生掌握相关知识;2. 讨论法:通过分组讨论和课堂讨论,培养学生的思考能力和团队合作精神;3. 案例分析法:通过分析实际项目案例,使学生了解嵌入式系统在实际中的应用和设计方法;4. 实验法:通过实验操作和调试,锻炼学生的动手能力和实际问题解决能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将选择和准备以下教学资源:1.教材:选用权威、实用的嵌入式系统教材,为学生提供系统的学习资料;2. 参考书:推荐学生阅读相关参考书籍,丰富学生的知识体系;3. 多媒体资料:制作课件、教案等多媒体教学资料,提高课堂教学效果;4. 实验设备:准备嵌入式系统开发板、仿真器等实验设备,为学生提供实践操作的机会。
嵌入式交通灯_嵌入式实验报告

基于ARM嵌入式系统的交通灯设计*若需源码,请关注后,发私信设计背景:交通信号灯指挥着人和各种车辆的安全运行,实现红、黄、绿灯的自动指挥是城乡交通管理现代化的重要课题.在城乡街道的十字交叉路口,为了保证交通秩序和行人安全,一般在每条道路上各有一组红、黄、绿交通信号灯,其中红灯亮,表示该条道路禁止通行; 黄灯亮,表示该条道路上未过停车线的车辆停止通行,已过停车线的车辆继续通行; 绿灯亮,表示该条道路允许通行.交通灯控制电路自动控制十字路口两组红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行,实现十字路口城乡交通管理自动化.设计原理:通过设计,培养自己综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练,加深对ARM芯片的了解;熟悉ARM芯片各个引脚的功能,工作方式,计数,I/O口,中断等相关原理,巩固学习嵌入式的相关内容知识,结合基础实验完成整个设计。
总体设计框图用LED控制交通灯的循环点亮,数码管显示灯亮时间(采用倒计时显示),当定时时间到的时候控制电机的转动以遵循交通秩序。
单显示交通灯总体设计框图用LED控制交通灯的循环点亮,数码管显示灯亮时间(采用倒计时显示),用小键盘切换交通灯状态, 当交通灯状态改变的时候控制电机的转动以遵循交通秩序。
设计方案及功能:单显示交通灯单显示交通灯用在直行道上以维护正常的交通秩序,它采用LED点阵显示交通灯状态,其中用字母R表示红灯,Y表示黄灯,G表示绿灯。
数码管显示每个交通灯状态的倒计时间,红灯和绿灯亮30秒从29开始,黄灯亮3秒。
电机转动表示车在前行,遇红灯停止,遇黄灯减速,整个系统按绿黄红的顺序循环执行。
全显示交通灯全显示交通灯用在十字交叉路口以维护正常的交通秩序,它采用LED点阵显示交通灯状态,字母r表示红灯,y表示黄灯,g表示绿灯,左边表示左转道路的交通灯,中间表示前行道路的交通灯,右边表示右转道路的交通灯。
嵌入式实训报告--交通灯

嵌入式实训报告--交通灯《嵌入式系统开发与应用》实训报告专业:电子信息工程学生姓名:张赛哲学号: 1052100501指导教师:肖勇军,张锟,赵志鹏2013-10-21 ——2013-11-8交通灯1性能、指标、要求1.1设计要求基本要求:(1) 按照题目要求独立设计系统所需电路,并完成电路的实际制作。
(2)在十字交叉路口,东南西北各方向都设置红、黄、绿色信号灯,红灯亮表示禁止通行,绿灯亮表示可以通行,红灯灭之前3秒钟黄灯开始闪烁直到绿灯亮起后黄灯熄灭。
其中东西方向为主干道,南北方向为次干道,各个方向分别设置两位数码管,用来显示红灯和绿灯倒计时间,东西方向时间一致,南北方向时间一致。
(3)开机时主干道为10秒倒计时,次干道为10秒倒计时。
(4)单独设计人行道指示灯标志,当禁止行走时为红灯,当可以横穿马路时,绿灯亮起,在禁止通行之前3秒钟绿灯开始闪烁(以警示行人),最终红灯亮起绿灯熄灭。
1.1.1设计任务利用arm9实验箱扩展口控制各个路口红绿灯及时间显示,设计一个交通灯控制系统。
1.1.2性能指标设计一个十字路口的交通灯,它的红灯,绿灯,黄灯的闪烁必须符合交通规则,再用一个数码管来显示倒计时的时间,此时,灯的闪烁必须与数码管上的时间相对应,并与试验箱上的时间相一致。
1.2整机实现的基本原理单片机与ARM9实验箱通过串口相连,从而可以在它们之间进行通信,利用ARM程序发送I/O口的状态数据让单片机实现不同的状态功能,单片机通过接收到I/P口数据就可以控制灯的亮灭和数码管的倒计时,从而实现交通灯的功能。
2 方案设计2.1程序设计析构函数:ShiWidget::~ShiWidget(){myCom->setBaudRate(BAUD115200);delete ui;}显示函数:void ShiWidget::display(){char temp[2]={0,0};if (sec != 0){sec--;}else{sec=9;rightOn = !rightOn;}ui->lcd->display(sec);temp[0]='z';myCom->write(temp);sprintf(temp,"%d",rightOn);myCom->write(temp);sprintf(temp,"%d",sec%10);myCom->write(temp);update();}开始函数:void ShiWidget::start(){s1->start(1000);}结束函数:void ShiWidget::stop(){s1->stop();}画图函数:void ShiWidget::paintEvent(QPaintEvent *) {QPainter painter(this);painter.setPen(Qt::black);if (rightOn)painter.setBrush(Qt::red);elsepainter.setBrush(Qt::white); painter.drawEllipse(230,70,20,20); painter.drawEllipse(230,160,20,20); if ((sec<=4)&&(sec%2!=0)) { painter.setBrush(Qt::yellow); painter.drawEllipse(185,70,20,20); painter.drawEllipse(185,160,20,20); }else {painter.setBrush(Qt::white); painter.drawEllipse(185,70,20,20); painter.drawEllipse(185,160,20,20); }if (!rightOn)painter.setBrush(Qt::green);elsepainter.setBrush(Qt::white); painter.drawEllipse(140,70,20,20); painter.drawEllipse(140,160,20,20); if (!rightOn)painter.setBrush(Qt::red);elsepainter.setBrush(Qt::white); painter.drawEllipse(100,90,20,20); painter.drawEllipse(260,90,20,20); if ((sec<=4)&&(sec%2!=0)) { painter.setBrush(Qt::yellow); painter.drawEllipse(100,120,20,20);painter.drawEllipse(260,120,20,20); }else {painter.setBrush(Qt::white); painter.drawEllipse(100,120,20,20); painter.drawEllipse(260,120,20,20); }if (rightOn)painter.setBrush(Qt::green);elsepainter.setBrush(Qt::white); painter.drawEllipse(100,150,20,20); painter.drawEllipse(260,150,20,20); if (!rightOn)painter.setBrush(Qt::red);elsepainter.setBrush(Qt::green); painter.drawEllipse(80,50,20,20); if (rightOn)painter.setBrush(Qt::red);elsepainter.setBrush(Qt::green); painter.drawEllipse(280,200,20,20); }2.2原理图、PCB图电路原理图:电路PCB图:3 制作与调试过程通过平时所学知识、查找资料,利用QT软件画图,然后编写程序实现交通灯的交替闪烁,最后进行程序、板子与试验箱的同步。
嵌入式系统课程设计报告书

成绩学生课程实践能力考查题目:温度按键设定、显示、报警系统设计课程名称:嵌入式系统开发专业班级:学生学号: 学生姓名:考查地点: 考查时长: 4小时所属院部: 指导教师:2017 — 2018学年第 2 学期金陵科技学院教务2017-2018学年第2学期《嵌入式系统开发》实践能力考核任课教师签名:日期:温度按键设定、显示、报警系统设计要求:1、读取DS18B20温度,在液晶上实时显示,并显示上、下限,初始值上限32,下限26。
2、通过按键可以设置环境温度的上限与下限,WK_UP键按下调节上限,再按下调节下限,再按下调节上限……KEY1按下加1;KEY0按下减1,根据上限与下限判断当前温度有没有超出范围。
3、当温度超过上限,LED1隔1秒亮一次。
超过下限,LED2隔1秒亮一次。
(也可自定义报警方式)4、串口波特率一律用9600bps。
液晶显示的信息:STM32 testname: xxxxxxxxxMaximum is 32C,Minimum is 26 CThe temperature is 29 C,now!(xxxxx就是自己的名字拼音)目录:第一章.系统要求1、1设计要求1、2设计方案第二章.硬件设计2、1开发板原理图2、2 DS18B20模块2、3按键模块2、4 LCD显示模块2、5 LED 模块第三章.软件设计3、1程序流程图3、2程序部分代码3、2、1主函数、main、c3、2、2 LED 函数led、c3、2、3温度代码 s18b20、c3、2、4键盘代码key、c第四章、实物效果图第五章、课程总结第一章.设计要求及方案1、1设计要求1、读取DS18B20温度,在液晶上实时显示,并显示上、下限,初始值上限32,下限26。
2、通过按键可以设置环境温度的上限与下限,WK_UP键按下调节上限,再按下调节下限,再按下调节上限……KEY1按下加1;KEY0按下减1,根据上限与下限判断当前温度有没有超出范围。
基于嵌入式系统的智能交通信号灯控制系统的设计与实现

基于嵌入式系统的智能交通信号灯控制系统的设计与实现一、前言随着城市人口的增加以及车辆数量的增长,交通拥堵和交通事故日益增多,如何有效地控制交通成为了城市管理的重要问题。
在这个背景下,智能交通信号灯控制系统应运而生。
本文将介绍基于嵌入式系统的智能交通信号灯控制系统的设计与实现。
二、嵌入式系统的概述嵌入式系统是一种特殊的计算机系统,它通常是由一个或多个微处理器、存储器和输入/输出设备组成的。
与普通计算机不同的是,嵌入式系统通常被嵌入到其他设备中,比如汽车、智能手机、电视机等。
嵌入式系统的特点是小巧、低功耗、可靠性高。
三、智能交通信号灯控制系统的设计1.硬件设计智能交通信号灯控制系统包括硬件部分和软件部分。
硬件部分是指嵌入式系统所需要的硬件组成。
智能交通信号灯控制系统的硬件主要包括以下部分:(1)嵌入式处理器。
嵌入式系统需要使用嵌入式处理器,用于控制整个系统的运行。
嵌入式处理器通常使用ARM架构的微处理器。
(2)存储器。
嵌入式系统需要使用存储器来存储程序代码和数据。
存储器通常使用闪存和SDRAM。
(3)输入/输出设备。
智能交通信号灯控制系统需要使用输入/输出设备来接收和发送数据。
输入设备通常使用传感器来感知车辆和行人的信息,输出设备通常使用LED等设备来显示交通信号灯的状态。
(4)通信接口。
智能交通信号灯控制系统需要与其他设备进行通信,比如与中心交通管理系统进行通信,与车辆导航系统进行通信等。
通信接口通常使用以太网或无线网络。
2.软件设计智能交通信号灯控制系统的软件部分主要包括以下部分:(1)驱动程序。
驱动程序用于控制硬件设备,如控制输入/输出设备的驱动程序,控制通信接口的驱动程序等。
(2)控制程序。
控制程序是系统的核心,用于控制信号灯的运行。
控制程序需要根据车辆和行人的情况来决定信号灯的状态。
(3)用户界面程序。
用户界面程序用于向用户展示交通信号灯的状态,以及对系统参数进行设置。
四、智能交通信号灯控制系统的实现智能交通信号灯控制系统的实现需要经过以下几个步骤:1.硬件搭建。
嵌入式系统课程设计实验报告

嵌入式系统开发课程设计实验报告实验题目:矩阵LED字符显示控制系统设计指导老师:***班级:计算机科学与技术系1201班姓名:一、实验题目矩阵LED字符显示控制系统设计二、实验目的1.掌握无操作系统下的硬件软件设计原理和方法;2.进一步熟悉ARM 处理器的基本结构、指令集、存储系统以及基本接口编程;3.熟悉嵌入式系统各部件的硬件初始化过程以及基本IO控制方法。
4.掌握矩阵LED 的应用原理三、实验内容1.利用sys_init初始化程序,利用串口实现PC和开发板的数据通信;2.理解S3C2410X 处理器的点阵屏应用程序3.修改应用程序,实现下面功能(1)当程序运行时显示一个LOG标志(自定义)(2)从串口输入学生姓名的字符串,并在矩阵LED上显示出来,并向左循环移动。
(名字的汉字字库自己设计)(3)实现名字的向右循环移动和闪烁移动4.附加题:利用网口实现客户端或服务器端应用程序,并进行数据传输。
四、实验环境硬件:Embest EduKit-IV 平台,ULINK2 仿真器套件,PC 机;软件:μVision IDE for ARM 集成开发环境,Windows 98/2000/NT/XP。
五、实验原理硬件部分1.点阵屏的结构电路图1点阵屏的结构电路图上QL1-QL16为行驱动信号,每个信号控制一行, LR1~LR16 是点阵屏的列驱动信号,每一个信号控制一列。
当行信号为高电平而列信号为低电平,对应的LED 就会亮。
2,S3C2410与点阵屏的连接图2 S3C2410ARM 处理器与两片CD4094连接得到16位行选信号图以上电路可以通过S3C2410GPIO 口把CPU 的并行数据(16位两个字节的数据)打入到两个CD4094芯片中并锁存起来变成LL1-LL16的行选信号。
LL1LL8LL7LL9LL16LL153.点阵屏的保护电路图3 点阵屏的保护电路图为了保护LED屏加了对应的电阻实现行限流作用,即LL1-LL16变为RQ1-RQ16 4.LED的驱动加入行驱动电路的目的是实现LED灯的驱动。
嵌入式智能交通灯课程设计

王潇:代码编写及调试 小 组 成 员 及 分 工
杭进凤:文档编写及PPT制作
王宣明:文档编写
张富根:资料搜索
目录
ZigBee技术简介
搭建平台
硬件设计 功能实现 测试结果 心得体会
ZigBee技术简介
ZigBee技术是一种近距离、低复杂度、低功 耗、低速率、低成本的双向无线通讯技术。主 要用于距离短、功耗低且传输速率不高的各种 电子设备之间进行数据传输以及典型的有周期性 数据、间歇性数据和低反应时间数据传输的应用。 简单的说,ZigBee是一种高可靠的无线数传网 络,类似于CDMA和GSM网络。
对数码管的控制 通过数码管显示对亮灭时间进行计时。 对点阵的控制 通过点阵来显示一个东西和南北方向的十字路口。 对蜂鸣器的控制 当LED中的黄灯亮的时候蜂鸣器发出声音。
测试结果
测试结果
心得体会
通过本次课程设计,使我懂得了关于物联网 的许多知识。人都说万事开头难刚接触物联网 会觉得很难,其实在我们仔细看后你会发现其 中还是大有学问的,首先,你要看懂源代码, 了解各各代码之后,要考虑和数码管结合的时 候是否会产生文件名(驱动)重复的错误。因 为其中包含了太多的头文件。其实上网搜一下, 也就没那么复杂了。本次课程设计虽然有些繁 琐,但也锻炼了我们动手的能力培养了小组成 员之间的交流合作的精神。相信对以后的学习 生活都会大有帮助的。
搭建平台
将电脑和CVT-6410实验箱平台线连接好, 启动虚拟机vmware,
硬件设计
功能设计
本次课程设计基于嵌入式和ZigBee技术实 现智能交通灯,通过对ZigBee模块中的点阵、 数码管、蜂鸣器和实验箱中的LED进行控制 。
嵌入式课程设计《交通灯》

河南机电高等专科学校
《嵌入式系统基础》 课程设计报告
设计题目:十字路口交通灯 系 部: 电子通信工程系 专 业:医用电子仪器与维护 班 级: 091 学生姓名: 郭呈芬 学 号: 090411102 成 绩: 2011 年 06 月 25 日
《嵌入式系统基础》课程设计任务书
1.时间:2011 年 06 月 13 日~2011 年 06 月 24 日 2. 课程设计单位:河南机电高等专科学校 3. 课程设计目的:掌握《嵌入式系统基础》课程基本概念、基本原理,具有一 定的单片机设计能力,能够利用所学知识完成设计内容,提高实际动手能力。 4. 课程设计任务:
采用的芯片功能介绍atmelat89s51是一个低功耗高性能cmos片机片内含4kbytesispinsystemprogrammable的可反复擦写1000flash只读程序存储器器件采用atmel公司的高密度非易失性存储技术制造兼容标准mcs51指令系统及80c51引脚结构芯片内集成了通用ispflash存储单功能强大的微型计算机的at89s51可为许多嵌入式控制应用系统提供高性价比的解决方案
5
(1)、内部 ROM 读取时,PSEN 不动作; (2)、外部 ROM 读取时,在每个机器周期会动作两次; (3)、外部 RAM 读取时,两个 PSEN 脉冲被跳过不会输出; (4)、外接 ROM 时,与 ROM 的 OE 脚相接。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式系统 课程设计报告设计任务一 十字路口交通灯控制一、设计目的:1.了解基于ARM7核的LPC2106的管脚功能和特点,掌握I/O 控制寄存器的设置方法; 2.掌握ARM7应用系统编程开发方法,能用C 语言编写应用程序; 3.熟练掌握ADS1.2软件的使用以及PROTEUS 仿真调试的方法;二、具体任务:1.采用PROTEUS 完成十字路口交通灯控制的硬件电路设计,要求单片机选型为飞利浦公司的LPC2106,东西南北方向分别设置红黄绿3个指示灯,东西方向和南北方向各用1个数码管显示通行时间;2.用ADS1.2编写C 语言应用程序,完成十字路口交通灯控制;3.采用PROTEUS 将应用程序装载在LPC2106中,进行仿真验证。
要求东西方向和南北方向的数码管显示通行时间并倒计时,可以设置成一样,例如都是9秒倒计时;每当倒计时时间到,完成红黄绿指示灯的状态切换,模拟实现十字路口的交通灯管理控制。
三、硬件电路设计。
附图:四、源程序。
(只将C语言应用程序附在后面,其它项目文档不要提供,C语言应用程序要有一定的注释说明)源程序:#include "config.h"void delay(unsigned int i){while(i--){unsigned char j;for(j=0;j<125;j++){;}}}int main(void){uint32 k;PINSEL0=0x00000000; PINSEL1=0x00000000; IODIR=0xFFFFFFFF;while(1){IOSET=0x000019E1;delay(10000);IOCLR=0x000019E1;IOSET=0x00001FE1;delay(10000);IOCLR=0x00001FE1;IOSET=0x000001E1;delay(10000);IOCLR=0x000001E1;IOSET=0x00001F61;delay(10000);IOCLR=0x00001F61;IOSET=0x00001B61;delay(10000);IOCLR=0x00001B61;IOSET=0x000019A1;delay(10000);IOCLR=0x000019A1;IOSET=0x000013E1;delay(10000);IOCLR=0x000013E1;IOSET=0x000016E1;delay(10000);IOCLR=0x000016E1;IOSET=0x000001A1;delay(10000);IOCLR=0x000001A1;for(k=0;k<5;k++){IOSET=0x00000011;delay(3000);IOCLR=0x00000010;delay(3000);}IOCLR=0x00000001;IOSET=0x000019CC;delay(10000);IOCLR=0x000019CC;IOSET=0x00001FCC;delay(10000);IOCLR=0x00001FCC;IOSET=0x000001CC;delay(10000);IOCLR=0x000001CC;IOSET=0x00001F4C;delay(10000);IOCLR=0x00001F4C;IOSET=0x00001B4C;delay(10000);IOCLR=0x00001B4C;IOSET=0x0000198C;delay(10000);IOCLR=0x0000198C;IOSET=0x000013CC;delay(10000);IOCLR=0x000013CC;IOSET=0x000016CC;delay(10000);IOCLR=0x000016CC;IOSET=0x00000188;delay(10000);IOCLR=0x00000188;for(k=0;k<5;k++){IOSET=0x0000000A;delay(3000);IOCLR=0x00000002;delay(3000);}IOCLR=0x00000008;}}五、仿真效果。
(用屏幕抓图的方式将PROTEUS运行仿真效果图粘贴在下面)设计任务二uC/OS-Ⅱ的移植与应用一、设计目的:1.了解嵌入式实时操作系统u C/OS-Ⅱ可移植、可裁剪等性能特点,正确理解实时操作系统中任务、信号、消息、中断等基本概念以及u C/OS-Ⅱ多任务管理的调度算法;2.掌握u C/OS-Ⅱ在ARM7上移植的方法;3.能将u C/OS-Ⅱ移植在LPC2106中,并根据具体要求创建用户任务,解决实际问题;二、具体任务:1.u C/OS-Ⅱ移植在LPC2106中。
2.编写用户任务程序,完成实时温度的采集控制。
硬件电路见参考硬件电路图,图中用滑动变阻器代替温度传感器转换后的电压,用ADC0809完成A/D转换,并用数码管显示出来。
三、参考硬件电路。
(用文字对所设计的电路功能、原理做详细说明)四、源程序。
(只将C语言应用程序附在后面,其它项目文档不要提供,C语言应用程序要有一定的注释说明)源程序:/****************************************************************************** **************************/#include "config.h"#define TASK_STK_SIZE 64#define KEY 0x00001000 //管脚P0.12#define ADCS 0x00002000 //管脚P0.13#define ADCEND 0x00004000 //管脚P0.14uint32 led_code[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //共阴极数码管字形码OS_STK Main_Task_key_Stk[TASK_STK_SIZE]; //定义任务堆栈大小OS_STK Main_Task_adc_Stk[TASK_STK_SIZE];OS_STK Main_Task_led_Stk[TASK_STK_SIZE];uint32 i; //ADC转换值void Task_key(void *data); //任务1,按下按键,启动数据采集void Task_adc(void *data); //任务2,A/D转换void Task_led(void *data); //任务3,数码管显示/****************************************************************************** ***************************** 函数名称: main** 功能描述: c语言的主函数,由它启动多任务环境******************************************************************************* *************************/int main (void){OSInit(); /* 操作系统初始化*/OSTaskCreate(Task_key, (void *)0, &Main_Task_key_Stk[TASK_STK_SIZE - 1], 0);OSTaskCreate(Task_adc, (void *)0, &Main_Task_adc_Stk[TASK_STK_SIZE - 1], 1);OSTaskCreate(Task_led, (void *)0, &Main_Task_led_Stk[TASK_STK_SIZE - 1], 2);OSStart(); /* 启动操作系统*/return 0;}void delay(uint32 t) //延时子程序{while(t--);}void IO_init(void) //IO端口初始化{PINSEL0 = 0x00000000; /* 32个IO口全初始化为通用IO口*/PINSEL1 = 0x00000000;IODIR = 0x00002FFF; /* P0.00-P0.11、P0.13-P0.14为输出口,其它全为输入口*/}/****************************************************************************** ***************************** 函数名称: Task_key** 功能描述: μCOS-II的第一个任务,判断按键状态,若按下并松开,则开始下一个任务,否则一直等待******************************************************************************* *************************/void Task_key(void *p_arg){p_arg = p_arg; /* 避免编译警告*/TargetInit(); /* 目标板初始化*/IO_init();while (TRUE) { /* Task body, always written as an infinite loop.*/while ((IOPIN & KEY) != 0); /* 判断按键按下*/delay(2000);while ((IOPIN & KEY) == 0); /* 判断按键松开*/IOCLR = 0x0000FFFF; /* P0.00-P0.15输出全部清零*/OSTaskSuspend(OS_PRIO_SELF); /* 挂起本任务*/}}/****************************************************************************** ***************************** 函数名称: Task_adc** 功能描述: μCOS-II的第二个任务,进行AD转换******************************************************************************* *************************/void Task_adc(void *p_arg){p_arg = p_arg; /* 避免编译警告*/TargetInit(); /* 目标板初始化*/IO_init();while (TRUE) {/* ADC启动时序模拟,START接口需要20us的脉冲输入*/IOCLR = ADCS; /*ADC_START低电平输入*/delay(20); /*延时20us*/IOSET = ADCS; /*ADC_START高电平输入*/delay(20); /*延时20us*/IOCLR = ADCS; /*ADC_START低电平输入*/while ((IOPIN & ADCEND) == 0); /* EOC若为高电平,则表示转换完毕*/IOSET = 1<<11; /* 输出使能*/i = IOPIN; /* 接收转换数据*/i = i>>15; /* 处理数据*/OSTaskSuspend(OS_PRIO_SELF); /* 挂起本任务*/}}/****************************************************************************** ***************************** 函数名称: Task_led** 功能描述: μCOS-II的第三个任务,LED数码管显示转换值******************************************************************************* *************************/void Task_led(void *p_arg){int32 gw,sw,bw;p_arg = p_arg; /* 避免编译警告*/TargetInit();IO_init();while (TRUE) {gw = i%10; /* 取个位数据*/sw = i%100/10; /* 取十位数据*/bw = i/100; /* 取百位数据*/IOSET = (1<<10) | led_code[gw]; /* 显示个位数据*/delay(200);IOCLR = 0x0000FFFF;IOSET = (1<<9) | led_code[sw] | (1<<7) ; /* 显示十位数据*/delay(200);IOCLR = 0x0000FFFF;IOSET = (1<<8) | led_code[bw]; /* 显示百位数据*/delay(200);IOCLR = 0x0000FFFF;OSTaskResume(1); /* 恢复ADC任务*/}}/****************************************************************************** ** End Of File五、仿真效果。