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

课程设计题七:交通灯控制器[通俗易懂]要求: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);
    } 
   } 
}

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • linux opera flash插件,Linux下64位的Firefox、Opera浏览器安装Flash插件

    linux opera flash插件,Linux下64位的Firefox、Opera浏览器安装Flash插件Linux下,64位的Firefox、Opera等浏览器默认搜索到的Flash插件是32位的,安装之后也不能正常工作。需要手工安装一下。1.下载插件使用浏览器下载:到Adobe的站点上下载64位的Flash插件:http://labs.adobe.com/downloads/flashplayer10_square.html插件下载地址:http://download.macromedia.co…

  • 关于Pycharm Interpreter报错 Invalid Python SDK/Permission Denied问题解决方案「建议收藏」

    关于Pycharm Interpreter报错 Invalid Python SDK/Permission Denied问题解决方案「建议收藏」1.问题背景之前用了Pycharm好好的,结果运行个简单的test.py文件,里面的内容是:print(“helloworld”)居然报错,程序运行居然不是exitcode0报错结果如下:程序返回了一个异常参数,这个参数实际上是说:“你的python解释器未安装成功”。Processfinishedwithexitcode-1073741515(0xC0000135)网上百度了这个参数报错的意思,我就去找了我的解释器:【File】–>【Setting】,找到解释

  • hadoop工作平台梳理

    hadoop工作平台梳理

  • redis击穿,穿透,雪崩以及解决方案「建议收藏」

    redis击穿,穿透,雪崩以及解决方案「建议收藏」1击穿:指的是单个key在缓存中查不到,去数据库查询,这样如果数据量不大或者并发不大的话是没有什么问题的。如果数据库数据量大并且是高并发的情况下那么就可能会造成数据库压力过大而崩溃注意:这里指的是单个key发生高并发!!!解决方案:1)通过synchronized+双重检查机制:某个key只让一个线程查询,阻塞其它线程在同步块中,继续判断检查,保证不…

  • 端口timewait如何解决_如何检测端口状态

    端口timewait如何解决_如何检测端口状态网上查了一下端口状态的资料,我下面总结了一下,自己学习学习:TCP状态转移要点TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源。在众多TCP状态中,最值得注意的状态有两个:C……

  • 目标检測的图像特征提取之(一)HOG特征

    目标检測的图像特征提取之(一)HOG特征

    2021年11月15日

发表回复

您的电子邮箱地址不会被公开。

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