HT1632C 驱动IC的使用技术总结(通俗易懂,入门)(附C51版本代码和Arduino代码)

【写在前面】 :此篇为我工作后第一篇自行书写的驱动IC使用方法的技术总结,完全是自己找资料一步步摸索出来的,现在分享给给位读着。阅读此篇你需要拥有的C51单片机或者Arduino的一些入门级知识,希望此篇能对你们的嵌入式之路有所帮助。
        HT1632C是一款很常用的LED(数码管或点阵)驱动芯片,工作电压2.4V 到5.5V,集成了16级PWM亮度控制,256kHz RC振荡器,以及串行MCU接口。可以使用8(公共端)×32 或1 6 (公共端)× 24 两种模式来驱动多颗L ED 灯。首先对该芯片的规格书进行查阅,图一为该芯片的管脚定义,其中COM为该芯片的公共端,而ROW为该芯片的输出端,而红色框框中的几个引出脚则是与此芯片建立通信的关键。

 

 图一  HT1632C芯片管脚定义                      图二 芯片结构框图

         图二可以了解到该芯片的大致结构,左侧由上到下进行说明——首先需要正负极进行供电(TIP:VCC=circuit 表示电路的意思, 即接入电路的电压; VDD:D=device 表示器件的意思, 即器件内部的工作电压; VSS:S=series 表示公共连接的意思,通常指电路公共接地端电压)。而“CS、RD、WR、DATA”为其他主控芯片和该芯片的通信交互接口,对其进行控制和定时,具体使用方法后面进行说明(需要提醒一下的是字母上端横线在电原理图中意味着这个端口是低电平有效,即低电平才可以使改引脚进行正常操作,且只有DATA可以进行双向传输)。而OSC和SYNC则是控制定时脉冲发生器的相关引脚。

图三 引脚详细描述

        图三则是该芯片引脚功能的详细描述,这里可以得到相关引出脚的具体功能描述以及该引出脚的注意事项等。首先是SYNC和OSC两个引出脚,提供同步通信和振荡器的功能(保证通信时主机和从机处于同一个时间信号和模式内),两者都包含主机和从机两种模式,即通信时脉冲和时钟信号是由芯片内部产生或者外部产生。然后是“CS、RD、WR、DATA”这四个引出脚,DATA为双向传输I/O口,负责数据的传输,具体的实现方法为拉高电阻器来实现数据的输入和输出,此为内部硬件的实现过程,可不做深入了解;在对于WR和RD的了解中我们可以知道,DATA在WR的上升沿写入数据,在RD的下降沿读出数据,这个属于比较重要的信息,在之后的时序图也会重点讲解;CS(Chip select)是我们平常所说的片选,即选中该芯片进行工作,改芯片对这个管脚的定义为低电平有效,因此在CS为高电平状态,数据和命令的读写将被禁止,而在低电平状态下芯片才可以进行上述操作。

 写入时序图 

        接下来我们来重点分析一下芯片的时序图图四,一般来说MCU和芯片的通信最重要的就是数据的写入和读取,只有了解了芯片在写入和读取数据时的具体时序变化,并将其用机器语言描述出来,我们才可以通过MCU来控制这块芯片。那么如何将这个时序图通过程序语言来进行描述呢?以下附上程序截图。

 “DATA在WR的上升沿写入数据”程序截图 

        以上程序描述的是“DATA在WR的上升沿写入数据”这一个动作,翻译这段函数就是先命名了这个动作函数的名称,再声明这个函数需要用到的参数——Data(数据)和cnt(传输数据位数),在每一次数据写入前,都需要满足处于WR的上升沿状态内。因此就需要先把WR拉低,等待写入数据且数据稳定后再将WR拉高完成写入。即MCU向芯片写入的数据通过转化为高低电平的方式来让数据进行传输。结合时序图图四,从左到右第一条红线意味着拉低WR,第二条红线表示拉高WR,期间就是将二进制数据转换为高低电平稳定的输入到DATA引出脚上,这里采用的方法是将想要写入的数据和0x80进行与运算,只有对应的数据位上都为1,DATA引出脚才会置为高电平,否则就置为低电平。至于为什么和0x80进行与运算以及对DATA引出脚赋值后需要将数据左移一位,则是和数据的传输顺序有关。因为改芯片对命令和寄存器地址的数据写入规则是高位在前,低位在后,所以想要传输数据,就需要先把高位上的值赋予芯片的引出脚DATA。比如传输1bit8位的数据1001 0110,最高位为1,最低位为0,那么我们就要先将1赋值到芯片,因此和1000 0000进行与运算,才可以把高位的值先写入芯片,而后再通过左移一次该数据,将次高位的值写入芯片,以此类推。因此,如果是最低位先行传输,整个写入过程也可以举一反三进行变化。

        掌握了写入数据这一动作后,再来分析一下“写入模式”的时序图。

  MCU往芯片写入时序图 

        从图六中可以看出,往芯片写入有两种模式。一种是命令模式,针对的是特定地址的寄存器数据写入(红线分割可视为对两处地址的写入),另一种是连续地址数据写入,即定位一个地址后,每次写入的地址会自加一,不需要再写入地址,用户只要持续输入4位数据即可。开始往芯片中写入数据的话,必定要先将CS置于低电平才可以开始工作,如果置于高电平则表示写入结束;之前提到过DATA在WR的上升沿写入数据,从图中就可以很好的体现出来;而在DATA的时序上可以得到的信息是,每次对芯片写入都需要先写入3位固定代码101(像这种固定代码一般都有特殊含义,可以在芯片规格书上查到,后面再进行说明),之后是寄存器的7位地址,最后是想要写入这个寄存器的4位数据。根据数据的大小排序,还可以知道寄存器上地址的写入是从高位进行传输,而对该地址上寄存器数据的改写又是从低位进行传输,这一点需要注意,否则在写程序的时候很容易弄错。

        读懂了写入的时序图,尝试一下结合先前写过的“写入”动作进行编程,可以得到如下程序。

 MCU往芯片连续写入程序

        如上,定义一个函数,指定完成这个函数所需要的参数Addr(地址)、D(数据)、cnt(数据位数)。参照时序图图六“WRITE Mode − Successive Address Writing”,首先拉低CS,写入3位的特定模式“101”,再写入要改变的7位寄存器地址,最后再写连续输入4位的寄存器数据,期间不需要再输入地址(地址会自加一)这样就写好了关于这个写入模式的程序,也可以叫做封装。

        上面提供的时序图每次都以“101”开头,那么101是什么意思呢?

 芯片模式ID 

        图八就是该芯片各种不同模式的ID,包含读、写、读写修改和命令模式四种,前三种输入的是数据,最后一种输入的是芯片内部已经定义的功能指令。因此,每次与芯片通信的时候都需要先输入这个模式ID来对工作方式进行选择。而芯片内部已经定义的指令表也可以在规格书内找到。

