文章目录
一、功能简介
本项目使用Proteus8仿真51单片机控制器,使用按键、LED模块等。
主要功能:
系统运行后,系统运行后,系统开始运行,K1键控制左转向灯;K2键控制右转向灯;K3键控制紧急情况灯;K4键控制刹车指示灯。
二、软件设计
/*
作者:嗨小易(QQ:3443792007)
*///系统数据设定voidsys_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;TR0=1;//打开定时器 }}//右转elseif(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;TR0=1;//打开定时器 }}//紧急elseif(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;TR0=1;//打开定时器 }}//刹车elseif(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;}}}//系统功能控制voidsys_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;TR0=0;//关闭定时器 }}//应用控制系统voidappdemo_show(void){sys_parm_init();//系统参数初始化time0_init();while(1){sys_data_set();//系统数据设定sys_fun_ctrl();//系统功能控制 }}voidtime0() interrupt 1//定时器0中断函数{static u8 msec=0;
TH0=0XDC;//给定时器赋初值,定时10ms
TL0=0X00;
msec++;//10ms加1次if(msec>=30){
msec=0;//LED左转if(sys_ctrl.mode[0]==1){
sys_ctrl.cnt++;
LED=(0XF7>>sys_ctrl.cnt)|0xF0;if(sys_ctrl.cnt>=4){
LED=0XF7;sys_ctrl.cnt=0;}}//LED右转elseif(sys_ctrl.mode[1]==1){
sys_ctrl.cnt++;
LED=(0XEF<<sys_ctrl.cnt)|0x0F;if(sys_ctrl.cnt>=4){
LED=0XEF;sys_ctrl.cnt=0;}}//LED紧急elseif(sys_ctrl.mode[2]==1){
LED=~LED;}}}
三、实验现象
B站演示视频:https://space.bilibili.com/444388619
联系作者
视频地址:https://space.bilibili.com/444388619/video
专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。
版权归原作者 Hai小易 所有, 如有侵权,请联系我们删除。