Proteus仿真实例_基于STM32单片机的交通灯系统(仿真文件+程序)24-32f-07

一.系统概述

本次设计的智能交通灯控制系统设计有硬件数据采集控制和上位机监控两部分,通过单片机作为核心控制器,控制红外传感器可以对十字路口东南西北的车流量进行监测,设计有显示的功能,可以将监测到的流量显示,设计有2个档位,当某个方向的车流量超过档位值后,通行时问增加。设计有时钟计时功能,每个方向设计有红、绿、黄三个灯。可以通过声音传感器对警车和救护车进行识别,当识别到之后,控制所有灯变红,优先警车和救护车。通过按钮进行故障模拟,当出现故障的时候,进行蜂鸣器报警。

二.仿真概述 

1. 通过OLED显示屏实时的显示时间,显示东西南北各个方向的车流量以及水平和竖直方向红、绿黄灯的时间,按下故障模拟按键后就开始进行报警。

2.  按下救护车警车检测的按键就会在显示屏端进行显示,此时水平方向和竖直方向的交通灯都变成了红灯。

3. 每个方向都有一个人流量的控制开关,通过一开一合来模拟检测到一个车,检测到有车相应的方向的绿灯时间就会增加,另外方向的红灯时间也会增加。

4.  交通灯的顺序就是绿黄红,一个方向为绿和黄灯则另一个方向为红灯。

三.程序设计

#include <main.h>
//
u8 Key;//按键检测
u8 Rxdat;
u8 dat[3];
u8 beepflag;
u8 mode=0;
u8 e,w,n,s;
u8 rtime=10,gtime=8,flag=0;
//
u8 time[3]={13,14,15};

//

//


int main(void)
{
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//2:2
	OLED_Init();			
	Key_Init();	
	TIM2_Init();
	LedA_Init();	
	Beep_Init(); Beep_1;
//	Display(4);
	while(1)
	{
		OLED_ShowNum(1,5,time[0],2);OLED_ShowString(1,7,":");OLED_ShowNum(1,8,time[1],2);OLED_ShowString(1,10,":");OLED_ShowNum(1,11,time[2],2);
		
		if(Key5==0)Beep_1;else Beep_0;
		
		if(Key6==0)
		{
			OLED_ShowString(2,1,"EmergencyPassage");
			OLED_ShowString(3,1,"                ");
			OLED_ShowString(4,1,"                ");
			LedA1_1;LedA2_0;LedA3_0;	LedA4_1;LedA5_0;LedA6_0;
		}
		else
		{
			
			OLED_ShowString(2,1,"  Traffic Flow  ");
			OLED_ShowString(3,1,"E");OLED_ShowString(3,5,"W");OLED_ShowString(3,10,"N");OLED_ShowString(3,14,"S");
			if(Key1==0) s++;if(Key2==0) n++;if(Key3==0) e++;if(Key4==0) w++;
			OLED_ShowNum(3,2,e,2);OLED_ShowNum(3,6,w,2);OLED_ShowNum(3,11,n,2);OLED_ShowNum(3,15,s,2);
			
			
			OLED_ShowString(4,3,"R:");OLED_ShowNum(4,5,rtime,2);OLED_ShowString(4,7,"s");OLED_ShowString(4,10,"G:");OLED_ShowNum(4,12,gtime,2);OLED_ShowString(4,14,"s");
			
			if(flag)//南北通行
			{
				if(gtime>0 && gtime<9)
				{
					LedA1_0;LedA2_0;LedA3_1;	LedA4_1;LedA5_0;LedA6_0;
				}
				if(gtime==0)
				{
					LedA1_0;LedA2_1;LedA3_0;	LedA4_1;LedA5_0;LedA6_0;					
				}
				if(rtime==0)
				{
					LedA1_1;LedA2_0;LedA3_0;	LedA4_0;LedA5_0;LedA6_1;	
				}
			}
			else//东西通行
			{
				if(gtime>0&& gtime<9)
				{
					LedA1_1;LedA2_0;LedA3_0;	LedA4_0;LedA5_0;LedA6_1;	
				}
				if(gtime==0)
				{
					LedA1_1;LedA2_0;LedA3_0;	LedA4_0;LedA5_1;LedA6_0;	
				}
				if(rtime==0)
				{
					LedA1_0;LedA2_0;LedA3_1;	LedA4_1;LedA5_0;LedA6_0;	
				}
			}
			

		}	
	}
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小常硬件

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

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

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

打赏作者

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

抵扣说明:

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

余额充值