资源描述
交通信号灯自动控制系统*目录*一、设计内容二、设计要求三、交通信号灯模拟控制系统设计程序流程图四、交通信号灯模拟控制系统原理图五、交通信号灯模拟控制系统主程序六、运行步骤七、检测与调试八、课程设计体会九、参考文献十、说明一、 设计内容:设计并制作一个如上图所示的十字路口交通信号自动控制模拟指示系统。设该路口由A、B两条通行干道相交而成,四个路口各设一组红、黄、绿三色信号灯,用两位数码管作倒计时显示。二、 设计要求:1系统基本功能要求 (1)以秒为计时单位,两位数码管以十进制递减计数形式作定时显示,在递减计数回零瞬间完成换灯操作。(2)通过键盘红、黄、绿三色信号灯所亮时间在099秒内任意设定。(3)十字路口的通行起始状态可人工设定,运行中可通过人工干预使十字路口通行状况固定于任何一种工作模式。 2发挥部分(1)具有时间控制功能,交通信号灯工作时间:05:0023:00;其余时间两个干道上的黄色信号灯闪烁显示;(2)绿色信号灯倒计时最后3秒和黄色信号灯显示时闪烁显示。(闪烁频率:1Hz);(3)其它功能。三、交通信号灯模拟控制系统设计程序流程图1、主程序流程图:开始程序初使化 调用显示主程序 东西绿灯亮,南北红灯亮,进入倒计时,打开数码管显示 东西和南北黄灯亮,进入倒计时,打开数码管显示 东西红灯亮,南北绿灯亮,进入倒计时,打开数码管显示 图52、中断服务程序流程图:外部中断0: 外部中断1 :按键按下按键按下 转去中断服务子程序转去中断服务子程序设置个位计数值设置十位计数值 中断返回中断返回 图6 图7 计数器T0外部中断:确定按键按下转去中断服务子程序分别进行三组灯的组合状态的时间倒计数并进入此三种状态的一下死循环 中断返回 图83、交通灯工作换灯流程:R0=#0FFH南北红灯亮,东西绿灯亮 否 是 是东西和南北黄灯亮5sR0=#0FFH南北绿灯亮,东西红灯亮 否 四、交通信号灯模拟控制系统原理图1.直流电源图:2.交通信号灯模拟控制系统原理图: 五、交通信号灯模拟控制系统主程序#include #include#define uint unsigned int#define ucher unsigned charucher code table=0 x40,0 x40,0 xf9,0 x24,0 x30,0 x19,0 x12,0 x02,0 x78,0 x00,0 x10;sbit k0=P30;sbit k1=P31;sbit k2=P32;sbit k3=P33;sbit k4=P34;sbit k5=P35;sbit k6=P36;sbit k7=P37;ucher tt,tt1,tt2,sec,min,shi; /初始定义void time1();void delay(uint z);void main ()int i,j,num1,num2,l,n,m,h1,h2,h3;ucher aa,bb,dd,ee;EA=1;TMOD=0 x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256; /中断定义ET0=1;EX0=1;EX1=1;num1=1;num2=1;P3=0 xef;aa=0 xb6;bb=0 x96;dd=0 x6b;ee=0 x69;shi=8;P0=0 xf2;if(k0=1)delay(5);if(k0=1)while(k0)if(k7=0)delay(5);if(k7=0)num1+;while(!k7);if(num1=11)/交通灯初值及工作状态设置 num1=1;if(k6=0)delay(5);if(k6=0)num2+;while(!k6);if(num2=11)num2=1;P1=tablenum1;P2=tablenum2;if(k1=0)delay(5);if(k1=0)aa=0 x6b;bb=0 x69;dd=0 xb6;ee=0 x96;elsenum1=4;num2=1;m=num1;n=num2;if(k0=0)/调节当前时间(即对时)delay(5);if(k0=0)while(!k0)if(k7=0)delay(5);if(k7=0)shi+;if(shi=24)shi=0; /调时h1=shi;h2=h1/10+1;h3=h1%10+1;P2=tableh3;P1=tableh2;while(!k7);if(k6=0)delay(5);if(k6=0)min+;if(min=60)min=0;h1=min;h2=h1/10+1;h3=h1%10+1;/调分P2=tableh3;P1=tableh2;while(!k6);if(k1=0)delay(5);if(k1=0)sec+;if(sec=60)sec=0;h1=sec;h2=h1/10+1;h3=h1%10+1;/调秒P2=tableh3;P1=tableh2;while(!k1);TR0=1; /开启定时器中断if(num1=1)while(1)j=n;i=m; /工作循环程序for(j=n;j0;j-)if(j22)|(shi0;j-)P1=tablei;P2=tablej;P0=bb;delay(500);P0=aa;delay(500);for(j=n;j0;j-)if(j22)|(shi0;j-)P1=tablei;P2=tablej;P0=ee;delay(500);P0=dd;delay(500);while(1)num2=n;num1=m;for(j=n;j0;j-)i=m;P0=aa;P1=tablei;P2=tablej;delay(1000);if(shi22)|(shi0;i-)for(j=10;j0;j-)if(shi22)|(shi5)time1();if(i=1)if(j0;j-)P1=tablei;P2=tablej;P0=bb;delay(500);P0=aa;delay(500);num1=m;for(j=n;j0;j-)i=m;P0=dd;P1=tablei;P2=tablej;delay(1000);if(shi22)|(shi0;i-)for(j=10;j0;j-)if(shi22)|(shi5)time1();if(i=1)if(j0;j-)P1=tablei;P2=tablej;P0=ee;delay(500);P0=dd;delay(500);void delay(uint z)uint t1,y;/延时函数for(t1=z;t10;t1-)for(y=125;y0;y-);void time1()for(;(shi22)|(shi5);)P0=0 xdd;delay(500);P0=0 xff;delay(500); /23点到5点的工作函数P1=table1;P2=table1;void enter0() interrupt 0delay(5);if(k2=0)/外部中断0 函数P1=0 x00;P2=0 x00;P0=0 xb6;void enter1() interrupt 2delay(5);if(k3=0) /外部中断1 函数P1=0 x40;P2=0 x40;P0=0 x6b;void enter2() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt+;if(tt=20)sec+;tt=0; /外部中断0 函数if(sec=60)min+;sec=0;if(min=60)min=0;shi+;if(shi=24)shi=0;六、运行步骤给单片机(交通灯系统)上电(或者已上电按复位键)。 以连续方式从0100H开始执行程序,初始态0为南北路口的红灯亮东西路口的绿灯亮,并设置了初始时间24秒,数码管显示24秒。 此时可以设置红绿灯时间(ADD键加,DEC键减每次各一,注意本设置红灯与绿灯为同一初始时间)。 按下ok开始键系统关闭设置红绿灯时间功能进入倒计时,系统进入运行,经过一段时间,转为状态1东西和南北路口黄灯亮经过5秒延时并关闭数码管显示,进入状态2南北路口绿灯亮东西路口红灯亮经过倒计时之后返回初始0状态实现循环。(注意此时不能设置红绿灯时间)七、检测与调试 : 1、硬件调试:硬件调试是利用开发系统、基本测试仪器(万用表、示波器等),检查用户系统硬件中存在的故障。硬件调试可分为静态调试与动态调试两步进行。静态调试 静态调试是在用户系统未工作时的一种硬件检测。 第一步:目测。检查外部的各种元件或者是电路是否有断点。 第二步:用万用表测试。先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。 第三步:加电检测。给板加电,检测所有的插座或是器件的电源端是否符合要求的值 第四步:是联机检查。因为只有用单片机开发系统才能完成对用户系统的调试。 动态调试 动态调试是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。动态调试的一般方法是由近及远、由分到合。 由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的 器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试。由分到合的调试既告完成。 由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。2、软件调试: 软件调试是通过对用户程序(本次采用伟福仿真软件)的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。程序后,编辑,查看程序是否有逻辑的错误。 八、课程设计体会通过这一阶段的单片机课程设计,我对单片机有了更深的了解。学会如何用编程方法消除抖动,更牢固的掌握了各个中断的用法,特别是定时计数器的两种用法的混合使用,在编程时经常因为考虑不周而出现了几次修改,但可幸的是编程思路的正确,让我不用很大篇幅的修改,使我在不动大框架中学到了很多知识,并且巩固了以往的知识!从这之后我更加认识到最初构想思路的重要性。九、参考资料1 童诗白,华成英主编.模拟电子技术基础(第四版) 高等教育出版社 2 谢维成 杨加国主编 单片机原理与应用及C51程序设计(第2版) 清华大学出版社十、说明本课程设计的先修课程是:模拟电子技术、数子电子技术、单片机原理与技术。一个完整的交通灯相当于一个简单的单片机系统,该系统有交通灯设置电路、单片机、显示电路等构成。单片机是集成的IC芯片,只需根据实际设计要求选型。其他部分都需要根据应用要求和性能指标自行设计。
展开阅读全文