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

news/2024/4/27 11:54:56/文章来源:https://blog.csdn.net/qq_22592979/article/details/128108696

【毕业设计】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;//定时器工作于方式1TH0=(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.luyixian.cn/news_show_39058.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Rust日报】2022-11-29 Wirefish:基于 Tauri 的跨平台数据包嗅探器

Wirefish&#xff1a;基于 Tauri 的跨平台数据包嗅探器作者 stefanodevenuto 通过 Rust Tauri 实现&#xff0c;构建了一个类似 Wireshark 的跨平台数据包嗅探器。这个应用离生产阶段当然还很远&#xff0c;功能和页面上还有很多改善的空间&#xff0c;但是代码组织良好&#…

基于 Hive 的 Flutter 文档类型存储

基于 Hive 的 Flutter 文档类型存储 原文 https://medium.com/gytworkz/document-type-storage-in-flutter-using-hive-a18ea9659d84 前言 长久以来&#xff0c;我们一直使用共享首选项以键对格式在本地存储中存储数据&#xff0c;或者使用 SQLite 在 SQL 数据库中存储数据。 存…

【收藏】安科瑞企业微电网能效管理系统云平台演示账号

安科瑞 李亚俊 Acrel8757 1、AcrelCloud-1000变电所电力运维云平台 网址&#xff1a;https://acrelcloud.cn/ 演示账号&#xff1a;acrel 密码:123456 2、SCADA电力监控系统 网址&#xff1a;http://scada.acrel-eem.com/ 演示账号&#xff1a;acrel 密码:…

Android——使用ContentProvider共享数据

实验名称&#xff1a; 使用ContentProvider共享数据 实验目的&#xff1a; &#xff08;1&#xff09;能使用ContentProvider共享数据 &#xff08;2&#xff09;能使用内容观察者观察其他程序的数据变化 实验内容及原理&…

Kamiya丨Kamiya艾美捷小鼠血红蛋白ELISA说明书

Kamiya艾美捷小鼠血红蛋白ELISA预期用途&#xff1a; 小鼠血红蛋白ELISA是一种高灵敏度的双位点酶联免疫分析&#xff08;ELISA&#xff09;小鼠生物样品中血红蛋白的测定。仅供研究使用。 引言 血红蛋白&#xff08;HM&#xff09;是红细胞中的含铁氧转运蛋白。它吸收肺部的…

第10讲:Python列表对象查操作之通过切片获取列表中的元素

文章目录1.切片获取列表中的技术要点1.1切片获取列表中的概念总结1.2.切片的语法格式以及含义3.使用切片方法获取列表中元素3.1.定义一个原始列表列表3.2.当step步长为正数时切片的案例3.3.当step步长为负数时切片的案例3.4.使用负数索引作为切片范围4.将切片后的列表赋值给新的…

【LeetCode】No.103. Binary Tree Zigzag Level Order Traversal -- Java Version

题目链接&#xff1a;https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/ 1. 题目介绍&#xff08;Binary Tree Zigzag Level Order Traversal&#xff09; Given the root of a binary tree, return the zigzag level order traversal of its nodes’…

【学习笔记67】JavaScript中的闭包

一、认识函数的过程 1. 定义 在堆内存中开辟一段内存空间(XF001)把函数体的内容&#xff0c;完全百分百的照抄一份&#xff0c;存放在内存空间中(XF001)把内存空间的地址(XF001) 赋值给函数名2. 调用 根据函数名内存储的地址 (XF001) &#xff0c;去堆内存中找到对应函数会去…

R语言法国足球联赛球员多重对应分析(MCA)

数据集 fooball球员在场上的位置 数据来自国际足联的视频游戏FIFA 。游戏的特点是在游戏的各个方面评价每个球员的能力。等级是量化变量&#xff08;介于0和100之间&#xff09;&#xff0c;但我们将它们转换为分类变量。所有能力都被编码在4个等级&#xff1a;1.低/ 2.平均/ …

基于单片机技术的自动停车器的设计

