精华内容
下载资源
问答
  • 四路交通灯、四路数码管仿真交通灯程序及电路图 自己做课程设计用的 不包括设计报告
  • 由本人制作的含有EDA交通灯控制器课程设计,课题内容为: (1)正常情况下保证主干道的畅通; (2)当步行街道上的行人要穿过主干道时,通过按钮来发出请求; (3)当有人按下控制按钮时,主干道变为黄灯,设置...
  • 【实例简介】由本人制作的含有EDA交通灯控制器课程设计,课题内容为:(1)正常情况下保证主干道的畅通;(2)当步行街道上的行人要穿过主干道时,通过按钮来发出请求;(3)当有人按下控制按钮时,主干道变为黄灯,设置...

    【实例简介】

    由本人制作的含有EDA交通灯控制器课程设计,课题内容为:

    (1)正常情况下保证主干道的畅通;

    (2)当步行街道上的行人要穿过主干道时,通过按钮来发出请求;

    (3)当有人按下控制按钮时,主干道变为黄灯,设置计数器计时时间为3秒。

    (4)3秒过后,主干道变为红灯,计数器继续计时(计时时间为15秒),在15秒内若有人再次按按钮,计数器不重新计时;

    (5)步行街道在主干道变为红灯时指示变为绿灯,行人可通行,在行人通行10秒后绿灯闪烁,5秒后主干道变为绿灯,与此同时步行道变为红灯。

    (6)在主干道变为绿灯后,必须保证主干道车辆通行时间达到30秒以上,在此期间,行人按钮无效。30秒过后,若有人再次按下按钮

    【实例截图】

    【核心代码】

    交通灯控制器

    └── eda

    ├── COUNT.bsf

    ├── count.vhd

    ├── count-wave.vwf

    ├── db

    │   ├── light.(0).cnf.cdb

    │   ├── light.(0).cnf.hdb

    │   ├── light.(1).cnf.cdb

    │   ├── light.(1).cnf.hdb

    │   ├── light.asm_labs.ddb

    │   ├── light.asm.qmsg

    │   ├── light.asm.rdb

    │   ├── light.cbx.xml

    │   ├── light.cmp0.ddb

    │   ├── light.cmp2.ddb

    │   ├── light.cmp.bpm

    │   ├── light.cmp.cdb

    │   ├── light.cmp.ecobp

    │   ├── light.cmp.hdb

    │   ├── light.cmp.kpt

    │   ├── light.cmp.logdb

    │   ├── light.cmp_merge.kpt

    │   ├── light.cmp.rdb

    │   ├── light.cmp.tdb

    │   ├── light.db_info

    │   ├── light.eco.cdb

    │   ├── light.eds_overflow

    │   ├── light.fit.qmsg

    │   ├── light.fnsim.hdb

    │   ├── light.fnsim.qmsg

    │   ├── light.hier_info

    │   ├── light.hif

    │   ├── light.lpc.html

    │   ├── light.lpc.rdb

    │   ├── light.lpc.txt

    │   ├── light.map_bb.cdb

    │   ├── light.map_bb.hdb

    │   ├── light.map_bb.logdb

    │   ├── light.map.bpm

    │   ├── light.map.cdb

    │   ├── light.map.ecobp

    │   ├── light.map.hdb

    │   ├── light.map.kpt

    │   ├── light.map.logdb

    │   ├── light.map.qmsg

    │   ├── light.pre_map.cdb

    │   ├── light.pre_map.hdb

    │   ├── light.rtlv.hdb

    │   ├── light.rtlv_sg.cdb

    │   ├── light.rtlv_sg_swap.cdb

    │   ├── light.sgdiff.cdb

    │   ├── light.sgdiff.hdb

    │   ├── light.sim.cvwf

    │   ├── light.simfam

    │   ├── light.sim.hdb

    │   ├── light.sim.qmsg

    │   ├── light.sim.rdb

    │   ├── light.sim_temp_.vwf

    │   ├── light.sld_design_entry_dsc.sci

    │   ├── light.sld_design_entry.sci

    │   ├── light.smart_action.txt

    │   ├── light.sta.qmsg

    │   ├── light.sta.rdb

    │   ├── light.syn_hier_info

    │   ├── light.tan.qmsg

    │   ├── light.tis_db_list.ddb

    │   ├── logic_util_heursitic.dat

    │   ├── prev_cmp_light.asm.qmsg

    │   ├── prev_cmp_light.fit.qmsg

    │   ├── prev_cmp_light.map.qmsg

    │   ├── prev_cmp_light.qmsg

    │   ├── prev_cmp_light.sim.qmsg

    │   ├── prev_cmp_light.sta.qmsg

    │   ├── prev_cmp_light.tan.qmsg

    │   └── wed.wsf

    ├── DITHER.bsf

    ├── dither.vhd

    ├── dither.vhd.bak

    ├── dither-wave.vwf

    ├── incremental_db

    │   ├── compiled_partitions

    │   │   ├── light.root_partition.cmp.cdb

    │   │   ├── light.root_partition.cmp.dfp

    │   │   ├── light.root_partition.cmp.hdb

    │   │   ├── light.root_partition.cmp.kpt

    │   │   ├── light.root_partition.cmp.logdb

    │   │   ├── light.root_partition.cmp.rcfdb

    │   │   ├── light.root_partition.cmp.re.rcfdb

    │   │   ├── light.root_partition.map.cdb

    │   │   ├── light.root_partition.map.dpi

    │   │   ├── light.root_partition.map.hdb

    │   │   └── light.root_partition.map.kpt

    │   └── README

    ├── light1.vwf

    ├── light.asm.rpt

    ├── light.bdf

    ├── LIGHT.bsf

    ├── light.done

    ├── light.fit.rpt

    ├── light.fit.summary

    ├── light.flow.rpt

    ├── light.hexout

    ├── light.map.rpt

    ├── light.map.summary

    ├── light.pin

    ├── light.pof

    ├── light.qpf

    ├── light.qsf

    ├── light.qws

    ├── light.sim.rpt

    ├── light.sof

    ├── light.sta.rpt

    ├── light.sta.summary

    ├── light.tan.rpt

    ├── light.tan.summary

    ├── light.vhd

    ├── light.vwf

    ├── light-wave.vwf

    ├── try.vwf

    ├── tuxing.bdf

    ├── Waveform1.vwf

    ├── z.vwf

    └── 交通灯控制器.doc

    4 directories, 119 files

    展开全文
  • 1. 能根据交通规律正确设置交通灯状态数码管显示内容 2. 能手动调节时间 3. 能根据交通状况自动延长直行时间; 带行人与繁忙检测的单片机交通灯仿真原理如下: 注:通过键盘调节时间项目中,分为东西直行时间、...
  • 十字路口交通灯信号控制器设计要求: 1)东西通道和南北通道交替通行,东西...整个电路设计,包括原理和PCB、原理和PCB封装库文件,用AD软件打开; 源程序(用汇编语言编写); 十字路口交通灯信号控制器论文分析;
  • 设计由STC89C52单片机电路+LED指示电路+红外避障传感器电路+lcd1602显示+电源电路组成。 1、道路为东西南北走向的十字路口,每条马路各有2套红绿灯,即红、黄、绿。 2、系统正常模式下,均为红灯亮10秒,然后...

    硬件电路的设计

    (末尾附文件)
    3.1系统的功能分析及体系结构设计
    3.1.1系统功能分析
    本设计由STC89C52单片机电路+LED灯指示电路+红外避障传感器电路+lcd1602显示+电源电路组成。
    1、道路为东西南北走向的十字路口,每条马路各有2套红绿灯,即红、黄、绿。
    2、系统正常模式下,均为红灯亮10秒,然后黄灯亮3秒,然后绿灯亮10秒,并依次循环。(同一时刻,每套红绿灯系统只有1个灯亮)
    3、在南北方向的马路增加1路红外避障检测,如果南北绿灯情况下,检测到车辆过多以5个位例,达到5个,绿灯延时10s,对应东西红灯相应延时10s。保证南北绿灯时间延长,通车多,防止堵车。
    4、在东西方向的马路增加1路红外避障检测,如果东西绿灯情况下,检测到车辆过多以5个位例,达到5个,绿灯延时10s,对应南北红灯相应延时10s。保证东西绿灯时间延长,通车多,防止堵车。
    5、每次绿灯,人数过多只能延时一次,否则影响另一方向车道行驶,延时10s后,继续正常红绿灯处理。
    6、增加1602显示东西南北灯显示参数,以及车流量参数。
    3.1.2系统总体结构
    本系统具体框图如下图所示:

    在这里插入图片描述

    STC89C52单片机核心系统电路设计
    STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。
    一、STC89C52主要特性如下:
    (1)8K字节程序存储空间;
    (2)512字节数据存储空间;
    (3)内带4K字节EEPROM存储空间;
    (4)可直接使用串口下载。
    二、STC89C52主要参数如下:
    (1)增强型8051单片机,6时钟/机器周期和12 时钟/机器周期可以任意选择,指令代码完全兼容传统8051;
    (2)工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V 单片机);
    (3)工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作 频率可达48MHz;
    (4)用户应用程序空间为8K字节;
    (5)片上集成512 字节RAM;
    (6)通用I/O 口(32个),复位后为:P1/P2/P3 是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O口用时,需加上拉电阻;
    (7)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片;
    (8)具有EEPROM功能;
    (9)共3个16 位定时器/计数器。即定时器T0、T1、T2;
    (10)外部中断4路,下降沿中断或低电平触发电路,Power Down 模式可 由外部中断低电平触发中断方式唤醒;

    LCD1602液晶显示模块电路设计
    LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用LCD1602作为显示器件输出信息。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。
    一、LCD1602主要技术参数如下:
    (1)显示容量为16×2个字符;
    (2)芯片工作电压为4.5~5.5V;
    (3)工作电流为2.0mA(5.0V);
    (4)模块最佳工作电压为5.0V;
    (5)字符尺寸为2.95×4.35(W×H)mm。
    二、LCD1602采用标准的14脚,其接口的引脚说明如下:
    (1)第1脚:VSS为地电源。
    (2)第2脚:VDD接5V正电源。
    (3)第3脚:V0为液晶显示器对比度调整端。
    (4)第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
    (5)第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
    (6)第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
    (7)第7~14脚:D0~D7为8位双向数据线。
    (8)第15~16脚:空脚

    E18-D80NK红外避障传感器模块电路设计
    E18-D80NK-N 这是一种集发射与接收于一体的光电传感器,发射光经过调制后发出,接收头对反射光进行解调输出。有效的避免了可见光的干扰。透镜的使用,也使得这款传感器最远可以检测 80 厘米距离的问题(由于红外光的特性,不同颜色的物体,能探测的最大距离也有不同;白色物体最远,黑色物体最近)。
    检测障碍物的距离可以根据要求通过尾部的电位器旋钮进行调节。该传感器具有探测距离远、受可见光干扰小、价格便宜、易于装配、使用方便等特点,可以广泛应用于机器人避障、流水线计件等众多场合。应用案例:生产线货物自动计数设备、多功能提醒器、走迷宫机器人等。
    一、模块参数说明
    (1)光感式传感器(光电开关)NPN常开
    (2)红色:VCC +;黑色:GND —;黄色:OUT 信号输出。
    (3)工作电压:5VDC
    (4)工作电流:10-15mA
    (5)驱动电流:100mA
    (6)感应距离:3-80CM可调
    (7)颜色:橙黄色
    (8)直径:18MM
    (9)长度:45MM
    (10)引线长度:25CM。
    (11)消耗电流 DC<25mA
    (12)响应时间 <2ms
    (13)检测物体:透明或不透明体
    (14)工作环境温度:-25℃~+55℃
    (15)标准检测物体:太阳光10000LX以下 白炽灯3000LX以下
    (16)外壳材料:塑料
    二、模块接口说明
    (1)棕色线 外接5V电压,VCC。
    (2)蓝线 外接GND
    (3)黑线 数字量输出接口(0和1)
    E18红外避障传感器模块内部电路图如下图所示,其中R1电阻为分压电阻,将红外避障传感器检测到的障碍信息转化为模拟电压信号,模拟量信号接入LM393比较器后,即可与LM393比较器芯片2号引脚所接的分压电阻分压后的模拟电压进行比较,进而得出DO数字信号(即高低电平信号)。C1、C2为滤波电容,C1电容对电源进行滤波,让电源输出更稳定。C2电容对模拟信号进行滤波,保证模拟信号输出的稳定性。R2、R3均为限流电阻,来保护LED灯,防止LED灯烧坏,LED灯均为低电平有效。R5也为限流电阻,保护红外发射头,以防烧坏。R4为上拉电阻,上拉就是将不确定的信号通过一个电阻钳位在高电平,同时起限流作用。保证LM393比较器输出的高低电平信号在与单片机引脚连接时电平信号的读取更加稳定。
    在这里插入图片描述
    在这里插入图片描述
    LED信号指示灯电路设计
    LED灯即发光二极管,它是半导体二极管的一种,可以把电能转化成光能。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。在电路中,电阻的作用是限流,保护LED灯。只要单片机的控制引脚拉低,则LED灯亮,否则,LED灯不亮。其具体电路原理图如下图所示。
    在这里插入图片描述

    系统软件设计

    在这里插入图片描述

    #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
    #include<stdio.h>
    #include "1602.h"
    #include "delay.h"
    
    sbit ew_GREEN= P1^0 ;	//管脚定义
    sbit ew_YELLOW = P1^1 ;
    sbit ew_RED= P1^2;
    sbit ns_GREEN1 = P1^3 ;
    sbit ns_YELLOW1= P1^4;
    sbit ns_RED1 = P1^5;
    
    unsigned int ns_gre_Num=10;//南北绿灯时间
    unsigned int ns_yel_Num=0; //南北黄灯时间
    unsigned int ns_red_Num=0; //南北红灯时间
    unsigned int ew_gre_Num=0;	//东西绿灯时间
    unsigned int ew_yel_Num=0;	//东西黄灯时间
    unsigned int ew_red_Num=13;	//东西红灯时间
    
    unsigned char step = 1;	 //运行阶段计数
    unsigned char disFlag =1; //显示标志
    unsigned long time20ms=0;  //定时时间
    unsigned int PluNum1=0;	//脉冲量
    unsigned int PluNum2=0;	//脉冲量
    bit firstAdd_ns =0;	   //加时标志
    bit firstAdd_ew =0;
    char dis0[16];		   //显示更新暂存
    
    void Init_Timer0(void);	 //喊数声明
    void dealLed(void);
    void main (void)
    {                  
    	EX0=1;			  //允许外部中断0中断
    	EX1=1;			  //允许外部中断0中断
    	IT0 = 1; 		  //外部中断0负跳变中断
    	IT1 = 1; 		  //外部中断0负跳变中断
    	EA=1;	 		  //开总中断
    
    	ew_GREEN = 0;	//初始化 灯亮一下 方便检测
    	ew_YELLOW = 0;
    	ew_RED = 0;
    	ns_GREEN1 = 0;
    	ns_YELLOW1 = 0;
    	ns_RED1 = 0;
    	DelayMs(200); 
    	ew_GREEN = 1;	//初始化 灯亮一下 方便检测
    	ew_YELLOW = 1;
    	ew_RED = 1;
    	ns_GREEN1 = 1;
    	ns_YELLOW1 = 1;
    	ns_RED1 = 1;
    
    	Init_Timer0();        //定时器0初始化
    	LCD_Init();           //初始化液晶
    	DelayMs(20);          //延时有助于稳定
    	LCD_Clear();          //清屏
    	sprintf(dis0,"|R%02d Y%02d G%02d l%02d",ns_red_Num,ns_yel_Num,ns_gre_Num,PluNum1);   //打印数据
    	LCD_Write_String(0,0,dis0); 		//显示
    	sprintf(dis0,"-R%02d Y%02d G%02d r%02d",ew_red_Num,ew_yel_Num,ew_gre_Num,PluNum2);  
    	LCD_Write_String(0,1,dis0); 		//显示
    	
    	step =1;	   	//交通灯第一步 南北绿灯 东西红灯数据填充
    	ns_gre_Num=10;
    	ns_yel_Num=0;
    	ns_red_Num=0;
    	ew_gre_Num=0;
    	ew_yel_Num=0;
    	ew_red_Num=13;
       	firstAdd_ns =0;firstAdd_ew= 0;//加时标志
    	while (1)         //主循环
    	{
    		if(disFlag == 1)
    		{
    			sprintf(dis0,"|R%02d Y%02d G%02d l%02d",ns_red_Num,ns_yel_Num,ns_gre_Num,PluNum1);  //打印数据
    			LCD_Write_String(0,0,dis0); 		//显示
    			sprintf(dis0,"-R%02d Y%02d G%02d r%02d",ew_red_Num,ew_yel_Num,ew_gre_Num,PluNum2); //打印数据 
    			LCD_Write_String(0,1,dis0); 		//显示
    			disFlag =0;
    		}
    
    		if(ns_gre_Num>0)   //任何灯指示数据和指示灯匹配显示
    		{ns_GREEN1 = 0 ;}
    		else
    		{
    			ns_GREEN1 =1;
    			PluNum1 = 0;//非南北红绿灯时 不计数			
    		}
    	
    		if(ns_yel_Num>0)  //任何灯指示数据和指示灯匹配显示
    		{ns_YELLOW1 = 0 ;}
    		else
    		{ns_YELLOW1 =1;}
    	
    		if(ns_red_Num>0)  //任何灯指示数据和指示灯匹配显示
    		{ns_RED1 = 0 ;}
    		else
    		{ns_RED1 =1;}
    	
    		if(ew_gre_Num>0)   //任何灯指示数据和指示灯匹配显示
    		{ew_GREEN = 0 ;}
    		else
    		{ew_GREEN =1;PluNum2 = 0;}
    	
    		if(ew_yel_Num>0)	 //任何灯指示数据和指示灯匹配显示
    		{ew_YELLOW = 0 ;}
    		else
    		{ew_YELLOW =1;}
    	
    		if(ew_red_Num>0)   //任何灯指示数据和指示灯匹配显示
    		{ew_RED = 0 ;}
    		else
    		{ew_RED =1;}
    	}
    }
    
    
    
    
    void ISR_Key(void) interrupt 0 using 1
    {
    	if(ns_gre_Num>0)
    	{
    		PluNum1++;		
    		if((PluNum1>5)&&(firstAdd_ns==0))	//南北绿灯时 检测数量 超过5
    		{
    		 	ns_gre_Num = ns_gre_Num+10;		//相应参数+10
    			ew_red_Num = ew_red_Num+10;
    			firstAdd_ns= 1;			   //一个循环只允许进来一次
    		} 
    	}
    	
    }
    
    void int1() interrupt 2
    {
    	if(ew_gre_Num>0)
    	{
    		PluNum2++;		
    		if((PluNum2>5)&&(firstAdd_ew==0))	  //南北绿灯时 检测数量 超过5
    		{
    		 	ns_red_Num = ns_red_Num+10;	//相应参数+10
    			ew_gre_Num = ew_gre_Num+10;
    			firstAdd_ew= 1;			  //一个循环只允许进来一次
    		} 
    	}
    }
    void Init_Timer0(void)
    {
    	TMOD |= 0x01;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响		     
    	TH0=(65536-20000)/256;		  //重新赋值 20ms
    	TL0=(65536-20000)%256;
    	EA=1;            //总中断打开
    	ET0=1;           //定时器中断打开
    	TR0=1;           //定时器开关打开
    }
    
    void Timer0_isr(void) interrupt 1 
    {
    	TH0=(65536-20000)/256;		  //重新赋值 20ms
    	TL0=(65536-20000)%256;
    	
    	time20ms++;
    	if(time20ms%10==0)
    	{disFlag =1;}
    	if(time20ms%50==0)
    	{
    		if(step==1)			   
    		{
    		 	if(ns_gre_Num>0)   //交通灯第一步 南北指示灯 东西指示灯 时间处理
    			{
    				ns_gre_Num--;
    				ew_red_Num--;			
    			}
    			if(ns_gre_Num==0) 	   //交通灯第二步 南北指示灯 东西指示灯数据填充
    			{
    				step = 2;
    				ns_gre_Num=0;
    				ns_yel_Num=3;
    				ns_red_Num=0;
    			}		
    		}
    		else if(step==2)
    		{
    		 	if(ns_yel_Num>0)//交通灯第二步 南北指示灯 东西指示灯 时间处理
    			{
    				ns_yel_Num--;
    				ew_red_Num--;			
    			}
    			if(ns_yel_Num==0) 	  //交通灯第三步 南北指示灯 东西指示灯数据填充
    			{
    				step = 3;
    				ns_gre_Num=0;
    				ns_yel_Num=0;
    				ns_red_Num=13;
    				ew_gre_Num=10;
    				ew_yel_Num=0;
    				ew_red_Num=0;
    				firstAdd_ew =0;
    			}		
    		}
    		else if(step==3)
    		{
    		 	if(ew_gre_Num>0)
    			{
    				ew_gre_Num--;
    				ns_red_Num--;			
    			}
    			if(ew_gre_Num==0)  //交通灯第三步 南北指示灯 东西指示灯数据填充
    			{
    				step = 4;
    				ew_gre_Num=0;
    				ew_yel_Num=3;
    				ew_red_Num=0;
    			}		
    		}
    		else if(step==4)
    		{
    		 	if(ew_yel_Num>0)
    			{
    				ew_yel_Num--;
    				ns_red_Num--;			
    			}
    			if (ew_yel_Num==0)	 //交通灯第一步 南北指示灯 东西指示灯数据填充
    			{
    				step = 1;
    				ns_gre_Num=10;
    				ns_yel_Num=0;
    				ns_red_Num=0;
    				ew_gre_Num=0;
    				ew_yel_Num=0;
    				ew_red_Num=13;
    				firstAdd_ns =0;
    			}		
    		}
    	}
    }
    
    
    
    
    

    .

    链接:https://pan.baidu.com/s/10yMThOaJQqyTkN2wleQY2w
    提取码:j1ib

    .

    展开全文
  • 设计与单片机专业知识结合紧密,结合实际情况阐述了交通灯控制系统的工作原理,给出了一种简单低成本城市交通灯控制系统的硬件软件设计方案、各个路口交通灯的状态循环显示,并对程序流程进行详细讲解分析。...
  • 课题一:交通灯控制设计 4 1.课程设计的目的与要求(含设计指标) 4 1.1目的 4 1.2要求 4 1.3分工 4 2.FPGA方案论证选择 4 3.原理设计 5 3.1基本原理 5 3.2系统组成框图 6 3.3单元电路设计 7 ...

    课题一:交通灯控制设计

    1.课程设计的目的与要求

    1.1目的

    以FPGA为核心,设计一个交通灯控制器,每个路口都有红、黄、绿三盏灯。该交通信号灯控制器由一条车道A和一条车道B汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯。

    1.2要求

    (1)东西、南北两个方向的信号灯必须交替工作且两个方向通行时间不同;

    (2)显示采用LED光柱或数码管倒计时的方式。

    (3)遇有紧急情况可人为将两个方向都置为红灯。

    (4)每个路口用2个七段数码管倒计时显示。

    1.3分工

    马浩宁:电路设计、程序调试、画PCB

    张晓涵:刻板、焊电路、写论文

    王春燕:查找资料

    FPGA模块方案论证及选择

    各模块端口及信号连接如下图所示:
    在这里插入图片描述

    由上图可知,FPGA部分包括四个模块,顶层模块(top_traffic)、交通灯控制模块(traffic_light)、数码管显示模块(seg_led)、led灯控制模块(led)。在顶层模块中完
    成对其它三个模块的例化,并实现各模块之间的数据传递。

    顶层模块(top_traffic):顶层模块完成了对其它三个子模块的例化、实现了子模块间
    的信号连接、并将led灯和数码管的驱动信号输出给外接设备(交通信号灯外设)。

    交通灯控制模块(traffic_light):交通灯控制模块是本次实验的核心代码,这个模块
    控制信号灯的状态转换,将实时的状态信号state[1:0]输出给led灯控制模块(led),同时将
    东西和南北方向的实时时间数据ew_time[5:0]和sn_time[5:0]输出给数码管显示模块
    (seg_led)。

    数码管显示模块(seg_led):接收交通灯控制模块传递过来的东西和南北方向的实时时间数据ew_time[5:0]和sn_time[5:0],并以此驱动对应的数码管,将数据显示出来。

    led灯控制模块(led):根据接收到的实时状态信号state[1:0],驱动东西和南北方向的led发光。

    原理设计

    3.1基本原理

    点FPGA开发板上左边的P6扩展口可以用来外接交通信号灯扩展模块,交通信号

    灯扩展模块的原理图如图 38.3.1所示。
    在这里插入图片描述

    图 38.3.1 交通信号灯原理图

    由上图可知,交通信号灯扩展模块四个方向共12个LED灯,而我们使用6个LED控制信号来
    驱动12个LED灯,这是因为东西方向或者南北方向LED灯的亮灭状态总是一致的,所以我们将东西方向或者南北方向颜色相同的LED灯并联在一起,这样设计的好处是减少了交通信号灯扩展模块LED控制信号的引脚。

    上图中四个共阳型数码管分别对应四个路口,每个路口用两位数码管显示当前状态的剩余
    时间。我们知道,在十字路口中,东西方向或者南北方向数码管显示的时间总是一样的。以东西方向为例,正因为这两个方向显示的时间一致,所以这两个方向的数码管,它们的十位可以用同一个位选信号来控制,个位用另一个位选信号来控制,这样的话,就可以实现两个位选信号控制东西方向共4位数码管的亮灭,南北方向的数码管同理。这样设计的好处是减少了交通信号灯扩展模块位选信号的引脚。

    数码管由PNP型三极管驱动,当三极管的基极为低电平时,数码管相应的位被选通,所以交通信号灯扩展模块的位选信号是低电平有效的。

    3.2系统组成框图

    交通灯控制模块将需要显示的时间数据连接到数码管显示模块,同时将状态信号连接到led灯控制模块,然后数码管显示模块和led灯控制模块驱动交通信号灯外设工作。系统总体框架图如图
    38.4.1所示,
    在这里插入图片描述

    3.3单元电路设计

    3.3.1 FPGA最小系统

    FPGA最小系统包括:FPGA芯片、下载电路、外部时钟、复位电路和电源。

    如果使用NIOS II软嵌入式处理器还要包括SDRAM和Flash。

    图3-3 FPGA最小系统在这里插入图片描述

    3.3.2 数码管显示电路

    采用简单的4组2位共阳极数码管数码管由PNP型三极管驱动,当三极管的基极为低电平时,数码管相应的位被选通,所以交通信号灯扩展模块的位选信号是低电平有效的。

    图3-4数码管显示电路在这里插入图片描述

    3.4总体电路图

    交通灯控制模块将需要显示的时间数据连接到数码管显示模块,同时将状态信号连接到led灯控制模块,然后数码管显示模块和
    led灯控制模块驱动交通信号灯外设工作。

    总体电路图如下图所示:

    图3-6整体电路在这里插入图片描述

    3.5 程序设计

    3-7 系统软件流程图在这里插入图片描述

    3.6元件列表

    发光二极管(红绿黄) 12个
    2.54单排针1*40 2排
    三极管8550 4个
    排母 2排
    数码管2位共阳 4组
    FPGA模块 1块

    4.方案实现与测试(或调试)

    实现题上已给要求,在程序调试花费时间较多。

    交通灯成品及实验现象在这里插入图片描述

    展开全文
  • 用单片机实现交通灯设计,包括所需的电路图及程序
  • 用单片机汇编语言实现交通灯的控制,包含源程序 电路图及课程设计报告
  • 设计结合实际情况给出了一种简单低成本城市交通灯控制系统的硬件软件设计方案、各个路口交通灯的状态循环显示,并对程序流程进行详细讲解分析。 硬件的设计采用AT89S52单片机为核心器件。并辅助复位电路,驱动...
  • 51单片机路口红绿灯控制设计设计要求设计具体体现系统概述交通灯设计绿灯(红灯)时长调节两路口倒计时绿灯时长红灯时长的显示拓展(实现路口的单向双向交通管制)软件设计程序延时程序数码管显示程序系统的...

    源码及Proteus布线图下载地址

    (不想花积分的可以在附录里找到完整的Proteus布线图以及源程序)

    1、设计要求

    设计十字路口红绿灯控制电路,假设东西路和南北路路口,要求:

    1. 控制规律:
      绿灯->绿灯闪烁(最后1秒,闪烁周期0.2s)->黄灯(1s)->红灯->绿灯……
      缺省值:绿灯亮GT=5秒(亮4s+闪1s),黄灯亮1秒,红灯亮RT=4秒
    2. 东西路方向亮绿灯和黄灯时,南北路方向亮红灯,反之亦然。
      扩展:
      可修改绿灯时间GT和红灯RT时间,时间修改范围3~9秒。
      在两路口用1位数码管动态显示绿灯和红灯亮时的剩余时间。

    2、设计具体体现

    1、系统概述

    通过P1口控制六个交通灯的状态,定时器T0实现精确延时,外部中断0、外部中断1实现对红灯和绿灯的时间调整,P0口、P2口接四位数码管实现南北路倒计时、东西路倒计时、绿灯时长,红灯时长的动态显示。

    1、交通灯设计

    交通灯实际上有六个状态,即东西绿灯亮南北红灯亮、东西绿灯闪南北红灯亮、东西黄灯亮南北红灯亮、东西红灯亮南北绿灯亮、东西红灯亮南北绿灯闪、东西红灯亮南北黄灯亮。通过不断改变P1口的状态来控制六个状态的循环。
    在这里插入图片描述

    2、绿灯(红灯)时长调节

    绿灯时长调节要求范围是3到9秒,思路是利用外部中断0,每来回拨动一次开关,产生一次下降沿,使绿灯时长延长一秒。当绿灯时长为九秒时,再次拨动开关,绿灯时间变为最小值3秒,然后再延长。
    红灯时长的调节同理,只是改为利用外部中断1.
    在这里插入图片描述

    3、两路口倒计时及绿灯时长红灯时长的显示

    P0口输出段码,P2口实现片选,完成动态显示。
    在这里插入图片描述

    4、拓展(实现路口的单向及双向交通管制)

    通过P2-5、P2-6、P2-7的状态改变实现对路口的交通管制。P2-5口为低电平时,路口交通正常运行,P2-5口为高电平时,两方向交通灯红灯闪烁,禁止通行。
    P2-6南北交通管制,P2-7东西交通管制,同理。

    在这里插入图片描述

    2、软件设计

    主要包括主程序,延时程序,数码管动态显示程序

    1、主程序

    主程序主要功能是实现交通灯的六个状态的循环,等待绿灯(红灯)时间调节中断,等待路口交通管制中断。

    2、 延时程序

    延时程序主要功能是通过设置定时器T0延时10ms。调用显示函数。每跑一次,改变P2口的片选,实现四位数码管动态显示。

    3、数码管显示程序

    数码管显示程序主要是通过查表给P1赋值,点亮数码管。

    3、系统的调试及性能分析

    通过Proteus和Keil的仿真,该程序可以正常运行,实现设计要求和拓展功能。

    4、附录

    1、完整电路原理图

    在这里插入图片描述

    2、源程序

    /*
     *程序:十字路口红绿灯控制
     *功能:按要求实现十字路口的红绿灯转换,可以调节红灯时长和绿灯时长,动态显示红灯(绿灯)剩余时间,显示红灯绿灯的时长
     *,实现对路口的双向(单向)交通管制
     *调节说明:每来回拨动SW1一次,绿灯延长一秒,当绿灯时间为九秒时,再拨动一次,绿灯时间变为三秒(红灯调节方式相同,SW2)
                SW3初始状态为接地,当把SW2拨向+5V时,东西向和南北向红灯闪烁,实现双向交通管制,当把SW2拨回初始状态,系统正常运行
                (SW4、SW5调节方式相同)
    */
    #include<stdio.h>
    #include<reg51.h>
    void delay10ms();			  //延时50ms
    void display(int a) ;	  //显示函数
    unsigned int data a1=0;		  //定时器0中断跳出标志
    unsigned int data a2=0;		  //外部中断0跳出标志
    unsigned int data a3=0;		  // 外部中断1跳出标志
    unsigned int data a4=0;
    unsigned int data i=0;
    unsigned char chashu[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77}   ;  //数码管段码
    signed long p=0;			  //绿灯调整标志
    signed long q=0;			  //红灯调整标志
    unsigned long b=80;			  //各状态时长初值				 
    unsigned long c=20;
    unsigned long d=20;
    unsigned long e=40;
    unsigned long f=20;
    unsigned long g=20;
    unsigned long s=0;
    unsigned long t=0;
     unsigned long x=0;
     unsigned long y=0;
    sbit P1_2=P1^2;
    sbit P1_5=P1^5;
    sbit P1_6=P1^6;
    sbit P1_0=P1^0;
    sbit P1_3=P1^3;
    sbit P2_5=P2^5;
    sbit P2_6=P2^6;
    sbit P2_7=P2^7;
    timer0()interrupt 1 
    	{
    		a1=1; 
    	}
    int0()interrupt 0 
    	{
    		if(p>=-200&&p<=300)	  //绿灯调整3-9s
    		p=p+100;
    		else if(p==400)
       			{
    				p=p-600;
    			}
            a2=1;
    	}
    int1()interrupt 2 
    	{
    		if(q>=-100&&q<=400)	  //红灯调整3-9s
        	q=q+100;
        	else if(q==500)
        	q=q-600;
        	a3=1;
      
    	}
    void main()
    	{
         	EA=1;				 //开中断总开关
         	EX0=1;				 //允许外部中断0中断
         	IT0=1;				 
         	EX1=1;				 //启动中断
         	IT1=1;
      	 	PX1=1;
    	 	PX0=1;
    		p=0;
    	    q=0;
      		while(1)
    				{   
    				    while(P2_5==1)			//(拓展)实现双向交通管制
    					{
    						P0=0x3f;
    						P1=0xf6;
    						for(i=10;i>0;i--)
    						{
    							delay10ms();
    						}
    						P1_0=!P1_0;
    						P1_3=!P1_3;
    							for(i=10;i>0;i--)
    						{
    							delay10ms();
    						}
    
    					}
    					while(P2_6==1)		  //(拓展)实现南北方向交通管制
    					{
    						P0=0x3f;
    						P1=0x33;							
    					} 
    					while(P2_7==1)		 //(拓展)实现东西方向交通管制
    					{
    						P0=0x3f;
    						P1=0x1e;							
    					} 
    					a2=0;
    	          		a3=0;
        				P1=0x33;
       				    for(b=400+p;b>0;b--)	//东西路绿灯亮四秒
          					{
    							s=b/100+3;
    							t=b/100+2;
    							x=(200+q)/100+2;
    							y=(400+p)/100+1;   	
           						delay10ms();	   
    	  					}
       					if(a2==0&&a3==0&&P2_5==0&&P2_6==0&&P2_7==0)
       						{
         						for(c=100;c>0;c=c-10)  //东西路绿灯闪一秒
            						{		 						
    									s=2;
    									t=1;
         	 							P1_2=!P1_2;	   //0.1秒闪一次
    									for(i=10;i>0;i--)
    									{
    	     								delay10ms(); 		 
             							}
    		
            						}
     	 				if(a2==0&&a3==0&&P2_5==0&&P2_6==0&&P2_7==0)			 //东西路黄灯亮一秒
    	 					{ 	   
           						P1=0x35;
           						for(d=100;d>0;d--)
              						{ 		  							 
    									 s=1;
    									 t=0;
              							 delay10ms();
              						} 
    	  				if(a2==0&&a3==0&&P2_5==0&&P2_6==0&&P2_7==0)			//	南北路绿灯亮两秒
    	   					{
             					P1=0x1e;
             					for(e=200+q;e>0;e--)
                					{			 						
    									s=e/100+2;
    									t=e/100+3;
                 						delay10ms();
                					}
    	    			if(a2==0&&a3==0&&P2_5==0&&P2_6==0&&P2_7==0)
    	     				{
               					for(f=100;f>0;f=f-10)	//南北路绿灯闪一秒
                   					{								   
    									s=1;
    									t=2;			     					
        	         					P1_5=!P1_5;
    	             					for(i=10;i>0;i--)
    									{
    	     								delay10ms(); 		 
             							}
    									
                   					}
    	        		if(a2==0&&a3==0&&P2_5==0&&P2_6==0&&P2_7==0)			  //南北路黄灯亮一秒
    	        			{
                   				P1=0x2e;
                   				for(g=100;g>0;g--)
                     				 {				  					
    									s=0;
    									t=1;
                       					delay10ms();
                     				 }
    	         			}
    	     				}
    	   					}
      
         					}
       						}
      					} 
    }
    
    void delay10ms()  //延时10ms函数
    	{
    	    if(a4==0&&P2_5==0&&P2_6==0&&P2_7==0)			 //显示南北路倒计时
    			{
    			    P2=0xfd;
    		     	display(s);
    				a4=1;	 
    			}
    		 else if(a4==1&&P2_5==0&&P2_6==0&&P2_7==0)	   //显示东西路倒计时
    			{
    				P2=0xfb;
    				display(t)	;
    				a4=2;
    			}
    		else if(a4==2&&P2_5==0&&P2_6==0&&P2_7==0)	   //显示东西路红灯时长
    			{
    				P2=0xf7;
    				display(x);
    				a4=3;
    			}
    		else if(a4==3&&P2_5==0&&P2_6==0&&P2_7==0)	  //显示东西路绿灯时长
    			{
    			    P2=0xef;
    				display(y);
    				a4=0;
    			}
     		TMOD=0x01;
    		TH0=-10000/256;
    		TL0=-10000%256;
     		EA=1;
    		ET0=1;
     		TR0=1;	 
     		while(a1==0);
     		a1=0;
    	}
    void display(int a)	//显示函数
    	{
     	   a=chashu[a];
    	   P0=a;
     	}
    
    
    展开全文
  • 硬件设计:采用Proteus进行电路原理图设计与仿真 1)单片机选用AT89C51,它与8051系列单片机全兼容,但其内部带有4KB的FLASH ROM,设计时无需外接程序存储器。 2)显示部分:南北向和东西向各采用2个LED数码管计时...
  • 文章分析了MCS-51系列单片机利用串行口进行多机通信的基本原理,对利用单片机多机通信方式实现交通灯控制系统的网络化控制进行了研究,设计了硬件电路图及主、从机程序,并在Proteus软件上进行了仿真运行。...
  • 51单片机 交通灯实验报告

    千次阅读 2020-05-26 19:09:52
    按照电路要求在Protues中设计电路图。编程实现如下功能: 用单片机端口作输出口,控制四个方向共12个发光二极管亮灭,模拟交通灯管理。功能描述如下:初始态为四个路口的红灯全亮之后,东西路口的绿灯亮,南北路口的...
  • 摘 要:本设计中选用目前应用较广泛的VHDL硬件电路描述语言,实现对路口交通灯系统的控制器的硬件电路描述,在Altera公司的EDA软件平台MAX+PLUSⅡ环境下通过了编译、仿真,并下载到CPLD器件上进行编程制作,实现了...
  • 8255a交通灯控制.doc

    2011-08-24 18:57:11
    8255a交通灯控制课程设计,综合运用《微机原理与应用》课程知识,利用集成电路设计实现一些中小规模电子电路或者完成一定功能的程序,以复习巩固课堂所学的理论知识,提高软硬件设计能力实现系统、绘制系统电路...
  • 80c51交通灯控制

    2011-10-14 15:57:54
    第四章 电路图及设计文件…………………………………………………………13 4.1 控制电路设计…………………………………………………………………………13 4.2倒计时显示电路设计……………………...
  • 电子电路专业毕业设计毕业论文资料电路设计单片机设计软硬件设计501~600例学习: 0501、声光双控电路DXP资料及其相关资料.rar 0502、双红外LM393DXP资料及其相关资料.rar 0503、双闪DXP资料.rar 0504、四路继电器...
  • C51单片机实验-交通灯控制

    千次阅读 2020-05-24 23:29:03
    按照电路要求在Protues中设计电路图。编程实现如下功能: 用单片机端口作输出口,控制四个方向共12个发光二极管亮灭,模拟交通灯管理。功能描述如下:初始态为四个路口的红灯全亮之后,东西路口的绿灯亮,南北路口的...
  • 0042、基于单片机控制的交通灯毕业设计资料.rar 0043、基于单片机控制的开关电源论文资料.rar 0044、基于网络的虚拟仪器测试系统论文资料.rar 0045、家用音响设计制作论文资料.rar 0046、具有定时功能的八路数显抢答...
  • 0144、单片机自动控制交通灯及时间显示论文资料.rar 0145、低成本可调数显稳压电源(1.3V~25V)proteus仿真资料.rar 0146、点阵电子显示屏论文资料.rar 0147、电动智能小车设计论文资料.rar 0148、电容充放电产生方波...
  • 0144、单片机自动控制交通灯及时间显示论文资料.rar 0145、低成本可调数显稳压电源(1.3V~25V)proteus仿真资料.rar 0146、点阵电子显示屏论文资料.rar 0147、电动智能小车设计论文资料.rar 0148、电容充放电产生方波...
  • 交通灯控制系统

    2011-10-14 16:00:20
    2、设计原理极硬件电路•••••••••••••••••••••••••••••••••••••5 3、程序流程••••••••••••••••••••••••••••••••••••••••••••...
  • 0042、基于单片机控制的交通灯毕业设计资料.rar 0043、基于单片机控制的开关电源论文资料.rar 0044、基于网络的虚拟仪器测试系统论文资料.rar 0045、家用音响设计制作论文资料.rar 0046、具有定时功能的八路数显抢答...
  • 内容为单片机程序代码硬件外设电路图,有交通灯系统等代码。
  • 第二章:PROTEUS操作基础 2.1 PROTEUS操作界面简介 2.2 仿真电路原理图设计 2.3 元件选择 2.4 仿真运行 2.5 PROTEUS与AVR Studio的联合调试 2.6 PROTEUS在AVR单片机应用系统开发中的优势 第三章:基础程序设计 3.1 ...
  • 单片机自动控制交通灯及时间显示资料 变压器的智能绕线功能系统资料 多点温度检测系统设计资料 宠物定时喂食器设计资料 常导超导磁悬浮演示试验装置的控制资料 步行者机器人资料 步进电机调速控制系统资料 步进电机...
  • 2.2 仿真电路原理图设计 2.3 元件选择 2.4 仿真运行 2.5 PROTEUS与AVR Studio的联合调试 2.6 PROTEUS在AVR单片机应用系统开发中的优势 第三章:基础程序设计 3.1 闪烁的LED 3.2 左右来回的流水 3.3 花样...

空空如也

空空如也

1 2 3
收藏数 48
精华内容 19
关键字:

交通灯电路设计图及程序