课题任务
本课题任务
(联机乒乓球游戏)如下图所示:
同步显示
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.
进行了什么测试,测试了多少情况下的截图和
文字说明,根据测试得出结论:设计是否功能
正确且完整?
总结
最后对本课题的设计进行总结和自我评价(自
己觉得做得好不好,有没有什么缺陷)。
本课题任务是设计一个联机乒乓球游戏,使用两台单片机,每台单片机接8个LED和一个按键,两个单片机通过串口连接实现同步显示和控制。具体要求如下:
整个系统划分为以下模块:
+-------------------+ | 主机 A | | +---------------+ | | | LED控制模块 |<---按键检测模块 | +---------------+ | | | | | v | | +---------------+ | | | 串口通信模块 |<-->串口通信 | +---------------+ | +-------------------+ | v +-------------------+ | 从机 B | | +---------------+ | | | LED同步模块 |<---按键检测模块 | +---------------+ | | | | | v | | +---------------+ | | | 串口通信模块 |<-->串口通信 | +---------------+ | +-------------------+
(此处应插入Proteus仿真电路图)
使用如下参数进行串口初始化:
#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; // 开启总中断 }
主机A控制LED灯的移动,当检测到按键按下时,改变灯的移动方向。
sbit S0 = P1 ^ 0; // 定义按键输入 void main() { UartInit(); while (1) { if (S0 == 0) { send('1'); // 按键按下发送1 while (S0 == 0); // 等待按键释放 } } }
从机B检测按键状态并将结果发送回主机A。
unsigned char Txd_data; void Uart_isr() interrupt 4 { if (RI) { Txd_data = SBUF; // 读入缓冲区 RI = 0; // 清标志 P2 = Txd_data; // 显示接收到的数据 } }
本课题设计了一个两机联机乒乓球游戏,通过串口通信实现两台单片机的同步显示和控制。系统设计合理,功能实现完整。测试结果表明各模块工作正常,满足设计要求。通过本次实验,对单片机串口通信、LED控制和按键检测有了更深入的理解和掌握。在未来的设计中,可以考虑增加更多功能,如增加难度调节、计分系统等,以提升游戏的趣味性和挑战性。
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2