嵌入式系统课程设计报告.docx_第1页
嵌入式系统课程设计报告.docx_第2页
嵌入式系统课程设计报告.docx_第3页
嵌入式系统课程设计报告.docx_第4页
嵌入式系统课程设计报告.docx_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统 课程设计报告设计任务一 十字路口交通灯控制一、设计目的: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.hvoid delay(unsigned int i)while(i-)unsigned char j;for(j=0;j125;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;k5;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;k5;k+)IOSET=0x0000000A;delay(3000);IOCLR=0x00000002;delay(3000);IOCLR=0x00000008;五、仿真效果。(用屏幕抓图的方式将PROTEUS运行仿真效果图粘贴在下面)设计任务二 uC/OS-的移植与应用一、设计目的:1了解嵌入式实时操作系统uC/OS-可移植、可裁剪等性能特点,正确理解实时操作系统中任务、信号、消息、中断等基本概念以及uC/OS-多任务管理的调度算法;2掌握uC/OS-在ARM7上移植的方法;3能将uC/OS-移植在LPC2106中,并根据具体要求创建用户任务,解决实际问题;二、具体任务:1uC/OS-移植在LPC2106中。2编写用户任务程序,完成实时温度的采集控制。硬件电路见参考硬件电路图,图中用滑动变阻器代替温度传感器转换后的电压,用ADC0809完成A/D转换,并用数码管显示出来。三、参考硬件电路。(用文字对所设计的电路功能、原理做详细说明)四、源程序。(只将C语言应用程序附在后面,其它项目文档不要提供,C语言应用程序要有一定的注释说明)源程序:/*/#include config.h#define TASK_STK_SIZE64#define KEY0x00001000/管脚P0.12#define ADCS0x00002000/管脚P0.13#define ADCEND0x00004000/管脚P0.14uint32 led_code10=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F;/共阴极数码管字形码 OS_STK Main_Task_key_StkTASK_STK_SIZE;/定义任务堆栈大小OS_STK Main_Task_adc_StkTASK_STK_SIZE;OS_STK Main_Task_led_StkTASK_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_StkTASK_STK_SIZE - 1, 0); OSTaskCreate(Task_adc, (void *)0, &Main_Task_adc_StkTASK_STK_SIZE - 1, 1); OSTaskCreate(Task_led, (void *)0, &Main_Task_led_StkTASK_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 = 115;/* 处理数据 */ 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 = (110) | led_codegw;/* 显示个位数据 */delay(200);IOCLR = 0x0000FFFF;IOSET =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论