基于STM32的简易交通灯proteus仿真设计(仿真+程序+设计报告+讲解视频)

news2024/11/17 11:38:30

基于STM32的简易交通灯proteus仿真设计(仿真+程序+设计报告+讲解视频)

仿真图proteus 8.9

程序编译器:keil 5

编程语言:C语言

设计编号:C0091

**1.**主要功能

功能说明:

以STM32单片机和数码管、LED灯设计简易交通灯控制系统;

状态1:南北方向绿灯通行12秒,东西红灯禁止通行15秒,分别倒计时;

状态2:南北方向黄灯闪烁提醒3秒,东西继续红灯倒计时;

状态3:东西方向绿灯通行9秒,南北方向禁止通行12秒;

状态4:东西方向黄灯闪烁提醒3秒,南北继续红灯倒计时;

状态5:执行状态1,反复循环。

主要硬件设备:STM32F103系列单片机 数码管

2.仿真

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。

然后开始仿真。

img

图5.2 交通控制系统运行(东西通行)

img

图5.3 交通控制系统运行(东西等待)

img

图5.4 交通控制系统运行(南北通行)

img

图5.5 交通控制系统运行(南北等待)

3. 程序

程序是用keil5 mdk版本打开的,如果打开有问题,核实下keil的版本。程序是HAL版本编写的,有stm32cubemx配置文件。有注释可以结合讲解视频理解。

img

关键代码

/* USER CODE BEGIN 4 */
void led_sacn(void)
{
	 if(run_mode==0)			 //0 正常运行
	 {
		if(main_road_time==0 || secondary_road_time==0)//当主干道或者次干道倒数到0,切换状态。
		//这一段程序只有倒计时为0才执行一次,执行完一次等下一次倒计时为0才再执行一次
		{

			switch(state)//改变红绿灯的状态
			{
				case 0:
				{
					state=1;//下次切换到下一个模式
					main_road_time=ns_green_cnt;//主干道绿灯通行时间
					secondary_road_time=ns_green_cnt+yellow_cnt; //次干道红灯时间
					 we_red    = ON; 		//次干道红灯亮
					 we_yellow = OFF;		//次干道黄灯亮
					 we_green  = OFF;		//次干道绿灯亮
					 ns_red    = OFF;		//主干道红灯亮
					 ns_yellow = OFF;		//主干道黄灯亮
					 ns_green  = ON;		//主干道绿灯亮
				}break;
				case 1:
				{
					state=2;
					main_road_time = yellow_cnt;//主干道直行黄灯时间
					we_red	  = ON;
					we_yellow = OFF;
					we_green  = OFF;
					ns_red	  = OFF;
					ns_yellow = ON;
					ns_green  = OFF;	
				}break;
				case 2:
				{
					state=3;
					main_road_time=we_green_cnt+yellow_cnt;
					secondary_road_time = we_green_cnt;
					we_red	  = OFF;
					we_yellow = OFF;
					we_green  = ON;
					ns_red	  = ON;
					ns_yellow = OFF;
					ns_green  = OFF;	
				}break;
				case 3:
				{
					state=0;
					secondary_road_time = yellow_cnt;
					we_red	  = OFF;
					we_yellow = ON;
					we_green  = OFF;
					ns_red	  = ON;
					ns_yellow = OFF;
					ns_green  = OFF;	
				}break;
				
				default:break;
			}
		}
		memset(smgbuf, 0, sizeof(smgbuf));
		smgbuf[4]=gsmg_code[main_road_time%10];//主干道时间
		smgbuf[5]=gsmg_code[main_road_time/10];
		smgbuf[6]=gsmg_code[secondary_road_time%10];//次干道时间
		smgbuf[7]=gsmg_code[secondary_road_time/10];
		SMG_Display(smgbuf,1);//数码管更新时间
		

		
	}
}

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim == &htim3)  //定时器2中断50MS一次
  {
		if(++half_sec_flag>10){
			half_sec_flag=0;
			half_flag1s=1;
		}
		if(++one_sec_flag<20){
			return;//提前结束函数
			}
		
		one_sec_flag=0;
		if(run_mode==0){//不是正常运行时,不红绿灯数值不减一 
			flag1s=1;	
		}		
		
  }
}

