文章目录
一、功能简介
本项目使用Proteus8仿真51单片机控制器,使用按键、LED、动态数码管模块等。
主要功能:
系统运行后,指示灯处于中间位置,数码管显示得分0,当按下K3键,游戏开始,运行指示灯亮,此时AB选手可开始拔河,按下K1或K2可使指示灯偏向自己一方,当指示灯到达最近接自己位置时,得分加1,游戏胜利;可按下K4键复位重启。
二、软件设计
c
/*
作者:嗨小易(QQ:3443792007)
*/
//系统数据设定
void sys_data_set(void)
{
u8 key=0;
key=key_scan(0);
//开始
if(key==KEY3_PRESS)
{
sys_ctrl.start=1;
RUN_LED=0;
}
//复位
else if(key==KEY4_PRESS)
{
sys_parm_init();//参数初始化
RUN_LED=1;
}
//系统开始
if(sys_ctrl.start==1)
{
//A队
if(key==KEY1_PRESS)
{
if(sys_ctrl.cnt>1)
sys_ctrl.cnt--;
if(sys_ctrl.cnt==1)
{
sys_ctrl.score_a++;
sys_ctrl.start=0;
}
}
//B队
if(key==KEY2_PRESS)
{
if(sys_ctrl.cnt<9)
sys_ctrl.cnt++;
if(sys_ctrl.cnt==9)
{
sys_ctrl.score_b++;
sys_ctrl.start=0;
}
}
}
}
//系统数据显示
void sys_data_show(void)
{
u8 buf[4];
while(1)
{
//拔河指示显示
_led_pos(sys_ctrl.cnt);
//AB队得分显示
buf[0]=gsmg_code[sys_ctrl.score_a/10];
buf[1]=gsmg_code[sys_ctrl.score_a%10];
buf[2]=gsmg_code[sys_ctrl.score_b/10];
buf[3]=gsmg_code[sys_ctrl.score_b%10];
smg_display(buf,1);
break;
}
}
//应用控制系统
void appdemo_show(void)
{
sys_parm_init();//系统参数初始化
while(1)
{
sys_data_set();//系统数据设定
sys_data_show();//系统数据显示
}
}
三、实验现象
B站演示视频:https://space.bilibili.com/444388619
联系作者
视频地址:https://space.bilibili.com/444388619/video
专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。