详解虚拟I2C总线串行显示电路
扫描二维码
随时随地手机看文章
本文主要介绍了虚拟I2C总线串行显示电路,其中包括SAA1064引脚功能介绍、硬件电路设计、片内可编程功能以及程序举例。
1.SAA1064引脚功能
① VDD、VEE:电源、接地端。电源4.5~15V;
② P1~P16:段驱动输出端。分为两个8位口:
P1~P8;P9~P16。P8、P16为高位。口锁存器具有反相功能,置1时,端口输出0。
③ MX1、MX2:位码驱动端。静态显示驱动时,一片SAA1064可驱动二位LED数码管;动态显示驱动时,按图9-10连接方式,一片SAA1064可驱动四位LED数码管;
④ SDA、SCL:I2C总线数据端、时钟端;
⑤ CEXT:时钟振荡器外接电容,典型值2700pF
⑥ ADR:地址引脚端。SAA1064引脚地址A1、A0采用ADR模拟电压比较编址。当ADR引脚电平为0、3VDD/8,5VDD/8、VDD时,相应引脚地址A2、A1、A0 分别为000、001、010、011;
2.硬件电路设计
3.片内可编程功能
CO: 静动态控制,C0=1,动态显示,动态显示时,data1、data2轮流从P8~P1输出,data3、data4轮流从P16~P9输出;
C1: 显示位1、3亮暗选择,C1=1,选择亮;
C2: 显示位2、4亮暗选择,C2=1,选择亮;
C3: 测试位,C3=1,所有段亮;
C4、C5、C6: 驱动电流控制位,C4、C5、C6分别为1时,驱动电流分别为3mA、6mA、12mA;C4、C5、C6全为1时,驱动电流最大,可达21mA。
⑶ 写数据操作格式
红色部分由80C51发送,SAA1064接收;黑色部分由SAA1064发送,80C51接收。
SLAW为写SAA1064寻址字节,
按图所示连接电路:SAA1064(1)SLAW=01110000B;SAA1064(2)SLAW=01110110B。其中 0111(D7~4)为SAA1064器件地址,D3~1为A2A1A0寻址字节,末位D0为R/W;SADR为片内寄存器地址;COM为控制命令。
4.程序设计
例:已知8位显示符(共阴编码)已依次存入内RAM 51H~58H中,试按图9-10编程将其输入SAA1064(1),(2)动态显示,驱动电流为12mA。设VIIC软件包已装入 ROM,VSDA.VSCL.SLA.NUMB.MTD.MRD均已按8.3.2软件包小结中协议定义。
VSAA: MOV MTD,#00H ;置SAA1064控制命令寄存器COM片内子地址
MOV 31H,#01000111B;置控制命令字,动态显示,驱动电流12mA
MOV NUMB,#6 ;置发送数据数:SADR+COM+data1~4=6
SAA1: MOV RO,#51H ;将51H~54H显示符数据移至32H~35H
LCALL MOVB ;
MOV SLA,#01110000B;置SAA1064(1)写寻址字节SLAW
LCALL WRNB ;发送给SAA1064(1)
SAA2: MOV R0,#55H ;将55H~58H显示符数据移至32H~35H
LCALL MOVB ;
MOV SLA,#01110110B;置SAA1064(2)寻址字节SLAW
LCALL WRNB ;发送给SAA1064(2)
RET ;
MOVB: MOV R1,#32H ;显示符数据移至32H~35H子程序
MOVB1:MOV A,@R0 ;读出
MOV @R1,A ;存入
INC RO ;指向下一读出单元
INC R1 ;指向下一存入单元
CJNE R1,#36H,MOVB1 ;判4个数据移完否?未完继续
RET ;