8-1 芯片内部功能指令

8-2 芯片内部功能指令

 8-3 COMMAND模式数据写入时序图

         通过8-1和8-2两表,再结合8-3的COMMAND MODE时序图,我们就可以将COMMAND下的功能数据先行定义(便于程序的修改),见下图8-4。

8-4 指令表程序    

     在时序图中我们发现命令模式的写入,不再有寄存器地址和寄存器上的数据,取而代之的就只剩下9位的指令代码,并且这个指令代码的写入也是高位先行。使用程序语言描述后程序见下图8-5。

8-5 指令模式写入

        至此,我们已经完成了“连续写入数据”和“芯片命令模式写入数据”两个功能的程序编写,接下来比较关键的就是了解芯片的工作过程,完成初始化的操作,首先来看一下芯片的级联控制流程图图9。

9-1 级联控制流程图

        图中可以看到芯片初始化的流程,首先关闭芯片内部的时钟和振荡器,擦除之前的芯片设置;然后设置COM的模式,这个可以在规格书上查到,分为4种模式,8COM和16COM的N-MOS和P-MOS,具体需要根据电路来选择;接着选择芯片内部的RC时钟(主机模式,点亮产品的时钟由芯片提供,可以观察芯片的引出脚SYNC和OSC是否有外接引线来判断是主机模式还是从机模式);紧接着就是打开芯片内部的时钟和振荡器让芯片进行待命;再来就是打开LED的占空比发生器,确保LED能点亮;最后就是写入程序对芯片各个寄存器进行更新。

        根据左侧流程图,将其用程序语言进行描述后,可以得到如下程序图9-2,CS、WR、DAT先行拉高在时序图中可查,主要是为了保证数据的稳定;剩下就是其他已定义指令的写入,整个程序函数就是芯片初始化的过程。某些指令属于电源复位后默认的设置,可以不用再次写入,具体可查规格书。

9-2 芯片初始化函数程序 

        最后,观察改芯片的寄存器设置图10,只要将某个寄存器中的某一位置1,就可以将该位的COM端和ROW端工作,至此,即可点亮这两个引脚控制的LED灯,其他功能也可以由您来编写。

 10 芯片寄存器

         以上,就是关于HT1632C与MCU通信方法的具体实现过程,其中只详细介绍了写入和命令模式的程序,其他模式例如读取可以由读者自行尝试。其他芯片的使用方式也大致如此,只要掌握了时序和通信规则,用程序语言描述给芯片听就可以实现相关通信,请读者多加尝试。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值