人车分行交通信号指挥灯的控制_第1页
人车分行交通信号指挥灯的控制_第2页
人车分行交通信号指挥灯的控制_第3页
人车分行交通信号指挥灯的控制_第4页
人车分行交通信号指挥灯的控制_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机原理及接口技术课程设计报告设计题目:人车分行交通信号指挥灯的控制学 号:姓 名:指导教师: 信息与电气工程学院二零一四年六月2哈尔滨工业大学(威海)课程设计报告人车分行交通信号指挥灯的控制近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但是仅仅掌握单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,不断完善调试,才能设计出功能完好的产品。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊,那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统,所以有条不紊的智

2、能交通灯的应用和开发也显得尤为重要,交通信号灯控制方式很多。本系统采用单片机设计交通灯控制器,以AT89S52单片机为核心部件,应用汇编语言编程,实现交通灯的完美工作。1. 设计任务结合市政审批路口实际情况,基于AT89S52单片机设计一个人车分行交通信号灯的控制系统。该系统应满足的功能要求为:如果产生紧急事件,人为按下紧急按钮,紧急灯显示,并且南北东西的所有路口都显示并且保持红灯;紧急事件消除后,再扳回按钮,此时交通灯状态再从状态1开始循环。如果没有紧急事件,状态由1到5正常循环进行。初始状态(状态1)为:南北方向绿灯通车,东西方向红灯,持续20s。状态2:南北方向绿灯最后闪烁几次后转黄灯亮

3、,延时2s,此时东西方向仍然保持红灯。状态3:东西方向保持红灯,南北方向也转为红灯,此时是人行状态,持续20s,人行提示灯亮,同时人行倒计数开始(非人行状态时人行提示灯灭,倒计数显示禁止通行)。状态4:东西方向转绿灯,延时20S,南北方向仍然红灯。状态5:东西黄灯闪烁2s,南北红灯保持。至此,一个循环大状态完成。此后不断循环重复状态1至状态5,在每个状态下,都有时钟倒数计时显示。状态20S2S20S202s紧急东西红灯亮红灯亮红灯亮(人行)绿灯亮黄灯亮红灯南北绿灯亮黄灯亮红灯亮(人行)红灯亮红灯亮红灯2. 整体方案设计图2-1 十字路口交通灯示意图人车分行交通信号指挥控制灯以AT89S52单片

4、机作为整个系统的控制核心,应用其强大的接口功能,构成整个人车分行交通灯控制的硬件系统。硬件系统主要由紧急设定,显示电路,时钟电路,红绿灯电路构成。各模块的主要功能如下:(1) 紧急设定:由一个开关键给出,当发生紧急状况时,打开开关键,东西、南北红灯均亮,禁止车辆通行。(2) 显示电路的功能是显示东西、南北交通指示灯亮的时间。(3) 时钟电路的功能是为单片机提供时钟信号。(4) 红绿灯电路的功能是指示车辆通行,红灯停,绿灯行。(5) 复位电路的功能是使单片机处于某种确定的初始状态。系统的整体设计方案设计图如图2-2所示。图2-2 系统的整体方案设计图3. 系统硬件电路设计3.1 紧急设定电路紧急

5、设定电路采用一个开关来控制,如果发生紧急情况,开关闭合,东西、南北红灯均亮,人行灯灭,禁止行人、车辆通行,来保护现场。并且显示电路停止计时。图3-1 AT89S52与开关的紧急设定电路3.2 显示电路倒计时显示电路采用LED数码管显示,由于本题要显示六位,采用了共阴数码管动态显示。本次设计采用LED动态显示方式。LED数码管工作于动态显示方式时,各位的共阴极接地;每位的段码线分别与一个8位的I/O口锁存器输出相连。如果送往各个LED数码管所显示字符的段码一经确定,则相应I/O口锁存器锁存的段码输出将维持不变,直到送入另一个字符的段码为止。图3-2 AT89S52与LED的显示电路3.3 时钟电

6、路 AT89S52单片机各功能部件的运行都以时钟控制为基准,有条不紊、一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。单片机时钟信号产生有两种方式:一是内部时钟电路,二是外部时钟电路,本设计使用内部时钟电路,在单片机的XTAL1和XTAL2引脚接石英晶体,作为单片机内部振荡电路的负载,构成中自激振荡器,可在单片机内部产生时钟脉冲信号,C1和C2可以稳定振荡频率,并使快速起振。本电路选用晶振12MHz,C1=C2=30pF。晶体的频率越高,系统的时间频率越高,单片机的运行速度也就越快。 图3-3 AT89C52的时钟电路3.4 红绿灯电路本次设计需

