实验二十四 HT16K33_8X8点阵模块

实验二十四 HT16K33_8X8点阵模块#

img

实验说明

什么是点阵?我们用之前的方法一个IO口只能控制一个led,如果需要用更少的IO口控制更多的led怎么办呢,于是就有了点阵。

8X8点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1电平,某一列置0电平,则相应的二极管就亮;如要将第一个点点亮,则1脚接高电平a脚接低电平,则第一个点就亮了。实验中我们用点阵显示一些字符图案图案。

实验原理

如原理图所示,我们如果想要点亮第一行第一列的那个LED灯,只需要把C1置高电平,R1置电平它就亮了,如果我们想让第一行led全部点亮,那么我们让R1为低电平,C1~C8全部为高电平就可以了,原理非常简单。但是这样的话我们总共需要用到16个IO口,这样就极大的浪费单片机资源。为此,我们特别设计了这个模块,利用HT16K33芯片驱动1个8*8点阵,只需要利用单片机的I2C通信端口控制点阵,大大的节约了单片机资源。

image-20260421194821929

有些模块上自带3个拨码开关,可以让你随意拨动开关,这是用来设置I2C通信地址的。设置方法如下表格。我们的这个模块中,模块已经固定了通信地址,A0,A1,A2全部接地,即地址为0x70.

A0(1)

A1(2)

A2(3)

A0(1)

A1(2)

A2(3)

A0(1)

A1(2)

A2(3)

0(OFF)

0(OFF)

0(OFF)

1(ON)

0(OFF)

0(OFF)

0(OFF)

1(ON)

0(OFF)

OX70

OX71

OX72

A0(1)

A1(2)

A2(3)

A0(1)

A1(2)

A2(3)

A0(1)

A1(2)

A2(3)

1(ON)

1(ON)

0(OFF)

0(OFF)

0(OFF)

1(ON)

1(ON)

0(OFF)

1(ON)

OX73

OX74

OX75

A0(1)

A1(2)

A2(3)

A0(1)

A1(2)

A2(3)

0(OFF)

1(ON)

1(ON)

1(ON)

1(ON)

1(ON)

OX76

OX77

实验器材

img

img

img

img

img

Raspberry Pi Pico板*1

Raspberry Pi Pico扩展板*1

keyes DIY电 积木 HT16K33_8X8点阵模块*1

防反插4Pin*1

MicroUSB线*1

接线图

img

测试代码

/*

  Keyes Starter Kit for Raspberry Pi Pico

  lesson 24

  HT16K33 8\*8 dot matrix

*/

#include <Matrix.h>//点阵的库

 

Matrix myMatrix(20, 21);

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(); //显示

 

}

代码说明

  1. 首先我们需要先导入库文件

  2. 我们代码中的图案是一个字节数据类型的数组构成,我们在下面的表格上表示出来。

我们将{0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x66, 0x00}转化为二进制,填入下面的8*8表格就清晰了。其中1表示亮,0表示灭,我们可以看到是一个心形。

0

0

0

0

0

0

0

0

0

0

0

1

1

0

0

0

0

0

1

1

1

1

0

0

0

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

0

1

1

0

0

1

1

0

0

0

0

0

0

0

0

0

测试结果

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

img