单片机课程设计报告 十字路口交通信号灯控制系统_第1页
单片机课程设计报告 十字路口交通信号灯控制系统_第2页
单片机课程设计报告 十字路口交通信号灯控制系统_第3页
单片机课程设计报告 十字路口交通信号灯控制系统_第4页
单片机课程设计报告 十字路口交通信号灯控制系统_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

烟台南山学院单片机原理与接口技术课程设计单片机原理与接口技术课程设计(报告)单片机原理与接口技术课程设计题目:十字路口交通信号灯控制系统摘要随着科技的飞速发展,单片机的应用不断深入发展,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,往往把单片机作为一个核心部件去使用。但是,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。这些秩序靠的就是交通信号灯的自动指挥系统。交通信号灯有很多控制方式。本次采用MCS-51系列单片机AT89C51为核心器件来设计交通灯控制器,通过单片机P3口接按钮控制红绿灯时间;红绿灯循环点亮30秒,倒计时剩3秒时黄灯闪烁警示;交通灯信号通过P1口输出;二位共阴极数码管显示时间通过P0口输出。关键词:51单片机;数码管;外部中断;交通灯

目录第1章绪论 绪论1.1项目设计背景随着各种交通工具的发展和交通指挥的需要,第一盏名副其实的三色灯(红、黄、绿三种标志)于1918年诞生。它是三色圆形四面投影器,被安装在纽约市五号街的一座高塔上,由于它的诞生,使城市交通大为改善。黄色信号灯的发明者是我国的胡汝鼎,他怀着“科学救国”的抱负到美国深造,在大发明家爱迪生为董事长的美国通用电器公司任职员。一天,他站在繁华的十字路口等待绿灯信号,当他看到红灯而正要过去时,一辆转弯的汽车呼地一声擦身而过,吓了他一身冷汗。回到宿舍,他反复琢磨,终于想到在红、绿灯中间再加上一个黄色信号灯,提醒人们注意危险。他的建议立即得到有关方面的肯定。于是红、黄、绿三色信号灯即以一个完整的指挥信号家族,遍及全世界陆、海、空交通领域了。早期的交通信号灯使用“固定配时”方式实行自动控制,这种方式对于早期交通流量不大的情况曾起到一定的作用。但随着汽车工业的发展、交通流量增加、随机变化增强,采用以往那种单一模式的“固定配时”方式已不能满足客观需要,于是一种多时段多方案的信号控制器开始出现并逐步取代了传统的只有一种控制方案的控制器。计算机技术的出现为交通控制技术的发展注入了新的活力,更是实现了以一个城市或者更大地域,而非简单的一个路口的交通总体控制系统。1952年,美国科罗拉多州丹佛市首次利用模拟计算机和交通检测器实现了对交通信号机网的配时方案自动选择式信号灯控制,而加拿大多伦多市于1964年完成了计算机控制信号灯的实用化,建立了一套由IBM650型计算机控制的交通信号协调控制系统,成为世界上第一个具有电子数字计算机城市交通控制系统的城市。这是道路交通控制技术发展的里程碑。可以说,在近百年的发展中,道路交通信号控制系统经历了手动到自动,从固定配时到灵活配时,从无感应控制到有感应控制,从单点控制到干线控制,从区域控制到网络控制的长远过程。1.2设计目的了解交通灯管理的基本工作原理熟悉AT89C51的工作原理和应用变成熟悉AT89C51并行接口的各种工作方式和应用熟悉AT89C51计数器/定时器的工作方式和应用编程外部中断的方法掌握多位LED显示问题的解决1.3设计意义在十字路口设置交通灯可以对交通进行有效的疏通,并为交通参与者的安全提供了强有力的保障。但是随着社会、经济的快速发展,原先的交通灯控制系统已经不能适应现在日益繁忙的交通状况。如何改善交通灯控制系统,使其适应现在的交通状况,成为研究的课题。传统的十字路口交通控制灯,通常的做法是:事先经过车辆流量的调查,运用统计的方法将两个方向红绿灯的延时预先设置好。然而,实际上车辆流量的变化往往是不确定的,有的路口在不同的时段甚至可能产生很大的差异。即使是经过长期运行、较适用的方案,仍然会发生这样的现象:绿灯方向几乎没有什么车辆,而红灯方向却排着长队等候通过。这种流量变化的偶然性是无法建立准确模型的,统计的方法已不能适应迅猛发展的交通现状,更为现实的需要是能有一种能够根据流量变化情况自动控制的交通灯。交通网络是城市的动脉,象征着一个城市的工业文明水平。交通关系着人们对于财产,安全和时间相关的利益。具有优良科学的交通控制技术对资源物流和人们出行都是十分有价值的,保证交通线路的畅通安全,才能保证出行舒畅,物流准时到位,甚至是生命通道的延伸。交通灯控制器设计主要功能是用单片机控制LED灯模拟指示。模拟东西南北方向的十字路口交通灯信号控制情况。以89C51单片机为核心芯片,采用中断方式实现控制。本模拟系统由单片机硬/软件系统,两位8段数码管和LED灯显示系统和复位电路控制电路等组成,较好的模拟交通路面的控制。

