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

文章目录

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


一、功能简介

本项目使用Proteus8仿真STM32单片机控制器,使用按键、LED、动态数码管模块等。

主要功能:
系统运行后,指示灯处于中间位置,数码管显示得分0,当按下K3键,游戏开始,运行指示灯亮,此时AB选手可开始拔河,按下K1或K2可使指示灯偏向自己一方,当指示灯到达最近接自己位置时,得分加1,游戏胜利;可按下K4键复位重启。


二、软件设计

/*
作者:嗨小易(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设计,视频分享,技术交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/146178.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL主从复制、读写分离(利用Amoeba和Mycat)、完全同步

目录 一、主从复制 1、概念 1.1主从复制延迟问题&#xff1a; 1.2、MySQL安全和性能配置&#xff1a; 1.3、主从复制的工作过程&#xff1a; 1.4、mysql主从复制注意点&#xff1a; 1.5、MySQL的主从复制的模式&#xff1a; 2、主从复制实验&#xff1a; 二、读写分离&…

【ccf-csp题解】第11次csp认证-第三题-Json查询超详细讲解

此题思路来源于acwing ccfcsp认证辅导课 题目描述 思路分析 此题的难点在于对输入的内容进行解析&#xff0c;题目中说除了保证字符串内容不会有空格存在之外&#xff0c;其它的任意地方都可能出现空格&#xff0c;甚至在某些地方还会出现空行&#xff0c;这样的话&#xff0…

由于找不到msvcp140.dll无法继续执行代码有哪些解决方法

msvcp140.dll是Microsoft Visual C 2015 Redistributable的一个组件&#xff0c;它是运行许多Windows应用程序所必需的。当msvcp140.dll丢失或损坏时&#xff0c;可能会导致以下问题&#xff1a; 1. 程序无法启动或崩溃。 2. 系统出现错误提示&#xff0c;如“找不到msvcp140…

离散卡尔曼滤波器算法详解及重要参数(Q、R、P)的讨论

公开数据集中文版详细描述参考前文&#xff1a;https://editor.csdn.net/md/?not_checkout1&spm1011.2124.3001.6192神经元Spike信号分析参考前文&#xff1a;https://blog.csdn.net/qq_43811536/article/details/134359566?spm1001.2014.3001.5501神经元运动调制分析参考…

Java学习之路 —— 异常、集合

文章目录 1. 异常2. 集合2.1 遍历2.1.1 迭代器2.1.2 增强for循环2.1.3 Lambda 2.2 List2.3 Set2.3.1 HashSet2.3.2 LinkedHashSet2.3.3 TreeSet 2.4 Map 1. 异常 Exception&#xff1a;叫异常&#xff0c;是程序员可以捕捉的。异常又分为了2类&#xff1a; 运行时异常&#x…

SpringBoot整合WebSocket实现订阅消息推送

目录 一、什么是WebSocket1.HTTP协议2.WebSocket协议 二、WebSocket使用场景1.消息推送2.实时聊天3.弹幕4.实时数据更新 三、SpringBoot整合WebSocket&#xff08;以实现消息推送为例&#xff09;1.添加依赖2.创建消息类2.WebSocket配置类3.工具类4.测试连接5.服务调用 一、什么…

人工智能 :一种现代的方法 第七章 逻辑智能体

文章目录 前言人工智能 &#xff1a;一种现代的方法 第七章 逻辑智能体7.1 基于知识的智能体7.2 Wumpus世界7.4 命题逻辑7.5 命题逻辑定理证明7.5.1推导和证明7.5.2 归结原理7.5.3 horn子句和限定子句7.5.4 前向链接和后向链接 7.6 有效命题逻辑模型求解7.6.1完备的回溯算法7.6…

MySQL主从延时问题

过线上 MySQL 维护经验的童鞋都知道&#xff0c;主从延迟往往是一个让人头疼不已的问题。 不仅仅是其造成的潜在问题比较严重&#xff0c;而且主从延迟原因的定位尤其考量 DBA 的综合能力&#xff1a;既要熟悉复制的内部原理&#xff0c;又能解读主机层面的资源使用情况&#…

使用PHP编写采集药品官方数据的程序

目录 一、引言 二、程序设计和实现 1、确定采集目标 2、使用PHP的cURL库进行数据采集 3、解析JSON数据 4、数据处理和存储 5、数据验证和清理 6、数据输出和可视化 7、数据分析和挖掘 三、注意事项 1、合法性原则 2、准确性原则 3、完整性原则 4、隐私保护原则 …

如何在 Windows 10/11 上高质量地将 WAV 转换为 MP3

WAV 几乎完全准确地存储了录音硬件所听到的内容&#xff0c;这使得它变得很大并占用了更多的存储空间。因此&#xff0c;WAV 格式在作为电子邮件附件发送、保存在便携式音频播放器上、通过蓝牙或互联网从一台设备传输到另一台设备等时可能无法正常工作。 如果您遇到 WAV 问题&…

【Android Studio调试报错】setContentView(R.layout.activity_main);

报错如下&#xff1a; 解决方法&#xff1a; 1、把参数删除到只剩 .&#xff0c;用自动补齐的方式来查看当前文件的位置是不是&#xff0c;当前左侧工程中layout 所在的位置。在的话它会在自动补齐列表有选项。否则我们选中第一个。 2、选中之后是这样的 然后问题解决&#xf…

飞天使-url路由进阶应用

url 的name属性 为 app01的url设定命名空间 app_name app01urlpatterns [path(, views.index, nameindex),path(login/, views.login, namelogin), ] 上面的namelogin 同时 from django.shortcuts import render,reverse,redirect 便于项目引用 def index(request):userna…

spring cloud-注册中心(Eureka)

一、服务注册中心组件(*) 定义&#xff1a;服务注册中心就是在整个微服务架构单独抽取一个服务&#xff0c;该服务不做项目中任何业务功能&#xff0c;仅用来在微服务中记录微服务、对微服务进行健康状态检查&#xff0c;及服务元数据信息存储常用的注册中心&#xff1a;eurek…

用placement label代替keep margin解决绕线问题

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 通常我们用keepout margin去降低多pin cell类型的密度&#xff0c;这里提供一种替代方案&#xff0c;即使用placement label。好处是只限制多pin cell彼此间距&#xff0c;不会…

echarts官网卡?

全网echarts案例资源大总结和echarts的高效使用技巧&#xff08;细节版&#xff09; - 掘金 drawnLine() {let myChart echarts.init(document.getElementById("grade"));// 绘制图表myChart.setOption({title: {left: "center",},tooltip: {trigger: &qu…

2023.11.13 Spring Bean 的生命周期

目录 Spring 执行流程 Bean 的生命周期 五个阶段 深入理解 Bean 初始化 实例理解 总结梳理 经典面试题 Spring 执行流程 Bean 的生命周期 Spring 中 Bean 的生命周就是 Bean 在 Spring 中从创建到销毁的整个过程 五个阶段 1. 实例化 Bean 为 Bean 对象分配内存空间 …

千万富翁分享:消费多少免单多少,电商运营高手实战秘籍拆解

千万富翁分享&#xff1a;消费多少免单多少&#xff0c;电商运营高手实战秘籍拆解 后疫情时代&#xff0c;国内电商圈层进程依然是在高速发展阶段&#xff0c;今年2023年双十一也彻底落下帷幕&#xff0c;但这次相较于往常却没有公布具体的成交规模数据&#xff0c;那么&#x…

程序员,你的护城河挖好了吗?

程序员的护城河 在遥远的古代&#xff0c;护城河是一种防御工事&#xff0c;通常用于保护城市或城堡免受外部攻击。它是由人工挖掘或天然形成的河流、壕沟或城墙等&#xff0c;可以作为防御屏障&#xff0c;阻止敌人的进入。 而对于程序员而言&#xff0c;“护城河”是一种比喻…

Linux线程池

文章目录&#xff1a; 线程池了解线程池模拟实现 线程池了解 线程池是一种常见的线程使用模式。线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能。而线程池维护着多个线程&#xff0c;等待着监督管理者分配可并发执行的任务&#xff0c;以避免在处理短时间任…

Word或者WPS批量调整文中图片大小的快捷方法

文章目录 0、前言1、编写宏代码2、在文档中调用宏实现一键批量调整3、就这么简单&#xff01; 0、前言 不知道大家是不是也和我一样&#xff0c;经常需要在编写的Word&#xff08;或者WPS&#xff09;文档里插入大量的图片&#xff0c;但是这些图片的尺寸大小一般都不一样&…
最新文章