自学内容网 自学内容网

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

基于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


原文地址:https://blog.csdn.net/weixin_52733843/article/details/142797079

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!