嵌入式课程设计Word文档格式.docx
- 文档编号:19277022
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:10
- 大小:163.38KB
嵌入式课程设计Word文档格式.docx
《嵌入式课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《嵌入式课程设计Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
1.采用PROTEUS完成十字路口交通灯控制的硬件电路设计,要求单片机选型为飞利浦公司的LPC2106,东西南北方向分别设置红黄绿3个指示灯,东西方向和南北方向各用1个数码管显示通行时间;
2.用ADS1.2编写C语言应用程序,完成十字路口交通灯控制;
3.采用PROTEUS将应用程序装载在LPC2106中,进行仿真验证。
要求东西方向和南北方向的数码管显示通行时间并倒计时,可以设置成一样,例如都是9秒倒计时;
每当倒计时时间到,完成红黄绿指示灯的状态切换,模拟实现十字路口的交通灯管理控制。
三、硬件电路设计。
(参考下图完成硬件电路设计,用屏幕抓图的方式将自己设计的PROTEUS电路图粘贴在下面,并用文字对所设计的电路功能、原理进一步说明)
东西红灯,南北绿灯
东西黄灯,南北红灯
四、源程序。
(只将C语言应用程序附在后面,其它项目文档不要提供,C语言应用程序要有一定的注释说明)
源程序:
#include"
config.h"
intmain(void)
{
int32i;
int32a[10]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/*数码管显0-9*/
PINSEL0=0x00000000;
/*定义P0.0-P0.15为普通输入输出端口*/
IODIR=0x0000ffff;
IOCLR=0x0000ffff;
while
(1)
{
for(i=8;
i>
2;
i--)/*东西红灯、南北绿灯延时8秒*/
IOSET=0x4200+a[i];
/*东西红灯并显示时间*/
delay();
}/*引脚输出清零*/
for(i=2;
-1;
i--)/*东西红灯、南北黄灯延时3秒*/
IOSET=0x2200+a[i];
}
IOSET=0x1800+a[i];
i--)/*东西黄灯、南北红灯延时3秒*/
IOSET=0x1400+a[i];
}
delay()
{int32j=0x00090000;
for(;
j>
0;
j--);
}
设计任务二uC/OS-Ⅱ的移植与应用
1.了解嵌入式实时操作系统uC/OS-Ⅱ可移植、可裁剪等性能特点,正确理解实时操作系统中任务、信号、消息、中断等基本概念以及uC/OS-Ⅱ多任务管理的调度算法;
2.掌握uC/OS-Ⅱ在ARM7上移植的方法;
3.能将uC/OS-Ⅱ移植在LPC2106中,并根据具体要求创建用户任务,解决实际问题;
1.uC/OS-Ⅱ移植在LPC2106中。
2.编写用户任务程序,完成实时温度的采集控制。
硬件电路见参考硬件电路图,图中用滑动变阻器代替温度传感器转换后的电压,用ADC0809完成A/D转换,并用数码管显示出来。
三、参考硬件电路。
(用文字对所设计的电路功能、原理做详细说明)
附图:
#defineTASK_STK_SIZE64//定义堆栈大小
#defineKEY0X00001000//启动开关P0.12
#defineADCS0X00002000//ADC地址锁存P0.13
#defineADCEND0X00004000//AD转换结束标志P0.14
uint32led[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67};
//数码管显示码
OS_STKTaskkeyStk[TASK_STK_SIZE];
//定义任务堆栈大小
OS_STKTaskadcStk[TASK_STK_SIZE];
OS_STKTaskledStk[TASK_STK_SIZE];
INT32Ui;
//ADC的转换值
voidTaskkey(void*data);
//任务0启动按下数据采集
voidTaskadc(void*data);
//任务1A/D转换
voidTaskled(void*data);
//任务2数码显示
intmain(void)
{
OSInit();
//操作系统初始化
OSTaskCreate(Taskkey,(void*)0,&
TaskkeyStk[TASK_STK_SIZE-1],2);
OSTaskCreate(Taskadc,(void*)0,&
TaskadcStk[TASK_STK_SIZE-1],3);
OSTaskCreate(Taskled,(void*)0,&
TaskledStk[TASK_STK_SIZE-1],4);
OSStart();
//启动操作系统
return0;
}
voiddelay(INT32Ut)
while(t--);
voidIOInit(void)
//GPIO的0到15位为输入输出口
PINSEL1=0x00000000;
//GPIO的16到31位为输入输出口
IODIR=0x00002FFF;
//P0.0-P0.11,P0.13为输出口,
voidTaskkey(void*p_arg)
p_arg=p_arg;
TargetInit();
//目标程序初始化
IOInit();
while
(1)
{
while((IOPIN&
KEY)!
=0);
//等待按键
delay(2000);
KEY)==0);
//等待按键被松开
IOCLR=0x0000FFFF;
//
OSTaskSuspend(OS_PRIO_SELF);
//挂起本任务
voidTaskadc(void*p_arg)//ADC转换
IOCLR=ADCS;
//ADC转换所需下降沿
delay(20);
IOSET=ADCS;
ADCEND)==0);
IOSET=1<
<
11;
//P0.11为1
i=IOPIN;
//读取转换值
i=i>
>
15;
voidTaskled(void*p_arg)//LED显示
INT32Ug,s,b;
p_arg=p_arg;
g=i%10;
s=i%100/10;
b=i/100;
IOSET=(1<
10)|led[g];
//个位显示
IOCLR=0x00000fff;
IOCLR=1<
10;
9)|led[s];
//十位显示
9;
8)|led[b];
//百位显示
8;
OSTaskResume(3);
//恢复挂起的ADC任务
五、仿真效果。
(用屏幕抓图的方式将PROTEUS运行仿真效果图粘贴在下面
课程设计心得
为期两个星期的嵌入式课程设计结束了,在这两个星期内我们学到了很多东西,也发现了自己许多不足的地方。
在动手实践过程中,我们遇到了很多的问题,在发现问题和解决问题的过程中,我们不断提高,同时也深深地体会到了进行课程设计,使理论与实践相结合的重要性。
设计刚开始时,对各指令理解不深刻,尤其是嵌入式C语言的不理解(课堂上只学了汇编语言),给我们带来了很大的困难,我们不得不自己查阅相关资料,加深理解。
嵌入式设计是软、硬件协同设计,不仅要熟悉汇编语言和C语言进行软件设计,还要熟悉设计所用芯片的各性能指标及格引脚功能。
这次课程设计采用的是计算机仿真设计,其中用于硬件设计的软件,我们以还用过,但用于软件设计的软件,我们还是第一次使用,这也给我们带来了不小的麻烦。
这次课程设计使我们获益良多。
在设计过程中,遇到了很多问题,我们通过请教老师,同学之间相互交流,以及自己查阅资料等方法,将它们一个一个地解决了。
在解决问题的过程中,我们不仅学到了许多知识,也发现了自己不足的地方。
在克服一个一个的困难的过程中,不仅让我们体会到了成功的喜悦,增强了我们的自信心,也激起了我们更深入学习的兴趣。
同时此次课程设计要用到许多以前学过的知识,这也是对学过的知识的复习。
我相信这次课程设计会对我们以后的学习以及工作带来许多积极的影响。
最后,对指导这次课程设计的老师以及在设计过程中帮助过我的同学表示感谢。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)