【Proteus仿真】【Arduino单片机】汽车尾灯控制设计

文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者


一、功能简介

本项目使用Proteus8仿真Arduino单片机控制器,使用按键、LED模块等。

主要功能:
系统运行后,系统运行后,系统开始运行,K1键控制左转向灯;K2键控制右转向灯;K3键控制紧急情况灯;K4键控制刹车指示灯。


二、软件设计

/*
作者:嗨小易(QQ:3443792007)

*/


//系统数据设置
void sys_data_set(void)
{
	u8 key=0;

	key=key_scan(0);
	//左转
	if(key==KEY1_PRESS)
	{
		sys_ctrl.mode[0]=!sys_ctrl.mode[0];
		if(sys_ctrl.mode[0]==1)//打开
		{
			sys_ctrl.mode[1]=0;sys_ctrl.mode[2]=0;sys_ctrl.mode[3]=0;
			sys_ctrl.cnt=0;
      led_onoff(0);	
			MsTimer2::start();//打开定时器	
		}
	}
	//右转
	else if(key==KEY2_PRESS)
	{
		sys_ctrl.mode[1]=!sys_ctrl.mode[1];
		if(sys_ctrl.mode[1]==1)//打开
		{
			sys_ctrl.mode[0]=0;sys_ctrl.mode[2]=0;sys_ctrl.mode[3]=0;
			sys_ctrl.cnt=0;
      led_onoff(0);	
			MsTimer2::start();//打开定时器	
		}
	}
	//紧急
	else if(key==KEY3_PRESS)
	{
		sys_ctrl.mode[2]=!sys_ctrl.mode[2];
		if(sys_ctrl.mode[2]==1)//打开
		{
			sys_ctrl.mode[0]=0;sys_ctrl.mode[1]=0;sys_ctrl.mode[3]=0;
			sys_ctrl.cnt=0;
      led_onoff(0);	
			MsTimer2::start();//打开定时器	
		}
	}
	//刹车
	else if(key==KEY4_PRESS)
	{
		sys_ctrl.mode[3]=!sys_ctrl.mode[3];
		if(sys_ctrl.mode[3]==1)//打开
		{
			sys_ctrl.mode[0]=0;sys_ctrl.mode[1]=0;sys_ctrl.mode[2]=0;
			sys_ctrl.cnt=0;
			led_onoff(1);	
		}
	}
}

//系统功能控制
void sys_fun_ctrl(void)
{
	if(sys_ctrl.mode[0]==0 && sys_ctrl.mode[1]==0 && sys_ctrl.mode[2]==0 && 
		sys_ctrl.mode[3]==0)
	{
		sys_parm_init();
		led_onoff(0);	
    MsTimer2::stop();//关闭定时器	
	}
}

//应用控制程序
void app_ctrl_demo(void)
{
  key_init();
  led_init();
  time2_init(10);//定时10ms
  sys_parm_init();//系统参数初始化
  while(1)
  {
    sys_data_set();//系统数据设定
		sys_fun_ctrl();//系统功能控制
  }
}

//定时器2中断函数
void timer2Isr(void)
{	
	static u8 i=0;
  static u8 cnt=0;
	i++;
	if(i>=30)
	{
		i=0;
		//LED左转
		if(sys_ctrl.mode[0]==1)
		{
			led_left(sys_ctrl.cnt);
      sys_ctrl.cnt++;
			if(sys_ctrl.cnt>=4)
			{
				sys_ctrl.cnt=0;	
			}
		}
		//LED右转
		else if(sys_ctrl.mode[1]==1)
		{
			led_right(sys_ctrl.cnt);
      sys_ctrl.cnt++;
			if(sys_ctrl.cnt>=4)
			{
				sys_ctrl.cnt=0;	
			}
		}
		//LED紧急
		else if(sys_ctrl.mode[2]==1)
		{
			cnt=!cnt;
      led_onoff(cnt);
		}
	}			
}





三、实验现象

B站演示视频:https://space.bilibili.com/444388619
【Proteus仿真】【Arduino单片机】汽车尾灯控制设计_第1张图片
【Proteus仿真】【Arduino单片机】汽车尾灯控制设计_第2张图片
【Proteus仿真】【Arduino单片机】汽车尾灯控制设计_第3张图片

联系作者

视频地址:https://space.bilibili.com/444388619/video
专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

你可能感兴趣的:(proteus,单片机,汽车,嵌入式硬件,Arduino编程,汽车尾灯控制系统)