15-基于单片机的交通灯系统设计(原理图+仿真+说明书)

这篇具有很好参考价值的文章主要介绍了15-基于单片机的交通灯系统设计(原理图+仿真+说明书)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

15-基于单片机的交通灯系统设计(原理图、仿真、源代码工程+说明书+PPT)

资料

资料包含:设计全套资料(精品)
原理图工程文件
原理图截图
仿真模型工程文件
仿真截图
说明书19236字
英文文献及翻译
答辩PPT
visio流程图工程
资料链接

任务书

本设计是基于单片机的交通灯控制系统设计,通过对路口设置的交通指示灯和时间显示装置的控制,给行人和车辆的通行提供便利。
1、设计定时器或采用相关的定时芯片给系统提供时间参考信号。
2、单片机依据时间信号,控制指示灯的亮灭控制车辆和行人的通行,同时显示时间信息。
3、设计相关的硬件电路
4、自行设计软件编程

设计说明书

摘要

城市交通道路已经是我们生活中不可缺少的一部分,并且随着社会的不断发展,交通必将成为一个重点的研究话题。如何疏通交通、防止道路交通堵塞、人员伤亡、交通事故的控制是当前的主要研究方向。随着微控制技术、电子技术、计算机系统的深入研究发展,将其应用在交通管理上必然是发展趋势。本次系统针对此现象设计出一款基于单片机的交通系统。
本设计以AT89C51单片机作为系统的控制核心,主要包括主控模块、交通灯指示模块、显示模块、按键模块组成。系统工作时,依据按键设定的工作模式,主控模块启动内部的定时器,开始控制不同路口交通灯的工作状态。当定时时间完成,控制系统发出切换命令,控制不同路口的交通灯切换工作状态,从而实现控制不同路口的通行状况。在系统运行时,通过数码管显示各路口的时间,为方便操作人员熟知系统的工作方式,又额外附加显示器显示系统的工作模式。
本设计具有系统结构简单、系统性能稳定、成本低廉等优点,能更好的实现传统交通灯系统的通行控制功能。

设计框架架构

15-基于单片机的交通灯系统设计(原理图+仿真+说明书)

前 言 1
第一章 绪论 2
第一节 课题研究背景 2
第二节 国内外研究现状与发展趋势 2
第三节 交通灯研究意义 4
第四节 本文的主要研究内容 4
第五节 本章小结 5
第二章 系统总体方案设计 6
第一节 交通灯系统工作原理 6
第二节 系统总体结构设计 6
第三节 交通灯状态逻辑方案确定 8
第四节 本章小结 9
第三章 交通灯系统硬件电路设计 10
第一节 主控模块电路设计 10
一、单片机介绍 10
二、最小系统电路设计 11
第二节 按键模块电路设计 12
第二节 显示模块电路设计 13
一、数码管显示电路设计 13
二、LED红黄绿灯电路设计 14
第四节 电源电路设计 15
第五节 系统总电路图 15
第六节 本章小结 16
第四章 系统软件设计 18
第一节 系统主程序设计 18
第二节 显示模块软件设计 19
一、数码管程序设计 19
二、交通信号灯状态程序设计 20
第三节 按键模块软件设计 21
第四节 本章小结 22
第五章 系统调试与仿真 23
第一节 开发工具 23
一、Protues软件介绍 23
二、Keil软件介绍 24
第二节 系统功能调试 24
一、系统仿真电路设计 24
二、系统功能测试 26
四、测试总结 28
第三节 本章小结 29
结 论 30
致 谢 31
参考文献 32
附 录 34
一、英文原文 34
二、英文翻译 37
三、整体电路图 39
四、源代码 40

设计说明书及设计文件

15-基于单片机的交通灯系统设计(原理图+仿真+说明书)15-基于单片机的交通灯系统设计(原理图+仿真+说明书)
15-基于单片机的交通灯系统设计(原理图+仿真+说明书)字数:19236字
15-基于单片机的交通灯系统设计(原理图+仿真+说明书)文章来源地址https://www.toymoban.com/news/detail-496327.html

源码展示