4. 设计报告

7214字设计报告,内容包括硬件设计、软件设计、结论等。

img

随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。本模拟交通灯系统利用单片机STM32F103C6作为核心元件,实现了通过信号灯对路面状况的智能控制。从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。

本模拟系统由单片机硬/软件系统,四位8段数码管和LED灯显示系统等组成,较好的模拟了交通路面的控制。

5. 资料清单&下载链接

img

0、常见使用问题及解决方法–必读!!!!

1、程序代码

2、Proteus仿真

3、功能要求

4、开题报告

5、设计报告

6、讲解视频

7、框图

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

资料下载链接(可点击):

https://docs.qq.com/doc/DS1BVRWJFeVZtSnNN

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

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

相关文章

版本控制系统Helix Core的常见使用误区及解决办法、实用工具及新功能介绍

日前&#xff0c;Perforce携手合作伙伴龙智一同亮相Unreal Fest 2024上海站&#xff0c;分享Helix Core版本控制系统及其协作套件的强大功能与最新动态&#xff0c;助力游戏创意产业加速前行。 Perforce解决方案工程师Kory Luo在活动主会场&#xff0c;带来《Perforce Helix C…

QT安装成功后-在创建项目时,发现仅有项目名文件

&#xff08;1&#xff09;QT安装成功后&#xff0c;发现仅有项目名文件其他可编辑文件缺失 &#xff08;2&#xff09;点击文件名左上角的感叹号显示【No kits are enabled for this project. Enable】 小编在尝试多次后发现&#xff0c;可以通过以下方式解决&#xff1a;QT软…

YOLO11改进|编码器篇|引入AIFI混合特征编码器

目录 一、【AIFI】混合编码器机制1.1【AIFI】混合编码器介绍1.2【AIFI】核心代码 二、添加【AIFI】机制2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【AIFI】混合编码器机制 1.1【AIFI】混合编码器介绍 【AIFI】在论文中并没有结构图…

CVPR 2024最佳论文候选-pixelSplat论文解读

目录 一、概述 二、相关工作 1、单场景下的视角合成 2、基于先验的三维重建和视图合成 3、多视图几何测量 三、3DGS的缺点 1、容易陷入最小值 2、需要大量输入图像 3、尺度模糊性 四、pixelSplat 1、解决尺度模糊性&#xff08;深度信息生成&#xff09; 2、编码器…

QT实现QMessageBox中文按钮

这是我记录Qt学习过程心得文章的第二篇&#xff0c;主要是为了方便QMessageBox弹出框的使用&#xff0c;通过自定义的方式&#xff0c;将其常用的功能&#xff0c;统一封装成一个函数&#xff0c;还是写在了Skysonya类里面。 实现代码&#xff1a; //中文提示对话框 bool Sky…

线程(四)线程的同步——条件变量

文章目录 线程线程的同步和互斥线程同步--条件变量什么是线程同步示例--条件变量的使用示例--使用两个线程对同一个文件进行读写示例--一个读者一个写者使用条件变量来实现同步 线程 线程的同步和互斥 线程同步–条件变量 是一个宏观概念&#xff0c;在微观上包含线程的相互…

新160个crackme - 078-CodeZero.1

运行分析 需要破解Serial PE分析 VB程序&#xff0c;32位&#xff0c;无壳 静态分析&动态调试 使用VB Decompiler进行分析找到check按钮事件&#xff1a; Form1 -> Command1_Click_4055F4发现直接爆出了Serial55555 验证成功

【xilinx-versal】【Petalinux】I2C驱动开发问题记录

问题 调试中发现系统起来后无I2C设备。 仔细查找后发现没有配置versal的I2C控制器。 解决方法 打开versal的I2C控制器的配置 起来后I2C设备注册成功

Acwing 区间问题

Acwing 905.区间选点 实现思路&#xff1a; 将每个区间按照右端点从小到大排序从前往后依次枚举每个区间 若当前区间中已经包含点&#xff0c;则跳过&#xff1b;否则&#xff08;即当前区间的左端点大于该点&#xff09;&#xff0c;选择当前区间的右端点&#xff1b; 证明&a…

