【Proteus仿真】【51单片机】拔河游戏设计

文章目录


一、功能简介

本项目使用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设计,视频分享,技术交流。

相关推荐
nujnewnehc16 小时前
不会 py, 用 ai 写了个游戏辅助的感受
人工智能·游戏
jump_jump2 天前
为了重玩金庸群侠传,我研究了一下 Ruffle 怎么复活 Flash
游戏·rust·github
XIAOHEZIcode3 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
Aloys_Code3 天前
逆向一个被遗忘的DVD游戏格式:从DES加密到Rust模拟器
游戏·模拟器·retroarch·复古游戏·native32·sunplus·赤刃·钢铁风暴
金銀銅鐵4 天前
用 Python 实现 Take-Away 游戏
python·游戏
金銀銅鐵4 天前
用 Pygame 实现 15 puzzle
python·数学·游戏
u152109648496 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
zd8451015006 天前
RS485 总线详解
单片机·嵌入式硬件
半条-咸鱼6 天前
【STM32】I2C协议原理、HAL读写与OLED显示操作
嵌入式硬件·c·信息与通信
wohoo_wangzi6 天前
苏州晟雅泰电子:关于W25Q128JVSIQ这个芯片物料的参数,规格及应用领域
嵌入式硬件