资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
交通信号灯自动控制系统*目录*一、设计内容二、设计要求三、交通信号灯模拟控制系统设计程序流程图四、交通信号灯模拟控制系统原理图五、交通信号灯模拟控制系统主程序六、运行步骤七、检测与调试八、课程设计体会九、参考文献十、说明一、 设计内容:设计并制作一个如上图所示的十字路口交通信号自动控制模拟指示系统。设该路口由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=0x40,0x40,0xf9,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;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=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256; /中断定义ET0=1;EX0=1;EX1=1;num1=1;num2=1;P3=0xef;aa=0xb6;bb=0x96;dd=0x6b;ee=0x69;shi=8;P0=0xf2;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=0x6b;bb=0x69;dd=0xb6;ee=0x96;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=0xdd;delay(500);P0=0xff;delay(500); /23点到5点的工作函数P1=table1;P2=table1;void enter0() interrupt 0delay(5);if(k2=0)/外部中断0 函数P1=0x00;P2=0x00;P0=0xb6;
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号