第2章设计方案2.1设计要求(1)具有交通灯(红,黄,绿)三种颜色变化功能。(2)可以按键修改交通灯状态及红绿灯时间。(3)用数码管倒计时读秒。2.2设计参数主控芯片使用的是AT89C51单片机。倒计时时间:30s。红黄绿灯采用LED灯显示。显示采用二位共阴极数码管读秒。按钮开关5个。2.3通行方案设计设在十字路口,分为主道A和支道B,在任一时刻只有一个方向通行,另一个方向禁行,持续一定时间,经过短暂的过渡时间,将通行方向禁行方向对换。其具体状态如下图所示。交通状态从1开始变换,直至状态4然后循环至状态1,反复循环。通过具体的路口交通灯演示分析我们可以把这四个状态归纳如图2-2所示。图2-2交通状态示意图主道A绿灯亮,同时红灯灭,支道B黄灯灭,同时红灯亮,倒计时30秒。,此状态下,主道A禁止通行,支道B允许通行。主道A绿灯灭,同时黄灯亮,支道B红灯亮,倒计时3秒,此状态下,除了正在通行中的车辆,其他所有车辆都需要等待状态转换。支道B红灯灭,同时绿灯亮,主道A绿灯灭,同时红灯亮,倒计时30秒。,此状态下,主道A禁止通行,支道B允许通行。支道B绿灯灭,同时黄灯亮,主道A红灯亮,倒计时3秒,此状态下,除了正在通行中的车辆,其他所有车辆都需要等待状态转换。四个路口均有三个红绿灯,在任一路口,遇到红灯禁行,绿灯后方可通行,黄灯警示车辆减速慢行或等待,状态即将变换。

