《交通灯制作报告》.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《交通灯制作报告》.doc

交 通 灯 制 作 项 目 报 告 目 录 1. 项目背景 3 2. 需求分析 3 2.1. 系统目标 3 2.2. 功能需求 3 3. 项目分工与进度 4 4 . 软件流程说明 5 5. 硬件电路设计 7 6. 软件程序设计 8 7. 项目结论 12 附:pic交通灯元器件清单 项目名称 项目背景 当今世界正处于一个自动化时代,交通灯控制等很多行业的设备都需要计算机来控制。因此,一个好的交通灯控制系统能在道路拥挤、违章控制等方面起到很大作用。 如今,红绿灯早已安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。而这一技术在19世纪就已出现了。 1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。 1914年始安装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。 1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。 需求分析 系统目标 利用单片机PIC16F877A中的定时器、IO接口、中断系统等资源,设计一个十字路口交通信号灯的控制模拟系统。并且可控制LED灯的显示与切换,并控制八个数码管显示和倒计时。 功能需求 利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭。 2、对红绿黄灯点亮和熄灭并用数码管进行时间倒计的时间显示。 项目分工与进度 4 . 软件流程说明 当东西红灯亮,南北绿灯亮时,东西方向数码管倒计时40秒,南北数码管倒计时30秒;切换成南北黄灯亮,东西红灯亮,同时南北数码管倒计时10秒,黄灯亮10秒;然后切换成南北红灯亮,东西绿灯亮,南北数码管倒计时40秒,东西数码管倒计时30秒;切换成南北红灯亮,东西黄灯亮,同时东西方向数码管倒计时10秒,黄灯亮10秒;一直循环下去,再一次切换成东西红灯亮,南北绿灯亮时,南北方向数码管倒计时30秒…… 软件流程结构框图如下: 5 . 硬件电路设计 仿真电路图: 电路原理图: 6 . 软件程序设计 #include pic.h unsigned char LED1=0; unsigned char LED2=0; unsigned char LED3=0; unsigned char LED4=0; unsigned char LED_L=0; const unsigned char table[18]= {0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X60,0X25,0X3c,0X23,0X34,0X74,0XF7,0XFF}; void timer1init(void) //初始化 { T1CON=0X01; //打开定时器 1 TMR1IF=0; //清除 TMR1 中断标志 TMR1IE=1; //TMR1中断允许 TMR1H=0xF6; //赋初值,以便 TMR1每2MS左右中断一次 TMR1L=0x3D; PIR1=0; //清除所有中断标志 PEIE=1; //允许外围总中断 GIE=1; //总中断开关打开 } void interrupt T1(void)//中断处理 { if(TMR1IF==1) //如果是定时器1 中断 { TMR1IF=0; //清除定时器1中断标志 TMR1H=0XF6; //重新复初值 TMR1L=0x3D; switch(LED_L) { case 0://点亮第一个数码管 RE2=1; RE1=0; RE0=0; PORTB = table[LED1]; LED_L = 1; break; case 1://点亮第二个数码管 RE2=0; RE1=1; RE0=0; PORTB = table[LED2]; LED

文档评论(0)

wyth + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档