课程设计题七:交通灯控制器[通俗易懂]

课程设计题七:交通灯控制器[通俗易懂]要求:1、红灯和绿灯相互转换时经过黄灯,黄灯闪烁三次(6秒);2、主干道方向通行30秒,辅干道方向通行20秒,单独左转信号15秒;先直行信号,后左转信号。3、设手动、自动、特殊情况三种方式。4、特殊情况时所有路口红灯都亮,给120、110等通行。5、自动时显示各种状态倒计时。获取该程序+protues的方式:1、CSDN下载:https://download.c…

大家好,又见面了,我是你们的朋友全栈君。

要求:

1、红灯和绿灯相互转换时经过黄灯,黄灯闪烁三次(6秒);

2、主干道方向通行30秒,辅干道方向通行20秒,单独左转信号15秒;先直行信号,后左转信号。

3、设手动、自动、特殊情况三种方式。

4、特殊情况时所有路口红灯都亮,给120、110等通行。

5、自动时显示各种状态倒计时。

获取该 程序+protues 的方式:

1、CSDN下载:

https://download.csdn.net/download/qq_38351824/11286002

2、关注微信公众号下载:

     ① 关注微信公众号:Tech云  

     ②

课程设计题七:交通灯控制器[通俗易懂]

3、可以关注点赞并在下方评论,我给你邮箱发过去。

                           ——-由于明天开始旅游,这一块注释不全、程序也有点小bug,预计7月15日开始更新——-

一、Protues仿真图:

课程设计题七:交通灯控制器[通俗易懂]

课程设计题七:交通灯控制器[通俗易懂]

课程设计题七:交通灯控制器[通俗易懂]

课程设计题七:交通灯控制器[通俗易懂]

课程设计题七:交通灯控制器[通俗易懂]

二、程序源码:

因为注释非常的全,这里就不再进行讲解了。

/*******************************************************************************
================================================================================
【平    台】STC89C51_sumjess平台
【编    写】sumjess
【E-mail  】1371129880@qq.com
【软件版本】V2.0
【最后更新】2019年06月10日
【相关信息参考下列地址】
【网    站】
           https://blog.csdn.net/qq_38351824
           http://www.51hei.com/bbs/mcu-2-1.html
---------------------------------------------------------------------------------
【dev.env.】MDK4.02及以上版本
【Target  】STC89C51
第一次修订:2019/05/09
第二次修订:2019/05/21
第三次修订:2019/06/10
【problem 】
    (1)库内补充的不全面;
    (2)库内解释部分不全面;
    (3)库内还存在一定的bug;
【direction】
      下一步的目标就是把库继续集成!
【explain 】
      为了方便使用,我也自己写了很多的库,和优化了算法和表示方式!
【warning】
      目前程序中暂无错误 !   
---------------------------------------------------------------------------------
没有完美的代码,只有不断的奉献,大家一起努力;
赠人玫瑰手留余香,欢迎大家反馈bug!
================================================================================
********************************************************************************/

#include <reg51.h>
#include <stdio.h>
#define uchar     unsigned char
#define uint      unsigned int

uchar h;
uint r=0;
uint s;
uchar flag=1;
uchar code  dis[]={0Xc0,0Xf9,0Xa4,0Xb0,0X99,0X92,0X82,0Xf8,0X80,0X90,0Xff,};
                 // 0     1	   2	3	 4	  5	   6	7	 8	  9	   -
sbit key = P3^5;

void delay(uint c) //延时程序
{
   uint i,j;
    for(i=0;i<c;i++)
	  for(j=0;j<100;j++);	
}

void t0(void) interrupt 0 using 1
{
  delay(2);
   if(INT0==0)
    {
      r++;
	  if(r==2)
	   {
	  	r=0;
	   }
	  r%=2;
	  if(r==0)
	   {
	    P0=0xeb;
        P1=0x00;
        P2=0xff;
	   }while(1)
	    {
	  	 if(INT0==0|INT1==0|T0==0)
		  {
		  delay(2);
		  if(INT0==0|INT1==0|T0==0)
		  	break;
		  }
		   if(key==0) {flag=0;break;}
	    }	  
    }
}

void t1(void) interrupt 2 using 1
{
  delay(2);
   if(INT1==0)
    {
	  r++;
	  if(r==2)
	   {
	  	r=0;
	   }
	  r%=2;
	  if(r==0)
	   {
	    P0=0xdd;
        P1=0x00;
        P2=0xff;
	   }while(1)
	    {
	  	 if(INT1==0|INT0==0|T0==0)
		  {
		   delay(2);
		   if(INT1==0|INT0==0|T0==0)
		  	break;
		  }
		   if(key==0) {flag=0;break;}
	    }
    }
}