设计模式:单例

一.什么是单例模式 单例模式是一种设计模式&#xff0c;指在整个程序生命周期中有且仅有一个实例的类。可以分为懒汉式以及饿汉式。 懒汉式&#xff1a;只有在类的实例被使用时才生成唯一实例。但是存在线程安全以及内存泄露的问题。可以节省系统资源。 饿汉式&#xff1a;程序…

《Oracle DB备份与恢复》:一文千字教你掌握备份基础知识

** List item 备份需要扎实掌握基础知识&#xff0c;这样才能规划好适合自己的备份恢复策略&#xff0c;才能在出故障的时候不慌不忙&#xff0c;从容应付。 好了不多逼逼了&#xff0c;直接上干货。** 1. 备份分类&#xff1a; 备份根据性质和目的不同分为以下几种&#…

车辆路径规划问题(VRP)优化方案

车辆路径规划问题&#xff08;VRP&#xff09;优化方案 车辆路径规划问题&#xff08;Vehicle Routing Problem, VRP&#xff09;是物流领域中一个经典的组合优化问题&#xff0c;目标是在满足客户需求的情况下&#xff0c;找到一组车辆的最优配送路径&#xff0c;以最小化总的…

如何让员工意识到六西格玛项目对公司和个人的长期利益?

当下&#xff0c;六西格玛作为一种以数据驱动的管理方法论&#xff0c;正逐步成为许多企业实现卓越运营的重要工具。然而&#xff0c;要让员工深刻认识到六西格玛项目不仅对公司长远发展至关重要&#xff0c;也对他们个人职业生涯有着深远的积极影响&#xff0c;并非易事。下面…

C++ day05(模版与容器)

目录 【1】模版 template 1》概念 2》函数模版 3》类模版 【2】容器 1》STL标准模版库 2》容器的概念 3》顺序容器 1> arrry(C11) 2> vector 3> list 4> deque 4》 关联容器 5》迭代器 iterator 【1】模版 template 1》概念 C模版可以让类或函数声…

javacpp调用pdfium的c++动态库

1、.h头文件 2、生成java代码的conf PdfiumDocumentConfigure.java package org.swdc.pdfium.conf;import org.bytedeco.javacpp.annotation.Platform; import org.bytedeco.javacpp.annotation.Properties; import org.bytedeco.javacpp.tools.InfoMap; import org.byte…

网络知识点之—EVPN

EVPN&#xff08;Ethernet Virtual Private Network&#xff09;是下一代全业务承载的VPN解决方案。EVPN统一了各种VPN业务的控制面&#xff0c;利用BGP扩展协议来传递二层或三层的可达性信息&#xff0c;实现了转发面和控制面的分离。 EVPN解决传统L2VPN的无法实现负载分担、…

springboot+vue前后端分离-使用腾讯云服务器部署网站

项目打包 参考链接 CSDN springboot打包 idea默认新建的shell窗口在项目根目录位置&#xff0c;可以看到项目根目录下有mvnw HELP.md log mvnw mvnw.cmd pom.xml src target./mvnw clean package -Dmaven.test…

Kali Linux中安装配置影音资源下载神器Amule

一、Debian系列Linux安装amule命令&#xff1a; sudo apt update sudo apt-get install amule amule-utils 二、配置Amule的要点&#xff1a; 1、首次运行Amule&#xff0c;提示是否下载服务器列表&#xff0c;点击是。 2、搜索选项的类型选择全球&#xff0c;类型的默认选项…

数据恢复与数据取证:Visual NAND Reconstructor 闪存数据恢复工具

天津鸿萌科贸发展有限公司是专业闪存数据恢复工具 VNR (Visual NAND Reconstructor) 的授权代理商。 VNR&#xff08;Visual NAND Reconstructor&#xff09;可视化 NAND 重建工具套件由硬件和软件构成。其中硬件部分包含 NAND 读卡器和一组用于不同 NAND 芯片封装的适配器。读…

LeetCode 48 Rotate Image 解题思路和python代码

题目&#xff1a; You are given an n x n 2D matrix representing an image, rotate the image by 90 degrees (clockwise). You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and …