嵌入式系统课程设计报告(使用ADS编写交通灯程序及实时温度采集系统程序,含proteus图)
- 格式:docx
- 大小:662.46 KB
- 文档页数:10
嵌入式系统课程设计报告一、教学目标本课程的教学目标是使学生掌握嵌入式系统的基本概念、原理和设计方法,能够运用嵌入式系统进行实际项目的开发和实现。
具体来说,知识目标包括了解嵌入式系统的定义、特点、分类和应用领域;掌握嵌入式系统的硬件和软件组成及工作原理;熟悉嵌入式操作系统的基本概念和常用操作系统。
技能目标包括能够使用嵌入式系统开发工具和平台进行程序设计和调试;具备嵌入式系统硬件电路的设计和调试能力;能够运用嵌入式系统进行实际项目的开发和实现。
情感态度价值观目标包括培养学生的创新意识和团队合作精神,提高学生解决实际问题的能力和责任感。
二、教学内容根据课程目标,本课程的教学内容主要包括嵌入式系统的基本概念、原理和设计方法。
具体包括以下几个方面: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灯的驱动。
一、实训目的本次实训旨在使学生了解嵌入式系统在交通灯控制系统中的应用,掌握嵌入式交通灯系统的设计与实现方法,提高学生的实践动手能力和创新思维。
通过本次实训,学生应掌握以下内容:1. 嵌入式系统基础知识;2. 交通灯控制系统的设计原则;3. 交通灯控制系统的硬件设计;4. 交通灯控制系统的软件设计;5. 交通灯控制系统的调试与测试。
二、实训内容1. 嵌入式系统基础知识嵌入式系统是一种集成计算、存储、输入输出接口等功能的专用计算机系统,具有体积小、功耗低、可靠性高等特点。
本次实训中,我们使用的嵌入式系统是基于ARM架构的嵌入式开发平台。
2. 交通灯控制系统的设计原则交通灯控制系统设计应遵循以下原则:(1)可靠性:确保交通灯控制系统在各种恶劣环境下稳定运行,降低故障率;(2)实时性:保证交通灯信号切换的实时性,提高道路通行效率;(3)可扩展性:便于后续功能扩展和升级;(4)安全性:确保系统运行过程中不会对行人、车辆造成伤害。
3. 交通灯控制系统的硬件设计交通灯控制系统的硬件主要包括以下模块:(1)嵌入式处理器模块:选用基于ARM架构的嵌入式开发平台,如STM32、LPC2131等;(2)信号灯模块:由红、黄、绿三种不同颜色的LED灯组成,用于显示交通灯信号;(3)传感器模块:用于检测车辆和行人,如红外传感器、超声波传感器等;(4)人机交互模块:如按键、显示屏等,用于实现人机交互功能;(5)电源模块:为整个系统提供稳定可靠的电源。
4. 交通灯控制系统的软件设计交通灯控制系统的软件设计主要包括以下部分:(1)系统初始化:初始化嵌入式处理器,配置相关外设;(2)传感器数据处理:读取传感器数据,进行预处理和滤波;(3)信号灯控制:根据传感器数据,控制红、黄、绿三种不同颜色的LED灯;(4)人机交互:实现按键、显示屏等与人机交互功能;(5)系统自检:检测系统运行状态,确保系统正常运行。
5. 交通灯控制系统的调试与测试在完成嵌入式交通灯控制系统的设计与实现后,需要进行调试与测试,确保系统功能正常、性能稳定。
嵌入式系统 课程设计报告设计任务一 十字路口交通灯控制一、设计目的: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秒倒计时;每当倒计时时间到,完成红黄绿指示灯的状态切换,模拟实现十字路口的交通灯管理控制。
班级:电自094学号:09401300417姓名:赵兴发指导教师:陈玮成绩:三、硬件电路设计。
(参考下图完成硬件电路设计,用屏幕抓图的方式将自己设计的PROTEUS电路图粘贴在下面,并用文字对所设计的电路功能、原理进一步说明)附图:硬件电路说明:1.设置所有I/O口为第一功能,将硬件电路图按上图所示连接。
2.东西南北四个方向分别装有红、黄、绿三灯,通过放置标号的方式连接到LPC2106。
3.数码管为交通灯一位十进制倒计时显示,两个数码管显示同样的数字。
四、源程序。
(只将C语言应用程序附在后面,其它项目文档不要提供,C语言应用程序要有一定的注释说明)源程序:#include "config.h"void delay(uint32 time) /*延时1ms子程序*/{uint32 p;for(;time>0;time--){for(p=2210;p>0;p--);}}int main(){int32 i;int32 a[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; /*数码管0-9的显示*/PINSEL0=0x00000000; /*设置P0.0-P0.15工作模式为I/O口*/PINSEL1=0x00000000; /*设置P0.16-P0.31工作模式为I/O口*/IODIR = 0x00007FFF; /*设置所有用到的I/O口为输出*/IOCLR = 0x00007E7F; /*清零输出端,消隐*/while(1){for(i=9;i>0;i--) /*东西红灯、南北绿灯延时9秒*/{IOSET=0x00004200; /*东西红灯、南北绿灯LED显示*/IOSET=a[i]; /*数码管显示时间*/delay(1000); /*延时1秒*/IOCLR=0x00007E7F; /*输出端清零*/}for(i=3;i>0;i--) /*东西红灯、南北黄灯延时3秒*/{IOSET=0x00002200; /*东西红灯、南北黄灯LED显示*/IOSET=a[i]; /*数码管显示时间*/delay(1000); /*延时1秒*/IOCLR=0x00007E7F; /*输出端清零*/}for(i=9;i>0;i--) /*东西绿灯、南北红灯延时9秒*/{IOSET=0x00001800; /*东西绿灯、南北红灯LED显示*/IOSET=a[i]; /*数码管显示时间*/delay(1000); /*延时1秒*/IOCLR=0x00007E7F; /*输出端清零*/}for(i=3;i>0;i--) /*东西黄灯、南北红灯延时3秒*/{IOSET=0x00001400; /*东西黄灯、南北红灯LED显示*/IOSET=a[i]; /*数码管显示时间*/delay(1000); /*延时1秒*/IOCLR=0x00007E7F; /*输出端清零*/}}}五、仿真效果。
电气工程及其自班级:学号:嵌入式系姓名指导教师:课程设计报告成绩:十字路口交通灯控制设计任务一一、设计目的:I/O控制寄存器的设置方法;核的LPC2106的管脚功能和特点,掌握1.了解基于ARM7 语言编写应用程序;C.掌握ARM7应用系统编程开发方法,能用2 仿真调试的方法;ADS1.2软件的使用以及PROTEUS3.熟练掌握二、具体任务:完成十字路口交通灯控制的硬件电路设计,要求单片机选型为飞利PROTEUS1.采用2个指示灯,东西方向和南北方向各用LPC2106,东西南北方向分别设置红黄绿3浦公司的个数码管显示通行时间;语言应用程序,完成十字路口交通灯控制;编写C.用2ADS1.2中,进行仿真验证。
要求东西方向和南LPC2106PROTEUS3.采用将应用程序装载在秒倒计时;每当倒北方向的数码管显示通行时间并倒计时,可以设置成一样,例如都是15 计时时间到,完成红黄绿指示灯的状态切换,模拟实现十字路口的交通灯管理控制。
1三、硬件电路设计。
(参考下图完成硬件电路设计,用屏幕抓图的方式将自己设计的PROTEUS电路图粘贴在下面,并用文字对所设计的电路功能、原理进一步说明)参考图如下:1、无左转弯proteus电路图:22、有左转弯proteus电路图:硬件电路说明:1、无左转弯电路图说明:该电路是一个两位数码管显示的十字交通灯控制proteus硬件仿真图。
功能介绍如下:启动后首先东西绿灯和南北红灯都亮15秒(第一个状态),然后东西方向绿灯变闪烁黄灯(每0.5秒交替一次)南北方向红灯保持亮态,该状态5秒后,转变为东西向红灯和南北向绿灯同时亮15秒,然后南北方向绿灯变闪烁黄灯(每0.5秒交替一次),东西方向红灯保持亮态,持续5秒后,再转为第一个状态,如此循环往复。
2、有左转弯电路图说明:该电路在上电路基础上加一个东西与南北方向左转弯灯的控制,功能介绍如下:首先是只有东西方向直行绿灯亮(第一个状态),10秒后开始东西黄灯闪烁,维持5秒后转为东西方向左转绿灯亮,其他均为红灯,10秒后绿灯开始闪烁,持续5秒后转为南北方向直行绿灯亮,其他均红灯,10秒后开始南北直行黄灯闪烁,维持5秒后转为南北左转绿灯亮,其他均转红灯,再过10秒后南北左转绿灯开始闪烁,维持5秒后转为第一个状态,如此往复。
嵌入式实验课程设计报告一、课程目标知识目标:1. 学生能理解嵌入式系统的基础知识,掌握其基本组成和工作原理。
2. 学生能够掌握嵌入式编程的基本语法和常用指令,具备编写简单嵌入式程序的能力。
3. 学生能够了解嵌入式系统在实际应用中的优势和局限性。
技能目标:1. 学生能够运用所学知识,进行简单的嵌入式系统设计和程序开发。
2. 学生能够使用嵌入式实验设备,进行实际操作,并解决常见问题。
3. 学生能够通过团队协作,完成一个具有实际应用价值的嵌入式项目。
情感态度价值观目标:1. 学生对嵌入式系统产生兴趣,激发其学习主动性和积极性。
2. 学生能够认识到嵌入式技术在国家战略和社会发展中的重要性,培养其社会责任感和使命感。
3. 学生在课程学习过程中,培养良好的团队合作精神和沟通能力,形成正确的价值观。
课程性质分析:本课程为嵌入式实验课程,侧重于实践操作和项目实践。
课程内容紧密结合教材,旨在帮助学生将理论知识与实际应用相结合。
学生特点分析:本年级学生已具备一定的计算机基础和编程能力,对新鲜事物充满好奇,具备较强的动手能力和创新能力。
教学要求:1. 注重理论与实践相结合,提高学生的实际操作能力。
2. 采用项目驱动教学法,培养学生的团队协作和解决问题的能力。
3. 激发学生的学习兴趣,引导其探索嵌入式技术在实际应用中的奥秘。
二、教学内容1. 嵌入式系统概述:介绍嵌入式系统的基本概念、发展历程、应用领域及未来发展趋势。
教材章节:第一章 嵌入式系统概述2. 嵌入式系统组成:讲解嵌入式系统的硬件组成、软件架构及系统设计方法。
教材章节:第二章 嵌入式系统硬件组成;第三章 嵌入式系统软件架构3. 嵌入式编程基础:学习嵌入式编程的基本语法、常用指令和编程技巧。
教材章节:第四章 嵌入式编程语言与编程环境;第五章 嵌入式程序设计基础4. 嵌入式系统设计与实践:通过项目实践,让学生掌握嵌入式系统的设计方法和实际操作。
教材章节:第六章 嵌入式系统设计与实践5. 嵌入式系统应用案例分析:分析典型嵌入式应用案例,了解嵌入式技术的实际应用。
《嵌入式系统基础》课程设计报告设计题目:交通灯班级:学号:姓名:指导教师:成绩:2011 年6 月20 日1 设计任务1、设计一个十字路口的交通灯控制电路,要求东西方向(主干道)车道和南北方向(从干道)车道两条交叉道路上的车辆交替运行,时间可设置修改。
2、在绿灯转为红灯时,要求黄灯闪烁,才能变换运行车道3、黄灯亮时,要求每秒闪亮一次。
4、紧急情况发生,如消防车、救护车等紧急车辆通过时,要求四个路口同时加亮黄灯闪烁,并且倒计时显示装置关闭,四个路口的信号灯全部变成红灯。
5当东西或南北方向车流量大时,四个路口同时加亮黄灯进行闪烁,并且倒计时显示装置关闭,黄灯闪烁5秒后,只允许东西或南北方向车辆通行。
交通信号灯模拟控制系统设计利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭。
用8051做输出口,控制十二个发光二极管燃灭,模拟交通灯管理。
在一个交通十字路口有一条主干道(东西方向),一条从干道(南北方向),如图所示:2 电路原理图.1总体设计电路如图所示2 交通灯电路为了方便实验,可以用发光二极管作为交通灯来使用,单片机的I/O 接口直接和交通灯(发光二极管)连接。
在十字路口的四组红、黄、绿三色交通灯中,东西方向道路上的两组同色灯连接在一起,南北方向道路上的两组同色的灯也彼此连接在,受单片机P1.0~P1.5控制。
单片机的I/O接口与交通灯电路的具体连接方式为:P1.0~P1.2分别接东西方向的红、黄、绿共6个放光二极管,P1.3~P1.5分别接南北方向的红、黄、绿共6个发光二极管。
12个发光二极管采用了共阳极的连接方式,因此I/O口输出低电平时,与之相连的发光二极管会亮,I/O口输出高电平时,相应的发光二极管会灭。
交通灯电路如图所示。
3倒计时显示电路3 该交通灯控制系统在正常情况下,每60s循环一次,为方便提示路上行人及车辆交通灯转换的剩余时间,专门为控制系统设计了一个倒计时显示装置。
该显示装置选用七段数码管来显示交通灯转换的剩余时间,根据控制要求,每个路口需要两个数码管,这样四个路口就要求八个数码管。
时间:二O二一年七月二十九日福州年夜学之阿布丰王创作《嵌入式系统设计课设》陈说书题目:基于28027的虚拟系统姓名:学号:学院:电气工程与自动化学院专业:电气工程与自动化年级:起讫日期:指导教师:目录1、课程设计目的12、课程设计题目和实现目标13、设计方案14、法式流程图15、法式代码16、调试总结17、设计心得体会18、参考文献11、课程设计目的《嵌入式系统设计课设》是与《嵌入式系统设计》课程相配套的实践教学环节.《嵌入式系统设计》是一门实践性很强的专业基础课,通过课程设计,到达进一步理解嵌入式芯片的硬件、软件和综合应用方面的知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不竭接受新的知识.培养年夜胆发明缔造的设计理念,为今后就业打下良好的基础.通过课程设计,掌握以下知识和技能:1.嵌入式应用系统的总体方案的设计;2.嵌入式应用系统的硬件设计;3.嵌入式应用系统的软件法式设计;4.嵌入式开发系统的应用和调试能力2、课程设计题目和实现目标课程设计题目:基于28027的虚拟系统任务要求:A、利用28027的片上温度传感器,检测以后温度;B、通过PWM过零中断作为温度检测A/D的触发,在PWM中断时完成温度采样和下一周期PWM占空比的修正;PWM频率为1K;C、利用按键作为温度给定;温度给定变动从10度到40度.D、当检测温度超越给按时,PWM占空比增减小(减小幅度自己设定);当检测温度小于给按时,PWM占空比增年夜(增年夜幅度自己设定);E、把PWM输出接到捕捉口,利用捕捉口丈量以后PWM的占空比;F、把E丈量的PWM占空比通过串口通信发送给上位机;3、设计方案-----介绍系统实现方案和系统原理图①系统实现方案:任务A:利用ADC模块通道A5获取以后环境温度.任务B:PWM过零触发ADC模块,在PWM中断服务函数中,将以后环境温度和按键设定温度进行比力,并依照任务D的要求修订PWM占空比. PWM频率为1K HZ:根据关系式:TBCLK=SYSCLKOUT/(HSPCLKDIV*CLKDIV)取SYSCLKOUT=60M HZ,HSPCLKDIV=6,CLKDIV=1,求得TBCLK=10M HZ.将period设为10K,便获得1K HZ 的PWM波.任务C:用KEY模块的中断实现温度给定.任务D:在PWM的周期结束发生的中断中,通过改变比力点CMPA的位置来改变PWM占空比的年夜小.任务E:利用CAP模块设置3个捕捉点捕捉PWM的上升沿和下降沿,计算获得PWM波的占空比.任务F:利用SCI模块实现串口通信将温度和占空比上传到上位机.另外,各模块的配置都与GPIO模块有关.②系统原理图:28027 C2000 Piccolo Launchpad原理图4、法式流程--------各个模块的流程图5、法式代码①/*app.c*/// the includes#include"Application/app.h"//**************************************************************************// the defines//**************************************************************************// the globals//**************************************************************************// the functionsvoid delay(uint32_t time){while(time--);}//延时函数// end of file②/*isr.c*/// the includes#include"Application/isr.h"//********************************************************* *****************// the defines//********************************************************* *****************// the globals//********************************************************* *****************// the functionsinterruptvoid LED_PWM_isr(void)//PWM的中断服务函数{if(MY_ADC<SET_TEMP)//环境检测温度小于设定温度时{mycmp-=100*(SET_TEMP-MY_ADC);//PWM占空比增年夜}else{mycmp+=100*(MY_ADC-SET_TEMP);//环境检测温度年夜于设定温度 // PWM占空比减小}PWM_setCmpA(myPwm1,mycmp);//设定CmpA值PWM_clearIntFlag(myPwm1);//清零PWM中断标识表记标帜位 PIE_clearInt(myPie,PIE_GroupNumber_3);//清零PIE中断标识表记标帜位mycmp=5000;//将比力点初值设为5000}interruptvoid MY_ADC_isr(void)//ADC中断服务函数{ MY_ADC=ADC_readResult(myAdc,ADC_ResultNumber_0);//获取ADC转换的数字量MY_ADC= ADC_getTemperatureC(myAdc, MY_ADC);//将数字量转换为温度值ADC_clearIntFlag(myAdc, ADC_IntNumber_1);//清除中断标识表记标帜位PIE_clearInt(myPie,PIE_GroupNumber_10);}interruptvoid KEY_xint1_isr(void)//按键中断服务函数{SET_TEMP++;if(SET_TEMP>40){SET_TEMP=10;}PIE_clearInt(myPie,PIE_GroupNumber_1);}interruptvoid MY_CAP_isr(void)//CAP中断服务函数{uint32_tCapEvent1Count=0,CapEvent2Count=0,CapEvent3Count=0;float fPwmDuty=0.0;CapEvent1Count = CAP_getCap1(myCap);CapEvent2Count = CAP_getCap2(myCap);CapEvent3Count = CAP_getCap3(myCap);fPwmDuty = (float)(CapEvent2Count - CapEvent1Count) / (CapEvent3Count - CapEvent1Count);//计算PWM占空比fPwmDuty=fPwmDuty*100;NOW_PWM=(int)fPwmDuty;CAP_clearInt(myCap, CAP_Int_Type_CEVT3);CAP_clearInt(myCap, CAP_Int_Type_Global);// Acknowledge this interrupt to receive more interrupts from group 4PIE_clearInt(myPie, PIE_GroupNumber_4);}// end of file①/*F2802x_Device.h*/#include"F2802x_Component/include/adc.h"#include"F2802x_Component/include/clk.h"#include"F2802x_Component/include/flash.h"#include"F2802x_Component/include/gpio.h"#include"F2802x_Component/include/pie.h"#include"F2802x_Component/include/pll.h"#include"F2802x_Component/include/timer.h"#include"F2802x_Component/include/wdog.h"#include"F2802x_Component/include/sci.h"#include"F2802x_Component/include/cap.h"①/*Key.c*/// the includes#include"User_Component/Key/Key.h"//********************************************************* *****************// the defines//********************************************************* *****************// the globals//********************************************************* *****************// the functions// the function prototypes//! \brief KEY initail//! \param[in] None//! \param[out] Nonevoid KEY_initial(void){}////! \brief KEY configure//! \param[in] None//! \param[out] Nonevoid KEY_config(void){ //按键为GPIO12设置为输入口//1. modeGPIO_setMode(KEY_obj, KEY1, GPIO_12_Mode_GeneralPurpose); //2. directionGPIO_setDirection(KEY_obj, KEY1, GPIO_Direction_Input);//3. pullupGPIO_setPullUp(KEY_obj, KEY1, GPIO_PullUp_Disable);//4. qualificationGPIO_setQualification(KEY_obj, KEY1, GPIO_Qual_Sync);}//! \brief ScanKey API//! \param[in] key//! \param[out] the state of KEYuint16_t ScanKey(const GPIO_Number_e key){return GPIO_getData(KEY_obj, key);}//! \param[in] None//! \param[out] Nonevoid KEY_INT_config(void){ //(3). register PIR vectorPIE_registerPieIntHandler(myPie, PIE_GroupNumber_1, PIE_SubGroupNumber_4, (intVec_t) &KEY_xint1_isr);//(4). module interrupt configurePIE_setExtIntPolarity(myPie,CPU_ExtIntNumber_1,PIE_ExtIntPolarity_FallingEdge);GPIO_setExtInt(myGpio, GPIO_Number_12, CPU_ExtIntNumber_1);//(5). enable module IEPIE_enableExtInt(myPie, CPU_ExtIntNumber_1);PIE_enableInt(myPie, PIE_GroupNumber_1, PIE_InterruptSource_XINT_1);//(7) enable CPU IERxCPU_enableInt(myCpu, CPU_IntNumber_1);}////! \brief Interrupt Service Routine//! \param[in] None//! \param[out] NoneTARGET_EXT interruptvoid KEY_xint1_isr(void);// end of file/*Key.h*/#ifndef _KEY_H_#define _KEY_H_// the includes#include<stdint.h>// driver#include"F2802x_Component/F2802x_Device.h"#include"User_Component/User_Mcu/User_System.h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*/// For example// The module derived from GPIO#define KEY_obj myGpio#define KEY1 GPIO_Number_12 //pinTARGET_EXT void KEY_initial(void);TARGET_EXT void KEY_config(void);TARGET_EXT void KEY_INT_config(void);TARGET_EXT interruptvoid KEY_xint1_isr(void);/*-------end of hardware description -------------*/ TARGET_EXT uint16_t ScanKey(const GPIO_Number_e key);/*-------end of API description -------------*/#define KEYPressed 1/*------- end of defines -------------*/#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition②/*LED_PWM.c*/// the includes#include"User_Component/LED_PWM/LED_PWM.h"// the functionsvoid LED_PWM_initial(void){mycmp=0;}void LED_PWM_config(void){//GPIO的配置GPIO_setMode(myGpio,GPIO_Number_0,GPIO_0_Mode_EPWM1A);GPIO_setPullUp(myGpio,GPIO_Number_0,GPIO_PullUp_Disable); //PWM的配置CLK_disableTbClockSync(myClk);//PWM模块使能CLK_enablePwmClock(myClk,PWM_Number_1);//设置PWM的时钟//PWM_setClkDiv(myPwm1,PWM_ClkDiv_by_1);PWM_setHighSpeedClkDiv(myPwm1, PWM_HspClkDiv_by_6);//计数器的设置PWM_setCounterMode(myPwm1,PWM_CounterMode_Up);//PWM周期设置PWM_setPeriod(myPwm1,10000);//设置周期加载模式PWM_setPeriodLoad(myPwm1,PWM_PeriodLoad_Shadow);//比力点的设置PWM_setCmpA(myPwm1,5000);//PWM装载模式PWM_setLoadMode_CmpA(myPwm1,PWM_LoadMode_Period);//举措PWM_setActionQual_CntUp_CmpA_PwmA(myPwm1,PWM_ActionQual_S et);PWM_setActionQual_Period_PwmA(myPwm1,PWM_ActionQual_Clear );//时钟同步CLK_enableTbClockSync(myClk);}void LED_PWM_INT_config(void){PIE_registerPieIntHandler(myPie,PIE_GroupNumber_3,PIE_Sub GroupNumber_1,(intVec_t)&(LED_PWM_isr));//模块中断配置PWM_setIntMode(myPwm1,PWM_IntMode_CounterEqualPeriod);PWM_setIntPeriod(myPwm1,PWM_IntPeriod_FirstEvent);//PWM中断使能PWM_enableInt(myPwm1);//PIE开关的允许PIE_enableInt(myPie, PIE_GroupNumber_3, PIE_InterruptSource_EPWM1);//CPU全局中断CPU_enableInt(myCpu,CPU_IntNumber_3);}// end of file/LED_PWM.h*/#ifndef _LED_PWM_H_#define _LED_PWM_H_// the includes#include<stdint.h>// driver#include"F2802x_Component/F2802x_Device.h"#include"User_Component/User_Mcu/User_System.h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*/TARGET_EXT void LED_PWM_initial(void);TARGET_EXT void LED_PWM_config(void);TARGET_EXT void LED_PWM_INT_config(void);TARGET_EXT interruptvoid LED_PWM_isr(void);/*-------end of hardware description -------------*/ TARGET_EXT uint16_t mycmp;#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition③/*MY_ADC.c*/// the includes#include"User_Component/MY_ADC/MY_ADC.h"// the functionsvoid MY_ADC_initial(void){SET_TEMP=30; //初始设定温度为30摄氏度}void MY_ADC_config(void){ //ADC时钟使能CLK_enableAdcClock(myClk);//初始化ADC模块ADC_setVoltRefSrc(myAdc, ADC_VoltageRefSrc_Int);ADC_powerUp(myAdc);ADC_enableBandGap(myAdc);ADC_enableRefBuffers(myAdc);ADC_enable(myAdc);//温度转换使能ADC_enableTempSensor(myAdc);//soc配置ADC_setSocChanNumber(myAdc, ADC_SocNumber_0, ADC_SocChanNumber_A5);ADC_setSocSampleWindow(myAdc, ADC_SocNumber_0, ADC_SocSampleWindow_7_cycles);ADC_setSocTrigSrc(myAdc, ADC_SocNumber_0, ADC_SocTrigSrc_EPWM1_ADCSOCA);//PWM配置PWM_setSocAPulseSrc(myPwm1,PWM_SocPulseSrc_CounterEqualZe ro);PWM_setSocAPeriod(myPwm1,PWM_SocPeriod_FirstEvent);PWM_enableSocAPulse(myPwm1);}void MY_ADC_INT_config(void){PIE_registerPieIntHandler(myPie,PIE_GroupNumber_10,PIE_Su bGroupNumber_1,(intVec_t)&(MY_ADC_isr));//模块中断配置ADC_setIntPulseGenMode(myAdc,ADC_IntPulseGenMode_Prior);ADC_setIntSrc(myAdc,ADC_IntNumber_1,ADC_IntSrc_EOC0);ADC_setIntMode(myAdc, ADC_IntNumber_1, ADC_IntMode_ClearFlag);//ADC中断使能ADC_enableInt(myAdc,ADC_IntNumber_1);//PIE开关的允许PIE_enableInt(myPie, PIE_GroupNumber_10, PIE_InterruptSource_ADCINT_10_1);//CPU全局中断CPU_enableInt(myCpu,CPU_IntNumber_10);}// end of file/*MY_ADC.h*/#ifndef _MY_ADC_H_#define _MY_ADC_H_// the includes#include<stdint.h>// driver#include"F2802x_Component/F2802x_Device.h"#include"User_Component/User_Mcu/User_System.h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*/TARGET_EXT void MY_ADC_initial(void);TARGET_EXT void MY_ADC_config(void);TARGET_EXT void MY_ADC_INT_config(void);TARGET_EXT interruptvoid MY_ADC_isr(void);/*-------end of hardware description -------------*/ TARGET_EXT uint16_t MY_ADC;TARGET_EXT uint16_t SET_TEMP;/*------- end of globals -------------*/#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition④/*MY_CAP.c*/// the includes#include"User_Component/MY_CAP/MY_CAP.h"#include"User_Component/User_Mcu/User_System.h"void MY_CAP_initial(void){}void MY_CAP_config(void){GPIO_setPullUp(myGpio, GPIO_Number_5, GPIO_PullUp_Enable); GPIO_setQualification(myGpio, GPIO_Number_5, GPIO_Qual_Sync);GPIO_setMode(myGpio, GPIO_Number_5, GPIO_5_Mode_ECAP1);CLK_enableEcap1Clock(myClk);CAP_disableInt(myCap, CAP_Int_Type_All); // 禁止CAP中断 CAP_clearInt(myCap, CAP_Int_Type_All); // 清除CAP中断标识表记标帜位CAP_disableCaptureLoad(myCap); // Disable CAP1-CAP4 register loadsCAP_disableTimestampCounter(myCap); // Make sure the counter is stopped// Configure peripheral registersCAP_setCapContinuous(myCap); // continuousCAP_setStopWrap(myCap, CAP_Stop_Wrap_CEVT4);// Stop at 3 eventsCAP_setCapEvtPolarity(myCap, CAP_Event_1, CAP_Polarity_Rising); // 捕捉上升沿CAP_setCapEvtPolarity(myCap, CAP_Event_2, CAP_Polarity_Falling); // 捕捉下降沿CAP_setCapEvtPolarity(myCap, CAP_Event_3, CAP_Polarity_Rising); // 捕捉上升沿CAP_setCapEvtReset(myCap, CAP_Event_3, CAP_Reset_Enable); // 重置计数器确保计数器不会溢出CAP_enableTimestampCounter(myCap); // 翻开计数器 CAP_enableCaptureLoad(myCap); // Enable CAP1-CAP4 register loads/* CAP_enableInt(myCap, CAP_Int_Type_CEVT3); // 3个捕捉点之后发生中断// Register interrupt handlers in the PIE vector tablePIE_registerPieIntHandler(myPie, PIE_GroupNumber_4,PIE_SubGroupNumber_1, (intVec_t)&ecap1_isr);// Enable CPU INT4 which is connected to ECAP1-4 INT: CPU_enableInt(myCpu, CPU_IntNumber_4);// Enable eCAP INTn in the PIE: Group 3 interrupt 1-6 PIE_enableCaptureInt(myPie);CPU_enableGlobalInts(myCpu);*/}void MY_CAP_INT_config(void){CAP_enableInt(myCap, CAP_Int_Type_CEVT3); // 3 events = interrupt// Register interrupt handlers in the PIE vector tablePIE_registerPieIntHandler(myPie, PIE_GroupNumber_4, PIE_SubGroupNumber_1, (intVec_t)&MY_CAP_isr);// Enable CPU INT4 which is connected to ECAP1-4 INT:CPU_enableInt(myCpu, CPU_IntNumber_4);// Enable eCAP INTn in the PIE: Group 3 interrupt 1-6PIE_enableCaptureInt(myPie);CPU_enableGlobalInts(myCpu);}// end of file/*MY_CAP.h*/#ifndef _MY_CAP_H_#define _MY_CAP_H_// the includes#include<stdint.h>// driver#include"F2802x_Component/F2802x_Device.h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*/TARGET_EXT void MY_CAP_initial(void);TARGET_EXT void MY_CAP_config(void);TARGET_EXT void MY_CAP_INT_config(void);TARGET_EXT interruptvoid MY_CAP_isr(void);/*-------end of hardware description -------------*/ TARGET_EXT int NOW_PWM;#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition⑤/*mySci.c*/// the includes#include"User_Component/mySci/mySci.h"// the functions// the function prototypes//! \brief SCI initail//! \param[in] None//! \param[out] Nonevoid SCI_initial(void){}////! \brief SCI configure//! \param[in] None//! \param[out] Nonevoid SCI_config(void){ //1. GPIO configure//1.1 pullupGPIO_setPullUp(myGpio, GPIO_Number_28, GPIO_PullUp_Enable);GPIO_setPullUp(myGpio, GPIO_Number_29, GPIO_PullUp_Disable);//1.2 input qualificationGPIO_setQualification(myGpio, GPIO_Number_28,GPIO_Qual_ASync);//1.3 modeGPIO_setMode(myGpio, GPIO_Number_28, GPIO_28_Mode_SCIRXDA);//SCI数据发送引脚GPIO_setMode(myGpio, GPIO_Number_29, GPIO_29_Mode_SCITXDA);//SCI数据接收引脚//2. enable SCIA clkCLK_enableSciaClock(myClk);//3. configure the low speed peripheral clock(LSPCLK) LSPCLK = SYSCLKOUT/4 =15MHzCLK_setLowSpdPreScaler(myClk,CLK_LowSpdPreScaler_SysClkOut_by_4);//设置时钟分频//4. SCI BRR = LSPCLK/(SCI BAUDx8) - 1SCI_setBaudRate(mySci, SCI_BaudRate_9_6_kBaud);//设置波特率为9600//5. configure package(1 stop bit, No loopback, No parity,8 char bits, async mode, idle-line protocol)SCI_disableParity(mySci);SCI_setNumStopBits(mySci, SCI_NumStopBits_One);SCI_setCharLength(mySci, SCI_CharLength_8_Bits);//6. enable SCI TX&RXSCI_enableTx(mySci);。
嵌入式交通灯课程设计一、教学目标本课程旨在通过学习嵌入式交通灯的设计,让学生掌握嵌入式系统的基本原理和应用,培养学生对嵌入式系统的兴趣和实际应用能力。
具体目标如下:知识目标:使学生了解嵌入式系统的基本概念、工作原理和开发流程;掌握C语言编程和嵌入式系统编程的基本技能;了解嵌入式交通灯的设计原理和实现方法。
技能目标:培养学生具备嵌入式系统项目开发的实际操作能力,能够独立完成嵌入式交通灯的设计和调试;提高学生的问题解决能力和创新思维能力。
情感态度价值观目标:培养学生对嵌入式系统的兴趣和热情,增强学生对新技术的敏感度和适应能力;培养学生团队合作精神和良好的人文素养。
二、教学内容本课程的教学内容主要包括嵌入式系统的基本概念、工作原理和开发流程,C语言编程和嵌入式系统编程的基本技能,以及嵌入式交通灯的设计原理和实现方法。
具体安排如下:第1-2课时:嵌入式系统的基本概念、工作原理和开发流程;第3-4课时:C语言编程和嵌入式系统编程的基本技能;第5-6课时:嵌入式交通灯的设计原理和实现方法。
三、教学方法为了提高教学效果,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
讲授法:通过教师的讲解,使学生掌握嵌入式系统的基本概念、工作原理和开发流程;讨论法:通过分组讨论,培养学生的团队合作精神和问题解决能力;案例分析法:通过分析实际案例,使学生了解嵌入式交通灯的设计原理和实现方法;实验法:通过动手实践,培养学生具备嵌入式系统项目开发的实际操作能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:教材:《嵌入式系统设计与实践》;参考书:《嵌入式系统导论》、《C语言程序设计》;多媒体资料:教学PPT、相关视频资料;实验设备:嵌入式开发板、编程器、交通灯模块等。
五、教学评估为了全面、客观、公正地评估学生的学习成果,本课程将采用多种评估方式,包括平时表现、作业、考试等。
嵌入式系统 课程设计报告设计任务一 十字路口交通灯控制一、设计目的: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;}}五、仿真效果。
基于ARM的嵌入式交通灯课程设计课程名称:嵌入式系统设计专业:计算机科学与技术班级:B0904学号:0000000088姓名:乔乔目录1.摘要 (2)2.绪论 (2)2.1课程设计目的 (2)2.2课程设计内容 (2)3.最小系统设计及交通灯电路设计 (3)3.1设计原理 (3)3.2整体电路原理图 (4)4. 具体设计框图 (5)4.1电源电路原理图 (5)4.2时钟电路原理图 (6)4.3存储器电路原理图 (7)1) Nor Flash原理图 (7)2) SDRAM存储器原理图 (8)4.4 JTAG电路原理图 (9)5. 程序设计 (10)6. 课程设计总结 (13)交通灯控制系统1.摘要此次试验以S3C2410嵌入式开发平台为硬件基础,主要介绍了嵌入式实时操作系统中的最小系统的各个组成部分,其中包括电源、时钟、复位、存储器、JTAG 接口电路原理图及交通灯电路图的设计。
关键词:S3C2410 ;最小系统;交通灯2.绪论2.1课程设计目的(1)掌握嵌入式系统设计的基本方法,熟悉S3C2410的开发环境及软硬件的调试过程,巩固和加深对理论课中知识的理解,提高对所学知识的综合运用能力。
(2)了解S3C2410A处理器的工作原理。
(3)能够使用S3C2410A处理器的对试验箱上的硬件接口进行控制,输入和输出。
(4)能够完成S3C2410A处理器的最小系统的硬件电路设计,并用Protel 99设计原理电路图。
(5)能够正确编写调试软件。
(6)通过完成一个包括电路设计和程序开发的完整过程,了解开发一AR应用系统的全过程,为今后从事相应打下基础。
2.2课程设计内容(1)完成S3C2410最小系统的硬件电路设计,并用Protel DXP设计原理路图;(2)最小系统包括电源、时钟、复位、存储器、JTAG接口(3)JTAG接口选择20针插头(4)存储器容量要求至少2MB的NorFlash和64MB的SDRAM。
嵌入式系统 课程设计报告设计任务一 十字路口交通灯控制一、设计目的: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五、仿真效果。