目 录 摘 要 I Abstract II 1绪论 1 1.1课题研究背景 1 1.2国内外发展现状 1 1.3汽车自动停车器的研究目的 2 1.4课题研究的意义 2 2汽车停车器的功能设计 3 2.1汽车自动停车器的设计要求 3 2.2停车器的主要功能 3 3汽车自动停车器的硬件设计 5 3.1汽车自动停车器的硬件组成 5 …

数据存储——存储视频

数据存储——存储视频视频的数字化一、视频采样二、视频量化总结&#xff1a;视频数字化的过程视频的数字化 1.视频是图像&#xff08;帧&#xff09;在时间上的表示 图象是离散的视频&#xff0c;视频是连续的图像 2.视频储存 每一帧图像或帧被转化为位模式并加以储存 一、视…

三年城市NOH落地100城,毫末智行内部信剑指2025

11月29日&#xff0c;毫末智行董事长张凯、CEO顾维灏联合发布《毫末智行三周岁&#xff1a;三年磨一剑 利刃开新篇》的内部信&#xff0c;提到毫末愿景及战略目标&#xff1a;“让机器智能移动&#xff0c;给生活更多美好。”未来成长为一家产品矩阵覆盖全无人驾驶、机器人等多…

【Android App】Vulkan实现宇宙中旋转雷达动画效果(附源码和原始视频 超详细必看)

需要源码请点赞关注收藏后评论区留言私信~~~ 一、Vulkan简介 Vulkan是一个跨平台的图形绘制接口&#xff0c;被称为下一代OpenGL&#xff0c;因为尽管OpenGL提供了丰富的图形API&#xff0c;但他在底层实现的C代码早已封装起来&#xff0c;由于开发者修改不了底层代码&#xf…

​GENIUS: 根据草稿进行文本生成的预训练模型,可用于多种NLP任务的数据增强...

©PaperWeekly 原创 作者 | 郭必扬 单位 | 上海财经大学信息管理与工程学院AI Lab论文标题&#xff1a;GENIUS: Sketch-based Language Model Pre-training via Extreme and Selective Masking for Text Generation and Augmentation论文作者&#xff1a;Biyang Guo, Yeyu…

多线程,了解-概念-实现方式-常见方法-安全问题-死锁-生产者消费者

了解 简单了解多线程 是指从软件或者硬件上实现多个线程并发执行的技术。 具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程&#xff0c;提升性能。 简单了解多线程 简单了解多线程 简单了解多线程 简单了解多线程 概念 线程相关的概念 并行&#xff1a;在同…

【车载开发系列】UDS诊断---电控单元复位 ($0x11)

【车载开发系列】UDS诊断—电控单元复位&#xff08;$0x11&#xff09; UDS诊断---电控单元复位&#xff08;$0x11&#xff09;【车载开发系列】UDS诊断---电控单元复位&#xff08;$0x11&#xff09;一.概念定义二.应用场景三.报文格式1&#xff09;请求2&#xff09;肯定响应…

Spark 3.0 - 8.ML Pipeline 之决策树原理与实战

目录 一.引言 二.决策树基础-信息熵 三.决策树的算法基础 - ID3 算法 四.ML 中决策树的构建 1.信息增益计算 2.连续属性划分 五.ML 决策树实战 1.Libsvm 数据与加载 2.StringIndexer 3.VectorIndexer 4.构建决策树与 Pipeline 5.测试与评估 6.获取决策树 六.总结…

基于PHP+MySQL企业网络推广平台系统的设计与实现

企业网络推广平台系统具有很强的信息指导性特征,采用PHP开发企业网络推广平台系统 给web带来了全新的动态效果,具有更加灵活和方便的交互性。在Internet中实现数据检索越来越容易,可以及时、全面地收集、存储大量的企业资源信息以及进行发布、浏览、搜索相关的信息。让企业、个…

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

C官网参考链接&#xff1a;https://cplusplus.com/reference/list/list/cend/ 公有成员函数 <list> std::list::cend const_iterator cend() const noexcept; 返回结束的常量迭代器 返回一个指向容器结束后元素的const_iterator。 const_iterator是指向const内容的迭代…