【TB作品】51单片机 Proteus仿真00016 乒乓球游戏机

课题任务
本课题任务
(联机乒乓球游戏)如下图所示:
同步显示
oo
8个LED
ooooo
oo
ooooo
8个LED
单片机
单片机
按键
主机
从机
按键
设计题目:两机联机乒乓球游戏
图1课题任务示意图
具体说明:
共有两个单片机,每个单片机接8个LED和1
个按键,两个单片机使用串口连接。
(2)单片机A为主机,控制8个LED灯的亮灭情
况。单片机B为从机,8个LED需要与A机
同步显示。
8个LED灯最多只有一个灯亮,并以走马灯
形式左右移动。
当走马灯移动到最左边时A机按键按下灯反
弹向右边,若失败灯全灭;灯移动到最右
边时B机按键按下灯反弹向左边,若失败灯
全灭。如果提早按下按键,也会失败灯全
灭。
选做:自己设计额外功能(重开局、加速等
功能),并在这里描述功能。
2.设计思路与方案框图
介绍本课题的设计思路(讲清楚要如何实现同
步显示、B机按键如何影响LED、如何控制LED
移动、如何判断失败等功能的思路)。整个代
码划分为哪些模块,以及整体的模块框图(模
块间的关系)。
电路设计
在这里放置proteus仿真电路图,并配合文字介
绍各器件功能和作用。
程序设计
详细描述A/B两机各个模块程序的实现方法(串
口/波特率设置等),包含文字描述、伪代码或
程序流程图。
测试结果与结论
5.
进行了什么测试,测试了多少情况下的截图和
文字说明,根据测试得出结论:设计是否功能
正确且完整?
总结
最后对本课题的设计进行总结和自我评价(自
己觉得做得好不好,有没有什么缺陷)。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

实验报告: 两机联机乒乓球游戏

1. 课题任务

1.1 任务描述

本课题任务是设计一个联机乒乓球游戏,使用两台单片机,每台单片机接8个LED和一个按键,两个单片机通过串口连接实现同步显示和控制。具体要求如下:

  • 主机(A机)控制8个LED灯的亮灭情况,从机(B机)8个LED需要与A机同步显示。
  • 8个LED灯最多只有一个灯亮,并以走马灯形式左右移动。
  • 当走马灯移动到最左边时A机按键按下,灯反弹向右边,若失败灯全灭;灯移动到最右边时B机按键按下,灯反弹向左边,若失败灯全灭。提早按下按键,灯也会全灭。

1.2 选做功能

  • 设计额外功能,如重开局、加速等。

2. 设计思路与方案框图

2.1 设计思路

  • 同步显示: 通过串口通信实现A机和B机的LED灯状态同步。A机负责控制灯的移动并通过串口发送当前灯的状态到B机。
  • B机按键影响LED: B机通过检测按键状态,将检测结果发送回A机。A机根据接收到的按键状态决定LED灯的移动方向或全灭。
  • LED移动控制: A机控制LED灯以走马灯形式左右移动,并在按键按下时反弹。
  • 失败判断: A机和B机分别检测灯的位置和按键状态,若按键按下时灯不在相应位置,判定为失败并全灭LED。

2.2 模块划分及框图

整个系统划分为以下模块:

  • 串口通信模块
  • LED控制模块
  • 按键检测模块
  • 状态处理模块
+-------------------+
|      主机 A       |
| +---------------+ |
| | LED控制模块   |<---按键检测模块
| +---------------+ |
|         |         |
|         v         |
| +---------------+ |
| | 串口通信模块 |<-->串口通信
| +---------------+ |
+-------------------+|v
+-------------------+
|      从机 B       |
| +---------------+ |
| | LED同步模块   |<---按键检测模块
| +---------------+ |
|         |         |
|         v         |
| +---------------+ |
| | 串口通信模块 |<-->串口通信
| +---------------+ |
+-------------------+

3. 电路设计

3.1 电路图

(此处应插入Proteus仿真电路图)

3.2 器件功能介绍

  • 单片机: 用于控制LED的亮灭和处理按键输入。
  • LED: 显示灯的状态。
  • 按键: 用于控制灯的反弹。
  • 串口连接: 实现两台单片机之间的数据通信。

4. 程序设计

4.1 串口初始化

使用如下参数进行串口初始化:

  • 晶振频率:11.0592MHz
  • 波特率:9600bps
代码描述
#define FSOC 11059200L
#define BAUD 9600void UartInit(void) {SCON = 0x50;  // 8位UART,允许接收TMOD = 0x20;  // T1工作于方式2TH1 = -(FSOC / BAUD / 12 / 16);  // T1计数初值TL1 = -(FSOC / BAUD / 12 / 16);PCON = 0x80;  // 双倍速率RI = 0;TI = 0;ES = 1;  // 开启串口中断EA = 1;  // 开启总中断
}

