本文主要介紹了虛擬I2C總線串行顯示電路,其中包括SAA1064引腳功能介紹、硬件電路設計、片內可編程功能以及程序舉例。
1.SAA1064引腳功能
① VDD、VEE:電源、接地端。電源4.5~15V;
② P1~P16:段驅動輸出端。分為兩個8位口:
P1~P8;P9~P16。P8、P16為高位??阪i存器具有反相功能,置1時,端口輸出0。
③ MX1、MX2:位碼驅動端。靜態(tài)顯示驅動時,一片SAA1064可驅動二位LED數碼管;動態(tài)顯示驅動時,按圖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: 靜動態(tài)控制,C0=1,動態(tài)顯示,動態(tài)顯示時,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發(fā)送,SAA1064接收;黑色部分由SAA1064發(fā)送,80C51接收。
SLAW為寫SAA1064尋址字節(jié),
按圖所示連接電路:SAA1064(1)SLAW=01110000B;SAA1064(2)SLAW=01110110B。其中 0111(D7~4)為SAA1064器件地址,D3~1為A2A1A0尋址字節(jié),末位D0為R/W;SADR為片內寄存器地址;COM為控制命令。
4.程序設計
例:已知8位顯示符(共陰編碼)已依次存入內RAM 51H~58H中,試按圖9-10編程將其輸入SAA1064(1),(2)動態(tài)顯示,驅動電流為12mA。設VIIC軟件包已裝入 ROM,VSDA.VSCL.SLA.NUMB.MTD.MRD均已按8.3.2軟件包小結中協(xié)議定義。
VSAA: MOV MTD,#00H ;置SAA1064控制命令寄存器COM片內子地址
MOV 31H,#01000111B;置控制命令字,動態(tài)顯示,驅動電流12mA
MOV NUMB,#6 ;置發(fā)送數據數:SADR+COM+data1~4=6
SAA1: MOV RO,#51H ;將51H~54H顯示符數據移至32H~35H
LCALL MOVB ;
MOV SLA,#01110000B;置SAA1064(1)寫尋址字節(jié)SLAW
LCALL WRNB ;發(fā)送給SAA1064(1)
SAA2: MOV R0,#55H ;將55H~58H顯示符數據移至32H~35H
LCALL MOVB ;
MOV SLA,#01110110B;置SAA1064(2)尋址字節(jié)SLAW
LCALL WRNB ;發(fā)送給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個數據移完否?未完繼續(xù)
RET ;