/*****************************************************
       十字路口交通灯控制 C 程序
******************************************************/
#define	uchar	unsigned char
#define	uint	unsigned int
#include	<reg52.h>
/*****定义控制位**********************/
sbit    Time_Show_LED2=P2^5;//Time_Show_LED2控制位
sbit    Time_Show_LED1=P2^4;//Time_Show_LED1控制位
sbit	EW_LED2=P2^3;	//EW_LED2控制位
sbit	EW_LED1=P2^2;	//EW_LED1控制位
sbit	SN_LED2=P2^1;	//SN_LED2控制位
sbit	SN_LED1=P2^0;	//SN_LED1控制位
sbit    SN_Yellow=P1^6;//SN黄灯
sbit    EW_Yellow=P1^2;//EW黄灯
sbit    EW_Red=P1^3;//EW红灯
sbit    SN_Red=P1^7;//SN红灯
sbit    EW_ManGreen=P3^0;//EW人行道绿灯
sbit    SN_ManGreen=P3^1;//SN人行道绿灯
sbit    Special_LED=P2^6;//交通正常指示灯
sbit    Busy_LED=P2^7;//交通繁忙指示灯
sbit    Nomor_Button=P3^5;//交通正常按键
sbit    Busy_Btton=P3^6;//交通繁忙按键
sbit    Special_Btton=P3^7;//交通特殊按键  
sbit    Add_Button=P3^3;//时间加
sbit    Reduces_Button=P3^4;//时间减
bit     Flag_SN_Yellow; //SN黄灯标志位
bit     Flag_EW_Yellow;//EW黄灯标志位
char	Time_EW;//东西方向倒计时单元
char	Time_SN;//南北方向倒计时单元
uchar EW=60,SN=40,EWL=19,SNL=19; //程序初始化赋值,正常模式
uchar EW1=60,SN1=40,EWL1=19,SNL1=19;//用于存放修改值的变量
uchar code table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//1~~~~9段选码
uchar code S[8]={0X28,0X48,0X18,0X48,0X82,0X84,0X81,0X84};//交通信号灯控制代码
/**********************延时子程序************************/
void	Delay(uchar	 a)
	{
		uchar	i;
		i=a;
		while(i--){;}
	}
/*****************显示子函数**************************/
void	Display(void)
	{
		char h,l;
		h=Time_EW/10;
		l=Time_EW%10;
  	    P0=table[l];
		EW_LED2=1;
		Delay(2);
		EW_LED2=0;
	    P0=table[h];
		EW_LED1=1;
		Delay(2);
		EW_LED1=0;

		h=Time_SN/10;
		l=Time_SN%10;
		P0=table[l];
		SN_LED2=1;
		Delay(2);
		SN_LED2=0;
	    P0=table[h];
		SN_LED1=1;
		Delay(2);
		SN_LED1=0;
		h= EW1/10;
		l= EW1%10;
		P0=table[l];
		Time_Show_LED1=1;
		Delay(2);
        Time_Show_LED1=0;
		P0=table[h];
		Time_Show_LED2=1;
		Delay(2);
	    Time_Show_LED2=0;
} 
/**********************外部0中断服务程序************************/
void	EXINT0(void)interrupt 0 using 1
	{
		EX0=0; //关中断
if(Add_Button==0) //时间加
       { 
            EW1+=5;
            SN1+=5;
              if(EW1>=100)
			   {
			     EW1=99;
			     SN1=79;
               }
            }
if(Reduces_Button==0) //时间减
       {
            EW1-=5;
            SN1-=5;
            if(EW1<=40)
              { 
			     EW1=40;
                 SN1=20;
               }				
		    } 
if(Nomor_Button==0)//测试按键是否按下,按下为正常状态
        {
            EW1=60;
            SN1=40;
			EWL1=19;
			SNL1=19;
			Busy_LED=0;//关繁忙信号灯
			Special_LED =0;//关特殊信号灯
            }
if(Busy_Btton==0) //测试按键是否按下,按下为繁忙状态
        {
		    EW1=45;
            SN1=30;
			EWL1=14;
			SNL1=14;
			Special_LED=0;//关特殊信号灯
			Busy_LED=1;//开繁忙信号灯		
        }
if(Special_Btton==0)//测试按键是否按下,按下为特殊状态
        {
		    EW1=75;
            SN1=55;
			EWL1=19;
			SNL1=19;
			Busy_LED=0;//关繁忙信号灯
		    Special_LED =1;//开特殊信号灯                  
	    }					
		EX0=1;//开中断
	}
