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

一、 设计目的

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

二、 预期功能及创新

1. 预期功能:

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

三、 设计流程

STC实训(EP1C3)——多控制贪吃蛇_第1张图片具体原理部分请见下载报告:https://download.csdn.net/download/forest_one/12248816

五、 实现及关键代码

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

变量定义
在这里插入图片描述
程序函数
STC实训(EP1C3)——多控制贪吃蛇_第6张图片
关键代码

  ucDateTmp 用来存储从上位机发送到下位机的数据,在一定条件下,使用 SendData发送控制指令到上位机。
STC实训(EP1C3)——多控制贪吃蛇_第7张图片
STC实训(EP1C3)——多控制贪吃蛇_第8张图片
2. 三轴加速度传感器

2.1 引脚定义
在这里插入图片描述
2.2 变量定义
STC实训(EP1C3)——多控制贪吃蛇_第9张图片
2.3 程序函数
STC实训(EP1C3)——多控制贪吃蛇_第10张图片
2.4 关键代码

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

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

  通过 GetADC()函数查询 A/D 转换的结果,通过转换结果的不同判断导航键哪个方向键被按下,并发送相应指令到上位机,由上位机做出响应,实现控制。
STC实训(EP1C3)——多控制贪吃蛇_第12张图片
STC实训(EP1C3)——多控制贪吃蛇_第13张图片
4. 振动传感器

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

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

  在一定条件下,利用 switch 语句进行循环动态扫描点亮数码管的相应位置,进行不同信息的展示。
在这里插入图片描述
STC实训(EP1C3)——多控制贪吃蛇_第14张图片
6. 蜂鸣器

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

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

7. 按键

7.1 引脚定义
在这里插入图片描述
7.2 变量定义
STC实训(EP1C3)——多控制贪吃蛇_第15张图片
7.3 关键代码

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

STC实训(EP1C3)——多控制贪吃蛇_第16张图片

六、 操作说明

具体操作流程图如下 :
STC实训(EP1C3)——多控制贪吃蛇_第17张图片
操作说明

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

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

七、 测试验证

  • ① 下载烧写程序。
    STC实训(EP1C3)——多控制贪吃蛇_第18张图片
  • ② 完成下载后,下位机 LED 数码管显示“hold . . . .”。
    STC实训(EP1C3)——多控制贪吃蛇_第19张图片
  • ③ 打开上位机串口设置——打开串口,下位机 LED 数码管显示“CHOOSE . .”。按下K1 键选定导航键方向控制,按下 K2 键选定三轴加速度传感方向控制。
    STC实训(EP1C3)——多控制贪吃蛇_第20张图片
    STC实训(EP1C3)——多控制贪吃蛇_第21张图片
  • ④ 下位机 LED 数码管显示“SPEED8-1”。LED 数码管对速度、方向等信息进行展示,第 6 位显示速度值,第 8 位显示方向。
    STC实训(EP1C3)——多控制贪吃蛇_第22张图片
  • ⑤ 上位机操作页面——实现下位机对上位机进行控制
    STC实训(EP1C3)——多控制贪吃蛇_第23张图片

你可能感兴趣的:(实验)