第3章硬件电路的设计3.1AT89C51单片机简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPERON—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案[1]。3.1.1AT89C51单片机的主要特性与MCS-51兼容,4K字节可编程闪烁存储器,寿命:1000写/擦循环,数据保留时间:10年,全静态工作:0Hz-24Hz,三级程序存储器锁定,128×8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源(两个外部中断源和3个内部中断源),可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路[1]。3.1.2主要引脚功能图3-1AT89C51引脚图VCC:电源电压VSS:接地时钟引脚(XTAL1、XTAL2):时钟电路是单片机的心脏,它用于产生单片机工作所需要的时钟信号。可以说单片机就是一个复杂的同步时序信号,为了保证同步工作的实现,电路应在统一的时钟信号控制下严格地按照时序进行工作。常用的时钟电路有两种:一种是内部时钟方式,另一种是外部时钟方式[1]。本设计采用的是内部方式。原理图如图3-2所示:图3-2时钟电路图RST/VPD(9脚):RST即为RESET,VPD为备用电源。输入/出引脚P0~P3:除输入/输出功能外。1)P0口第二功能:是作为地址总线8位及数据总线分时复用口,一般作为扩展时地址数据总线口使用。2)P2口第二功能:用作高8位地址总线。一般作为扩展时地址总线的高8位使用[1]。3)P3口第二功能:其定义如表3-1所示:表3-1P3口的第二功能定义引脚第二功能P3.0RXD串行口输入端P3.1TXD串行口输出端P3.2INT0外部中断0请求输入端,低电平有效P3.3INT1外部中断1请求输入端,低电平有效P3.4T0定时器/计数器0计数脉冲输入端P3.5T1定时器/计数器1计数脉冲输入端P3.6WR外部数据存储器及I/O口写选通信号输出端,低电平有效P3.7RD外部数据存储器I/O口读选通信号输出端,低电平有效3.2硬件模块(1)按钮Key1:时间增加。Key2:时间减少。Key3:设置确定。Key4:启动复位。Key5:黄灯闪烁。按钮图如图3-3所示:图3-3按钮示意图(2)数码管动态显示图数码管实际上是由7个发光二极管和一个小数点8个组成,分别命名为A、B、C、D、E、F、G、DP。示意图如图3-4所示。图3-4数码管

第4章软件的设计4.1流程图交通信号灯整体流程图如图4-1所示。图4-1主程序流程图

4.2交通状态路口交通信号灯的各个状态,通过0、1标志交通信号灯的亮灭。状态1状态2状态3状态4主道A通行等待变换禁止等待变换支道B禁止等待变换通行等待变换A红灯0011A黄灯0100A绿灯1000B红灯1100B黄灯0001B绿灯0010注释:1代表通,0代表断。表4-1交通状态及红绿灯状态4.3总体结构图AT89C51的各个引脚的作用。图4-2总体结构图

第五章系统调试5.1程序开始按下按钮KEY4,程序开始运行,数码管倒计时,此时南北绿灯亮,东西红灯亮,倒计时27秒后,南北黄灯闪烁,3秒后南北红灯亮,东西绿灯亮。重复按下按钮KEY4可以复位停止。仿真图如图5-1所示。图5-1正常模式 5.2黄灯闪烁模式按下KEY5开启黄灯闪烁模式,黄灯闪烁提醒来往车辆减速慢性。电路如图5-2所示。图5-2黄灯闪烁模式结论在这次的课程设计中,实现了十字路口交通灯红绿灯交替变换的功能,通过按钮开关控制还可以增加减路口各方向红绿灯的时间,还可以在不同种模式下控制灯亮灭,例如:在紧急模式下,红灯亮,警告来往车辆停止行驶,提示该路口会有紧急车辆驶过;在夜间模式下,黄灯亮,提示来往车辆减速慢行。课程设计让我们把课堂上学习到的知识得到巩固和进一步的提高,对已有知识有了更进一步的认识和理解,同时,也发现了自身能力的有限。在设计过程中都会遇到一些困难和问题,如:定义错函数;函数名输入错误;字母大小写在输入过程中输错;输入的程序无法实现该模式的仿真;在接线图中,距离较近的两个端子接串;数码管数字闪烁。不过本次设计是三人一组,通过与同学的共同分析,以及借助书籍的帮助,依次将问题解决。通过本次设计,发现自己对单片机的理解认识还远远不够。我会在以后的学习中不断提高自己,在学习中对单片机得到进一步的认识。 

参考文献姜志海,姜沛勋.单片机的C语言程序设计与应用[M].北京:电子工业出版社,2020.刘立钧,张永达.单片机按键程序研究[J].电子世界,2020(08):87-88.何悠.基于单片机的智能交通灯控制系统实现方案分析[J].数字技术应用,2017(10):18-19.郭玉秀.基于单片机的十字路口交通灯的设计仿真[J].现代制造技术与装备,2018(08):66-68.范羚.单片机课程案例化教学方法研究[J].计算机产品与流通,2020(06):231茅阳.单片机技术在电气传动控制系统中的应用与研究[J].中国高新区,2018(01):24.张毅刚.单片机原理及应用[M].高等教育出版社,2020.向敏.单片机原理与工程应用[M].电子工业出版社,2021.黄炟.单片机在电子技术中的应用分析[J].科学技术创新,2020(11):167-168.[10]陈君.基于AT89C51单片机的智能交通灯设计[J].电子技术与软件工程,2016(01):260-261.

