目录
一、设计目的........................................................ 2
二、预期功能及创新.................................................. 2
三、设计流程........................................................ 3
四、硬件原理........................................................ 3
1.三轴加速度传感器 ....................................................... 3
2.导航按键 ............................................................... 6
3.振动传感器 ............................................................. 8
4.LED 数码管 ............................................................. 9
5.蜂鸣器 ................................................................ 10
6.按键 .................................................................. 11
五、实现及关键代码................................................. 12
1.上位机及下位机通信 .................................................... 12
2.三轴加速度传感器 ...................................................... 15
3.导航按键 .............................................................. 16
4.振动传感器 ............................................................ 17
5.数码管 ................................................................ 17
6.蜂鸣器 ................................................................ 18
7.按键 .................................................................. 18
六、操作说明....................................................... 20
七、测试验证....................................................... 21
八、日志 .......................................................... 23
九、总结思考....................................................... 23
十、附录 .......................................................... 24
STC 设计课程实验报告
一、 设计目的
本次项目设计旨在通过综合使用三轴加速度传感器、数码管、蜂鸣器、导
航键、按键、振动传感器等元件,基于上位机与下位机之间的通信和数据交互,
利用下位机完成对上位机游戏——贪吃蛇的多种方式控制,并在此基础上,可
对多种上位机软件进行拓展操作。
在项目整体的设计过程中熟悉“EP1C3 学习板”的相关知识,学习三轴加速
度、振动传感器以及导航按键的工作原理,依据具体需求进行详细设计,并了
解通信协议,在上位机的设计过程中学习串口通信的相关知识。
二、 预期功能及创新
1. 预期功能:
① 使用数码管、蜂鸣器等模块进行信息展示,如连接状态显示及提示、当前速
度显示、方向指示等;
② 利用三轴加速度传感器、振动传感器、导航键等对上位机——贪吃蛇游戏进
行控制操作。
2. 创新:
① 实现下位机与上位机的相互通信及数据交互;
② 利用三轴加速度模拟方向控制,实现具体操作。
2 / 24
STC 设计课程实验报告
三、 设计流程
四、 硬件原理
1. 三轴加速度传感器
1.1 原理说明
三轴加速度传感器 ADXL345 通过 IIC_SCL 和 IIC_SDA 与单片机相连,单片机以 IIC
总线的方式对 ADXL345 进行读写。
3 / 24
上位机软件串口监听串口通信模块导航键三轴加速度传感器振动传感器LED数码管显示hold未连接状态CHOOSE模式选择速度及方向显示ADC转化查询三按键通信中断ICC总线读写按键消抖振动延时ADXL345Gui页面设计串口通信游戏设计
STC 设计课程实验报告
1.2 ADXL345 原理简述
ADXL345 是一款完整的 3 轴加速度测量系统,既可以测量运动或冲击导致的动态加
速度,也能测量静止加速度,例如重力加速度,使得器件可作为倾斜传感器使用。
4 / 24
STC 设计课程实验报告
初始化时,ADXL345 在启动序列期间工作在 100 Hz ODR,在 INT1 引脚上有 DATA_READY
中断。设置其它中断或使用 FIFO 时,建议所使用的寄存器在 POWER_CTL 和 INT_ENABLE
寄存器之前进行设置。
读取数据时,DATA_READY 中断信号表明数据寄存器中的三轴加速度数据已被更新。
当新数据就绪时它会被置为高电平。(通过 DATA_FORMAT 寄存器,中断信号可设置为由
低电平变为高电平)利用低-高跃迁来触发中断服务例程。可从 DATAX0、DATAX1、DATAY0、
DATAY1、DATAZ0 和 DATAZ1 寄存器中读取数据。为了确保数据的一致性,推荐使用多字
节读取从 ADXL345 获取数据。
ADXL345 为 16 位数据格式。从数据寄存器中获取加速度数据后,用户必须对数据进
行重建。
DATAX0 是 X 轴加速度的低字节寄存器,DATAX1 是高字节寄存器。在 13 位模式下高
4 位是符号位。注意,可通过 DATA_FORMAT 寄存器设置其它数据格式 POWER_CTL 和
INT_ENABLE 寄存器之前进行设置。
同时 ADXL345 具有偏移寄存器,可进行偏移校准。偏移寄存器的数据格式是 8 位、
二进制补码。偏移寄存器的分辨率为 15.6 mg/LSB。如果偏移校准的精度必须高于 15.6
mg/LSB,需要在处理器中进行校准。偏移寄存器将写入到寄存器的值相加来测试加速度。
例如,如果偏移为+156 mg,那么应该往偏移寄存器写入−156 mg。
1.3 I2C 总线介绍
I2C(Inter-Integrated Circuit)总线是由 PHILIPS 公司开发的两线式串行总线,
用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它
是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速
率较高等优点。I2C 总线硬件结构图如下:
5 / 24
STC 设计课程实验报告
SCL 是时钟线,SDA 是数据线。
I2C 总线信号包括有,启始信号,停止信号和应答信号,在程序用分别用函数 void
start()、void stop()、void respons()表示。
2. 导航按键
2.1 原理说明
导航按键在下图的标注为 MINI_KEY5,导航按键的每一个方向被按下,都会引起实际电压的改
变,从而可以根据这个原理,与 A/D 转换器配合,可以判断哪个方位被按下,获取按下后 A/D 转换
的结果。
6 / 24
STC 设计课程实验报告
2.3 A/D 数据采集电路及采集步骤说明
A/D 转换器结构如下图
ADC 由多路选择开关、比较器、逐次比较寄存器、10 位 ADC、转换结果寄存器(ADC_RES
和 ADC_RESL)以及 ADC_CONTR 构成。
逐次比较型 ADC 由一个比较起和 D/A 转换器构成,通过逐次比较逻辑,从最高位
(MSB)开始,顺序地对每一输入电压与内置 D/A 转换器输出进行比较,经过多次比较,
使转换所得的数字量逐次逼近输入模拟量对应值。逐次比较型 A/D 转换器具有速度高,
功耗低等优点。
从上图可见看出,通过模拟多路开关,将通过 ADC 0-7 的模拟量输入送给比较器。
用数/模转换器(DAC)转换的模拟量与输入的模拟量通过比较器进行比较,将比较结果
保存到逐次比较寄存器,并通过逐次比较寄存器输出转换结果。A/D 转换结束后,最终
的转换结果保存到 ADC 转换结果寄存器 ADC_RES 和 ADC_RESL,同时,置位 ADC 控制寄存
器 ADC_ADC_CONTR 中的 A/D 转换结束标志位 ADC_FLAG,以供程序查询或发出中断申请。
ADC 数据采集的步骤:
① 将 ADC 0-7 的模拟量送到比较器中,用 DAC(数/模转换器)转换的模拟量与输入的模
拟量通过比较器进行比较。
② 转换结束后,将比较结果放入转换结果寄存器(ADC_RES 和 ADC_RESL)。
③ 同时,需要将 ADC_FLAG 软件清零。
7 / 24
④ 硬件会自动将 ADC_START 清零,如果需要进行下一次转换,则需要将 ADC_START 置
STC 设计课程实验报告
位。
特别说明:
① 数码管所显示的 ADC 转换结果并不是电压值,而是电压进行转换后所得的一个值。
如果需要实际的电压值可以参照下图公式进行计算得出。
② ADC 转换结果是一个 10 位数据,若 ADRJ=0,则 ADC_RES 存放高八位,ADC_RESL 存放
低两位。若 ADRJ=1,则 ADC_RESL 存放高八位,ADC_RES 存放低两位。本案例采用的
是 ADRJ=0,而且只取了高八位结果。
3. 振动传感器
3.1 原理说明
振动传感器是一种简单的器件,管内有一跟固定的导线,在这根导线的周围有另一
根较细的导线以螺旋状环绕它。可以想象为一个弹簧旁边有一跟导线。在不振动时,两
根导线不会相碰,一旦振动发生,两根导线就会短接。所以我们只需判断导线是否短接
了,就可以知道振动是否发生。振动传感器对应于 P2^4 端口,故只需要判断对应于 P2^4
的状态,就可以对振动传感器进行监控。
3.2 振动传感器电路
8 / 24