关于旅游类网站建设设计方案,校园网站建设说明书,化工材料 技术支持 东莞网站建设,美篇相册制作免费下载appHT1632C是一款很常用的LED(数码管或点阵)驱动芯片#xff0c;虽然官方已经宣布该芯片明年(2021年)即将寿终正寝(停产)#xff0c;但是相同厂家生产的同系列芯片的控制方式通常是相同的(事实上#xff0c;大多数LED驱动芯片差别也不大)#xff0c;所以了解HT1632C的控制原理…HT1632C是一款很常用的LED(数码管或点阵)驱动芯片虽然官方已经宣布该芯片明年(2021年)即将寿终正寝(停产)但是相同厂家生产的同系列芯片的控制方式通常是相同的(事实上大多数LED驱动芯片差别也不大)所以了解HT1632C的控制原理对快速上手其它芯片也有一定的积极意义。HT1632C内部也有一片显存(DisplayRAM, DRAM)我们在文章《液晶显示模组LCD1602之指令篇(1)》中已经说过你往显存写什么屏幕上就会相应显示什么。这句话对于HT1632C(以及绝大多数显示器件驱动芯片)也是适用的所以我们首先需要明确LED显示状态与显存数据的对应(映射)关系。数据手册标记了下图所示的DRAM映射表。这张表是针对24个OUTBIT与16个COM的配置(32个OUTBIT与8个COM配置对应的映射表稍有不同有兴趣的读者可参考数据手册)这可以通过命令来设置你很快就会知道。另外我们还用红色位号(VD11、VD12、VD21、VD22)标记了4个数据位有分教 上表告诉我们如果OUTXX行与COMXX列交叉的单元格数据位为1则相应的LED就会被点亮反之则熄灭简单吧例如COM0列与OUT1行交叉数据位为1则VD12就会被点亮。当然前提是你的硬件电路是正确的我们就使用数据手册中的典型应用电路如下图所示我们标记了LED点阵左上角四个LED的位号VD11表示第1行第1列VD12表示第1行第2列其它依此类推。需要注意的是电路图中LED的位置相对于DRAM映射表旋转了90度所以VD11的状态应该取决于DRAM映射表中COM0与OUT0交叉的单元格数据位也就是地址0x00的D0位VD12的状态应该取决于DRAM映射表中COM0与OUT1交叉的单元格数据位也就是地址0x04的D0位对不对为了修改DRAM数据我们先来看看它的指令集如下图所示(红色框内的指令是后续将要使用到的)注意“ID”列在HT1632C被称为模式识别码简单的说它用来标记传输的串行数据的具体意义。HT1632C有4种模式识别码如下表所示我们来看看写DRAM数据时序(WriteData)如下图所示首先发送模式识别码“101”表示后续跟随的11位串行数据是往DRAM地址(7位)中写入数据(4位)。需要特别注意的是7位地址的最高位先发送而4位数据的最低位反而先发送。在众多使用串行通讯接口的控制器件中这可以说是比较“奇葩”的位序定义(正常逻辑来讲要么都是高位先行或都是低位先行)除非你定义的4位数据本身就是反过来的否则我们无法将地址与数据直接合并进行发送(必须先将位序反过来)。例如现在需要点亮VD22(对应地址0x4)那么往HT1632C发送的串行数据应该为0x2844(0b101_0000100_0100)而不是0x2842(0b101_0000100_0010)。发送命令的时序如下图所示往HT1632C写命令时发送的串行数据是模式识别码“100”9位具体的命令位总计12位(比写DRAM数据时少2位)。例如我们要打开LED驱动(LED ON)则需要发送的串行数据为0b100_0000_0011_x(x表示无效位即0x806或0x807)。还有连续写数据/命令以及读/改写数据的时序限于篇幅不再赘述有兴趣的读者可参考数据手册。咱们使用VisualCom软件平台来验证一下调出“基于HT1632C的24X16 LED点阵模组”后执行预置数据相应的仿真效果如下图所示该仿真器件的LED位置与电路图是一一对应的我们来看看相应的预置数据如下图所示预置数据的位序定义与时序完全一样例如第四条数据“806”就是我们刚刚介绍过的“打开LED驱动输出(LED ON)”指令。前面四条是初始化HD1632C的指令。我们首先将COM引脚配置为16个PMOS输出结构该配置的依据来源于前面的硬件电路图中最下方的提示“Common are PMOS open drain outputstructures”。由于电路中HT1632C使用了16个COM所以应该设置为16 PMOS结构设置为NMOS结构是无法点亮LED点阵的而如果设置为8 PMOS结构下半部分的LED将不会被点亮(PMOS与NMOS输出结构的具体区别可参考数据手册本文不再赘述)。其次我们把HT1632C配置为主模式因为从模式主要用于多芯片级联应用时我们的硬件电路只使用了一片HT1632C。再次我们打开了系统振荡器与LED驱动时序生成电路(默认处于关闭状态)因为动态扫描的时序都是基于振荡器产生的时钟芯片没有了时钟就相当于人的心脏没有跳动自然不可能驱动点阵模块显示任何信息。最后我们开启了LED驱动输出功能这样芯片输出才能发出扫描LED点阵驱动时序(默认处于关闭状态)。实际上我们还应该配置“使用片内RC振荡时钟源(RC)”但是由于上电后这一项是默认的所以这一项配置并不是必须的。执行完前面四条预置数据后DRAM中的数据就可以显示了接下来全部是写数据操作。为了显示16X16点阵字体的汉字“电”我们首先需要进行取模操作如下图所示因为每个DRAM地址中的4位数据对应4个COM(行)所以我们得纵向取模且每次只写入4位数据方向为从左到右、由上至下(见DRAM映射表中蓝色箭头方向)。DRAM地址0x00x3对应的字模数据都是0所以我们首先写入了4个0x0(尽管VisualCom软件平台已经将HT1632C的RAM数据全部初始化为0x0但实际应用时还是得重新写入这样可以避免芯片上电后DRAM出现随机数据)然后往DRAM地址 0x4写入了0x8。这里再次提醒一下字模的提取顺序是下高位这与前述DRAM映射表是对应的但是写入的串行数据中的4位DRAM数据是反过来的(低位先行)所以实际预置数据的低4位应该是0x1(你可以观察“内存窗口”中的DRAM数据与提取的字模数据是完全对应的)。读者可自行分析剩下的预置数据此处不再赘述。有些人可能会叫道这叫啥的VisualCom软件平台不是瞎编的嘛我在上面的命令表中可没有看到什么寄存器其实与HD44780一样我们给HT1632C发送命令就相当于设置一些寄存器只不过数据手册没有将它们像HD44780那样命名而已VisualCom软件平台为了方便我们观察芯片的状态做了一些额外的工作将这些寄存器提取出来了而已举个小例子我们对比一下“SYS OFF”与“SYS ON”指令就会发现只有一位是有差别的VisualCom软件平台显示的寄存器“SYS”就是这个数据位的状态(M/S表示Master/SlaveCOM表示COMMON OPTIONS, DUTY表示PWM DUTY)。