STC实训(EP1C3)——多控制贪吃蛇

一、 设计目的

  本次项目设计旨在通过综合使用三轴加速度传感器、数码管、蜂鸣器、导航键、按键、振动传感器等元件,基于上位机与下位机之间的通信和数据交互,利用下位机完成对上位机游戏——贪吃蛇的多种方式控制,并在此基础上,可对多种上位机软件进行拓展操作。
  在项目整体的设计过程中熟悉“EP1C3学习板”的相关知识,学习三轴加速度、振动传感器以及导航按键的工作原理,依据具体需求进行详细设计,并了解通信协议,在上位机的设计过程中学习串口通信的相关知识。

二、 预期功能及创新

1. 预期功能:

  • ① 使用数码管、蜂鸣器等模块进行信息展示,如连接状态显示及提示、当前速度显示、方向指示等;
  • ② 利用三轴加速度传感器、振动传感器、导航键等对上位机——贪吃蛇游戏进行控制操作。
    2. 创新:
  • ① 实现下位机与上位机的相互通信及数据交互;
  • ② 利用三轴加速度模拟方向控制,实现具体操作。

三、 设计流程

在这里插入图片描述具体原理部分请见下载报告:https://download.csdn.net/download/forest_one/12248816

五、 实现及关键代码

1. 上位机
在这里插入图片描述
  上位机原型为贪吃蛇游戏,通过 Java 语言进行设计,其中包含了 Snake、Controller、BottonPanel 等多个类。(项目文件标题处给出了下载地址)
在这里插入图片描述
  在贪吃蛇游戏的基础上,添加串口通信模块(如下图), 使得上位机与下位机实现相互通信,并在上位机设置串口监听,根据下位机发送的指令完成相应操作。
在这里插入图片描述
在这里插入图片描述
下位机通信

变量定义
在这里插入图片描述
程序函数
在这里插入图片描述
关键代码

  ucDateTmp 用来存储从上位机发送到下位机的数据,在一定条件下,使用 SendData发送控制指令到上位机。
在这里插入图片描述
在这里插入图片描述
2. 三轴加速度传感器

2.1 引脚定义
在这里插入图片描述
2.2 变量定义
在这里插入图片描述
2.3 程序函数
在这里插入图片描述
2.4 关键代码

  通过Multiple_Read_ADXL345()读出数据并使用display_angle()完成角度的转换,在进行判断时我们需要设定一定的触发区间(X、Y 轴< -40°或 >40°),当角度处于触发区间时,下位机会通过串口通信发送指令到上位机实现方向控制。
在这里插入图片描述
3. 导航按键

3.1 变量定义
在这里插入图片描述
3.2 程序函数
在这里插入图片描述
3.3 关键代码

  通过 GetADC()函数查询 A/D 转换的结果,通过转换结果的不同判断导航键哪个方向键被按下,并发送相应指令到上位机,由上位机做出响应,实现控制。
在这里插入图片描述
在这里插入图片描述
4. 振动传感器

4.1 变量定义
在这里插入图片描述
4.2 关键代码
  振动传感器的端口为 P3^4,通过对其端口的监控,判断振动传感器的状态,由于存在抖动现象,需要进行延时操作以防止避免多次发送重复指令。
在这里插入图片描述
5. 数码管

5.1 引脚定义
在这里插入图片描述
5.2 变量定义
在这里插入图片描述
5.3 程序函数
在这里插入图片描述
5.4 关键代码

  在一定条件下,利用 switch 语句进行循环动态扫描点亮数码管的相应位置,进行不同信息的展示。
在这里插入图片描述
在这里插入图片描述
6. 蜂鸣器

6.1 变量定义
在这里插入图片描述
6.2 关键代码

  无源蜂鸣器的端口为 P3^4,通过对其端口的操作,高低电平改变频率决定音调,高电平占空比决定音量,实现无源蜂鸣器的发声。
在这里插入图片描述

7. 按键

7.1 引脚定义
在这里插入图片描述
7.2 变量定义
在这里插入图片描述
7.3 关键代码

  为了消除按键的抖动,采用计数器的方法,进行消抖处理,且每完成一次操作,对计数变量进行初始化以达到每次操作的消抖。

在这里插入图片描述

六、 操作说明

具体操作流程图如下 :
在这里插入图片描述
操作说明

该项目下位机存在 4 种状态切换,具体如下:

  • ① 下载烧写程序。
  • ② 完成下载后,下位机 LED 数码管显示“hold . . . .”。此时,下位机处于待机状态,还未进行与上位机的连接操作,导航键及其他控制键操作无效。
  • ③ 打开上位机串口设置——打开串口,下位机 LED 数码管显示“CHOOSE . .”。当前页面要进行控制功能选择,按下 K1 键选定导航键方向控制,按下 K2 键选定三轴加速度传感方向控制。
  • ④ 下位机 LED 数码管显示“SPEED8-1”。LED 数码管对速度、方向等信息进行展示,第 6 位显示速度值,第 8 位显示方向。

七、 测试验证

  • ① 下载烧写程序。
    在这里插入图片描述
  • ② 完成下载后,下位机 LED 数码管显示“hold . . . .”。
    在这里插入图片描述
  • ③ 打开上位机串口设置——打开串口,下位机 LED 数码管显示“CHOOSE . .”。按下K1 键选定导航键方向控制,按下 K2 键选定三轴加速度传感方向控制。
    在这里插入图片描述
    在这里插入图片描述
  • ④ 下位机 LED 数码管显示“SPEED8-1”。LED 数码管对速度、方向等信息进行展示,第 6 位显示速度值,第 8 位显示方向。
    在这里插入图片描述
  • ⑤ 上位机操作页面——实现下位机对上位机进行控制
    在这里插入图片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章