【毕业设计】15-基于单片机的交通灯系统设计(原理图+仿真+论文)

news2025/5/15 18:01:16

【毕业设计】15-基于单片机的交通灯系统设计(原理图、仿真、源代码工程+答辩论文+答辩PPT)

文章目录

  • 【毕业设计】15-基于单片机的交通灯系统设计(原理图、仿真、源代码工程+答辩论文+答辩PPT)
    • 任务书
    • 设计说明书
      • 摘要
      • 设计框架架构
      • 设计说明书及设计文件
      • 源码展示

任务书

本设计是基于单片机的交通灯控制系统设计,通过对路口设置的交通指示灯和时间显示装置的控制,给行人和车辆的通行提供便利。
1、设计定时器或采用相关的定时芯片给系统提供时间参考信号。
2、单片机依据时间信号,控制指示灯的亮灭控制车辆和行人的通行,同时显示时间信息。
3、设计相关的硬件电路
4、自行设计软件编程
资料链接
原理图工程文件
原理图截图
仿真模型工程文件
仿真截图
答辩论文低重复率19236字
英文文献及翻译
答辩PPT
visio流程图工程

设计说明书

摘要

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

设计框架架构

在这里插入图片描述

前 言 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

设计说明书及设计文件

在这里插入图片描述在这里插入图片描述
在这里插入图片描述字数:19236字
在这里插入图片描述

源码展示

