精华内容
下载资源
问答
  • 随着我国经济的高速发展,人们对私家车、公交车的需求越来越大。相应地,我国进入WTO以后,我国经济贸易与世界接轨,汽车业关税大大降低,...本论文正是以此为出发点,对单片机控制的交通信号灯模型作了较详尽的介绍。
  • 目录基于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的交通信号灯拟真

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

    展开全文
  • AT89C51单片机的交通信号灯程序 东西方向 和 南北方向的
  • AT89C51单片机的交通灯控制系统是由AT89C51单片机、键盘电路、LED倒计时、交通灯显示等模块组成。系统除基本交通灯功能外,还具有通行时间手动设置、可倒计时显示、急车强行通过、交通特殊情况处理等相关功能,实验...
  • 51单片机学习笔记】基于STC89C52制作的交通信号灯-附件资源
  • AT89C51设计大型交通灯proteus仿真源文件(含汇编程序源码),有四个交通信号灯,模拟实际情况,包含proteus工程源文件,单片机C语言程序。proteus8.6可正常打开,仿真。
  • 摘 要:以单片机 AT89C51作为城市交通灯的控制核心,模拟定周期交通信号灯的工作状态;针对复杂多变的路 况环境,特别增设了路段遇忙调整、紧急情况处理、特种车检测、语音提示等模块,进 。。。。步完善 了交通灯...
  • 51单片机学习笔记】基于STC89C52制作的交通信号灯

    万次阅读 多人点赞 2017-06-19 20:36:39
    基于51单片机的交通信号灯模型
       
    一、简介

        近来学(玩)了下已经好久没碰的51,心血来潮自己DIY了一个交通信号灯模型。没有什么创新之处,就是复(dao)习(gu)复(dao)习(gu)了下51的定时器中断、外部中断以及最小系统电路,熟悉了下74HC595的用法和数码管。因为好久没碰51了导致数码管的顺序记反了 难过懒得再改电路了,于是将错就错就按反着的顺序搞下去了。由于快考试了事情也比较多,基本是隔三差五得做,时间战线拉得比较长。。。当然这些都无关紧要了,主要还是培养下自己分文件模块化编程的习惯嘛,文件分的比较细致,看上去舒服 大笑.

        因为是完全自己设计的嘛难免很多疏漏之处。当然由于这个电路比较简单方案和其他人雷同了也是正常现象,说明英雄所见略同嘛~ 生气。在此开源大家共同学习,希望各路大神能指点迷津,欢迎大家来喷~~~~


        废话不多说了。先介绍下功能:

    1)为了可拓展性,我将单片机所有的引脚全部引出,后期可拓展或改做它用,每个IO引出两排排针接线更舒服。
    2)为了后期如果能做其他实验不产生干扰,外围电路基本全部采用杜邦线接线,不直接接在IO上了。其中595的VCC放置了一个跳线帽作为VCC供电。
    3)本人本着尽量少地用飞线地原则,能往正面跳就先跳线,但是到了2位数码管空间不算多了,也做的比较累了,就偷懒全用了飞线。
    4)晶振用了12MHz插在了单片机旁。采用12MHz地原因是定时器时间好计算,没用串口不需要很精确地波特率。插在外面没焊死仅仅因为板子空间不够了,而我不像飞线。。。
    5)因为东西向的灯是同步的,南北向的灯也是同步的,所以一个方向上的三色交通灯我选择了分别并联的方式,没全部并联是斟酌了下IO的驱动能力和后期的可拓展性还有一定条件下节省IO接口,故总共用了6个IO口控制交通灯,欢迎大家来喷~~~
    6)本次模拟仅为理想情况,以一分钟为一周期红绿交替指示。在还剩3秒时黄灯闪烁,当然也是为了简化程序所有的黄灯一起闪。
    7)通过外部中断选择工作/休息模式。休息模式下所有LED(包括数码管)同步闪烁,直到将拨盘开关拨回(有延误时间。。。)。

        想到的大概就这么多吧,详细功能不介绍了,直接上代码参考。

    二、原理图


          
         元件清单:

    STC89C52RC  x1
    74HC595  x1
    10K排阻  x1
    12Mhz晶振  x1
    选择开关  x1
    独立按键  x1
    30pF电容  x3
    10K电阻  x1
    1K电阻  x1
    220Ω电阻  x20
    红色LED  x3
    黄色LED  x3
    绿色LED  x3
    2位数码管  x1

          
         proteus 8 仿真原理图


             

    三、部分源程序

        程序基于Keil 5 C语言编写,部分程序有注释

    1.文件结构


                               

    所有头文件均放置在USER_Config.h头文件中

    main.c                   主函数
    it.c                         中断服务函数
    delay.c                  延时函数
    74HC595.c           595驱动函数
    LED.c                   交通灯
    SEG.c                   数码管

    2.头文件

    USER_Config.h
    /******************************************
    
    			USER HEARD		2017/6/4
    
    *******************************************/
    
    #ifndef _USERCONFIG_H_
    #define _USERCONFIG_H_
    /*    定义数据类型    */
    #define uchar unsigned char
    #define uint unsigned int
    #define NOP() _nop_()
    	
    #include <reg52.h>
    #include <intrins.h>
    #include "interrupt.h"
    #include "delay.h"
    #include "74HC595.h"
    #include "SEG.h"
    #include "LED.h"
    
    
    /*    宏定义引脚    */
    #define SEG   P0
    #define LEDs  P2
    	
    /*    74HC595驱动    */
    sbit S_CLK  =  P1^0;
    sbit R_CLK  =  P1^1;
    sbit MOSIO  =  P1^2;
    
    /*    数码管位选    */
    sbit SEG1   =  P0^0;
    sbit SEG2   =  P0^1;
    
    /*    交通灯    */
    sbit XR     =  P2^0;
    sbit XY     =  P2^1;
    sbit XG     =  P2^2;
    sbit YR     =  P2^3;
    sbit YY     =  P2^4;
    sbit YG     =  P2^5;
    
    /*    选择开关    */
    sbit SW			=	 P3^2;
    
    #endif
    

    其他头文件大同小异就不贴了。

    3.it.c

    /******************************************
    
    				中断服务程序
    				
    				by LZK    2017/6/17
    				
    ******************************************/
    #include "USER_Config.h"
    
    uint Num_Min = 0;//分钟计数器
    uchar Num_Sec = 0;//秒钟计数器
    uchar Number = 60;//计数器
    uchar Mark = 0;//标记
    
    void Timer_Init()
    {
    	TMOD = 0x11;//定时器0定时器1为工作方式1
    	/*  装载初值  */
    	TH0 = (65536-50000)/256;
    	TL0 = (65536-50000)%256;
    	TH1 = (65536-50000)/256;
    	TL1 = (65536-50000)%256;
    	
    	EA = 1;//开总中断
    	/*  开启定时器中断  */
    	ET0 = 1;//定时器0
    	ET1 = 1;//定时器1
    	/*  启动定时器  */
    	TR0 = 1;//定时器0
    	TR1 = 1;//定时器1
    	/*  外部中断  */
    	EX0 = 1;
    	IT0 = 0;
    }
    
    void Int0_Select() interrupt 0
    {
    	Num_Min = 0;
    	Num_Sec = 0;
    	Number = 60;
    	Mark = 0;
    	Calculate(Number);
    	LED_Relax();
    }
    
    void T0_Time() interrupt 1 
    {
    	/*  重装初值  */
    	TH0 = (65536-50000)/256;
    	TL0 = (65536-50000)%256;
    	Num_Sec++;
    	if(Num_Sec==20)
    	{
    		Num_Sec = 0;
    		Number--;
    		Calculate(Number);
    	}
    }
    
    void T1_Time() interrupt 3
    {
    	
    	/*  重装初值  */
    	TH1 = (65536-50000)/256;
    	TL1 = (65536-50000)%256;
    	Num_Min++;
    	if(Num_Min==60*20)
    	{
    		Num_Min = 0;
    		Number = 60;
    		Mark = ~Mark;
    	}	
    }

    4.delay.c

    /*************************************
    
    		延时函数库	By LZK
    		
    		频率:12MHz
    
    
    *************************************/
    #include "USER_Config.h"
    
    /*    延时x*9us    */
    void delay_8us(uint x)
    {							
    	uint i,j;
    	for(i=0;i<x;i++)
    		for(j=0;j<1;j++);	
    }
    
    /*    延时xms    */
    void delay_ms(uint x)
    {							
    	uint i,j;
    	for(i=0;i<x;i++)
    		for(j=0;j<120;j++);
    }
    
    /*    延时显示    */
    void delay(uint x)
    {
    	while(x--)  Display();
    }

    /*************************************
    
    		595发送数据	By LZK
    		
    		频率:12MHz
    		
    		2017/6/5
    
    
    *************************************/
    #include "USER_Config.h"
    
    void HC595SendData(uchar SendVal)
    {
    	unsigned char i;
    
    	for(i=0;i<8;i++)
    	{
    		MOSIO=SendVal>>7;
    		SendVal<<=1;
    
    		S_CLK=0;
    		NOP();
    		NOP();
    		S_CLK=1;
    
    	}
    
    	R_CLK=0;
    	NOP();
    	NOP();
    	R_CLK=1;
    
    }

    6.LED.c

    /**********************************
    
    		LEDs Control
    		
    		控制交通灯
    		
    		by LZK    2017/6/17
    		
    **********************************/
    #include "USER_Config.h"
    
    extern uchar Number;
    extern uchar Mark;
    
    void LED_Init()
    {
    	LEDs = 0xff;
    	//SW = 0;
    }
    
    void Select()
    {
    	uchar sw = SW;
    	switch(sw)
    	{
    		case 0:
    			LED_Relax();
    		break;
    		case 1:
    			LED_Control();
    		break;
    	}
    }
    
    void LED_Relax()
    {
    	uint x = 10000;
    	SEG = 0xff;
    	LEDs = 0xff;
    	while(x--)
    		HC595SendData(~0x00);
    	
    	x = 10000;
    	SEG = 0x00;
    	LEDs = 0x00;
    	while(x--)
    		HC595SendData(~0x00);
    }
    	
    void LED_Control()
    {
    	/*  黄灯判断  */
    	if(Number <= 3)
    	{
    		XY=~XY;
    		YY=~YY;
    		delay(100);
    	}
    	else
    	{
    		XY = 1;
    		YY = 1;
    	}
    	
    	/*  路口选择  */
    	XR =  Mark;
    	XG = ~Mark;
    	YR = ~Mark;
    	YG =  Mark;
    	
    	/*  显示  */
    	Display();
    }

    7.SEG.c
    /*************************************
    
    		数码管显数	By LZK
    		
    		频率:12MHz
    		
    		2017/6/5
    
    
    *************************************/
    #include "USER_Config.h"
    
    uchar code NUM[]={0x3f,0x30,0x6d,0x79,0x72,0x5b,0x5f,0x31,0x7f,0x7b,0x77,0x7c,0x39,0x5e,0x79,0x71};
    uchar value[2];
    
    void Calculate(uint num)
    {
    	value[0] = num%10;
    	value[1] = num/10;
    }
    
    void Display()
    {
    	//发送十位数
    	HC595SendData(NUM[value[1]]);
    	SEG = 0x01;
    	delay_8us(25);
    	//消隐
    	HC595SendData(0x00);
    	delay_8us(25);
    	//发送个位数
    	HC595SendData(NUM[value[0]]);
    	SEG = 0x02;
    	delay_8us(25);
    	//消隐
    	HC595SendData(0x00);
    	delay_8us(25);
    }

    8.main.c

    /*************************************************
    
    		交通信号灯			by LZK
    		
    		Date:2017/6/4
    		
    		通过定时器0读秒,通过定时器1换方向
    		通过Calculate传送数字
    		
    **************************************************/
    
    #include <reg52.h>
    #include "USER_Config.h"
    
    extern uchar Number;
    
    void main()
    {
    	
    	Timer_Init();
    	LED_Init();
    	
    	while(1)
    	{
    		LED_Control();
    	}
    }
    
    
    



    四、成果展示


    五、总结

        第一次发博客,如有不妥的地方请大家多指教可怜


    网盘分享:





    展开全文
  • 近年来,随着我国经济的发展,城市的交通拥挤问题日趋严重,因此提高城市路网的...交通信号灯控制方式很多。本系统采用MSC-51系列单片机AT89C51和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制器,实现了能
  • 现在有许多方法可以实现交通信号灯控制,本设计就是基于AT89C51单片机模拟交通灯的控制。实现了交通灯的主要功能,而且添加了一些功能。同时由于仿真软件的原因,对一些功能做了简化。基本上对现实生活中的交通灯做了...
  • at89c51单片机_交通灯控制系统(含源码及仿真图).
  • 基于at89c51单片机的交通灯控制设计

    千次阅读 2020-10-18 16:59:07
    本人根据单片机具有物美价廉、功能强、使用方便灵活、可靠性高等特点,提出了一种用at89c51单片机自动控制交通信号灯及时间显示的方法,同时给出了软硬件的实现方法,为交通指挥自动化提供了一种新的廉价手段,本文...

    **

    单片机自主学习项目*设计分析 —模拟LED交通灯

    **

    一、开发背景与需求

    1 开发背景

    交通事业蓬勃发展,交通流量年年增长,道路交通繁忙,经常有严重堵车现象,特别是在交叉口,为了在叉口的各条干道实现合理的科学分流。本人根据单片机具有物美价廉、功能强、使用方便灵活、可靠性高等特点,提出了一种用at89c51单片机自动控制交通信号灯及时间显示的方法,同时给出了软硬件的实现方法,为交通指挥自动化提供了一种新的廉价手段,本文介绍了控制基本原理以及控制的表现,大幅度地提高了产品可靠性并降低了制造成本。

    2 开发需求
    交通灯在安全行车过程中起着十分重要的作用,现在交通同等一般设在十字路口口,在醒目位置用红、绿、黄三种颜色的指示灯,加上一个倒计时的显示计时器来控制行车,对于一般情况下的安全行车、车辆分流发挥着作用。

    二、技术分析与总体设计

    1 技术分析
    共阳极多位数码管的显示
    LED灯的点亮
    2 总体设计

    在这里插入图片描述

    图片:
    在这里插入图片描述

    运行代码

    #include<reg51.h>
    #define int unsigned int
    #define char unsigned char
    char print[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
    int out[2]={6,0};
    char outL[2]={0x01,0x02};
    char type[4]={0x21,0x12,0x0c,0x12};
    void delay(int s);
    void left(int ty,int mtime,int nextTy);
    
    int big=10;
    int min=5;
    void main(){
    	left(0,big,1);
    }
    
    void left(int ty,int mtime,int nextTy){
    	int ms=mtime;
    	int i;
      int p,time;
    	P2=type[ty];
    	while(ms!=-1){
    		out[0]=ms/10;
    		out[1]=ms%10;
    		time=1000;
    		while(time){
    			for(i=0;i<2;i++){
    			p=out[i];
    			P3=0xff;
    			P3=print[p];
    			P1=outL[i];
    			sleep(1);
    			time--;
    		}
    		}
    		ms--;
    	}
    	if(nextTy==0){
    		left(0,big,1);
    	}
    	if(nextTy==1){
    		left(1,min,2);
    	}
    	if(nextTy==2){
    		left(2,big,3);
    	}
    	if(nextTy==3){
    		left(3,min,0);
    	}
    }
    
    void delay(int s){
    		int i,j;
    	for(i=s;i>0;i--)
    		for(j=110;j>0;j--);
    }
    

    四、系统运行和测试(展示运行结果,用图来表示)

    1东西绿灯,南北红灯

    在这里插入图片描述

    2东西南北变黄灯

    在这里插入图片描述

    3东西红灯,南北绿灯

    在这里插入图片描述

    4东西南北变黄灯

    在这里插入图片描述

    5再次循环

    在这里插入图片描述

    五、系统开发总结(谈对单片机应用程序开发的认识)

    通过这次课程设计报告不仅更加了解了单片机的使用和功能的强大,还解决了软件闪退问题,收获满满!各位喜欢就拿走吧~
    解决方法:Proteus8.9 安装教程、闪退问题解决https://blog.csdn.net/weixin_44578655/article/details/106593468?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

    展开全文
  • AT89C51程序设计仿真——交通灯程序设计Proteus仿真仿真结果及总结 程序设计 1.首先建立一个工程 ①打开Keil uVision,点击Project,找到New uVision Project,点击它 ②给建立的项目取一个名字 ③选择项目需要使用...

    AT89C51程序设计仿真——交通灯

    程序设计

    1.首先建立一个工程
    ①打开Keil uVision,点击Project,找到New uVision Project,点击它
    ②给建立的项目取一个名字在这里插入图片描述
    ③选择项目需要使用的芯片,选择完成后,点击OK(该实验要用到的芯片是AT89C51)
    在这里插入图片描述
    ④选择file,new,输入代码

    #include<reg52.h>
    typedef unsigned char uchar;
    typedef unsigned int uint;
    
    #define segment P0
    
    #define count 50000
    #define TH_0 (65536-count)/256
    #define TL_0 (65536-count)%256
    
    sbit ew_led_r=P3^0;
    sbit ew_led_y=P3^1;
    sbit ew_led_g=P3^2;
    sbit ns_led_r=P3^3;
    sbit ns_led_y=P3^4;
    sbit ns_led_g=P3^5;
    
    sbit bit_0=P2^0;
    sbit bit_1=P2^1;
    
    uchar code duanxuan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
    uint jjj;
    uchar sec=60;
    uchar flag=0;
    
    void delay(uint iii)
    {
    	while(iii--);
    }
    void display()
    {
    	bit_0=0;bit_1=1;
    	segment=duanxuan[sec%10];
    	delay(100);segment=0x00;
    	
    	bit_0=1;bit_1=0;
    	segment=duanxuan[sec/10];
    	delay(100);segment=0x00;
    }
    
    void timer_init()
    {
    	TMOD=0x01;
    	EA=1;ET0=1;TR0=1;
    	TH0=TH_0;TL0=TL_0;
    }
    void led_display()
    {
    	if(flag==0)
    	{
    		ew_led_r=0;
    		ew_led_y=1;
    		ew_led_g=1;
    		
    		ns_led_r=1;
    		ns_led_y=1;
    		ns_led_g=0;
    	}
    	if(flag==1)
    	{
    		ew_led_r=1;
    		ew_led_y=0;
    		ew_led_g=1;
    		
    		ns_led_r=1;
    		ns_led_y=0;
    		ns_led_g=1;
    	}
    	if(flag==2)
    	{
    		ew_led_r=1;
    		ew_led_y=1;
    		ew_led_g=0;
    		
    		ns_led_r=0;
    		ns_led_y=1;
    		ns_led_g=1;
    	}
    	if(flag==3)
    	{
    		ew_led_r=1;
    		ew_led_y=0;
    		ew_led_g=1;
    		
    		ns_led_r=1;
    		ns_led_y=0;
    		ns_led_g=1;
    	}
    }
    
    void main()
    {
    	timer_init();
    	while(1)
    	{
    		display();
    		led_display();
    	}
    }
    
    void timer0() interrupt 1
    {
    	TH0=TH_0;TL0=TL_0;
    	if(++jjj==20)
    	{
    		jjj=0;
    		sec--;
    		if(sec==255)
    		{
    			flag++;
    			if(flag==1)sec=5;
    			else if(flag==2)sec=60;
    			else if(flag==3)sec=5;
    
    			else
    			{
    				sec=60;flag=0;
    			}
    		}
    	}
    }
    

    ⑤建立文件,将后缀改为.c
    在这里插入图片描述
    在这里插入图片描述
    ⑥关联文件和工程
    在这里插入图片描述
    在这里插入图片描述
    ⑥运行程序
    在这里插入图片描述
    ⑦设置工程
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    完成

    Proteus仿真

    一、原理图
    在这里插入图片描述
    二、仿真
    ①双击元件中的AT89C51芯片
    在这里插入图片描述
    ②点击下方的三角开始仿真
    在这里插入图片描述

    仿真结果及总结

    在这里插入图片描述
    在这里插入图片描述
    随着倒计时 红绿黄等交替亮起。

    展开全文
  • 本文中交通灯系统采用MSC-51单片机AT89C51核心来设计交通灯控制器,利用单片机的外围扩展,显示电路构成基本硬件,编程实现对定时、控制、显示电路的控制,调试仿真,完成设计。本系统实现了交通灯的基本功能,...
  • 51单片机实现交通信号灯

    千次阅读 多人点赞 2020-10-08 16:51:57
    51单片机实现交通信号灯1、新建工程项目及文件1.1 新建工程1.2 新建文件2、新建protues电路2.1 新建工程2.2 选择元器件2.3 连接元器件3、导入文件并仿真3.1 导入文件3.2 开始仿真 1、新建工程项目及文件 1.1 新建...
  • 本程序是将P1.4,P2.3,P2.4,P2.5P2.6,P2.7口分别接东西南北方向的红黄绿灯。
  • 靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用STC89C51单片机以及单片机最小系统和74HC245电路以及外围的按键和数码管显示等部件,设计一个基于单片机的交通灯设计。设计通过两位一体共...
  • STC89C52交通灯设计

    2013-06-18 09:22:32
    通过单片机STC89C52来设计道路交通信号灯控制器,通过软件编程设计实现主干道与次干道的红黄蓝三色灯时间设置,并且能够动态修改,从而达到对路口交通状况的实时控制
  • 智能交通信号灯系统设计.目 录摘 要1第一章引言2第一节 本课题的意义2第二节 国内外发展状况2第三节 系统设计的特点4第二章 系统硬件设计4第一节 系统总体设计目标4第二节 系统框图及系统工作原理5第三节 单片机--AT...
  • 交通信号灯控制系统的实现及相应程序编写 包含用户的应用程序,实时操作系统RTX51 Tiny内核程序
  • 利用单片机设计一个交通灯控制电路,用LED发光二极管模拟交通信号灯,用AT89C51完成对信号灯的控制,并由LED数码管显示倒计时。 基本要求: 1.利用单片机完成交通灯控制电路的设计,利用定时器中断方式完成南北方向...
  • 交通信号灯是城市交通有序、安全、快速运行的重要保障,而保障交通信号灯正常工作就成了保障交通有序、安全、快速运行的关键。为此,采用MCS-51系列单片机AT89C51为中心器件来设计交通灯控制电路,配以七段共阴极...
  • 该设计在熟练掌握单片机原理及其应用技术的使用方法基础上,综合应用单片机原理、微机原理、微机接口技术、proteus软件等课程方面的知识,设计一个采用AT89C51单片机控制的交通灯控制电路。能方便的对交通灯进行控制...
  • 简单的交通信号灯实现本文中主要利用89C52单片机实现一个简单的交通信号灯系统,代码编写借助keil软件编写,再结合protues软件进行仿真。基本实现简单的交通信号等功能。一.代码如下#include/***************宏定义...
  • 最简单的单片机交通信号灯

    千次阅读 2016-01-25 11:43:20
    单片机要求使用 AT89C51信号灯连接电路如下:东西:绿灯P0.0 黄灯P0.1 红灯P0.2南北:绿灯P0.5 黄灯P0.6 红灯P0.7运行步骤:开始↓东西 南北 都是红灯↓步骤(1)南北绿灯亮15s,东西红灯亮15s。南北黄灯亮 3s...
  • 本系统采用STC89C51单片机以及单片机最小系统和74HC245驱动电路以及外围的按键和数码管显示等部件,设计一个基于单片机的交通灯设计。设计通过两位一体共阴极数码管显...
  •  ...交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。本文以STC89C52单片机为核心,设计出以人性化、智能化为目的的交通信号灯控制系统。

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 259
精华内容 103
关键字:

交通信号灯89c51