由于mc33993具有灵活的编程能力,它可以通过对相关控制命令寄存器的编程来把器件的22个端口设置为可以驱动led,甚至还可以驱动mosfet栅极的小负载。从mc33993的内部结构来看,也可通过编程使输入开关(sp0~sp7)具有吸收或输出电流的能力,而使输入开关(sg0~sg13)具有输出电流的能力,图1所示是mc33993与单片机at89c52组成的多位led显示接口电路。
图 mc33993与at89c52构成的多位led显示接口电路
这里设计的是一个4位共阳极的led的动态驱动显示电路,led的7段a、b、c、d、e、f, g分别与mc33993具有吸收电流能力的spi~sp7这7个端口相连,4位led的位选端口w卜w2、w3、w4分别与mc33993的只具有输出电流的sg0~sg3这4个端口相连接。由于sg4~sg13等10个端口尚空闲,所以系统至少还可以再带10位led显示器。mc33993的spi通信口的st、so、cs、sclk分别与at89c52的pl,0、pl,1、pl.2、pl.3端口相连接。mc33993的中断输出端口int与at89c52的into中断输入口连接(不用时也可以不接)。多位led显示器的工作状态控制是通过spi通信口由cpu向mc33993的相关控制寄存器发送命令来实现的。工作时,单片机首先通过与mc33993的spi口的通信对mc33993进行初始化,以使4位led先显示8。cpu只要通过mc33993的spi通信口向mc33993发送对22个端口的设置控制指令,使mc33993的sp1~sp7这7个端口全部设置为接地位,然后循环等间隔时间使sg0、sg1、sg2、sg3分别接vpwr端,那么,就可分别控制4位led的4个of门电路工作,迸而形成4位led的动态扫描显示。由此可以看出,只要cpu循环将需显示的数字及所在位信息通过mc33993的spi通信口送给mc33993内部的相关控制寄存器,就可以控制sp1~sp7以及sg0~sg3的状态,从而达到哪位显示什么数字的目的。这样,spi便可以使用少量的cpu端口来完成对多位led段码显示器的控制。 来源:coco