MSP430F5529LP 开发实战(01)

(姑且让我使用这一个土得掉渣的名字)


下周的20号就是移动信息工程导论 Project 的 deadline。于是一鼓作气克服了种种困难,做出了一个贪吃蛇的小游戏。

本 Project 用到了以下模块:

  • MSP-EXP430F5529LP 开发板
  • 8×8 LED点阵模块,采用 MAX7219 芯片驱动
  • 16路触摸感应模块,采用 TTP229 芯片

首先要了解一下 MAX7219 这个驱动芯片。此芯片可驱动最多8位的8段数码管,当然也可以驱动8×8的 LED 点阵。

IMG_8669

上图即为本 Project 用到的点阵模块。图中有两个相同的模块。左侧的排针是输入接口,右边的排针是输出接口,可以连接下一级点阵模块做级联。排针由上至下定义为:VCC、GND、DIN、CS、CLK。右边排针与 DIN 对应的是 DOUT,连接下一级 DIN,其余与左侧定义相同。

当 CS 端口为低电平时,模块进入接收信号的状态。CLK 每置高一次接收一位由 DIN 传入的数据。每个模块每次需接收16位数据,前8位为地址位,后8位为数据位。当读取了新的数据时,旧的数据将从 DOUT 转发至下一级。

以下为模块的初始化函数:

其中, WRITE_2(unsigned char add, unsigned char DATA); 函数给两个模块写入相同的数据。

地址位的部分定义如下(大写 X 表示忽略此位):

  • 0xX0:无操作,即忽略数据位的内容;
  • 0xX1~0xX8:第一位数码管/第一行点阵~第八位数码管/第八行点阵;
  • 0xX9:设置解码模式;
  • 0xXA:设置亮度;
  • 0xXF:设置测试模式。

对于数据位,只要了解点阵/数码管的亮灭与二进制数据有关即可:某位为高位则点亮对应点/段。其他操作的定义可查看芯片说明书。

以下是写入数据的函数:

在使用时,每次给两个模块的一行写入数据。


16路感应触摸模块比较简单,当触摸按键1~8时,对应的 OUT1~8 即置高电平。一次只能有一路输出。当要用到9~16号按键时,需要参考原理图修改。

IMG_8668

按键输入检测这一部分比较简单,只需要检测相应 IO 接口是否有高电平输入。


贪吃蛇的实现请见下篇文章。

发表评论

电子邮件地址不会被公开。