/*****************************************************
       十字路口交通灯控制 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;
			}
	}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/48122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

婴幼儿牛奶蛋白过敏危害多,教你四招早期预防

牛奶蛋白过敏&#xff08;cowsmilkproteinallergy&#xff0c;CMPA&#xff09;这是婴幼儿最常见的食物过敏之一。牛奶蛋白过敏的临床表现CMPA儿童的临床表现多种多样[1]&#xff0c;特别是对严重的牛奶蛋白过敏&#xff0c;会导致拒绝进食、腹泻、呕吐或反流&#xff0c;导致生…

CentOS7安装superset2.0

备注&#xff1a;自己在CentOS7.5下安装superset2.0成功。数据库以本地sqlite为准。Superset是由Python语言编写的Web应用&#xff0c;Superset2.0版本要求Python3.9的环境。 1、安装Miniconda 原因&#xff1a;conda是一个开源的包、环境管理器&#xff0c;可以用于在同一个…

Linux/Windows中创建共享文件夹

Linux/Windows中创建共享文件夹一、虚拟机访问主机的文件夹1、设置虚拟机共享主机的路径2、设置主机目录为共享文件夹【Windows之间共享目录】2.1 设置共享文件夹2.2 访问共享文件夹3、nfs_共享文件夹【linux之间共享目录】一、虚拟机访问主机的文件夹 1、设置虚拟机共享主机的…

计算机内存与外存的区别及使用配合(内存外存区别与搭配;快速缓存;计算机总线结构)

计算机系统结构1. 为什么计算机存储会分为内存和外存呢&#xff1f;2. 关于快速缓存3. 计算机总线结构1. 为什么计算机存储会分为内存和外存呢&#xff1f; 外部储存器断电可以存储数据&#xff0c;但是读写速度相对于cpu来说很慢&#xff0c;而内存虽然读取速度很快但是断电之…

【php环境搭建】php全栈体系(二)

PHP环境搭建 第七章 安装与配置MySQL 一、安装MySQL软件 1. 获取MySQL安装软件 2. 双击安装即可&#xff1a;没有特殊情况的直接下一步就可以完成 3. 选择custom&#xff0c;自定义安装&#xff1a;选择安装路径 3.1 软件安装目录&#xff1a;server/mysql 3.2 数据安装目录…

OVS DPDK VXLAN隧道处理

在学习OVS VXLAN实现之前&#xff0c;我们先回顾一下传统VTEP设备是如何处理VXLAN报文的。如下图所示&#xff1a; vxlan报文进入交换机端口后&#xff0c;根据报文头部信息进行vxlan隧道终结。隧道终结后&#xff0c;根据underlay信息进行overlay映射&#xff0c;得到overlay的…

Spark系列之SparkSubmit提交任务到YARN

title: Spark系列 第十三章 SparkSubmit提交任务到YARN 13.1 SparkSubmit提交的一些参数解释 local 本地单线程 local[K] 本地多线程&#xff08;指定K个内核&#xff09; local[*] 本地多线程&#xff08;指定所有可用内核&#xff09; spark://HOST:PORT 连接到指定的 Spar…

欢聚季报图解:营收5.87亿美元同比降10% 净利提升

雷递网 雷建平 11月29日欢聚集团(NASDAQ: YY)今日发布2022年第三季度财报。财报显示&#xff0c;欢聚集团2022年第三季度营收为5.867亿美元&#xff0c;较上年同期下降10%。欢聚集团2022年第三季度Bigo Live的平均移动MAU为3540万&#xff0c;较上年同期的3100万增长14.2%&…

固态硬盘SSD

固态硬盘或固态驱动器&#xff08;英语&#xff1a;Solid-state drive或Solid-state disk&#xff0c;简称SSD&#xff09;是一种以集成电路制作的电脑存储设备&#xff0c;由于价格及最大存储容量与机械硬盘有巨大差距&#xff0c;固态硬盘无法与机械式硬盘竞争。可以用非易失…

视频转格式用什么工具?mp4格式转换器,好用的视频格式转换器

视频转格式用什么工具&#xff1f;一条视频在不同的手机、软件上&#xff0c;所支持的格式是不同的&#xff0c;可能手机不支持部分不常见的视频格式&#xff0c;需要使用视频格式转换器将它的格式进行修改&#xff0c;就能使它匹配你所需的格式。接下来&#xff0c;小编就带大…

集成电路光刻机精密运动台控制方法

集成电路的持续发展推动了信息技术的进步。步进扫描式光刻机是集成电路装备中 技术难度最高、价格最昂贵的关键设备。其中&#xff0c;精密运动台是光刻机最为核心的子系统之一&#xff0c; 高速、高加速和高精度的要求对控制方法的研究和应用提出了挑战。文中对集成电路光刻机…

C++ Reference: Standard C++ Library reference: Containers: list: list: empty

C官网参考链接&#xff1a;https://cplusplus.com/reference/list/list/empty/ 公有成员函数 <list> std::list::empty C98 bool empty() const; C11 bool empty() const noexcept; 测试容器是否为空 返回列表&#xff08;list&#xff09;容器是否为空&#xff08;即其…

Protobuf用法和实际操作总结

Protobuf介绍 Protobuf(下文称为 PB)是一种常见的数据序列化方式&#xff0c;常常用于后台微服务之间传递数据 protobuf 的类图如下&#xff1a; 类 Descriptor 介绍 类 Descriptor 主要是对 Message 进行描述&#xff0c;包括 message 的名字、所有字段的描述、原始 proto…

SpringCloud_第1章_入门到精通()

SpringCloud_第1章_入门到精通 文章目录SpringCloud_第1章_入门到精通1.认识微服务1.0.学习目标1.1.单体架构1.2.分布式架构1.3.微服务1.4.SpringCloud1.5.总结2.服务拆分和远程调用2.1.服务拆分原则2.2.服务拆分示例2.2.1.导入Sql语句2.2.2.导入demo工程2.3.实现远程调用案例2…

几种常用XML文档解析方案的使用操作

几种常用XML文档解析方案的使用操作XML概述组成部分XML示例约束DTDSchema解析XML解析方式常见解析器JAXP的使用准备student.xml文件解析XML文档写入XML文档dom4j的使用Document对象获取方式引入依赖解析XML文档文档写入XMLJsoup的使用引入依赖核心对象解析XML文档JsoupXPath的使…

护眼灯真能保护眼睛吗?2022双十二买什么样的护眼灯对眼睛好

护眼灯对于保护眼睛的效果&#xff0c;比起传统的普通台灯更科学、更直观。我们都知道&#xff0c;传统的普通台灯大多都是白炽灯&#xff0c;采用加热钨丝发热发光的原理来提供照明&#xff0c;这种发光方式不但效率低下、浪费能源、污染环境&#xff0c;而且光线也是特别单一…

(二)DepthAI-python相关接口:OAK Pipeline

消息快播&#xff1a;OpenCV众筹了一款ROS2机器人rae&#xff0c;开源、功能强、上手简单。来瞅瞅~ 编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查…

Word文档格式设置——小课堂

文章目录前言1、调整显示选项2、格式设置2.1、新建空白文档&#xff0c;使用默认格式添加一至六级目录&#xff1b;2.2、设置标题的样式2.3、添加标题序号2.4、设置正文格式2.5 设置表格边框2.6 设置表格段落样式2.7 插入表格题注2.9 设置图片格式&#xff0c;并插入题注3、小技…

xxljob

分为调度中心 执行器 调度中心&#xff1a;提供可视化界面&#xff0c;配置定时任务&#xff0c;定时去调用执行器 调度中心执行器管理&#xff1a;每个springboot作为执行器&#xff0c; 也就是执行器的标识 任务管理&#xff1a;选中执行器&#xff0c;创建改该执行器下的任…

深度学习与总结JVM专辑(六):JVM字节码执行引擎

JVM字节码执行引擎前言运行时栈帧结构方法调用解析虚方法和非虚方法分派静态分派静态类型和实际类型动态分派字段没有多态性单分派和多分派JVM动态分派的实现前言 执行引擎是JVM核心的组成部分之一。 “虚拟机”是一个相对于“物理机”的概念&#xff0c;这两种机器都有代码执…