文章目录
- 一、功能简介
- 二、软件设计
- 三、实验现象
- 联系作者
一、功能简介
本项目使用Proteus8仿真STM32单片机控制器,使用按键、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(0XF7);
TIM_Cmd(TIM2,ENABLE);//打开定时器
}
}
//右转
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(0XEF);
TIM_Cmd(TIM2,ENABLE);//打开定时器
}
}
//紧急
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(0X00);
TIM_Cmd(TIM2,ENABLE);//打开定时器
}
}
//刹车
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(0X00);
}
}
}
//系统功能控制
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(0XFF);
TIM_Cmd(TIM2,DISABLE);//关闭定时器
}
}
//应用控制系统
void appdemo_show(void)
{
KEY_Init();
ctrl_pin_init();
TIM2_Init(400-1,70);//定时10ms
sys_parm_init();//系统参数初始化
while(1)
{
sys_data_set();//系统数据设置
sys_fun_ctrl();//系统功能控制
}
}
三、实验现象
B站演示视频:https://space.bilibili.com/444388619
联系作者
视频地址:https://space.bilibili.com/444388619/video
专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。