带I2C总线接口的LED驱动器 SAA1064及其应用
摘要:SAA1064是Philips公司生产的带I2C总线接口的4位LED驱动器。可用于驱动4位带小数点的七段显示器,并可通过多路开关对两个2位显示器进行切换显示,文中介绍了SAA1064的功能、工作原理及I2C通讯规约,并给出了该芯片与80C552的接口电路和程序框图。
关键词:I2C接口;SAA1064;LED;80C552;动态显示
1.概述
SAA1064是Philips公司生产的4位LED驱动器,为双极型电路,具有I2C接口。该电路是特别为驱动4位带有小数点的七段显示器而设计的,通过多路开关可对两个2位显示器进行切换显示。该器件内部带有I2C总线从发送接收器,可以通过地址引脚ADR的输入电平编程为4个不同的从器件地址。内部的模式控制器可以控制LED的各个位以使其能够工作于静态模式、动态模式、熄灭模式及段测试模式。
2.引脚功能及封装形式
SAA1064采用24脚DIP和SOT两种封装形式,图1所示为24脚DIP封装的引脚排列。各主要引脚的功能如下:
ADR(1):地址输入线;
CEXT(2):内部振荡器电容输入端,典型值为2.7nF;
P8~P1(3~10):段数据输出口1;
P9~P16(15~22):段数据输出口2;
MX1(11):多路选择开关输出1;
MX2(14):多路选择开关输出2:
VEE(12):地;
VCC(13):电源;
SDA(23):I2C总线串行数据线;
SCL(24):I2C总线串行时钟线;
3.功能说明
3.1 通讯规约
主器件CPU通过I2C总线对SAA1064进行读或写,读/写方式中I2C总线上的信息传送格式如图2所示,图中:S为启动信号;P为结束信号;A为响应位;X为任意值;A1A0由ADR输入电位确定2位地址位;SC SB SA为单元地址位;C6~C0为控制位;PR为上电复位标志。
3.2 SAA1064的从地址
SAA1064的从地址是由引脚ADR上的输入电平决定的。ADR引脚在接VEE、3/8VCC、5/8VCC和VCC时分别对应于4个不同的从地址(A1A0=00、01、10、11)。在写方式时,它们对应的从地址字节值为70H、72H、74H、76H,而在读方式时,它们对应的从地址字节值为71H、73H、75H、77H。其他的地址不为该器件所响应。
3.3 状态字节
SAA1064的状态字节中只用1位:即上电复位标志位PR,它为逻辑“1”时,表示从上次读状态以后出现过掉电和加电,而在读状态字节操作完成以后,该标志清0。
3.4 单元地址
用位SC、SB、SA形成1个指针以确定指令字节以后的数据字节写入哪个寄存器,而其它的数据依次写入后继单元中,这种特性称为单元地址增量。单元地址指针范围为0~7。单元地址分配如表1所列。
3.5 控制字节
控制字节各位(C0~C6)的含义如下:
C0=0 静态显示,数字位1和2可以连续显示;
C0=1动态显示,数字位1、3和2、4交替显示;
C1=0/1数字位1、3暗/亮选择位;
C2=0/1数字位2、4暗/亮选择位;
C3=1 所有段导通以便段测试,其电流由C4、C5、C6所决定;
C4=1 段输出电流增加3mA;
C5=1 段输出电流增加6mA;
C6=1 段输出电流增加12mA;
3.6 数据字节
数据字节中数据为1时为对应的段导通(亮),数据字节D17~D10、D27~D20、D37~D30、D47~D40分别对应于位1、2、3和4的显示器,高位对应于输出端P8或P16,低位对应于输出端P1或P9,显示器1~4显示的数据对应于单元地址1~4的内容。
3.7 SDA、SCL
SDA、SCL分别为总线的数据线和时钟线。为防止这些引脚上出现过压脉冲,应接一个稳压管(5.5V)至,即正常的线电压不应超过5.5V。正常情况下,数据在响应位的时钟上跳变锁存。
3.8 上电复位
上电复位信号是在SAA1064芯片的内部产生的,该信号能使内部各位清0而显示全暗,此时只有掉电标志置位。
3.9 外部定时控制电容
在SAA1064的引脚(2脚)上接一个定时电容到地可使内部多路转换的振荡器工作。在静态工作方式中,因为不需要振荡器工作,因此,该引脚可接或浮空。
3.10 段数据输出端
P1~P16是吸收电流可控的段数据输出端,可用相应的数字位控制其导通,并由C4、C5、C6控制位控制其电流的大小。
3.11 多路输出端
SAA1064的多路输出端MX1和MX2在动态显示方式中交替导通,它们均由内部时钟的分频信号驱动。
在静态方式中,MX1总是导通,其输出由内部射极跟随器组成,可直接驱动2位显示器的公共极,如果超过了电路的总功耗,应当用晶体管把11脚和14脚相连在一起。
4. 典型应用
图3给出了SAA1064和4位显示器(动态显示)的接口电路,图中的显示器为共阳极发光二极管组成的七段显示器。
此电路可以用在电源模块电路中作模块电压或电流值的显示,也可用于检测模块电路中上报给CPU的电压、电流值与实际值是否一致。用于控制I2C总线的单片机电路的方框图如图4所示。其中的80C552是飞利浦(PHILIPS)公司的80C51单片机,它具有256字节RAM数据存储器、8路10位A/D转换器、3个定时器/计数器及一个监视定时器;具有I2C串行总线等特点。图4中,模块中的电压值V、电流值I经变换后送入A/D转换口,经采样并将采样值转化为段数据经I2C总线串行输出到SAA1064。
控制SAA1064显示电压、电流的程序流程图如图5所示。可实现的功能为:最高位LED1显示“U”,则表明显示的是电压值,如显示“C”,则表明显示的是电流值,后3位显示的是电压、电流的具体数值,如显示“U45.0”表示电压值为45.0V。电压电流值每隔5秒交替显示。在程序中,电压、电流、显示时间是由主程序的大循环控制的,这样可提高CPU的工作效率。
笔者已将此电路用在48V/50A通信电源模块上作调试和显示使用,实际使用结果表明,SAA1064与80C552单片机的接口简单,使用方便,效果良好。
文章版权归西部工控xbgk所有,未经许可不得转载。