| S | 01110100 | A | 控制字節(jié) | A | 段數(shù)據(jù) | A | P |
其中:起始信號S之后的第一個字節(jié)中的最低位是方向位,因8577C只能接收數(shù)據(jù),所以該位必須為0;其余七位是從地址。若系統(tǒng)含多片8577C,則每片都會對第一和第二字節(jié)作出應(yīng)答;而段數(shù)據(jù)字節(jié)后的應(yīng)答信號僅由被選中的芯片產(chǎn)生。數(shù)據(jù)字節(jié)可連續(xù)多個。如果僅改變BANK值,而不改變SBR中的內(nèi)容,則應(yīng)在控制字節(jié)的應(yīng)答位之后發(fā)送停止信號P,這時被選中的芯片將更新BANK。
2.3 顯示電路設(shè)計
利用P87LPC764擴(kuò)展LCD的接口電路如圖3所示。該電路采用靜態(tài)驅(qū)動方式,由P87LPC764單片機(jī)訪問8片8577C以組成最大級聯(lián)系統(tǒng)。每片8577C可驅(qū)動32段LCD,因此,共可擴(kuò)展256段LCD。而在級聯(lián)應(yīng)用時,只由第一級構(gòu)成振蕩器,以輸出背極信號,并對后級進(jìn)行同步。
3 軟件設(shè)計
該應(yīng)用電路是一個單主I2C總線系統(tǒng),數(shù)據(jù)傳送操作只有主發(fā)送方式,因而在編程過程中沒有檢測總線錯誤。數(shù)據(jù)發(fā)送時,每發(fā)送1個字節(jié),都應(yīng)檢測應(yīng)答信號,如無應(yīng)答信號,建立標(biāo)志位F0以重發(fā)數(shù)據(jù)。該電路采用靜態(tài)方式,顯示為A體數(shù)據(jù)。
如果程序中的顯示緩沖區(qū)30H到7FH單元用來存放字形碼,則該I2C總線顯示電路的程序清單如下:
DISP1:MOV R0,#30H ;字形碼區(qū)首地址
MOV R1,#74H ;1#8577C的從地址
MOV R2,#00H ;1#8577C的控制碼
LOOP:ACALL DIR
JB F0,DISP1 ;無應(yīng)答重新開始
……
DIR:CLR F0 ;清除無應(yīng)答標(biāo)志
MOV I2CFG,#30H ;清求為總線主機(jī)
JNB MASTER,$ ;等待為總線主機(jī)
MOV I2CON,#1CH ;清除起動條件
MOV A,R1 ;發(fā)送從設(shè)備地址
ACALL SEND
JB F0,DIR2
MOV A,R2 ;發(fā)送控制碼
ACALL SEND
JB F0,DIR2
MOV R4,#32 ;發(fā)送32個字節(jié)字形碼
DIR1:MOV A,@R0
ACALL SEND
JB F0,DIR2
INC R0
DJNZ R4,DIR1
DIR2:ACALL SSTOP
RET
;發(fā)送一個字節(jié)
SEND:MOV R3,#08H
SENDB:MOV I2DAT,A ;發(fā)送數(shù)據(jù)位
RL A ;取下一位數(shù)據(jù)
JNB DRDY,$ ;等待數(shù)據(jù)準(zhǔn)備好
DJNZ R3,SENDB
MOV I2CON,#0A0H ;轉(zhuǎn)換為接收方式
JNB ATN,# ;等待應(yīng)答信號
JNB RDAT,SENDE ;是應(yīng)答嗎
SETB F0 ;建立無應(yīng)答信號
SENDE:RET
;發(fā)送停止位
SSTOP:CLR MASTRQ ;取消主機(jī)位置
MOV I2CON,#21H ;申請總線停止
JNB ATN,$ ;等待
MOV I2CON,#20H ;清數(shù)據(jù)準(zhǔn)備好標(biāo)志
JNB ATN,$ ;等待發(fā)送停止條件
MOV I2CON,#91H ;釋放I2C總線
CLR TIRUN ;停止定時器T1
RET
4 結(jié)束語
本文介紹了I2C總線系統(tǒng)中利用典型的LCD驅(qū)動控制器件PCF8577C擴(kuò)展LCD顯示器的電路及程序設(shè)計。參考本文思路,也可實現(xiàn)動態(tài)LCD顯示器的擴(kuò)展。該方法在I2C總線系統(tǒng)中進(jìn)行人機(jī)接口電路設(shè)計時具有較好的參考價值。