4.2 LED控制模块

主机A控制LED灯的移动,当检测到按键按下时,改变灯的移动方向。

代码描述
sbit S0 = P1 ^ 0;  // 定义按键输入void main() {UartInit();while (1) {if (S0 == 0) {send('1');  // 按键按下发送1while (S0 == 0);  // 等待按键释放}}
}

4.3 按键检测模块

从机B检测按键状态并将结果发送回主机A。

代码描述
unsigned char Txd_data;void Uart_isr() interrupt 4 {if (RI) {Txd_data = SBUF;  // 读入缓冲区RI = 0;  // 清标志P2 = Txd_data;  // 显示接收到的数据}
}

5. 测试结果与结论

5.1 测试过程

  • 测试A机控制LED灯的移动情况,确保LED灯以走马灯形式移动。
  • 测试B机同步显示A机的LED灯状态,确保同步准确。
  • 测试按键控制灯的反弹效果,确保按键操作准确反应。
  • 测试失败判定,确保按键误操作时灯全灭。

5.2 测试结果

  • 各模块功能均正常,LED灯移动、同步显示、按键控制、失败判定均实现预期功能。
  • 额外功能(如重开局、加速)测试正常。

6. 总结

本课题设计了一个两机联机乒乓球游戏,通过串口通信实现两台单片机的同步显示和控制。系统设计合理,功能实现完整。测试结果表明各模块工作正常,满足设计要求。通过本次实验,对单片机串口通信、LED控制和按键检测有了更深入的理解和掌握。在未来的设计中,可以考虑增加更多功能,如增加难度调节、计分系统等,以提升游戏的趣味性和挑战性。

资料

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

UE C++ 多镜头设置缩放 平移

一.整体思路 首先需要在 想要控制的躯体Pawn上&#xff0c;生成不同相机对应的SpringArm组件。其次是在Controller上&#xff0c;拿到这个Pawn&#xff0c;并在其中设置输入响应&#xff0c;并定义响应事件。响应事件里有指向Pawn的指针&#xff0c;并把Pawn的缩放平移功能进行…

处理训练和验证数据集

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…

C++和Python蚂蚁搬食和蚊虫趋光性和浮标机群行为算法神经网络

&#x1f3af;要点 &#x1f3af;机器人群行为配置和C行为实现&#xff1a;&#x1f58a;脚底机器人狭隘空间导航避让障碍物行为 | &#x1f58a;脚底机器人使用摄像头耦合共振&#xff0c;实现同步动作 | &#x1f58a;脚底机器群使用相机&#xff0c;计算彼此间“分子间势能…

Docker——简介、安装(Ubuntu22.04)

1、简介 Docker 是一个开源的容器化平台&#xff0c;旨在简化应用程序的开发、交付和运行。它通过将应用程序及其所有依赖项打包到一个称为容器的标准化单元中&#xff0c;使应用程序能够在任何环境中一致地运行。Docker 解决了“在我的机器上能运行”的问题&#xff0c;使开发…

8、开发与大模型对话的独立语音设备

一、设计原理 该系统的核心部分主要由ESP32-WROVER开发板和ESP32-CAM摄像头、MAX9814麦克风放大器模块、MAX98357功放、声音传感器和SU-03T语音识别芯片构成。通过使用ESP32-WROVER开发板,用户可以实现通过语音与ai进行交互并进行人脸识别。 系统中,从外部输入电源中获取电源…

计算机网络-组播分发树与组播协议

一、组播分发树 前面我们大致了解了下组播的转发原理&#xff0c;通过RPF反向路径检查可以形成无环的组播转发路径&#xff0c;今天继续学习下组播分发树和组播协议。 组播数据转发需要保证转发路径无环&#xff0c;无次优路径且无重复包。通过RPF机制与组播路由协议&#xff0…

王老师 linux c++ 通信架构 笔记(一)

&#xff08;0&#xff09;本门课程会涉及很多知识。在此集中记录&#xff0c;做笔记&#xff0c;也可能加入别的专栏。 &#xff08;1&#xff09; vmware 15 的下载和密钥上网查找。 ubuntu - 16 - 04 的版本才 800 M &#xff0c;来 csdn 找镜像 下载。 &#xff08;2&#…

React Native 和 Flutter 的开发对比

React Native (RN) 和 Flutter 都是用于构建跨平台移动应用程序的流行框架。两者都具有各自的优势和劣势&#xff0c;选择哪个框架取决于您的具体需求和项目。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 以下是一些 RN 和 Flutter…

1012-27SF 同轴连接器

型号简介 1012-27SF是Southwest Microwave的2.92 mm连接器。该连接器使用不锈钢合金外壳和镀金接触表面提供了良好的耐腐蚀性和耐磨损性&#xff0c;延长了连接器的使用寿命。适用于高频应用&#xff0c;最高可达 40 GHz&#xff0c;使其适用于微波和射频通信、雷达系统等领域。…

VMware Workstation桥接模式无法上网

问题背景 我之前创建过一个虚拟机&#xff0c;当时虚拟机的网络模式使用的是桥接模式&#xff0c;配置好了固定ip地址&#xff0c;是可以正常上网的&#xff0c;中间没有做任何网络上面的配置。但是今天再打开这台虚拟机时&#xff0c;发现竟然不能上网了。 物理主机的ip信息配…

【掌握C++ string 类】——【高效字符串操作】的【现代编程艺术】

专栏&#xff1a;C学习笔记 上一篇&#xff1a;【C】——【 STL简介】——【详细讲解】 1. 为什么要学习 string 类&#xff1f; 1.1 C 语言中的字符串 在 C 语言中&#xff0c;字符串是以 \0 结尾的字符集合。如下所示&#xff1a; #include <stdio.h>int main() {c…

AI产品经理必懂的13种技术

AI产品经理和互联网产品经理一样&#xff0c;也会面临要不要懂技术&#xff0c;懂什么技术&#xff0c;到什么程度的问题&#xff0c;本章针对这一常见问题给出了解答。 AI产品经理一定要懂技术&#xff0c;懂技术重点是要懂产品方案包含的AI算法、数据、算力及硬件的相关技术…

nftables(2)表、链、规则查询和管理(新增、插入、修改、删除)

简介 在上篇文章中&#xff0c;我们介绍了nftables基本原理以及与iptables的区别&#xff0c;nftables安装和配置保存的操作。这篇文章主要介绍nftables的基本操作&#xff0c;表、链、规则的新增、插入、修改、删除等操作。 注意&#xff1a;在进行nftables实验时和iptables…

AI自动生成PPT怎么用?看完这篇文章你就知道啦

小暑&#xff0c;作为夏季的第五个节气&#xff0c;标志着炎炎夏日的正式到来。在这个时节&#xff0c;阳光明媚&#xff0c;万物生长&#xff0c;人们的心情也随着气温的升高而变得热烈。 然而&#xff0c;对于许多职场人士来说&#xff0c;小暑的到来也意味着需要准备各种汇报…

spark shuffle写操作——SortShuffleWriter

写入的简单流程&#xff1a; 1.生成ExternalSorter对象 2.将消息都是插入ExternalSorter对象中 3.获取到mapOutputWriter&#xff0c;将中间产生的临时文件合并到一个临时文件 4.生成最后的data文件和index文件 可以看到写入的重点类是ExternalSorter对象 ExternalSorter 基…

包装类的128陷阱

我们先看一段代码 Integer num1100; Integer num2100; System.out.println(num1 num2); //trueInteger num3128; Integer num4128; System.out.println(num3 num4); //false 在执行之后&#xff0c;我们会发现num1num2是true&#xff0c;而num3num4却是false&#xff0c;…

Thingsboard 系列之通过 ESP8266+MQTT 模拟设备上报数据到平台

前置工作 Thingsboard平台ESP 8266 NodeMCU 开发板IDE&#xff1a; Arduino 或 VScode 均可 服务端具体对接流程 系统管理员账号通过 Thingsboard 控制面板创建租户等信息并以租户账号登录 实体 —> 设备维护具体设备信息 创建完成后通过管理凭据修改或直接复制访问令牌…

实力上榜!Coremail连续5年入选中国网络安全市场全景图

7月4日&#xff0c;网络安全行业研究机构数说安全正式发布《2024年中国网络安全市场全景图》&#xff08;以下简称“全景图”&#xff09;&#xff0c;这是自2018年开始&#xff0c;数说安全发布的第七版全景图。 作为国内头部电子邮件产品与解决方案提供商&#xff0c;Coremai…

Linux基础: 二. Linux的目录和文件

文章目录 二. Linux的目录和文件1.1 目录概要1.2 目录详细说明 二. Linux的目录和文件 1.1 目录概要 command&#xff1a;ls / Linux的文件系统像一棵树一样&#xff0c;树干是根目录&#xff08;/&#xff09;&#xff0c;树枝是子目录&#xff0c;树叶是文件&#xff1b; …

Qt 网络编程实战

一.获取主机的网络信息 需要添加network模块 QT core gui network主要涉及的类分析 QHostInfo类 QHostInfo::localHostName() 获取本地的主机名QHostInfo::fromName(const QString &) 获取指定主机的主机信息 addresses接口 QNetworkInterface类 QNetworkInterfac…