/**********************T0中断服务程序*******************/
	void timer0(void)interrupt 1 using 1
{
	static uchar count;
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	count++;	
	if(count==10)
	{
	  if(Flag_SN_Yellow==1) //测试南北黄灯标志位
	  {SN_Yellow=~SN_Yellow;}
	  if(Flag_EW_Yellow==1)  //测试东西黄灯标志位
	  {EW_Yellow=~EW_Yellow;} 
	}
	if(count==20)
	{
	Time_EW--;
	Time_SN--;
	if(Flag_SN_Yellow==1)//测试南北黄灯标志位
	    {SN_Yellow=~SN_Yellow;}
	if(Flag_EW_Yellow==1)//测试东西黄灯标志位
	    {EW_Yellow=~EW_Yellow;}
	count=0;
	}	
}
/*********************主程序开始**********************/
void	main(void)
{ 
	Busy_LED=0;
	Special_LED=0;
	IT0=1;	//INT0负跳变触发	
    TMOD=0x01;//定时器工作于方式1
	TH0=(65536-50000)/256;//定时器赋初值
	TL0=(65536-50000)%256;
	EA=1; //CPU开中断总允许
	ET0=1;//开定时中断
	EX0=1;//开外部INTO中断
    TR0=1;//启动定时
     while(1)
{				/*******S0状态**********/
				EW_ManGreen=0;	//EW人行道禁止
	            SN_ManGreen=1;//SN人行道通行
                Flag_EW_Yellow=0;	   //EW关黄灯显示信号
				Time_EW=EW;	
				Time_SN=SN;		
				while(Time_SN>=5)
			    {P1=S[0];	 //SN通行,EW红灯
		         Display();}
				/*******S1状态**********/
			    P1=0x00;
				while(Time_SN>=0)
			   {Flag_SN_Yellow=1;	 //SN开黄灯信号位
			    EW_Red=1;      //SN黄灯亮,等待左拐信号,EW红灯			 
			     Display();
				}
				/*******S2状态**********/
			    Flag_SN_Yellow=0; //SN关黄灯显示信号
				Time_SN=SNL;
				while(Time_SN>=5)
				{P1=S[2];//SN左拐绿灯亮,EW红灯
				 Display();}
			  /*******S3状态**********/
				P1=0x00;
				while(Time_SN>=0)
			   {Flag_SN_Yellow=1;	//SN开黄灯信号位
			    EW_Red=1;      //SN黄灯亮,等待停止信号,EW红灯			   	
			    Display();}
			   /***********赋值**********/
				EW=EW1;
				SN=SN1;
				EWL=EWL1;
				SNL=SNL1;
				/*******S4状态**********/
				EW_ManGreen=~EW_ManGreen;//EW人行道通行
	            SN_ManGreen=~SN_ManGreen;//SN人行道禁止
				Flag_SN_Yellow=0;  //SN关黄灯显示信号
				Time_EW=SN;
				Time_SN=EW;
			    while(Time_EW>=5)
			    {P1=S[4];	 //EW通行,SN红灯
				 Display();}
				/*******S5状态**********/
				P1=0X00;
				while(Time_EW>=0)
			   {Flag_EW_Yellow=1;//EW开黄灯信号位
			    SN_Red=1;//EW黄灯亮,等待左拐信号,SN红灯	
			    Display();}
				/*******S6状态**********/
				Flag_EW_Yellow=0;	    //EW关黄灯显示信号
				Time_EW=EWL;
				while(Time_EW>=5)
				{P1=S[6];//EW左拐绿灯亮,SN红灯
				 Display();}
				/*******S7状态**********/
				P1=0X00;
				while(Time_EW>=0)
			   {Flag_EW_Yellow=1; //EN开黄灯信号位
			    SN_Red=1;//EW黄灯亮,等待停止信号,SN红灯	
			    Display();}			
			   	 /***********赋值**********/
			    EW=EW1;
				SN=SN1;
				EWL=EWL1;
				SNL=SNL1;
			}
	}