7、要控制十二个灯的红绿黄状态。其中由于十字路口对象红绿灯状态相同,因此只需控制6个灯的状态即可。6个灯阳极全部接高电平。图3-4 AT89S52连接红绿灯及人行灯电路3.5 复位电路复位是单片机的初始化操作,只需给AT89S52的复位引脚RST加上大于2个机器周期(即24个时钟振荡周期)的高电平就可使AT89S52复位。AT89S52的复位是由外部的复位电路实现的。复位电路通常采用上电自动复位和按钮复位两种方式。本设计采用的是上电复位电路。上电自动复位电路是通过外部复位电路给电容C充电加至RST引脚一个短的高电平信号,信号随着Vcc对电容C的充电过程而逐渐回落,即RST引脚上的高电平持续时间取决

8、于电容C的充电时间。因此,为了保证系统可靠的复位,RST引脚上的高电平必须维持足够长的时间。 图3-5 AT89C52的复位电路 4. 系统程序设计4.1 主程序流程图初始状态(状态1)为:南北方向绿灯通车,东西方向红灯,持续20s。状态2:南北方向绿灯最后闪烁几次后转黄灯亮,延时2s,此时东西方向仍然保持红灯。状态3:东西方向保持红灯,南北方向也转为红灯,此时是人行状态,持续20s,人行提示灯亮,同时人行倒计数开始(非人行状态时人行提示灯灭,倒计数显示禁止通行)。状态4:东西方向转绿灯,延时20S,南北方向仍然红灯。状态5:东西黄灯闪烁2s,南北红灯保持。至此,一个循环大状态完成此后不断循环

9、重复状态1至状态5,在每个状态下,都有时钟倒数计时显示图4-1主程序流程图4.2 显示子程序流程图图4-2 显示子程序流程图4.3 闪烁子程序流程图图4-3 闪烁子程序流程图4.4 正常子程序流程图 图4-4 正常子程序流程图4.5延迟子程序流程图图4-5 延时子程序流程图5. 系统调试5.1 Proteus软件仿真调试(1) 调试过程 启动计算机,打开Proteus仿真软件,进入仿真环境。将写好的程序存入单片机中,点击运行。即可观察程序运行情况。各端口红色代表高电平,蓝色代表低电平,灰色代表无状态。可以通过数码管和红绿灯的状态观察仿真是否正确。也可以通过单片机端口的高低电平状态判断运行情况。

10、可以通过暂停键暂停程序,通过结束键随时结束程序。(2) 调试时遇到的问题及解决方法 引脚分配时出现错误,导致紧急开关不能中断正常子程序。重新分配引脚后,紧急开关常态是为高电平,闭合后为低电平。正常程序不再运行,数码管停止示数,四个路口红灯亮起。 (3) 调试运行结果 在设置5段时间之后,第一个状态运行情况如图5-1,东西绿灯20s(最后两秒闪烁),南北红灯20s第二个状态运行情况如图5-2,东西黄灯2s.南北红灯2s。第三个状态运行情况如图5-3,东西红灯20s,南北红灯20s,人走。第四个状态如图5-4,东西红灯20s,南北绿灯20s(最后两秒闪烁)。第五个状态运行情况如图5-5,东西红灯2

11、s,南北黄灯2s。按下紧急按钮后,运行状态如图 5-6(数码管灭,所有红灯亮起)。图5-1 第一个状态运行情况图5-2 第二个状态运行情况图5-3 第三个状态运行情况图5-4 第四个状态运行情况图5-5 第五个状态运行情况图5-6 紧急状态运行情况5.2 硬件调试(1) 调试过程 安装好仿真器,连接好电路,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头。将写好的.C文件通过菊阳软件下载到单片机中。运行程序,观察测试结果,包括各路口红绿灯显示及数码管显示。(2) 调试时遇到的问题及解决方法 实验箱数码管与软件仿真所用数码管有所不同,片选端加装

12、了非门,片选信号与所编程序刚好相反。更改程序后正常显示。6. 程序清单#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit DXyellow=P10;sbit DXgreen=P11;sbit DXred=P12;sbit NByellow=P13;sbit NBgreen=P14;sbit NBred=P15;sbit Rwalk=P16;/人行提示灯sbit J=P17;/紧急按钮sbit w1=P30;sbit w2=P31;sbit w3=P32;sbit w4=P33;/四个位选

13、sbit w5=P34;sbit w6=P35;ucharcodetable=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;uint num1,num2,ge1,shi1,ge2,shi2;void xianshi();void xianshi1();void shanshuo1();void shanshuo2();void zhengchang();void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void main()while(1) if(J=0) N

14、Bred=0;DXred=0; else zhengchang();void xianshi() uint i=167; while(i-) w1=1;P2=tableshi1;delay(1);w1=0; w2=1;P2=tablege1;delay(1);w2=0; w3=1;P2=tableshi2;delay(1);w3=0; w4=1;P2=tablege2;delay(1);w4=0; w5=1;P2=0x3f;delay(1);w5=0; w6=1;P2=0x3f;delay(1);w6=0; void xianshi1() uint i=167; while(i-) w1=1;

