项目三十九 8X8点阵模块#
1.实验说明#
利用单片机驱动一个8*8点阵时,总共需要用到16个数字口,这样就极大的浪费单片机资料。为此,特别设计了这个模块,利用HT16K33芯片驱动1个8*8点阵,只需要利用单片机的I2C通信端口控制点阵,大大的节约了单片机资源。
模块兼容各种单片机控制板,如arduino系列单片机。使用时,可以在单片机上堆叠一个传感器扩展板。模块和自带导线连接,然后连接在传感器扩展板上,简单方便。模块上自带3个拨码开关,随意拨动开关,这I2C通信地址。设置方法如下表格。

同时,模块自带2个直径为3mm的定位孔,方便将模块固定在其他设备。
实验中让点阵显示出图案。
2.实验器材#
keyes brick 8*8点阵模块*1
keyes UNO R3开发板*1
传感器扩展板*1
4P双头XH2.54连接线*1
USB线*1
3.接线图#

4.测试代码#
#include <Matrix.h>//点阵的库
Matrix myMatrix(SDA, SCL);
uint8_t LEDArray[8];
const uint8_t LedArray1[8] PROGMEM = {0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x66, 0x00};//心形图案
void setup()
{
myMatrix.begin(0x70);//iic地址
myMatrix.clear();//清除显示
myMatrix.setBrightness(5);//亮度5,范围0~15
}
void loop()
{
memcpy_P(&LEDArray, &LedArray1, 8);
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
if ((LEDArray[i] & 0x01))
myMatrix.drawPixel(j, i, 1);
else
myMatrix.drawPixel(j, i, 0);
LEDArray[i] = LEDArray[i] >> 1;
}
}
myMatrix.write();
}
5.代码说明#
先导入库文件
代码中的图案是一个字节数据类型的数组构成,在下面的表格上表示出来。将{0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x66, 0x00}转化为二进制,填入下面的8*8表格就清晰了。其中1表示亮,0表示灭,可以看到是一个心形。

6.测试结果#
烧录好测试代码,按照接线图连接好线;上电后,点阵显示一个心形图案。