到了这里,关于15-基于单片机的交通灯系统设计(原理图+仿真+说明书)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于单片机的智能交通灯系统的设计

    目 录 1绪论 1 2课题的设计要求和设计方案 2 2.1设计要求 2 2.1.1 题目概述 2 2.1.2 设计任务 2 2.1.3 设计要求 2 2.2设计方案 2 2.2.1供电方案 2 2.2.2输入方案 3 2.2.3显示界面方案 3 2.2.4交通灯方案 3 2.2.4.1交通灯规则方案 3 2.2.4.2 各种模式下通行时间 5 2.2.5万年历设计方案 5 3芯片的介绍及

    2023年04月08日
    浏览(35)
  • 基于单片机的交通灯设计

    本系统由单片机系统、键盘、LED 显示、交通灯演示系统组成。系统包括人行道、左转、右转、以及基本的交通灯的功能。系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间以及根据具体情况手动控制等功能。随着社会经济的发

    2024年02月06日
    浏览(69)
  • 单片机交通灯控制系统

    一、实验目的 掌握单片机的综合应用设计。 二、实验仪器、材料 Keil软件、proteus软件 三、实验内容及要求 完成以下任务:十字路口的交通灯控制系统,四组灯对应十字路口的四个方向,用两位的数码管显示剩余的时间。 四、实验原理 五、实验过程及原始记录(包括原理图

    2024年02月11日
    浏览(29)
  • 基于51单片机的交通灯Protues仿真设计

    目录 一、设计背景 二、实现功能 三、 硬件电路设计说明 3.1 主控模块电路设计 3.2 数码管显示电路设计 ​​​​​​​3.3 键盘电路设计 ​​​​​​​3.4 复位电路设计 ​​​​​​​3.5 时钟电路设计 三、仿真演示 四、源程序        交通是城市经济活动的生命线,

    2024年02月09日
    浏览(34)
  • 基于51单片机的简易交通灯仿真代码讲解

    J028 51单片机简易交通灯易懂版_仿真+代码+报告讲解 仿真图proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 51单片机简易交通灯易懂版仿真代码讲解 状态1:南北方向绿灯通行12秒,东西红灯禁止通行15秒,分别倒计时; 状态2:南北方向黄灯提醒3秒,东西继续红灯倒计时;

    2024年02月02日
    浏览(34)
  • 基于51单片机十字路口红绿灯交通灯+紧急模式

    +无黄灯+紧急 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J010 十字路口交通灯由红、绿两色LED显示器组成,LED显示器显示切换倒计时,以秒为单位,每秒更新一次;为确保安全,绿LED计数到0转红,经5秒延时(显示红色0)后,另一道开始绿色倒计时。

    2024年02月04日
    浏览(34)
  • 基于AT89C51单片机的交通灯设计

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87779238?spm=1001.2014.3001.5503 源码获取 主要内容: 在日常生活中,交通灯是一项必不可少的公共设施,可 以维护道路的畅通和交通的秩序。如若交通灯发生故障,那 么后果可想而知。因此,交通灯

    2024年02月08日
    浏览(39)
  • 【超详细】基于单片机控制的十字道路口交通灯控制

    目录 最终效果 一、设计任务 二、设计报告 1 设计说明    1.1功能分析 1.1.1整体系统功能分析 1.1.2显示状态功能分析 1.1.3设置状态功能分析 1.1.4紧急状态功能分析 1.2方案比选 1.2.1车辆LED数码管倒计时显示板块 1.2.2车辆信号灯显示板块 1.2.3行人信号灯显示板块 1.2.4键盘输入板块

    2024年02月04日
    浏览(35)
  • 基于51单片机简易十字路口交通灯_5s全黄闪烁

    (程序+仿真+参考报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J007 交通灯运行状态: (1)模式1:东西向红灯与南北向绿灯亮5s; (2)模式2:东西南北方向均黄灯闪烁5s(5次); (3)模式3:东西向绿灯与南北向红灯各5s; (4)模式4:东西南

    2024年02月07日
    浏览(53)
  • 51单片机的交通灯控制系统(仿真+程序+报告+原理图)

    该系统由AT89C51单片机+数码管模块+LED指示灯模块+按键模块构成。 可实现基本功能: 1、红绿灯正常切换,黄灯会闪烁 2、红灯30s,绿灯25s,黄灯5s(时间不同只需修改变量,简单) 按键功能: 1、南北向红灯时间可调,东西向绿灯时间可调 2、东西方向紧急模式:按下东西方向变

    2024年02月05日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包