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

课程设计题七:交通灯控制器[通俗易懂]要求: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)
上一篇 2022年4月19日 下午5:20
下一篇 2022年4月19日 下午5:40


相关推荐

  • android代码设置点击涟漪,android – 为自定义CompoundButton添加涟漪效果

    android代码设置点击涟漪,android – 为自定义CompoundButton添加涟漪效果我有以下自定义CompoundButton:publicclassCustomCompoundButtonextendsCompoundButton{publicCustomCompoundButton(Contextcontext){this(context,null);}publicCustomCompoundButton(Contextcontext,Attribut…

    2022年5月5日
    100
  • SpringBoot整合dubbo(注解配置dubbo)

    SpringBoot整合dubbo(注解配置dubbo)源码 GitHub https github com springboot learning tree master springboot dubbo01 准备 1 在服务器或者本地搭建好 zookeeper 具体可参考文章 https blog csdn net article details 在服务器或者本地搭建好 dubb

    2026年3月17日
    2
  • java cas logout无效_CAS logout 解决方案

    java cas logout无效_CAS logout 解决方案一 常识了解 1 GBK 包含 GB2312 即如果通过 GB2312 编码后可以通过 GBK 解码 反之可能不成立 2 java nio charset Charset defaultChars 获得平台默认字符编码 3 getBytes 是通过平台默认字符集进行编码 二 中文乱码出现在学习任何一门技术时 CASlogout 的时候 默认是会重定向到 casserver 端的 lo

    2026年3月19日
    1
  • CString和string相互转换

    CString和string相互转换一 string 转 CStringstrin helloworld CStringcstr str c str 二 CString 转 stringCStrin L HelloC std stringSTDStr CW2A theCStr GetString 未完续

    2026年3月19日
    2
  • spout详解

    spout详解spout 放在每个 executer 执行 我们先从 spoutExecuto 的初始化开始往下看 spoutExecuto 是在一个 worker 中管理其中的 tasks 在 SpoutExecuto 的构造函数中初始化一些组件 taskId topologyId spout 等 在这个线程中 除了一些常见的属性 可以看到还会去创建并设置两个对象 将待执行的 task 信息传入 1 TaskTransf

    2026年3月19日
    3
  • @RequestBody出现请求415问题

    @RequestBody出现请求415问题首先之前也遇到过这样的问题,但是稀里糊涂的最后虽然bug修复了,但是不知道是啥原因,今天又遇到了同样的问题。问题:在前端向后台发送一个json对象(字符串),后端用@RequestBody匹配接受的时候就会出现415,如果不用@RequestBody,那么前端发送来的数据是不能被正确解析成对象里的属性的。因为用公司的框架写项目的时候,也遇见了这个问题。请教了学长,学长让我用公司自己封装的p…

    2022年6月3日
    35

发表回复

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

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