精华内容
下载资源
问答
  • 交通灯的红绿黄灯时间
    千次阅读
    2021-05-19 19:13:33

    51单片机用C语言实现交通灯(红绿灯)源程序

    交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改。

    源程序如下:

    /*

    1、程序目的:使用定时器学习 倒计时 红绿灯原理 主要程序和倒计时一样

    2、硬件要求:数码管、晶振12M

    */

    #include

    bit red,green,yellow,turnred; //定义红、黄、绿及转红标志

    code unsigned char tab[]=

    {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

    //共阴数码管 0-9

    unsigned char Dis_Shiwei;//定义十位

    unsigned char Dis_Gewei; //定义个位

    void delay(unsigned int cnt) //用于动态扫描数码管的延时程序

    {

    while(--cnt);

    }

    main()

    {

    TMOD |=0x01;//定时器设置 10ms in 12M crystal定时器0,工作方式1,16位定时器

    TH0=0xd8; //65535-10000=55535=D8F0(十六进制)

    TL0=0xf0;

    IE= 0x82; //中断控制,EA=1开总中断,ET0=1:定时器0中断允许

    TR0=1; //开定时器0中断

    P1=0xfc;//红灯亮,根据红黄绿接灯的顺序。

    red =1;

    while(1)

    {

    P0=Dis_Shiwei;//显示十位,这里实现用8位数码管,即左1位

    P2=0;

    delay(300);//短暂延时

    P0=Dis_Gewei; //显示个位,左数,2位

    P2=1;

    delay(300);

    }

    }

    /********************************/

    /* 定时中断 */

    /********************************/

    void tim(void) interrupt 1 using 1

    {

    static unsigned char second=60,count; //初值60

    TH0=0xd8;//重新赋值,10毫秒定时

    TL0=0xf0;

    count++;

    if (count==100)

    {

    count=0;

    second--;//秒减1

    if(second==0)

    { //这里添加定时到0的代码 ,可以是灯电路,继电器吸合等,或者执行一个程序

    if(red) //红灭,先转黄

    {

    red=0;yellow=1;

    second=4;

    P1=0xF3;//黄灯亮4秒,黄灯为过渡灯,再根据情况转绿或转红

    }

    else if(yellow && !turnred)

    {

    yellow=0;green=1;

    second=25;

    P1=0xCF;//绿灯亮25秒,

    }

    else if(green)

    {

    yellow=1;green=0;

    second=4;

    P1=0xF3;//黄灯亮4秒

    turnred=1;

    }

    else if(yellow && turnred) //绿灯灭,转黄灯,后红灯,turnred=1时

    {

    red=1;yellow=0;

    P1=0xFC;//红灯亮60秒

    second=60;

    turnred=0; //接下来是转黄,绿。

    }

    }

    Dis_Shiwei=tab[second/10];//十位显示值处理

    Dis_Gewei=tab[second%10]; //个位显示处理

    }

    }

    更多相关内容
  • 利用单片机设计一个红绿灯,实现了数显倒计时与灯光变换,其中30秒...交通灯采用:trafficlight组件 数显采用:两位数共阴极的数码管 配套博文预览效果:https://blog.csdn.net/air__Heaven/article/details/120481520
  • ①设计一个十字路口交通灯控制电路,要求甲车道和乙车道两条 交叉道路上的车辆交替运行,每次通行时间25秒;     ②要求黄灯先亮5秒,才能变换运行车道;    ③黄灯亮时要求每秒闪亮一次。 
  • 交通灯控制器(1)用两组红、黄、绿三色灯作为两个方向的红、黄、绿灯; (2)用两组数码管作为东西和南北方向的倒计时显示,显示时间为红灯45秒、绿灯50秒、黄灯5秒; (3)按照实际红绿灯规则,使红、黄、绿灯与其显示...
  • FPGA课程设计——交通灯设计 题目要求 (1) 以车为主体,绿灯、黄灯、红灯、绿灯依次点亮; (2)十字路口,具有两组红绿灯; (3)采用倒计时显示剩余时间,数码管动态显示; (4)红绿灯时间按键可调。
  • 1,东西方向为绿灯,行人和车辆东西方向可以同行东西绿灯时间长20s。 2,东西方向黄灯闪烁5秒,南北方向还是红灯等待,警示车辆和行人状态即将切换。 3,南北方向为绿灯,行人和车辆南北方向可以同行东西绿灯时间长...
  • 交通信号红绿灯.zip

    2020-03-14 16:21:10
    实现信号的切换,没有标注时间,只能在后台修改。实现功能:十字路口信号的切换,停止、等待、通行功能。可以实现正常变换显示黄灯
  • 东西、南北两干道交于十字路口,各干道有一组红、绿、黄三个指示,指挥车辆和行人安全通行。南北方向为主干道,通行时间为35秒;东风方向为支干道,通行时间为25秒。通行时间最后3秒,绿灯灭,黄灯闪烁,黄灯闪烁...
  • 本设计包含仿真,C语言源程序,AD格式原理图。 ... 功能操作说明: 打开仿真文件开始仿真,程序开始...特殊模式键按下第一次红灯全亮,数码管显示全为0代表紧急模式停止同行显示为红色。再次按下回到数码管倒计时状态。
  • FPGA课程设计——交通灯设计 题目要求 (1) 以车为主体,绿灯、黄灯、红灯、绿灯依次点亮; (2)十字路口,具有两组红绿灯; (3)采用倒计时显示剩余时间,数码管动态显示; (4)红绿灯时间按键可调。
  • (1)用红、绿、黄三色发光二极管作信号灯,用传感器或逻辑开关代替传感器做检测车辆是否到来的信号,设计制作一个交通灯控制器。 (2)由于主干道车辆较多而枝干道车辆较少,所以主干道处于常允许通行的状态,而...
  • 单片机红绿灯keil程序

    2021-04-22 18:14:45
    单片机红绿灯keil程序
  • 30H、34H、35H 主干道红、绿、黄灯,33H、31H、32H 支干道红、绿、黄灯,修改用外部中断 ORG 0000H LJMP MAIN ORG 0003H ;复位中断入口地址 LJMP FW ORG 0013H ;修改参数中断入口地址 LJMP XG ORG 0030H MAIN:MOV ...
  • 基于红绿灯图片进行红绿灯进定位、检测和识别。编译环境cmake+opencv。
  • 这是一份基于Verilog的交通灯设计工程文件,已经在QUARTUS II 8.0 (32-BIT)上测试通过,而关于十字路口交通灯控制系统的工作原理的资料建议自行到网上找一找。
  • 1、十字路口按:A绿B红---A黄B红—A红B绿—A红B黄-- A绿B红…次序控制; 2、A红B黄和A黄B红时间5秒,绿灯30秒,红灯35秒; 3、各路口右侧以两位LED倒计时显示剩余时间
  • 观察十字路口红绿灯工作流程,设计交通灯。 1、初始时:南北向、东西向直行左转均为红灯 2、南北向直行: ①南北向直行绿灯亮,延时若干秒 ②启动南北向左转数码管显示:倒计时6秒;同时南北向直行绿灯闪烁3下,灭亮...
  • 东西、南北4个方向的红绿黄灯时间都用两个数码管分别显示,递减变化。交通灯以红、绿、黄循环变化,并且 (1)东西方向绿灯亮,南北方向红灯亮。 (2)东西方向黄灯亮,南北方向红灯亮。 (3)东西方向红灯亮,...
  • 设计一个交通信号的控制程序,要求:A)红灯亮30s后黄灯亮,黄灯亮10s后绿灯亮,绿灯亮30s后黄灯亮,黄灯亮10s后红灯亮,如此循环。B)数码管显示每个的倒计时数字C)以LED0作为红灯,LED3 作为黄灯,LED6作为...
  • OpenMV交通灯识别例程

    2019-05-23 17:43:27
    OpenMV识别交通灯例程,仅需根据环境修改交通灯红、绿、黄颜色阈值即可,思路清晰,识别率高。
  • 我在本课程中所选择的课题是用Verilog HDL实现交通灯控制器。该课题的具体内容及要求如下: 主干道与乡村公路十字交叉路口在现代化的农村星罗棋布,为确保车辆安全、迅速地通过,在交叉路口的每个入口处设置了红、...
  • Verilog交通灯控制程序

    2018-06-27 14:54:01
    Verilog交通灯控制程序,内含文档,简单方便 交通灯控制器
  • 该文件为基于 Multisim 13.0 的数电交通灯仿真程序(已验证通过),可以直接运行! 设计一个十字路口交通灯定时控制器: 1) 主、支干道交替通行,主道每次放行 30s,支道每次放行 20s。 2) 绿灯亮表示可以通行,...
  • 1.四路交通灯,带有红绿灯倒计时,绿灯倒计时结束后转黄灯5秒,再转红灯。 2.紧急情况下按键紧急按钮,四路黄灯快闪。 3.可以动态设置红绿灯时间。 涉及知识点:按键扫描,定时器,数码管驱动。 程序(部分): void ...

    功能说明:

    设计下载链接

    1.四路交通灯,带有红绿灯倒计时,绿灯倒计时结束后转黄灯5秒,再转红灯。
    2.紧急情况下按键紧急按钮,四路黄灯快闪。
    3.可以动态设置红绿灯时间。
    涉及知识点:按键扫描,定时器,数码管驱动。

    在这里插入图片描述

    在这里插入图片描述

    程序(部分):

    
    #define _MAIN_C
    #include "use.h"
    #include "main.h"
    #include "time.h"
    #include "key.h"
    bit flag1s;   
    uchar count1s,NS_time,WE_time;
    uchar GreenTime=30,RedTime=35;//绿灯时间和红灯时间,红灯要比绿灯时间长
    uchar index=0;
    enum eStaSysterm StaSysterm=NormalRun;
    
    void main()
    {
      EA=1;                  //开总中断
      InintTimer0();              //初始化定时器0
      while(1)
      {  
        LEDScan();              //数码管即LED扫描
        KeyDriver();            //键盘驱动扫描
        if(flag1s)
        {
          flag1s=0;
          NS_time--;            //红绿灯倒计时时间减
          WE_time--;
        }  
      }
    }
    void InintTimer0()
    {
      TMOD=0X01;
      TH0=0X4C;
      TL0=0X00;
      ET0=1;
      TR0=1;
    }
    void Timer0() interrupt 1
    {
      TH0=0XBB;
      TL0=0X00;
      KeyScan();
      if(++count1s<50)  return;
      count1s=0;
      if(StaSysterm==NormalRun) flag1s=1;   //非正常运行时,不红绿灯数值不减一  
    }
    void LEDScan()
    {
       if(StaSysterm==NormalRun)       //正常运行
       {
        if(NS_time==0 || WE_time==0)//当东西或者南北方向通行时间倒数到0,切换状态
        {
          switch(index)         //改变红绿灯的状态,状态机
          {
            case 0:
            {
              index=1;
              NS_time=GreenTime;//南北方向绿灯通行时间
              WE_time=RedTime;//东西绿灯方向通行时间
              P2=0X09;  //需要亮的灯转换为二进制位0000 1001,对应P2口的P2^0和P2^3,
                        //对应仿真图的绿灯L0和红灯L3亮。
            }break;
            case 1:
            {
              index=2;
              NS_time=RedTime-GreenTime;
              P2=0X0A;  
            }break;
            case 2:
            {
              index=3;
              NS_time=RedTime;
              WE_time=GreenTime;
              P2=0X24;  
            }break;
            case 3:
            {
              index=0;
              WE_time=RedTime-GreenTime;
              P2=0X14;  
            }break;
            default:break;
          }
        }
        Seg_Display(NS_time/10,0);
        Seg_Display(NS_time%10,1);
        Seg_Display(WE_time/10,2);
        Seg_Display(WE_time%10,3);
      }
      else if(StaSysterm==UrgentRun)
      {                   //紧急情况运行
        P2=0x12;
        Delayms(200);
        P2=0x00;
        Delayms(200);
      }
      else                 //设置调整红绿灯时间
      {
        index=0;
        NS_time=0;
        WE_time=0;   //重新初始化红绿灯并运行
        UrgentScan();
      }
    }
    

    程序流程图(报告):

    在这里插入图片描述

    工作流程:

    开机上电便处于正常运行状态,南北方向通行30秒后变为东西方向通行30秒,如此60秒循环一次,使得东西方向和南北方向交替通行。
    显示系统则显示到下一次改变通行方向所剩的时间,利于司机调整车辆状况。每到通行方向转换时,正在通行的方向绿灯熄灭,变为黄灯闪烁,提醒司机注意通行方向的改变,避免不必要的危险。
    本设计支持动态修改东西南北方向的红绿灯时间。短按设置/退出设计进入修改模式。先修改南北方向绿灯时间,再短按修改东西方向红灯时间,按第四个按键保存设置的时间。

    展开全文
  • 由于主干道的交通压力较大车流量大,所以A道的通行时间(即A道的绿灯与黄灯的时间应该比B道的绿灯与黄灯时间长),只有A道的通行时间比B道的通行时间长才能合理的分配十字交通路口的交通压力。并且该系统应该有紧急...
  • 交通灯亮的时有数字显示通行时间,以秒为单位作减法计数。交通灯系统以下方4个状态无限循环。 (1)主干道绿灯、支干道红灯时,显示时间为9秒; (2)主干道黄灯、支干道红灯时,显示时间为3秒; (3)支干道...
  • 黄灯给行驶的车辆有时间停靠到禁行线外。再通过题目和日常的经验我们可以得到以下的结论。 ① 用红,绿,黄,三色发光二极管作信号,主道红,绿,黄,绿(左拐)四个信号,支道红,绿黄三个信号。 ② 主干道和支道...
  • VHDL设计——交通红绿灯控制器模块

    千次阅读 2020-12-14 10:44:28
    设计一个交通红绿灯控制器模块,实现主干道和支路之间红绿黄灯的信号转换。 Design Block: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY TRAFFIC IS PORT(CLK,RST:IN ...

    设计一个交通红绿灯控制器模块,实现主干道和支路之间红绿黄灯的信号转换。
    在这里插入图片描述
    在这里插入图片描述
    Design Block:

    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    USE IEEE.STD_LOGIC_UNSIGNED.ALL;
    ENTITY TRAFFIC IS
    	PORT(CLK,RST:IN STD_LOGIC;
    		NSLIGHTS,WELIGHTS:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));
    END TRAFFIC;
    ARCHITECTURE BEHAV OF TRAFFIC IS
    TYPE STATES IS (S0,S1,S2,S3);
    	ATTRIBUTE ENUM_ENCODING:STRING;
    	ATTRIBUTE ENUM_ENCODING OF STATES:TYPE IS "one-hot/gray";
    	SIGNAL C_ST,N_ST:STATES:=S0;
    	SIGNAL TIME0:STD_LOGIC_VECTOR(6 DOWNTO 0);
    	BEGIN
    	COUNT:PROCESS(CLK,RST)
    	VARIABLE T:STD_LOGIC_VECTOR(6 DOWNTO 0);
    		BEGIN
    		IF RST='1' THEN T:=(OTHERS=>'0');
    		ELSIF CLK'EVENT AND CLK='1' THEN 
    			IF(T<68) THEN T:=T+1;
    			ELSE T:=(OTHERS=>'0');
    			END IF;
    		END IF;
    		TIME0<=T;
    	END PROCESS COUNT;
    	COM:PROCESS(C_ST,TIME0)
    		BEGIN
    		CASE C_ST IS
    		WHEN S0 => NSLIGHTS<="010";WELIGHTS<="100";
    			IF TIME0=39 THEN N_ST<=S1;
    			ELSE N_ST<=S0;
    			END IF;
    		WHEN S1 => NSLIGHTS<="001";WELIGHTS<="100";
    			IF TIME0=43 THEN N_ST<=S2;
    			ELSE N_ST<=S1;
    			END IF;
    		WHEN S2 => NSLIGHTS<="100";WELIGHTS<="010";
    			IF TIME0=63 THEN N_ST<=S3;
    			ELSE N_ST<=S2;
    			END IF;
    		WHEN S3 => NSLIGHTS<="100";WELIGHTS<="001";
    			IF TIME0=67 THEN N_ST<=S0;
    			ELSE N_ST<=S3;
    			END IF;
    		END CASE;
    	END PROCESS COM;
    	REG:PROCESS(CLK,RST)
    		BEGIN
    		IF RST='1' THEN C_ST<=S0;
    		ELSIF CLK'EVENT AND CLK='1' THEN C_ST<=N_ST;
    		END IF;
    	END PROCESS REG;
    END BEHAV;
    

    Test Bench:

    LIBRARY ieee;                                               
    USE ieee.std_logic_1164.all;                                
    USE IEEE.STD_LOGIC_UNSIGNED.ALL;
    ENTITY TRAFFIC_vhd_tst IS
    END TRAFFIC_vhd_tst;
    ARCHITECTURE TRAFFIC_arch OF TRAFFIC_vhd_tst IS                                                  
    SIGNAL CLK1 : STD_LOGIC;
    SIGNAL RST1 : STD_LOGIC;
    SIGNAL NS : STD_LOGIC_VECTOR(2 DOWNTO 0);
    SIGNAL WE : STD_LOGIC_VECTOR(2 DOWNTO 0);
    CONSTANT CLK_P:TIME:=1 us;
    COMPONENT TRAFFIC
    	PORT(CLK,RST:IN STD_LOGIC;
    		NSLIGHTS,WELIGHTS:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));
    END COMPONENT;
    BEGIN
    	i1 : TRAFFIC PORT MAP(CLK => CLK1, RST => RST1, NSLIGHTS => NS, WELIGHTS => WE);
    	PROCESS
    		BEGIN
    		CLK1<='0'; WAIT FOR CLK_P;
    		CLK1<='1'; WAIT FOR CLK_P;
    	END PROCESS;
    	RST1<='1','0' AFTER 2 us;
    END TRAFFIC_arch;
    

    仿真波形图:
    在这里插入图片描述

    展开全文
  • 红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过PA口输出,显示时间直接通过8255的PC口输出至双位数码管);车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。本系统实用性强、操作简单、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,204
精华内容 881
热门标签
关键字:

交通灯的红绿黄灯时间