15、P2=tableshi1;delay(1);w1=0; w2=1;P2=tablege1;delay(1);w2=0; w3=1;P2=tableshi2;delay(1);w3=0; w4=1;P2=tablege2;delay(1);w4=0; w5=1;P2=tableshi2;delay(1);w5=0; w6=1;P2=tablege2;delay(1);w6=0; void zhengchang() num1=20;num2=42; while(num1) if(J=0) NBred=0;DXred=0;NBgreen=1;DXyellow=1;NByellow=1;DXgreen

16、=1;Rwalk=1; else if(num1>2) NByellow=1;NBred=0;NBgreen=1;DXyellow=1;DXred=1;DXgreen=0;Rwalk=1; ge1=num1%10;shi1=num1/10;ge2=num2%10;shi2=num2/10; xianshi();num1-;num2-; elseNByellow=1;NBred=0;NBgreen=1;DXyellow=1;DXred=1;DXgreen=0;Rwalk=1; ge1=num1%10;shi1=num1/10;ge2=num2%10;shi2=num2/10; shansh

17、uo1();num1-;num2-; /东西绿灯20s(最后两秒闪烁),南北红灯20s num1=2;num2=22; while(num1) if(J=0) NBred=0;DXred=0;NBgreen=1;DXyellow=1;NByellow=1;DXgreen=1;Rwalk=1; else NByellow=1;NBred=0;NBgreen=1;DXyellow=0;DXred=1;DXgreen=1;Rwalk=1; ge1=num1%10;shi1=num1/10;ge2=num2%10;shi2=num2/10;xianshi();num1-;num2-; /东西黄灯2s.

18、南北红灯2s num1=42;num2=20; while(num2) if(J=0) NBred=0;DXred=0;NBgreen=1;DXyellow=1;NByellow=1;DXgreen=1;Rwalk=1; else NByellow=1;NBred=0;NBgreen=1;DXyellow=1;DXred=0;DXgreen=1;Rwalk=0; ge1=num1%10;shi1=num1/10;ge2=num2%10;shi2=num2/10;xianshi1();num1-;num2-; /东西红灯20s,南北红灯20s,人走 num1=22;num2=20; while(

19、num2) if(J=0) NBred=0;DXred=0;NBgreen=1;DXyellow=1;NByellow=1;DXgreen=1;Rwalk=1; else if(num2>2) NByellow=1;NBred=1;NBgreen=0;DXyellow=1;DXred=0;DXgreen=1;Rwalk=1; ge1=num1%10;shi1=num1/10;ge2=num2%10;shi2=num2/10; xianshi();num1-;num2-;elseNByellow=1;NBred=1;NBgreen=0;DXyellow=1;DXred=0;DXgreen=

20、1;Rwalk=1; ge1=num1%10;shi1=num1/10;ge2=num2%10;shi2=num2/10; shanshuo2();num1-;num2-; /东西红灯20s,南北绿灯20s(最后两秒闪烁) num1=2;num2=2; while(num2) if(J=0) NBred=0;DXred=0;NBgreen=1;DXyellow=1;NByellow=1;DXgreen=1;Rwalk=1; else NByellow=0;NBred=1;NBgreen=1;DXyellow=1;DXred=0;DXgreen=1;Rwalk=1; ge1=num1%10;sh

21、i1=num1/10;ge2=num2%10;shi2=num2/10; xianshi();num1-;num2-; /东西红灯2s,南北黄灯2svoid shanshuo1()uint i=170; while(i-) if(i%17)=0)DXgreen=!DXgreen; w2=1;P2=tablege1;delay(1);w2=0; w1=1;P2=tableshi1;delay(1);w1=0; w4=1;P2=tablege2;delay(1);w4=0; w3=1;P2=tableshi2;delay(1);w3=0; w5=1;P2=0x3f;delay(1);w5=0; w

22、6=1;P2=0x3f;delay(1);w6=0; void shanshuo2()uint i=170; while(i-) if(i%17)=0)NBgreen=!NBgreen; w2=1;P2=tablege1;delay(1);w2=0; w1=1;P2=tableshi1;delay(1);w1=0; w4=1;P2=tablege2;delay(1);w4=0; w3=1;P2=tableshi2;delay(1);w3=0; w5=1;P2=0x3f;delay(1);w5=0; w6=1;P2=0x3f;delay(1);w6=0; 7.小结本次单片机课程设计,学到了很多的东西。不仅巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。过这次课程设计我发现单片机原理应用行很强,只有老师的讲解不行,只有自己动手去做

温馨提示

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

评论

0/150

提交评论