《十字路口交通灯控(单片机-课程设计)制.docx》由会员分享,可在线阅读,更多相关《十字路口交通灯控(单片机-课程设计)制.docx(12页珍藏版)》请在第一文库网上搜索。
1、单片机原理课程结业报告题目(8):十字路口交通灯控制学号:03124OYYY姓名:YYY一、设计要求设计一个十字路口交通灯控制器。用单片机控制1ED灯模拟指示。模拟东西方向的十字路口交通信号控制情况。东西向通行时间为80s,南北向通行时间为60s,缓冲时间为3s。二、设计原理利用定时器TO产生每IOms一次的中断,每100次中断为1s。对两个方向分别显示红、绿、黄灯,已经相应的剩余时间即可。值得注意的是,需要意识到,A方向红灯时间=B方向绿灯时间+黄灯缓冲时间这一常识。三、设计思路及电路图1设计思路本设计采以用单片机AT89C52作为控制器,通行时间或等待时间通过数码管以倒计时方式显示,同时单
2、片机P1口控制交通灯(红灯、黄灯、绿灯)的正常的替换工作,如果有意外发生(交通事故)就会产生中断,东西南北红灯全亮。系统设计框图1如下:图1系统框图以下四图所示为红黄绿灯规则的状态图:共四种状态,分别设定为si、S2、S3、S42,交通灯以这四种状态为一个周期,循环执行如图6所示。如果有意外发生,去处理中断,红灯全亮,时间IOSo开始S1S4图6交通灯状态循环2.电路图IrHCS73利;口四、核心代码设计思路及程序流程图1.核心代码设计思路核心代码设计思路流程图2.设计流程图N显示子程序倒计时子程序定时器中断子程序五、ProteUS仿真图用ProteUS进行仿真,在仿真过程中达到了预期的要求,
3、东西方向开通是,进行80S的倒计时,然后是3S的缓冲倒计时,最后是60S的南北开通倒计时,依次往复循环。具体的仿真效果图如下:六、总结本设计以AT89C51系列单片机为核心,充分利用了A89C51和8255A芯片的I/O引脚,以1ED数码管作为倒计时指示,该设计很好地完成了设计的各项要求,主要体现如下:主干道和次干道可以分开设置时间功能,使控制更加灵活;以上所有功能均在城市交道口模型上得到很好地实现,该设计在确保功能实现的基础上,充分考虑了控制系统操作方便、可靠性高、稳定性好等要求。该设计的交通灯控制器,实现了能根据实际车流量通过AT89C51芯-完整版学习资料分享-片的P1口设置红、绿灯燃亮
4、时间的功能。设计一个十字路口交通灯控制器。用单片机控制1ED灯模拟指示。模拟东西方向的十字路口交通信号控制情况。东西向通行时间为80s,南北向通行时间为60s,缓冲时间为3s。这是由于本身地理位置以及车流量情况所定,如果有需要可以设计扩充原系统来实现。通过这次课程结业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面的系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计的思路技巧,特别是对汇编语言的掌握方面能向前迈了一大步,为日后成为合格的应用型人才打下了良好的基础。该课程结业设计虽然结束了,但由于时间、设备、条件和水平等各方面因素,还存在一些不足,还需要不断
5、改进,当然也就需要学习并运用更多相关的知识。Kei1核心源代码ftinc1ude#defineucharunsignedchar#defineuintunsignedintsbitdu1a=P26;sbitwe1a=P27;ucharcodetab1e=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;ucharnum=80,num1=1,num2,num3,num4=60,num5=3,shi,ge;voidde1ay(uint);voiddisp1ay(uchar,uchar);m
6、ain()TMOD=OxII;THO=(65536-45872)/256;T1O=(65536-45872)%256;TH1=(65536-45872)/256;T11=(65536-45872)%256;EA=I;ETO=I;ET1=I;TRO=I;TR1=I;P1=0x04;whi1e(1)disp1ay(shi,ge);)voiddisp1ay(ucharshi,ucharge)PO=tab1eshi;du1a=1;duIa=O;PO=Oxfe;we1a=1;we1a=0;de1ay(5);PO=Oxff;we1a=1;we1a=0;PO=tab1ege;du1a=1;duIa=O;PO
7、=Oxfd;we1a=1;weIa=O;de1ay(5);PO=Oxff;we1a=1;we1a=0;)voidde1ay(uintx)uinti,j;for(i=x;i0;i-)for(j=110;j0;j);)voidT0_time()interrupt1THO=(65536-45872)/256;T1O=(65536-45872)%256;num2+;if(num2=20)num2=0;num;if(num=0)num=80;num1+;if(num1%2=0)num=3;shi=num10;ge=num%10;)voidT1_time()interrupt3TH1=(65536-45872)/256;T11=(65536-45872)%256;num3+;if(num3=20)num3=0;num4一;if(num4=0)num4=60;num5+;if(num5%2=0)num4=3;P1=0x08;if(num5+1)%4=0)P1=0x04;if(num5-1)%4=0)P1=Ox1O;)