基于STM32的交通灯(OLED屏显示倒计时)的Proteus仿真


一、前言

最近下载了Proteus仿真软件,闲来无事也试试画一个简单的仿真图。

有需要软件的朋友可以去我的另外一篇博客下载和安装。

自用Proteus(8.15)仿真下载安装过程(附详细安装过程图)


二、交通灯

1.题目要求

基本要求:

额外要求:复位模块,数码管倒计时显示、故障报警、车流量检测和调整模块
故障报警:bcde四个指示灯的绿灯不能同时点亮;如果同时被点亮,则应自动立即停止系统,同时发出警告提示信号。
车流量检测和调整模块:车流量计数程序在一个状态变换循环先后计数两个方向的车流量,然后调用红绿灯时间调整程序,更新红绿灯时间。当前状态时间已到,判断其状态装入相应数据,然后进入下一状态。表现为检测一个方向车流量大于 30时,此方向自动增加 10 秒,车流量大于 50 时,此方向自动增加 20 秒,会自动清空一分钟以前的数据。

2.思路

首先,看基本要求,总共有5个方向的灯,分别是a,b,c,d,e方向的灯,一共有24个灯,只要按照要求逐一点亮和熄灭即可。

额外要求的话,复位模块可以直接用单片机的RST复位引脚进行复位,显示倒计时的话数码管占用GPIO太多,我这里选用OLED显示屏进行显示,故障报警的话直接模拟故障情况,用一个按键,当按键被按下时,出现故障,bcde四个指示灯的绿灯同时点亮,自动立即停止系统(停止倒计时和交通灯显示),同时发出警告提示信号(用一个蜂鸣器响)。车流量检测和调整模块没想好怎么用仿真表示。

3.画图

正常情况

按照基本要求的表格进行交通灯显示。

在这里插入图片描述

模拟故障情况

通过按键按下模拟故障情况,倒计时停止,bcfe方向的绿灯同时点亮。
在这里插入图片描述

4.软件

主函数

/* Includes ------------------------------------------------------------------*/
#include "Drv_UserSystem.h"

/**
  * @brief  main function.
  * @param  none
  * @retval none
  */
int main(void)
{
	UserSystemInit();//用户配置初始化		
	while (1)
	{				
		if (stSysTime.flg._10ms + TEN_MILLISECOND < Time_millis()) //10ms
		{
			stSysTime.flg._10ms = Time_millis();	
            Key_Scan();//按键扫描			
		}
		if (stSysTime.flg._50ms + FIFTY_MILLISECOND < Time_millis()) //50ms
		{
			stSysTime.flg._50ms = Time_millis();		
		}
		if (stSysTime.flg._100ms + BEST_MILLISECOND < Time_millis()) //100ms
		{
			stSysTime.flg._100ms = Time_millis();	
			Receive_data_Handel();//数据接收判断
			IWDG_ReloadCounter();//清开门狗 
		}
		if (stSysTime.flg._1s + THOUSAND_MILLISECOND < Time_millis()) //1s
		{
			stSysTime.flg._1s = Time_millis();	
			Led_Run_Mode();//灯光模式
			Led_Run();//灯光运行 		
			OLED_Handel();//OLED显示				
	  }
  }
}


三、总结

今天主要讲了基于STM32的交通灯(OLED屏显示倒计时)的Proteus仿真。

感谢你的观看!

在这里插入图片描述

  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
STM32是一种广泛使用的微控制器,它具有强大的计算和通信能力,非常适合各种嵌入式应用。而OLED(有机发光二极管)幕则是一种先进的显示技术,具有高对比度、高亮度和低功耗的特点。DS1302是一种时钟芯片,可以提供准确的时间信息。下面将详细介绍STM32OLED和DS1302的特点和应用。 首先,STM32具有32位的RISC指令集架构,可以提供高速计算和快速响应。它内部集成了丰富的外设接口,包括UART、SPI、I2C等,方便与其他设备进行通信。此外,它还支持多种编程语言,如C和汇编语言,方便开发人员进行编程。因此,STM32广泛应用于工业自动化、智能家居、汽车电子等领域。 其次,OLED幕具有自发光的特点,能够提供高对比度和鲜艳的颜色,显示效果非常好。它的像素点是有机物质构成的,可以自发发光,省去了背光源,因此功耗较低。此外,OLED幕具有快速响应的能力,可以实现高帧率的显示效果。它在电子产品中被广泛应用,如智能手机、平板电脑、电子手表等。 最后,DS1302是一种时钟芯片,具有精确的时间计算和显示功能。它内部集成了晶体振荡器和时钟电路,可以提供准确的时间信息。DS1302通过与微控制器的通信,可以实现时间显示、定时功能等。因此,DS1302常被用于电子钟、计时器等应用场景。 综上所述,STM32微控制器、OLED幕和DS1302时钟芯片是现代电子产品中常用的组件。它们各自具有不同的特点和功能,可以在各种嵌入式应用中发挥重要作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaobuding_QAQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值