附录一#include<reg51.h>#include<intrins.h>typedefunsignedcharuchar;typedefunsignedintuint;sbitk1=P1^6; sbitk2=P1^7; sbitk3=P3^1; sbitk4=P3^4; sbitk5=P3^7; sbitreg_nb=P1^3; //南北红灯sbitreg_dx=P1^0; //东西红灯 sbitgreen_nb=P1^5; //南北绿灯sbitgreen_dx=P1^2; //东西绿灯sbityellowled_nb=P1^4; //南北黄灯sbityellowled_dx=P1^1; //东西黄灯ucharcodetable[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};uchardatadig=0xfe; uchardataled=0; uchardatabuf[4];//暂存东西、南北的个位十位signedcharsec_dx=30;//东西数码指示值signedcharsec_nb=30;//南北数码指示值signedcharset_timedx=30; //东西倒计时设置的键值保存signedcharset_timenb=30;//南北倒计时设置的键值保存unsignedchara=0; //执行按键3的标志unsignedcharb=0; //定时器的中断数次unsignedcharc=0; //执行按键4的标志unsignedchard=0; //执行按键5的标志unsignedcharSNEW=0; //控制南北红灯与绿灯时间的切换&&东西红灯与绿灯时间的切换unsignedchartime=0;//东西南北黄灯灯状态循环标志voiddelay(intms){ uintj,k; for(j=0;j<ms;j++) for(k=0;k<124;k++);}voidkey_to1(){ TR0=0; //关定时器 sec_nb++;//南北加1S sec_dx++;//东西加1S if(sec_nb==61) //判断南北的绿灯时间是否超过了60 { sec_nb=0; //南北置0 sec_dx=60;//东西置60 } }voidkey_to2(){ TR0=0;//关定时器 sec_nb--;//南北减1S sec_dx--;//东西减1S if(sec_nb==-1) //判断南北的绿灯时间是否小于0 { sec_nb=60; //南北置60 sec_dx=0; //东西置0 } }voidkey() { //***********按键k1与按键k2的功能判断*************// if(a==2)//按键k3已设置为设置模式 { if(k1==0) //按键1(设置南北时间加1) { delay(10); //按键消抖 if(k1!=1) { while(k1!=1);//等待按键释放 key_to1(); //执行南北绿灯的时间加1;东西的减1 } } if(k2==0) //按键2(设置南北时间减1) { delay(10); //按键消抖 if(k2!=1) { while(k2!=1);//等待按键释放 key_to2(); //执行南北绿灯的时间减1;东西的加1 } } } if(k3==0) //按键3的功能(进入设置时间状态) { delay(100);//延时->消抖 if(k3==0)//消抖 { if(a==0) //开始进入设置时间状态标志 { a=1; c=0; d=0; } elseif(a==2) //设置时间完毕标志 { a=3; } if(a==1) //设置进入设置时间模式(使a=2) { a=2; TR0=0; sec_nb=30; //设置时间的初始值为30s sec_dx=30; reg_nb=1; //所以方向关闭红色与黄色信号灯,打开绿色信号灯 reg_dx=1; green_nb=0; green_dx=0; yellowled_nb=1; yellowled_dx=1; } if(a==3) //设置时间完毕 { a=0; reg_nb=0; //所以方向的信号灯都亮 reg_dx=0; green_nb=0; green_dx=0; yellowled_nb=0; yellowled_dx=0; set_timenb=sec_nb; //将设置好的时间保存 set_timedx=sec_dx; } while(k3==0);//等待按键释放 } } if(k4==0) //按键4的功能(红绿灯开始或停止工作) { delay(100); if(k4==0) { if(c==0&&d!=1) //红绿灯开始工作 {a=0; b=0; //定时中断数次清0 c=1; //开始正常工作无限循环 d=0; //关闭夜间状态 time=0;//南北先通行 SNEW=0;//南北先通行 sec_nb=set_timenb; //前从南北方向开始通行,将设置好的南北绿灯时间赋给南北数码管显示 sec_dx=set_timenb; //将南北绿灯时间赋给东西方向的红色等待时间 } elseif(c==1||d==1) //停止红绿灯工作 { TR0=0; a=0;//关闭设置状态 b=0; //定时中断数次清0 c=0; //关闭正常工作循环 d=0; //关闭夜间状态 sec_nb=0; //东西南北方向显示0 sec_dx=0; reg_nb=0; //所有方向的信号灯都亮 reg_dx=0; green_nb=0; green_dx=0; yellowled_nb=0; yellowled_dx=0; } while(k4==0); } } if(k5==0) //按键5的功能(夜间模式) { delay(100);//延时->消抖 if(k5==0)//消抖 { a=0;//关闭设置状态 b=0;//定时中断数次清0 c=0;//关闭正常工作循环 d=1;//启动夜间状态 P0=0;//关掉数码管 TR0=0;//停止定时器工作 reg_nb=1; //关闭红色与绿色信号灯,打开黄色信号灯reg_dx=1; green_nb=1; green_dx=1; yellowled_nb=0; yellowled_dx=0; while(k5==0);//等待按键释放 } }}//*********************数码管显示************************//voiddisplay(){//sec_dx与sec_nb的值在定时中断函数中每一秒自动减一 buf[0]=sec_dx/10;//第1位东西秒十位 buf[1]=sec_dx%10;//第2位东西秒个位 buf[2]=sec_nb/10;//第3位南北秒十位 buf[3]=sec_nb%10;//第4位南北秒个位 P2=dig;//数码管位选 P0=table[buf[led]];//数码管段选 dig=_crol_(dig,1);//此函数在头文件intrins.h中,循环带进位位左移函数(dig是要左移的数值,1表示左移1位) led++; if(led==4)//若显示完南北的十位 { led=0;//第4位南北秒个位 dig=0xfe;//选中东西十位进行显示 }}voidmain(){ TMOD=0x01; //定时中断定义 TH0=0x3C; TL0=0xB0; EA=1; //打开中断开关 ET0=1; TR0=0; EX0=1; EX1=1; k1=1; //所以按键附初值 k2=1; k3=1; k4=1; k5=1; while(1) { reg_nb=0; //所以方向的信号灯都亮 reg_dx=0; green_nb=0; green_dx=0; yellowled_nb=0; yellowled_dx=0; while(1) //进入无限循环 { key();//调用按键扫描程序 display();//调用显示程序 if(c==1)//执行按键4的标志,正常模式 { c=1; TMOD=0x01; //设置定时器 TH0=0x3C; TR0=1; //打开定时器 P1=0xde;//南北通行 while(c) { key();//调用按键扫描程序 display();//调用显示程序 } } while(d) //进入夜间状态 { P0=0; //关闭数码管的显示 yellowled_nb=0; //实现黄色信号灯的闪烁 yellowled_dx=0; delay(100); yellowled_nb=1; yellowled_dx=1; delay(100); key(); //调用按键扫描程序 } } } }//**************************定时中断子程序************************************//voidt0()interrupt1using1{ b++; if(b==10) //定时器中断次数。 { b=0; sec_dx--;//东西显示时间减一 sec_nb--;//南北显示时间减一 //南北黄灯闪烁判断 if(sec_nb==3&&time==0)//南北通行(time==0)时间剩下3s { green_nb=1;//南北绿灯灭 yellowled_nb=1;//南北黄灯灭 delay(300); yellowled_nb=0;//南北黄灯亮 } if(sec_nb==2&&time==0)//南北通行(

温馨提示

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

评论

0/150

提交评论