2024-09-01
售卖作品
00

目录

实验报告: 两机联机乒乓球游戏
1. 课题任务
1.1 任务描述
1.2 选做功能
2. 设计思路与方案框图
2.1 设计思路
2.2 模块划分及框图
3. 电路设计
3.1 电路图
3.2 器件功能介绍
4. 程序设计
4.1 串口初始化
代码描述
4.2 LED控制模块
代码描述
4.3 按键检测模块
代码描述
5. 测试结果与结论
5.1 测试过程
5.2 测试结果
6. 总结
资料

课题任务

本课题任务

(联机乒乓球游戏)如下图所示:

同步显示

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两机各个模块程序的实现方法(串

口/波特率设置等),包含文字描述、伪代码或

程序流程图。

测试结果与结论

进行了什么测试,测试了多少情况下的截图和

文字说明,根据测试得出结论:设计是否功能

正确且完整?

总结

最后对本课题的设计进行总结和自我评价(自

己觉得做得好不好,有没有什么缺陷)。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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控制模块

  • 按键检测模块

  • 状态处理模块

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

3. 电路设计

3.1 电路图

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

3.2 器件功能介绍

  • 单片机: 用于控制LED的亮灭和处理按键输入。

  • LED: 显示灯的状态。

  • 按键: 用于控制灯的反弹。

  • 串口连接: 实现两台单片机之间的数据通信。

4. 程序设计

4.1 串口初始化

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

  • 晶振频率:11.0592MHz

  • 波特率:9600bps

代码描述

c
#define FSOC 11059200L #define BAUD 9600 void UartInit(void) { SCON = 0x50; // 8位UART,允许接收 TMOD = 0x20; // T1工作于方式2 TH1 = -(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灯的移动,当检测到按键按下时,改变灯的移动方向。

代码描述

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

4.3 按键检测模块

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

代码描述

c
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
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!