1、嵌入式系统 课程设计报告 设计任务一 十字路口交通灯控制 一、设计目的: 1 了解基于 ARM7 核的 LPC2106 的管脚功能和特点, 掌握 I/O 控制寄存器的设置方法; 2掌握 ARM7 应用系统编程开发方法,能用 C 语言编写应用程序; 3熟练掌握 ADS1.2 软件的使用以及 PROTEUS 仿真调试的方法; 二、具体任务: 1采用 PROTEUS 完成十字路口交通灯控制的硬件电路设计,要求单片机选型为飞利 浦公司的 LPC2106,东西南北方向分别设置红黄绿 3 个指示灯,东西方向和南北方向各用 1 个数码管显示通行时间; 2用 ADS1.2 编写 C 语言应用程序,完成十字路口
2、交通灯控制; 3采用 PROTEUS 将应用程序装载在 LPC2106 中,进行仿真验证。要求东西方向和南 北方向的数码管显示通行时间并倒计时,可以设置成一样,例如都是 9 秒倒计时;每当倒计 时时间到,完成红黄绿指示灯的状态切换,模拟实现十字路口的交通灯管理控制。 三、硬件电路设计。 (参考下图完成硬件电路设计,用屏幕抓图的方式将自己设计的 PROTEUS 电路图粘贴在下面,并用文字对所设计的电路功能、原理进一步说明) 班级:电气工程*班 学号:* 姓名: * 指导教师:* 成绩: 第 2 页 共 13 页 硬件电路说明: 此电路设计实现的功能是: 模拟实现十字路口的交通灯管理控制。 东西绿
3、灯南北红灯亮 30 秒,然后是东西绿灯变为黄灯亮 3 秒,南北红灯不变。再到东西黄灯变为红灯,南北红 灯变为绿灯,都是亮 30 秒。最后是南北绿灯变为黄灯亮 3 秒,东西红灯不变。因为此电路 只采用两个数码管,仅仅可以完成一些简单的功能,这样可以先编写简单的程序。按理是要 4 个数码管来显示的,这样就可以调整由绿灯变为黄灯时,而红灯不变的时间差。因为时间 有限,所以只实现交通灯的基本功能实现,后续电路还需改进! 四、源程序。 (只将 C 语言应用程序附在后面,其它项目文档不要提供) #include“config.h“ 第 3 页 共 13 页 #include“LPC2106.h“ uint
4、32 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) /延时函数, 当 n 为 1 时大致延时 1 毫秒 uint32 i,j; for(i=n;i0;i-) for(j=2000;j0;j-); int main() int i=0,n=0,m=0; PINSEL0=0x0000000; /寄存器初始化,选择其 I/0 口功能
5、 PINSEL1=0x00000000; IODIR=0x0000ffff; /清 0 寄存器设置 while(1) for(i=0;i15; 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(); while(1) b=data/100; d=data %100; s=d/10; g=d%10; 第 11 页 共 13 页 IOSET=(110)|led_codeg; delay(30); IOCLR=0x00000fff; IOSET=110; IOCLR=110; IOSET=(19)|led_codes; delay(30); IOCLR=0x00000fff; IOSET=19; IOCLR=19; IOSET=(18)|led_codeb; delay(3