void t2(void) interrupt 1 using 1
{
  TH0=0xff;
  TL0=0xff;
    delay(2);
     if(T0==0)
     {
	    P0=0xdb;
        P1=0x00;
        P2=0xff;
	   }
	   while(1)
	    {
	  	 if(INT0==0|INT1==0)
		  {	 
		    delay(2);
			if(INT0==0|INT1==0)
		  	break;
		  }
		  if(key==0) {flag=0;break;}
	    }
}



void main(void)
{
  TMOD=0x06;
  TH0=0xff;
  TL0=0xff;
  TR0=1;
  EA=1;
  EX0=1;
  EX1=1;
  ET0=1;
   
 while(1)
{
	flag=1;
  	if(flag==1){
     P0=0xeb;
     for(h=28;h>0;h--)
     {
       for(s=248;s>0;s--)
       {
	    if(flag==0) break;
        P1=0x00;
        P2=0xff;
        P1=0x01;
        P2=dis[h/10];
        delay(1);
		P1=0x00;
        P2=0xff;
        P1=0x02;
        P2=dis[h%10];
		delay(1);
		P1=0x00;
        P2=0xff;
		P1=0x04;
        P2=dis[(h+2)/10];
		delay(1);
		P1=0x00;
        P2=0xff;
		P1=0x08;
        P2=dis[(h+2)%10];
        delay(1);
       }
     }
	if(flag==0) break;
    delay(248);

    P0=0xf3;
     for(h=3;h>0;h--)
     {
	    if(flag==0) break;
        delay(392);
         P0=0xf3;
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0xaa;
        P2=dis[(h-1)%10];
         delay(600);
        P0=0xfb;
     }
   if(flag==0) break;
    delay(248);
     
    P0=0xdd;
     for(h=38;h>0;h--)
     {
	   if(flag==0) break;
       for(s=248;s>0;s--)
       {
	    if(flag==0) break;
		P1=0x00;
        P2=0xff;
        P1=0x01;
        P2=dis[(h+2)/10];
		 delay(1);
		P1=0x00;
        P2=0xff;
        P1=0x02;
        P2=dis[(h+2)%10];
		 delay(1);
        P1=0x00;
        P2=0xff;
        P1=0x04;
        P2=dis[h/10];
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0x08;
        P2=dis[h%10];
         delay(1);
       }
     }
   if(flag==0) break;
    delay(248); 

    P0=0xde;
     for(h=3;h>0;h--)
     {
	    if(flag==0) break;
        delay(392);
        P0=0xde;
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0xaa;
        P2=dis[(h-1)%10];
        delay(600);
        P0=0xdf;
      }
	 if(flag==0) break;
	 delay(248);
    } 
   } 
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125030.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea激活码永久 吾爱破解_通用破解码

    idea激活码永久 吾爱破解_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    1.5K
  • php 字符串替换中文,PHP中文字符串替换其中为*的方法

    php 字符串替换中文,PHP中文字符串替换其中为*的方法在项目中需要对字符串的部分进行隐藏或者替换。譬如手机号码的中间几位进行隐藏,中文名字的中间替换为*号等。英文和数字等可直接用php的自带的函数进行处理。但是中文因为编码的缘故会出现不一样的效果。需要自己定义方法进行处理。此处针对大多数UTF-8的用户。//英文和数字等substr_replace()函数把字符串的一部分替换为另一个字符串。substr_replace(string,replace…

    2022年5月10日
    38
  • mysql操作命令梳理(4)-中文乱码问题

    mysql操作命令梳理(4)-中文乱码问题

    2022年2月23日
    59
  • word怎么让页码在指定页面从1开始出来_word里页码怎么设置

    word怎么让页码在指定页面从1开始出来_word里页码怎么设置word排版的时候,因为一般文档都有封面、目录等,导致用默认的页码会使正文开始的时候不是第一页的尴尬情况如下图解决办法:1、先按默认的方法插入页码,插入–&amp;gt;页码2、在正文的前一页结尾处点布局–&amp;gt;分隔符–&amp;gt;下一页3、在正文页双击页码,在设计那里把链接到前一节给取消掉,接着点插入–&amp;gt;页码–&amp;gt;设置页码格式–&amp;gt;点起始页码–&amp;gt;设置为1

    2025年5月28日
    5
  • spring整合redis集群配置密码_redis默认密码

    spring整合redis集群配置密码_redis默认密码创作背景springboot2集成redis集群网上的例子已经很多了,但涉及到密码几乎都是明文,这在实际生产环境中,是不允许的,特写此文章。源码片段第一步:pom.xml<?xmlversion=”1.0″encoding=”UTF-8″?><projectxmlns=”http://maven.apache.org/POM/4.0.0″xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

    2025年9月19日
    6
  • SecureCRT背景配色

    SecureCRT背景配色SecureCRT背景配色

    2022年4月24日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号