新聞中心

EEPW首頁 > 光電顯示 > 設(shè)計應(yīng)用 > 在P87LPC674單片機I2C總線系統(tǒng)中擴展LCD顯示器

在P87LPC674單片機I2C總線系統(tǒng)中擴展LCD顯示器

作者: 時間:2006-05-07 來源:網(wǎng)絡(luò) 收藏

摘要:介紹一種利用Philips公司生產(chǎn)的P87LPC764單片機作為I2C總線控制器與I2C總線顯示器件PCF8577C構(gòu)成的LCD顯示器電路,并給出了相應(yīng)的程序清單。

本文引用地址:http://butianyuan.cn/article/225738.htm

關(guān)鍵詞:P87LPC764單片機 I2C總線 PCF8577C LCD顯示器

1 引言

I2C總線是Philips公司推出的芯片間串行傳輸總線。它僅用串行數(shù)據(jù)線(SDA)和串行時鐘線(SCL)兩根連線便實現(xiàn)了完善的全雙工同步數(shù)據(jù)傳送,并可很方便地構(gòu)成多機系統(tǒng)和外圍器件擴展系統(tǒng)。

本文介紹在P87LPC764單片機中利用I2C總線系統(tǒng)中典型的LCD驅(qū)動控制器件PCF8577C來擴展256段靜態(tài)LCD的電路設(shè)計方法。

2 硬件電路設(shè)計

2.1 P87LPC764單片機的I2C總線接口

P87LPC764是Philips公司生產(chǎn)的一種小封裝、低成本、高性能的單片機(具體內(nèi)容見參考文獻2)。它采用80C51加速處理器結(jié)構(gòu),片內(nèi)帶有支持I2C總線的硬件接口。當激活I(lǐng)2C總線時,P87LPC764端口1中的P1.2與P1.3可分別用作SCL和SDA總線功能。其I2C總線由3個特殊功能寄存器控制,即I2C控制寄存器I2CON、I2C配置寄存器I2CFG、I2C數(shù)據(jù)寄存器I2DAT。各寄存器格式及位含義如下。

a.I2CON寄存器

I2CON寄存器各位的含義在進行讀寫操作時完全不同。下面分別介紹其讀、寫操作格式。

●讀操作格式

RDAT ATN DRDY ARL STR STR MASTER -

各位功能如下:

RDAT:數(shù)據(jù)接收位。在SCL線的上升沿時由SDA線上獲取。讀RDAT位時不清除DRDY,也不釋放SCL線。

ATN:當DRDY、ARL、STR或STP中任意一個為1時,ATN置1。通過測試ATN位可判斷總線上是否發(fā)生某類事件。

DRDY:數(shù)據(jù)準備好標志位。在SCL上升沿時置位,讀寫I2DAT寄存器或向CDR寫入1時清0。

ARL:總線仲裁失敗標志位。

STR:啟動標志位。當檢測到啟動條件時置1。

STP:停止標志位。當檢測到停止條件時置1。

MASTER:當本器件成為I2C總線主控制器時置1。

●寫操作格式

CXA IDLE CDR CARL CSTR CSTP XSTR XSTP

其中:

CXA:寫入1,清除數(shù)據(jù)發(fā)送狀態(tài)。

IDLE:寫入1,則被控制要檢測到下一位啟動位時才接收總線信息。

CDR:寫入1,清除DRDY。

CARL:寫入1,清除ARL。

CSTR:寫入1,清除STR。

CSTP:寫入1,清除STP。

XSTR:當裝置為主控制器時,向XSTR和CDR寫入1,使I2C總線發(fā)送重復啟動位。

XSTP:當裝置為主控制器時,向XSTP和CDR寫入1,使I2C總線發(fā)送停止位。

b.I2CFG寄存器

I2CFG寄存器的格式為:

SLA MASTRQ CTI TIRUN - - Ct1 Ct0

SLA:寫入1,本裝置成為I2C總線被控器。

MASTRQ:寫入1,本裝置成為I2C總線主控器。

CTI:寫入1,清除定時器1溢出標志。

TIRUN:寫入1,定時器1開始運行;寫入0,停止定時器1運行并將定時器清0。

CT1和CT0用來決定SCL線上高低電平的最小時間。

c.I2DAT寄存器

I2DAT寄存器的讀、寫格式是不同的。

●讀I2DAT格式

RDAT - - - - - - -

其中RDAT為數(shù)據(jù)接收位。在SCL線的上升沿時從SDA中獲取。在從I2DAT的RDAT中讀數(shù)據(jù)的同時,可清除DRDY和設(shè)置發(fā)送激活狀態(tài)。

●寫I2DAT格式

XDAT - - - - - - -

其中XDAT為數(shù)據(jù)發(fā)送位。下一個要發(fā)送的數(shù)據(jù)寫入此位。寫XDAT時,應(yīng)清除DRD放設(shè)置發(fā)送激活狀態(tài)。

2.2 I2C總線顯示器件PCF8577C

a.引腳功能

PCF8577C是I2C總線系統(tǒng)中典型的LCD驅(qū)動控制器件,在靜態(tài)方式時可驅(qū)動32段LCD;在雙級方式時可驅(qū)動64段LCD。若采用多片級聯(lián),則最大可構(gòu)成256段LCD顯示系統(tǒng)。另外,PCF8577C還具有顯示數(shù)據(jù)自動增量寫入功能,而且編程十分簡單。PCF8577的引腳排列如圖1所示。各引腳功能如下:

