嵌入式系统
课程设计报告
设计任务一 十字路口交通灯控制
一、设计目的:
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秒倒计时;每当倒计时时间到,完成红黄绿指示灯的状态切换,模拟实现十字路口的交通灯管理控制。
三、硬件电路设计。(参考下图完成硬件电路设计,用屏幕抓图的方式将自己设计的PROTEUS电路图粘贴在下面,并用文字对所设计的电路功能、原理进一步说明)
附图:
硬件电路说明:
复位电路,
时钟电路(仿真可略),
ARM7微处理器LPC2106,
南北、东西道路交通灯,
交通计时显示数码管。
四、源程序。(只将C语言应用程序附在后面,其它项目文档不要提供,C语言应用程序要有一定的注释说明)
源程序:
#include "config.h"
#define ledcon 0x00007FFF//led接口
#define ctr1 0x00000081 //南北数码管
#define ctr2 0x00000100 //东西数码管
#define light1 0x00004200//东西红灯南北绿灯亮
#define close1 0x00003c00//东西黄绿南北红黄灭
#define light2 0x00002400//东西南北黄灯亮
#define close2 0x00004200//东西红灯南北绿灯灭
#define light3 0x00001800//东西绿灯南北红灯亮
#define close3 0x00002400//东西南北黄灯灭
#define close4 0x0000007F//消影
const uint8 led_code[16]= //共阴极段码
{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
uint32 p,i;
void delay(uint32 n) //延时
{
while(n--);
}
void display() //交通灯、数码管显示
{
uint32 count=10;
while(count--)
{
IOCLR=i|ctr1;
IOSET=p|led_code[count]; //输出显示
delay(5000000);//延时
IOCLR=close4; //消影
}
}
int main()
{
/*初始化IO*/
PINSEL0=0x00000000;
PINSEL1=0x00000000;
IODIR=ledcon; //输出
while(1)
{
p=light1;//东西红灯南北绿灯亮
i=close1;//东西黄绿南北红黄灭
display();
p=light2;//东西南北黄灯亮
i=close2;//东西红灯南北绿灯灭
display();
p=light3;//东西绿灯南北红灯亮
i=close3;//东西南北黄灯灭
display();
}
return(0);
}
五、仿真效果。(用屏幕抓图的方式将PROTEUS运行仿真效果图粘贴在下面)
设计任务二 uC/OS-Ⅱ的移植与应用
一、设计目的:
1.了解嵌入式实时操作系统uC/OS-Ⅱ可移植、可裁剪等性能特点,正确理解实时操作系统中任务、信号、消息、中断等基本概念以及uC/OS-Ⅱ多任务管理的调度算法;
2.掌握uC/OS-Ⅱ在ARM7上移植的方法;
3.能将uC/OS-Ⅱ移植在LPC2106中,并根据具体要求创建用户任务,解决实际问题;
二、具体任务:
1.uC/OS-Ⅱ移植在LPC2106中。
2.编写用户任务程序,完成实时温度的采集控制。硬件电路见参考硬件电路图,图中用滑动变阻器代替温度传感器转换后的电压,用ADC0809完成A/D转换,并用数码管显示出来。
三、参考硬件电路。(用文字对所设计的电路功能、原理做详细说明)
附图:
硬件电路说明:
复位电路,
时钟电路(仿真可略),
ARM7微处理器LPC2106,
温度电压值输入电路,
A/D转换器ADC0808(8bit),
按键电路SW,
四位数码管显示电路。
四、源程序。(只将C语言应用程序附在后面,其它项目文档不要提供,C语言应用程序要有一定的注释说明)
五、
源程序:
/************************************************************/
#include "config.h"
#define TASK_STK_SIZE 64
#define con 0x00001fff
#define key 0x00001000
#define adstart 0x00002000
#define adend 0x00004000
const uint32 led_code[]=
{0x0000003F,0x00000006,0x0000005B,0x0000004F,0x00000066,
0x0000006D,0x0000007D,0x00000007,0x0000007F,0x00000006F,};
OS_STK Task0Stk[TASK_STK_SIZE];
OS_STK Task1Stk[TASK_STK_SIZE];
OS_STK Task2Stk[TASK_STK_SIZE];
INT32U i;
void Task0(void *data);
void Task1(void *data);
void Task2(void *data);
/*********************************************************
** 函数名称: main
** 功能描述: c语言的主函数,由它启动多任务环境
*********************************************************/
int main (void)
{
OSInit();
OSTaskCreate(Task0, (void *)0, &Task0Stk[TASK_STK_SIZE - 1], 2);
OSTaskCreate(Task1, (void *)0, &Task1Stk[TASK_STK_SIZE - 1],3);
OSTaskCreate(Task2, (void *)0, &Task2Stk[TASK_STK_SIZE - 1],4);
OSStart();
return 0;
}
void delay(INT32U t) //延时
{while(t--);}
void L_Init (void)
{
PINSEL0=0x00000000; //GPIO
PINSEL1=0x00000000; //GPIO
IODIR|= 0x00002fFF; //输入、输出
}
/********************************************************************
** 函数名称:Task0
** 功能描述: μCOS-II的第一个任务,通常由它初始化目标板和建立其它任务
*********************************************************************/
void Task0(void *p_arg)
{
p_arg = p_arg;
TargetInit(); //调用目标板初始化
L_Init(); //调用IO初始化
for(;;)
{
while((IOPIN&key)!=0); //等待按键
L_Init(); //调用IO初始化
while((IOPIN&key)==0); //等待放开按键
IOCLR= 0x0000ffFF;
// OSTimeDlyHMSM(0,0,0,8);
// IOSET=adstart;
// OSTimeDlyHMSM(0,0,0,1);
// IOCLR=adstart;
// OSTimeDlyHMSM(0,0,0,1);
// IOSET=adstart;
OSTaskSuspend(OS_PRIO_SELF);
}
}
/******************************************************************
** 函数名称:Task1
** 功能描述: μCOS-II的第2个任务,AD转换
*******************************************************************/
void Task1(void *p_arg)
{
p_arg = p_arg;
L_Init(); //调用IO初始化
for(;;)
{IOCLR=adstart; //一下产生启动脉冲
delay(50);
IOSET=adstart;
delay(50);
IOCLR=adstart;
delay(50);
L_Init(); //调用IO初始化
while((IOPIN&adend)==0); //等待转换完成
IOSET=1<<11; //使能输出
// OSTimeDlyHMSM(0,0,0,50);
i=IOPIN; //读取转换值
i=i>>15;
OSTaskSuspend(OS_PRIO_SELF); //完成转换挂起任务
}
}
/**************************************************************
** 函数名称:Task2
** 功能描述: μCOS-II的第3个任务,LED显示
***************************************************************/
void Task2(void *p_arg)
{ INT32U d,g,s,b;
p_arg = p_arg;
L_Init(); //调用IO初始化
//求取各位数
b=i/100;
d=i %100;
s=d/10;
g=d%10;
//循环显示数码管
while(1)
{
IOSET=(1<<10)|led_code[g]; //显示个位
delay(30);
IOCLR=0x00000fff; //消影
IOSET=1<<10;
IOCLR=1<<10;
IOSET=(1<<9)|led_code[s]; //显示十位
delay(30);
IOCLR=0x00000fff; //消影
IOSET=1<<9;
IOCLR=1<<9;
IOSET=(1<<8)|led_code[b]; //显示百位
delay(30);
IOCLR=0x00000fff; //消影
IOSET=1<<8;
IOCLR=1<<8;
}OSTaskResume(0);
}
五、仿真效果。(用屏幕抓图的方式将PROTEUS运行仿真效果图粘贴在下面)
第二篇:嵌入式系统课程设计报告
“嵌入式系统课程设计”报告要求
1、学生应独立完成不少于15页5000字以上的设计报告,A、B两同学报告雷同超过60%都设计成绩均记不及格。
2、课程设计报告要求用A4纸打印。题目:2号黑体;一级标题:3号宋体;二级标题:小3号宋体;三级标题:4号宋体;正文:小4号宋体,1.5倍行距。页边距:上下左2.5cm、右2.0cm。图表要规范,清晰,有图名及表名。
3、封面格式统一(见最后一页)。
4、报告要求包含下列内容:
设计题目、设计要求、设计的作用目的、设计方案、系统硬件设计、系统软件设计(硬件设计要分模块电路设计及分析、软件设计要有程序流程图)、系统仿真与调试(调试过程中出现的问题及解决方法)、心得体会、参考文献,以上不分章节,每一点作为一级标题。
5、课程设计报告(打印稿)应在设计结束后的下周一前交指导教师批阅,延迟不交者成绩记不及格。课程设计成绩应按教学大纲基本要求和相应评分细则进行评定和记载。成绩分为优秀、良好、中等、及格、不及格五个等级,优秀率一般不超过学生人数的15%。对不及格学生,应严格按照学院学分制与学籍管理实施细则的有关规定处理。
报告雷同者、报告内容文不对题者、格式混乱者,成绩记不及格!!!
报告内容提纲
一、设计题目
二、设计要求(包括设计内容描述)
三、设计作用与目的
四、所用设备及软件
五、系统设计方案
1系统总体设计(要有系统总体结构框图)
2.简要阐述系统工作原理
六、系统硬件设计(包含系统总体结构电路原理图及各部分电路原理图)
1.系统整体设计
2.各单元电路设计
七、系统软件设计(要有程序流程图)
1.主程序流程设计
2.子程序设计
八、仿真调试分析(仿真调试工具、方法、运行效果)
九、设计中的问题及解决方法
十、嵌入式系统学习心得
十一、参考文献
湖南文理学院
课程设计报告
课程名称: 嵌入式系统课程设计
专业班级: 自动化12101班 学号(2位)
学生姓名:
指导教师:
完成时间: 20##年 月 日
报告成绩:
湖南文理学院制