精华内容
下载资源
问答
  • 基于CC2530单片机的交通信号灯系统
  • 基于c51的交通信号灯程序 #include #define uint unsigned int #define uchar unsigned char sbit myellow=P1^2; sbit syellow=P1^6; uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90}; ...
  • vb6做的交通信号灯程序(源码) 交通信号灯可以循环变换颜色,随着信号灯的变换窗体中的汽车红灯停绿灯行。
  • 51单片机的一些经典案例,包括蜂鸣器,动态显示,交通灯这些程序代码
  • 课程设计----模拟交通信号灯,用C++写的,可以编译通过,讲解很详细,有注释,可帮助你学习编程语言。可以帮助你完成课程设计或毕业设计。它的运行效果完全和十字路口交通信号灯的运转一样,达到模拟的效果。
  • 用51单片机实现的交通信号灯程序及仿真电路
  • 交通信号灯的C程序

    2013-12-03 21:48:08
    利用Keil软件进行C编程,加载,编译,完成对交通信号灯的控制。
  • 代码是基于stm32开发板,利用c语言编程,模拟交通信号灯
  • 代码是基于80c51写的,并有protuse仿真
  • 在如今这个经济飞速发展的世界,交通已成为经济发展所不能或缺的一部分,扮演着越来越重要的角色,在我国这样一个汽车大国中,十字路口的交通灯就显得尤其重要!自从交通灯诞生以来,其内部的电路控制系统就不断的被...
  • EDA实验,交通信号灯程序,有三种解法,状态机实现
  • 交通信号灯

    2018-03-09 00:23:49
    计算机语言设计程序,从而控制交通信号灯 通过计时器控制四个方向时间长短
  • 文件内包含ISE14.4版本的VerilogHDL交通信号灯完整代码,以及testbench测试代码
  • 通过51单片机进行交通信号灯的控制,使用了共阳数码管进行信号灯倒计时显示,实现了按键调整信号灯倒计时时间,并拥有特殊车辆通行功能。下载模块使用了ch340芯片转换usb数据下载。代码部分使用了c语言编写。
  • PAGEPAGE 3课程设计报告课程名称: FPGA现代数字系统设计设计名称: 交通信号灯控制器姓 名: * * *学 号: 2010000379专 业: 通 信指导教师: * * *起止日期: 2010.12.25 - 2011.1.9课 程 设 计 任 务 书设计名称...

    PAGE

    PAGE 3

    课程设计报告

    课程名称: FPGA现代数字系统设计

    设计名称: 交通信号灯控制器

    姓 名: * * *

    学 号: 2010000379

    专 业: 通 信

    指导教师: * * *

    起止日期: 2010.12.25 - 2011.1.9

    课 程 设 计 任 务 书

    设计名称:

    设计要求:

    (1) 设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。

    (2) 红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号。

    (3) 主干道处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。

    (4) 主、支干道均有车时,两者交替允许通行,主干道每次放行45s,支干道每次放行25s,设立45s、25s计时、显示电路。

    (5) 在每次由绿灯亮到红灯亮的转换过程中,要亮5s黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5s计时、显示电路。

    (6)发生紧急事件,如救护车、警车、抢险车通过,可以手动控制四个方向的红灯全亮。

    设计目的和意义

    通过应用Verilog语言在QuartusⅡ软件平台上设计交通信号灯控制器,并借助硬件来测试仿真效果。通过课程设计,熟悉硬件编程语言的应用,特别是有限状态机的灵活使用,为以后进一步的学习实践打下良好的基础。

    设计原理

    (1) 主、支干道用传感器检测车辆到来情况,实验电路用逻辑开关代替。

    (2) 选择1HZ时钟脉冲作为系统时钟。

    (3) 45s、25s、5s定时信号可用顺计时,也可用倒计时,计时起始信号由主控电路给出,每当计满所需时间,启、闭三色信号灯,并启动另一计时电路。

    (4) 交通灯状态变化如表1及图1所示:

    表1:交通灯状态图

    图1:交通灯状态图

    (5) 交通灯设计输入信号4个:CLK(时钟),EN(使能),EMERGENCY(紧急),BCHECK(检测) ;输出信号4个:LAMPA(主干道信号灯),LAMPB(支干道信号灯),ACOUNT(主干道计数器),BCOUNT(支干道计数器)。交通灯控制原理如图2所示。

    图2:交通灯原理图

    详细设计步骤

    (1) 确定4个输入信号与4个输出信号,具体见图2;

    (2) 将50MHZ时钟分频为1MHZ;

    (3) 设计红黄绿3中信号灯切换的时间及顺序;

    (4) 设计支路检测状态下的信号灯切换;

    (5) 设计紧急(EMERGENCY)状态下信号灯的切换;

    (6) 程序使用3always块[1],详细代码如下:

    module traffic_control(CLK,EN,EMERGENCY,BCHECK,LAMPA,LAMPB,ACOUNT,BCOUNT);

    output[2:0] ACOUNT,BCOUNT;

    output[2:0] LAMPA,LAMPB;

    reg clk1;

    input CLK,EN,EMERGENCY,BCHECK;

    reg[2:0] numa,numb;

    reg tempa,tempb;

    reg[25:0]count;

    reg[2:0] counta,countb;

    reg[2:0] ared,ayellow,agreen,aleft,bred,byellow,bgreen,bleft;

    reg[2:0] LAMPA,LAMPB;

    /* 信号定义与说明:

    CLK: 为同步时钟;

    EN: 使能信号,为1 的话,则控制器开始工作;

    LAMPA: 控制A 方向四盏灯的亮灭;其中,LAMPA0~LAMPA2,分别控制A 方向的绿灯、黄灯和红灯;

    LAMPB: 控制B 方向四盏灯的亮灭;其中,LAMPB0 ~ LAMPB2,分别控制B 方向的绿灯、黄灯和红灯;

    ACOUNT: 用于A 方向灯的时间显示,8 位

    BCOUNT: 用于B 方向灯的时间显示,8 位*/

    always @(posedge CLK ) //将50MHZ时钟分频为1MHZ

    begin

    if(count=

    begin

    count<=0;

    clk1<=~clk1;

    end

    else

    count<=count+1;

    end

    assign ACOUNT=numa;

    assign BCOUNT=numb;

    always @(EN )

    if(!EN)

    begin

    展开全文
  • 51单片机控制交通灯c程序
  • 简单的交通信号灯实现本文中主要利用89C52单片机实现一个简单的交通信号灯系统,代码编写借助keil软件编写,再结合protues软件进行仿真。基本实现简单的交通信号等功能。一.代码如下#include/***************宏定义...

    简单的交通信号灯实现

    本文中主要利用89C52单片机实现一个简单的交通信号灯系统,代码编写借助keil软件编写,再结合protues软件进行仿真。基本实现简单的交通信号等功能。

    一.代码如下

    #include

    /***************宏定义**********************/

    #define int8_t char

    #define uint8_t unsigned char

    #define int16_t int

    #define uint16_t unsigned int

    /**************变量申请*********************/

    int8_t times = 0;

    uint8_t g_timer0_1s = 0;

    uint8_t g_light_shark = 0;

    void Timer0_Init()

    {

    TMOD &= 0xF0; //单片机16位技术模式

    TMOD |= 0x01;

    TH0 = 0x00; //装入初值

    TL0 = 0x4c;

    TF0 = 0;

    EA = 1; //开总中断

    ET0 = 1; //允许定时器0中断

    }

    void Timer0(void) interrupt 1

    {

    TH0 = 0x00; //再次装入初值

    TL0 = 0x4c;

    times++;

    if(times == 20)

    {

    展开全文
  • 2020由于无法去实验室只提交设计方案,包括软件流程和硬件连接,包含具体思路和伪代码,自己的思路,用markdown写的。
  • 目录基于STC89C51的交通信号灯控制程序关于STC89C516程序设计思路源程序最终效果 基于STC89C51的交通信号灯控制程序 这两天手边能钻研的只有一套普中仪器的51开发仪,就根据开发仪上有的电子元件实现了一个交通信号...

    基于STC89C51的交通信号灯控制程序

    这两天手边能钻研的只有一套普中仪器的51开发仪,就根据开发仪上有的电子元件实现了一个交通信号灯拟真。

    关于STC89C516

    有关这颗芯片的资料并不是特别多,总的来说这颗芯片算是低配版本的STC89C52,DIP-40封装,程序区仅有4KB,不适合大型程序。
    芯片引脚图:
    STC89C516引脚图
    在本个实验中需要用到GPIO-P0口(作为数码管显示信号)、P1口(作为LED控制信号)、P2口低三位(联合74LS138作为数码管控制信号)。

    程序设计思路

    因为动态数码管显示控制需要刷新,故在主程序里面需要实现数码管的刷新;同时参考到现实情况绿灯在最后时间内会闪烁提示,故而在程序实现中采用了分段循环的设计。

    源程序

    在另外一台电脑上,后续几天更新。

    #include <reg52.h>
    
    typedef unsigned int  u16;
    typedef unsigned char u8;
    
    u8 code CHARSET[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
    	0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
    
    void __delay_kicks(u16 kick){
    	while(kick--);
    	return;
    }
    
    int main(void){
    	u16 count = 0;
    	u16 count2 = 19;
    	u16 i,c0;
    	u8 c1,c2,c3,step;
    	step = 0;
    	while(1){
    		c1 = count % 10;
    		c2 = count / 10;
    		c2 = c2 % 10;
    		c3 = count / 100;
    		c3 = c3 % 10;
    		for (i = 0; i < 50; i++){
    		    c0 = i / 10;
    			 
    			P2 = 0x07;
    			P0 = CHARSET[c0];
    			__delay_kicks(195);
    
    			P2 = 0x06;
    			P0 = CHARSET[c1] + 0x80;
    			__delay_kicks(195);
    
    			P2 = 0x05;
    			P0 = CHARSET[c2];
    			__delay_kicks(195);
    
    			P2 = 0x04;
    			P0 = CHARSET[c3];
    			__delay_kicks(195);
    
    			P2 = 0x03;
    			if (count2 <= 9){
    				P0 = CHARSET[count2];
    			}else{
    				P0 = 0x40;
    			}
    			__delay_kicks(195);
    		}  
    		count++;
    		count2--;
    		if(count2 <= 0){
    			if(step == 0){
    				step = 1;
    				count2 = 25;
    			}else if(step == 1){
    				step = 2;
    				count2 = 3;
    			}else if(step == 2){
    				step = 0;
    				count2 = 19;
    			}
    		}
    		if(step == 0 && count2 > 3){
    			P1 = ~(0x30);
    		}else if(step == 0 && count2 <= 3){
    			P1 = ~(0x50);
    		}else if(step == 1){
    			P1 = ~(0x84);
    		}else if(step == 2){
    			P1 = ~(0x88);
    		}
    
    		for (i = 50; i < 100; i++){
    		    c0 = i / 10;
    			 
    			P2 = 0x07;
    			P0 = CHARSET[c0];
    			__delay_kicks(195);
    
    			P2 = 0x06;
    			P0 = CHARSET[c1] + 0x80;
    			__delay_kicks(195);
    
    			P2 = 0x05;
    			P0 = CHARSET[c2];
    			__delay_kicks(195);
    
    			P2 = 0x04;
    			P0 = CHARSET[c3];
    			__delay_kicks(195);
    
    			P2 = 0x03;
    			if (count2 <= 9){
    				P0 = CHARSET[count2];
    			}else{
    				P0 = 0x40;
    			}
    			__delay_kicks(195);
    		}
    
    		if(step == 0 && count2 > 9){
    			P1 = ~(0x30);
    		}else if(step == 0 && count2 > 3){
    			P1 = ~(0x10);
    		}else if(step == 0 && count2 <= 3){
    			P1 = ~(0x50);
    		}else if(step == 1 && count2 > 5){
    			P1 = ~(0x84);
    		}else if(step == 1 && count2 <= 5){
    			P1 = ~(0x80);			  
    		}else if(step == 2){
    			P1 = ~(0x88);
    		}
    	}
    }
    
    

    最终效果

    视频:

    21013101-基于STC89C516的交通信号灯拟真

    腾讯微云-红绿灯展示
    视频下载(如果上面那个链接失效请选择这个):腾讯微云

    展开全文
  • 在上一篇博客十字路口交通信号灯问题之需求解析>>中介绍了程序的需求,这篇博客将给大家介绍代码如何实现,实现中没有实现GUI,只是对十字路口交通信号灯的逻辑进行了简单的实现.   Road类. /** * 每个Road对象代表一...

    在上一篇博客<<十字路口交通信号灯问题之需求解析>>中介绍了程序的需求,这篇博客将给大家介绍代码如何实现,实现中没有实现GUI,只是对十字路口交通信号灯的逻辑进行了简单的实现.

     

    Road.

    /**
     * 每个Road对象代表一条路线,总共有12条路线,即系统中总共要产生12个Road实例对象。
     * 每条路线上随机增加新的车辆,增加到一个集合中保存。
     * 每条路线每隔一秒都会检查控制本路线的灯是否为绿,是则将本路线保存车的集合中的第一辆车移除,即表示车穿过了路口。
     * @author 张孝祥 www.it315.org
     *
     */
    public class Road {
    	private List<String> vechicles = new ArrayList<String>();
    
    	private String name = null;
    
    	public Road(String name) {
    		this.name = name;
    		
    		//模拟车辆不断随机上路的过程	
    		ExecutorService pool = Executors.newSingleThreadExecutor();
    		pool.execute(new Runnable() {
    
    			@Override
    			public void run() {
    				for (int i = 1; i < 100; i++) {
    					try {
    						Thread.sleep((new Random().nextInt(10)+1)*1000);
    					} catch (InterruptedException e) {
    						e.printStackTrace();
    					}
    					vechicles.add(Road.this.name + " _" + i);
    				}
    
    			}
    		});
    		
    		//每隔一秒检查对应的灯是否为绿,是则放行一辆车	
    		ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);
    		timer.scheduleAtFixedRate(
    				new Runnable(){
    				public void run(){
    					if(vechicles.size() >0){
    						boolean lighted = true;
    						if(lighted = true){
    							System.out.println(vechicles.remove(0) + "is traversing !");
    							vechicles.remove(0);
    						}
    					}
    					
    					}
    				},
    				1,
    				1,
    				TimeUnit.SECONDS);
    		
    	}
    }


    Lamp类:

    <span style="font-family:Times New Roman;font-size:18px;">/**
     * 每个Lamp元素代表一个方向上的灯,总共有12个方向,所有总共有12个Lamp元素。
     * 有如下一些方向上的灯,每两个形成一组,一组灯同时变绿或变红,所以,
     * 程序代码只需要控制每组灯中的一个灯即可:
     * s2n,n2s    
     * s2w,n2e
     * e2w,w2e
     * e2s,w2n
     * s2e,n2w
     * e2n,w2s
     * 上面最后两行的灯是虚拟的,由于从南向东和从西向北、以及它们的对应方向不受红绿灯的控制,
     * 所以,可以假想它们总是绿灯。
     * @author 张孝祥 www.it315.org
     *
     */
    /**/
    public enum Lamp {
    	/*每个枚举元素各表示一个方向的控制灯*/	
    	S2N("N2S","S2W",false),S2W("N2E","E2W",false),E2W("W2E","E2S",false),E2S("W2N","S2N",false),
    	/*下面元素表示与上面的元素的相反方向的灯,它们的“相反方向灯”和“下一个灯”应忽略不计!*/
    	N2S(null,null,false),N2E(null,null,false),W2E(null,null,false),W2N(null,null,false),
    	/*由南向东和由西向北等右拐弯的灯不受红绿灯的控制,所以,可以假想它们总是绿灯*/
    	S2E(null,null,true),E2N(null,null,true),N2W(null,null,true),W2S(null,null,true);
    	
    	private Lamp(String opposite,String next,boolean lighted){
    		this.opposite = opposite;
    		this.next = next;
    		this.lighted = lighted;
    	}
    
    
    	/*当前灯是否为绿*/	
    	private boolean lighted;
    	/*与当前灯同时为绿的对应方向*/	
    	private String opposite;
    	/*当前灯变红时下一个变绿的灯*/	
    	private String next;
    	public boolean isLighted(){
    		return lighted;
    	}
    	
    	/**
    	 * 某个灯变绿时,它对应方向的灯也要变绿
    	 */	
    	public void light(){
    		this.lighted = true;
    		if(opposite != null){
    			Lamp.valueOf(opposite).light();
    		}
    		System.out.println(name() + " lamp is green,下面总共应该有6个方向能看到汽车穿过!");
    		
    	}
    	
    	/**
    	 * 某个灯变红时,对应方向的灯也要变红,并且下一个方向的灯要变绿
    	 * @return 下一个要变绿的灯
    	 */	
    	public Lamp blackOut(){
    		this.lighted = false;
    		if(opposite != null){
    			Lamp.valueOf(opposite).blackOut();
    		}		
    		
    		Lamp nextLamp= null;
    		if(next != null){
    			nextLamp = Lamp.valueOf(next);
    			System.out.println("绿灯从" + name() + "-------->切换为" + next);			
    			nextLamp.light();
    		}
    		return nextLamp;
    	}
    }</span>


    LampController类:

    <span style="font-family:Times New Roman;font-size:18px;">public class LampController {
    	private Lamp currentLamp;
    	
    	public LampController(){
    		//刚开始让由南向北的灯变绿;		
    		currentLamp = Lamp.S2N;
    		currentLamp.light();
    		
    		/*每隔10秒将当前绿灯变为红灯,并让下一个方向的灯变绿*/		
    		ScheduledExecutorService timer =  Executors.newScheduledThreadPool(1);
    		timer.scheduleAtFixedRate(
    				new Runnable(){
    					public  void run(){
    						System.out.println("来啊");
    						currentLamp = currentLamp.blackOut();
    				}
    				},
    				10,
    				10,
    				TimeUnit.SECONDS);
    	}
    }</span>

    main函数:

    <span style="font-family:Times New Roman;font-size:18px;">public static void main(String[] args) {
    		
    		/*产生12个方向的路线*/		
    		String [] directions = new String[]{
    				"S2N","S2W","E2W","E2S","N2S","N2E","W2E","W2N","S2E","E2N","N2W","W2S"		
    		};
    		for(int i=0;i<directions.length;i++){
    			new Road(directions[i]);
    		}
    		
    		/*产生整个交通灯系统*/		
    		new LampController();
    	}
    </span>


    运行结果:


    这个小程序挺有意思的,大家有时间可以写写.


    展开全文
  • 功能:十字路口交通灯控制程序: 正常时,EW方向计时60s,SN方向计时40s 若按时间加按键(Add_Button)按钮,EW、SN方向各加5s,不可大于99s,79s 若按时间减按键(Reduces_Button)按键,EW、SN方向各减5s,不...
  • 程序功能:模拟十字路口的交通信号灯,先是绿灯亮,然后黄灯亮三秒后,红灯亮禁行。 开始前PROTEUS仿真: 模拟东西通行,南北禁行: 模拟东西禁行,南北通行: 程序C语言源代码如下: /* 模拟交通灯 */ #include ...
  • 并利用8253可编程定时/计数器产生方波,同时利用8055可编程并行口芯片实现对交通灯的控制,其中A口进交通信号灯的控制,B口输出交通信号灯的时间(秒数)。 本项目中预定设置红灯和绿灯时间都为9秒,绿灯过后,黄灯...
  • 交通信号灯设计 软件设计 通信类专业教学资源库 目 录 流程图介绍 01 代码介绍 02 灯光转换 03 1.主流程图介绍 主程序中完成对交通灯系统的初始化工作使得主干道与支道能正常转换工作在此系统中由于要用七段LED...
  • 51单片机控制交通信号灯 说明:最近接了一个小项目,要在一个十字路口用单片机实现交通信号灯的控制 我试着用仿真软件做了一下,效果还可以,希望和大家一起学习 总体设计仿真图 单片机仿真设计部分 公路信号灯显示...
  • 设计实现交通信号灯系统。设A车道与B车道交叉组成十字路口,A是主道,B是支道,直接对车辆进行交通管理。实现的基本功能及要求如下: 1、用发光二极管模拟交通信号灯; 2、正常情况下,A、B两车道轮流放行,A车道...
  • (1)设计一个用于十字路口的交通灯灯控制台,能...(3)只考虑直行和左转车辆控制信号灯,右转车辆不受信号灯控制, 南北向车辆与东西向车辆交替方向,同方向等待车辆应先方向直行车辆而后放行左转车辆 详细描述请看博客
  • ----- http://www.itheima.com" target="blank">android...从中学到了跟着老师打代码还是容易理解一点,Enum,定时器用法,主要是需求分析,画图很重要,。分析清楚了还是很简单的。。做一个小小的项目可以学到很多很
  • 基于Matlab图像识别的交通信号灯智能控制.pdf
  • 基于MATLAB图像处理交通信号灯识别摘 要:交通信号灯是智能车辆在城市环境中行驶的主要指示信号,在城市交通安全中发挥了不可或缺的作用。交通信号灯通常设在交叉口,能够供应智能车辆的方位信息,查看和辨认交通...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,111
精华内容 1,644
关键字:

交通信号灯程序代码