S32~S1:段輸出端口。

BP1:背極輸出。級聯(lián)時可作為同步輸入端,接第一級的BP1信號作為同步信號。

A2/BP2:在靜態(tài)驅(qū)動方式下,該端作為硬件地址線A2,用于設(shè)定8577C的硬件子地址。在雙級驅(qū)動方式下,該腳用作第二背極輸出BP2。級聯(lián)時則作為同步輸入端,接第一級的BP2信號作為同步信號。在雙極方式下,其硬件子地址僅由A1和A0來決定。

A1:硬件地址線。片內(nèi)無下拉電路,不可懸空。

A0/OSC:該腳需外接電阻電容來構(gòu)成振蕩器,此時A0被規(guī)定為邏輯0,用作硬件地址線。級聯(lián)時,除第一級之外,其它各級均不外接電阻電容構(gòu)成的振蕩器,而應(yīng)接VDD或Vss來設(shè)置器件子地址。

VDD和VSS:分別為電源正、負極。

SCL和SDA:分別為I2C總線的時鐘和數(shù)據(jù)線。

b.數(shù)據(jù)操作格式

8577C有九個寄存器,其操作格式如圖2所示。下面就控制寄存器和段字節(jié)寄存器加以說明。

●控制寄存器

控制寄存器用于在微處理機對8577C的一次數(shù)據(jù)傳送過程中裝入第二字節(jié)(控制字節(jié))??刂谱指魑缓x如下:

MODE:驅(qū)動方式選擇位,“0”為選擇靜態(tài)驅(qū)動方式;“1”為選擇雙極驅(qū)動方式。

BANK:數(shù)據(jù)選擇位,“0”為選擇顯示A體數(shù)據(jù),“1”為選擇顯示B體數(shù)據(jù)。

V5V4V3:這三位與硬件子地址相對應(yīng)。若器件的從地址與I2C總線上的從地址相符,且V5V4V3=A2A1A0,則該器件被選中,此時即可接收總線上送來的數(shù)據(jù),并將其裝入段字節(jié)寄存器,否則不予理睬。在雙極驅(qū)動方式下,由于A2作BP2,故V5無效。

V2V1V0:段字節(jié)寄存器SBR的地址位,用來決定將段數(shù)據(jù)字入哪一個SBR。

用V5~V0可組成段字節(jié)向量SBV,它具有自動增量功能。若需一次傳送多個段字節(jié)數(shù)據(jù),可在每裝入一個段字節(jié)數(shù)據(jù)后便SBV自動加2(靜態(tài)方式)或加1(雙級方式),以便裝入下一個數(shù)據(jù);級聯(lián)時,當一片8577C裝滿后,SBV自動增量,并指向硬件子地址與之相鄰的下一個8577C的SBR。SBV的值可以在111111~000000之間循環(huán)滾動。

●段字節(jié)寄存器SBR

八個SBR可分成兩組,地址為偶數(shù)的一組稱為A體,奇數(shù)組稱為B體。在靜態(tài)方式下,要么顯示A體數(shù)據(jù),要么顯示B體數(shù)據(jù)??梢酝ㄟ^改變BANK位的值來切換顯示內(nèi)容。在雙極方式下,八個SBR將同時使用,這時BANK為不關(guān)心碼,A體對應(yīng)于BP1,B體對應(yīng)于BP2。

c.總線操作

PCF8577C的總線操作包括從地址和硬件子地址,其中從地址固定為0111010,共七位,是I2C總線委員會分配的。此外,還有三位硬件子地址(A2A1A0)待設(shè)定。若應(yīng)用系統(tǒng)中有多片8577C,則需分別設(shè)定不同的硬件子地址來加以區(qū)別。選中8577C指的是它的從地址和硬件子地址都被選中。

PCF8577C的總線操作協(xié)議格式如下:

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擴展LCD的接口電路如圖3所示。該電路采用靜態(tài)驅(qū)動方式,由P87LPC764單片機訪問8片8577C以組成最大級聯(lián)系統(tǒng)。每片8577C可驅(qū)動32段LCD,因此,共可擴展256段LCD。而在級聯(lián)應(yīng)用時,只由第一級構(gòu)成振蕩器,以輸出背極信號,并對后級進行同步。

3 軟件設(shè)計

該應(yīng)用電路是一個單主I2C總線系統(tǒng),數(shù)據(jù)傳送操作只有主發(fā)送方式,因而在編程過程中沒有檢測總線錯誤。數(shù)據(jù)發(fā)送時,每發(fā)送1個字節(jié),都應(yīng)檢測應(yīng)答信號,如無應(yīng)答信號,建立標志位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)答標志

MOV I2CFG,#30H ;清求為總線主機

JNB MASTER,$ ;等待為總線主機

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ù)準備好

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 ;取消主機位置

MOV I2CON,#21H ;申請總線停止

JNB ATN,$ ;等待

MOV I2CON,#20H ;清數(shù)據(jù)準備好標志

JNB ATN,$ ;等待發(fā)送停止條件

MOV I2CON,#91H ;釋放I2C總線

CLR TIRUN ;停止定時器T1

RET

4 結(jié)束語

本文介紹了I2C總線系統(tǒng)中利用典型的LCD驅(qū)動控制器件PCF8577C擴展LCD顯示器的電路及程序設(shè)計。參考本文思路,也可實現(xiàn)動態(tài)LCD顯示器的擴展。該方法在I2C總線系統(tǒng)中進行人機接口電路設(shè)計時具有較好的參考價值。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