教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 范文大全 > 公文资料 >

十字路口 嵌入式系统课程设计报告

来源:网络收集 时间:2026-09-12
导读: 工大 嵌入式系统 课程设计报告 设计任务一 十字路口交通灯控制 一、设计目的: 1.了解基于ARM7核的LPC2106的管脚功能和特点,掌握I/O控制寄存器的设置方法; 2.掌握ARM7应用系统编程开发方法,能用C语言编写应用程序; 3.熟练掌握ADS1.2软件的使用以及PRO

工大

嵌入式系统 课程设计报告

设计任务一 十字路口交通灯控制

一、设计目的:

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秒倒计时;每当倒计时时间到,完成红黄绿指示灯的状态切换,模拟实现十字路口的交通灯管理控制。

工大

十字路口交通灯 uC/OS-Ⅱ的移植与应用

嵌入式课程设计

三、硬件电路设计。(参考下图完成硬件电路设计,用屏幕抓图的方式将自己设计的PROTEUS电路图粘贴在下面,并用文字对所设计的电路功能、原理进一步说明)

此电路设计实现的功能是:模拟实现十字路口的交通灯管理控制。东西绿灯南北红灯亮30秒,然后是东西绿灯变为黄灯亮3秒,南北红灯不变。再到东西黄灯变为红灯,南北红灯变为绿灯,都是亮30秒。最后是南北绿灯变为黄灯亮3秒,东西红灯不变。因为此电路只采用两个数码管,仅仅可以完成一些简单的功能,这样可以先编写简单的程序。按理是要4个数码管来显示的,这样就可以调整由绿灯变为黄灯时,而红灯不变的时间差。因为时间有限,所以只实现交通灯的基本功能实现,后续电路还需改进!

工大

十字路口交通灯 uC/OS-Ⅱ的移植与应用

嵌入式课程设计

四、源程序。(只将C语言应用程序附在后面,其它项目文档不要提供)

#include"config.h" #include"LPC2106.h" uint32

table1[]={0x6f,0x7f,0x07,0x7d,0x6d,0x66,0x4f,0x5b,0x06,0x3f}; uint32

table2[]={0x2600,0x2500,0x4100,0x1a00,0x1900}; uint32 table3[]={0x5b,0x06,0x3f};

void delay(uint32 n) //延时函数,当n1时大致延时1毫秒 {

uint32 i,j;

for(i=n;i>0;i--) for(j=2000;j>0;j--); }

int main() {

int i=0,n=0,m=0;

PINSEL0=0x0000000; // PINSEL1=0x00000000;

清寄存器设置 while(1) {

{

delay(10);

IOCLR=0x0000ffff; } } } for(n=6;n<10;) {

IOCLR=IOSET;

IOSET=table2[2]+ table1[n++]; delay(500);

工大

十字路口交通灯 uC/OS-Ⅱ的移植与应用

嵌入式课程设计

IOCLR=0x0000ffff; }

for(i=0;i<3;i++) {

for(n=0;n<10;n++) {

for(m=0;m<50;m++) {

IOSET=table2[3] + table3[i];

delay(10); IOCLR=0x0000ffff;

IOSET=table2[4] + table1[n]; delay(10);

IOCLR=0x0000ffff; } } } for(n=6;n<10;) {

delay(10);

}

工大

十字路口交通灯 uC/OS-Ⅱ的移植与应用

嵌入式课程设计

五、仿真效果。(PROTEUS运行仿真效果图如下)

图一

:

图二:

工大

十字路口交通灯 uC/OS-Ⅱ的移植与应用

嵌入式课程设计

图三:

工大

十字路口交通灯 uC/OS-Ⅱ的移植与应用

嵌入式课程设计

设计任务二 uC/OS-Ⅱ的移植与应用

一、设计目的:

1.了解嵌入式实时操作系统uC/OS-Ⅱ可移植、可裁剪等性能特点,正确理解实时操作系统中任务、信号、消息、中断等基本概念以及uC/OS-Ⅱ多任务管理的调度算法;

2.掌握uC/OS-Ⅱ在ARM7上移植的方法;

3.能将uC/OS-Ⅱ移植在LPC2106

二、具体任务:

1.uC/OS-Ⅱ移植在LPC2106中。

2用滑动变阻器代替温度传感器转换后的电压,用A/D转换,并用数码管显示出来。

三、参考硬件电路。

附图:

工大

十字路口交通灯 uC/OS-Ⅱ的移植与应用

嵌入式课程设计

硬件电路说明:

硬件电路要实现的功能时完成实时温度的采集控制。图中用滑动变阻器代替温度传感器转换后的电压,用ADC0809完成A/D转换,并用数码管显示出来。每当我们按下启动键时,ADC0808将通道0的电压值转换并显示在数码管上显示出来。由于此电路

使用了嵌入式实时操作系统uC/OS-Ⅱ,电路功能的实现可以划分为3个任务,第一个任务按键识别;第二个任务A/D转换;第三个任务数码管显示。

四、源程序。(只将CC有一定的注释说明)

源程序:

**************************/

#include "config.h"

#define TASK_STK_SIZE 64 #define con 0x00001fff #define key #define adstart #define adend const uint32 0000007D,0x00000007,

000071}; //定义任务堆栈大小 OS_STK OS_STK INT32U data; //任务声明 void Task0(void *data); void Task1(void *data); void Task2(void *data);

/********************************************************************************************************* ** 函数名称: main

** 功能描述: c语言的主函数,由它启动多任务环境

*******************************************************************************

工大

十字路口交通灯 uC/OS-Ⅱ的移植与应用

嵌入式课程设计 *************************/ int main (void) {

OSInit(); //操作系统初始化 OSTaskCreate(Task0, (void *)0, &Task0Stk[TASK_STK_SIZE - 1], 1); OSTaskCreate(Task1, (void *)0, &Task1Stk[TASK_STK_SIZE - 1],2); OSTaskCreate(Task2, (void *)0, &Task2Stk[TASK_STK_SIZE - 1],3); OSStart(); //启动操作系统 //while((IOPIN&key)!=0);

return 0; }

void delay(INT32U t) {while(t--);}

void L_Init (void) {

PINSEL0=0x00000000;

PINSEL1=0x00000000; }

** ** : μ

void {

p_arg = p_arg; TargetInit(); L_Init(); for(;;) {

while((IOPIN&key)!=0); L_Init();

工大

十字路口交通灯 uC/OS-Ⅱ的 …… 此处隐藏:3316字,全部文档内容请下载后查看。喜欢就下载吧 ……

十字路口 嵌入式系统课程设计报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/fanwen/711155.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)