天堂草原最受欢迎的角色,天堂动漫,天堂在线,色天堂下载,天堂中文在线资源,亚洲男人天堂

技術熱線: 4007-888-234
設計開發

專注差異化嵌入式產品解決方案 給智能產品定制注入靈魂給予生命

開發工具

提供開發工具、應用測試 完善的開發代碼案例庫分享

技術支持

從全面的產品導入到強大技術支援服務 全程貼心伴隨服務,創造無限潛能!

新聞中心

提供最新的單片機資訊,行業消息以及公司新聞動態

P87LPC764單片機的I2C總線顯示電路

更新時間: 2019-03-22
閱讀量:2132

單片機方案開發商深圳英銳恩分享P87LPC764單片機的I2C總線顯示電路。

摘  要:I2C總線是Philips公司推出的芯片間串行傳輸總線。目前,已有不少大電氣公司半導體廠商推出了不少帶有I2C總線接口的單片機。本文介紹一種利用Philips公司生產的P87LPC764單片機作為I2C總線控制器與I2C總線顯示器件SAA1064構成的I2C顯示電路,并給出相應的程序清單。

關鍵詞:I2C總線 P87LPC764單片機 SAA1064 顯示電路

I2C總線是Philips公司推出的芯片間串行傳輸總線。它以串行數據線(SDA)和串行時鐘線(SCL)2根連線實現了完善的全雙工同步數據傳送,可以極方便地構成多機系統和外圍器件擴展系統。關于I2C總線的結構和工作原理詳見參考文獻1。

一、P87LPC764單片機I2C總線接口

P87LPC764是Philips公司生產的一種小封裝、低成本、高性能的單片機(有關它的詳細介紹見參考文獻2)。它采用80C51加速處理器結構,片內帶有支持I2C總線的硬件接口。當激活I2C總線時,P87LPC764端口1中的P1.2與P1.3分別作為SCL和SDA行使I2C總線功能。其I2C總線由3個特殊功能寄存器控制,這3個寄存器為I2C控制寄存器I2CON、I2C配置寄存器I2CFG和I2C數據寄存器I2DAT。各寄存器格式和位含義參見本刊第5期第36頁。

二、I2C總線顯示器件SAA1064

1.引腳功能

SAA1064是I2C總線系統中典型的LED驅動控制器件,為雙極型集成電路,有2×8位輸出驅動接口,可靜態驅動2位或動態驅動4位8段LED顯示器。SAA1064的器件地址為0111,其引腳地址端ADR按輸入電平大小將A1A0編為4個不同的從地址,故在1個I2C總線系統中最多可以掛接4片SAA1064,實現16位LED顯示。SAA1064為24腳雙列直插封裝,其引腳排列如圖1所示。

    ADR 尋址端,SAA1064通過對該腳輸入不同的模擬電壓,以確定其不同的地址。SAA1064規定輸入該腳的電壓值為VEE、(3/8)Vcc、(5/8)Vcc及Vcc時,分別對應十六地地址70H、72H、74H、76H(寫操作)或71H、73H、75H、77H(讀操作)。    該應用電路是一個單主的I2C總線系統,不會出現總線競爭問題,而且數據傳送操作只有主發送方式,因此,在編程過程中沒有檢測總線錯誤。在數據發送過程中,每發送1個字節,都檢測應答信號,如無應答信號,建立標志位F0,程序重新開始發送數據。

CEXT 時鐘振蕩器的外接電容,典型值為2.7nF。

P1~P8 段驅動輸出端口1。P1為最低位,P8為最高位。

P9~P16 段驅動輸出端口2。P9為最低位,P16為最高位。

MX1、MX2 動態顯示方式時的公共極驅動信號輸出端,用以切換兩對數碼管輪流顯示。

SDA、SCL I2C總線的數據線和時鐘線。

2.數據操作格式

SAA1064除了與LED驅動控制相關的寫操作外,還有能反映系統上電標志的讀操作。SAA1064的讀操作狀態字節的讀出操作,其狀態字節僅最高位有意義,定義為PR。上電后PR為"1",在對其進行讀狀態字節操作后清零。因此,PR=1表示從上次讀狀態后出現過掉電和加電。利用這一功能,在系統中可作為冷熱啟動標志。

(1)數據的輸入操作

SAA1064的顯示驅動控制只需要I2C總線對其進行寫入操作,即按照子地址(SUBADR)寫入控制命令字節及顯示器的段碼數據即可,其數據操作格式如下:

S

SLAW

A

SUBADR

A

COM

A

data1

A

data2

A

data3

A

data4

A

P

SLAW為SAA1064的地址。

SUBADR為SAA1064片內地址單元首址。

COM為SAA1064的控制命令。

data1~data4為動態顯示方式的4個LED顯示器的共陰極段選碼。

(2)子地址單元

SAA1064片內有5個地址單元,占用了3位地址位(SC、SB、SA),分別用于裝入控制字節和4個顯示段碼,具體地址分配如表1所列。由于SAA1064寫操作具有地址自動加1功能,故在數據操作格式的寫入順序中,SUBADR應為00H。

0 0 0 0

SA

SB

SC

單元地址

功    能

0 0 0 0

0

0

0

00H

控制寄存器

0

0

1

01H

數字位1

0

1

0

02H

數字位2

0

1

1

03H

數字位3

1

0

0

04H

數字位4

1

0

1

05H

保留不用

1

1

0

06H

保留不用

1

1

1

07H

保留不用

(3)控制命令COM格式

SAA1064具有較強的控制功能,能實現亮度控制,顯示器測試,動、靜態及位亮、暗顯示。這些控制命令集中設置在控制寄存器中。控制命令(COM)格式如下:

-

C6

C5

C4

C3

C2

C1

C0

C0 動態、靜態顯示選擇,C0=1動態顯示。

C1 數碼管1、3亮滅選擇,C1=1選擇亮。

C2 數碼管2、4亮滅選擇,C2=1選擇亮。

C3 測試位,C3=1時所有段點亮,正常工作時該位為0。

C4、C5、C6 輸出電流控制位,為1時分別對應3mA、6mA、12mA。皆為1時輸出電流最大為21mA。

三、顯示電路實例

圖2是P87LPC764與SAA1064的接口電路實例。P87LPC764單片機采用6MHz的內部RC振蕩器,訪問4片SAA1064,驅動16只數碼管顯示,每片SAA1064的接線如圖2所示。

以下是該I2C總線顯示電路的程序清單,顯示緩沖區為30H到3FH單元。

START:MOV R0,#30H ;顯示緩沖區首地址

MOV R1,#17H ;SAA1064控制碼

MOV R2,#70H ;SAA1064(1)的地址

MOV R3,#04H ;4片SAA1064

LOOP:ACALL DISP

JB F0,START ;無應答信號重新開始

INC R2 ;

INC R2 ;

DJNZ R3,LOOP ;

以下是顯示子程序

DISP:CLR F0 ;清除無應答標志

MOV I2CFG,#30H ;請求成為I2C總線主機

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

MOV I2CON,#1CH ;清除起動條件

MOV A,R2 ;取從設備地址

ACALL SEND ;發送從設備地址

JB F0,DISP2 ;無應答信號轉移

MOV A,#0 ;SAA1064子地址

ACALL SEND ;發送子地址

JB F0,DISP2 ;無應答信號轉移

MOV A,R1 ;取SAA1064控制碼

ACALL SEND ;發送控制碼

JB F0,DISP2 ;無應答信號轉移

MOV R4,#04H ;四只數碼管

DISP1:MOV A,@R0 ;取字形代碼

ACALL SEND ;發送字形代碼

JB F0,DISP2 ;無應答信號轉移

INC R0 ;修正顯示單元地址

DJNZ R4,DISP1 ;

DISP2:ACALL SSTP ;發送停止位

RET ;

;發送1個字節

SEND:MOV R4,#8H ;設置數據格式為8位

SENDB:MOV I2DAT,A ;發送數據位

RL A ;取下一個數據位

JNB DRDY,$ ;等待數據準備好

DJNZ R4,SENDB ;

MOV I2CON,#0A0H ;轉換為接收模式

JNB ATN,$ ;等待應答信號

JNB RDAT,SENDE ;是應答位嗎?

SETB F0 ;建立無應答信號標志

SENDE:RET ;

;發送停止位

SSTP:CLR MASTRQ ;取消主機位置

MOV I2CON,#21H ;產生總線停止條件

JNB ATN,$ ;等待

MOV I2CON,#20H ;清除數據準備好標志

JNB ATN,$ ;等待發送停止條件

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

CLR TIRUN ;停止定時器I的運行

RET

联系我们: 错那县| 乐都县| 大庆市| 宣城市| 宜川县| 怀化市| 黎川县| 临夏县| 都匀市| 金乡县| 古浪县| 习水县| 芷江| 南溪县| 抚宁县| 安顺市| 洞口县| 安徽省| 六枝特区| 重庆市| 巴林左旗| 虞城县| 弥渡县| 三河市| 桃园县| 稷山县| 庐江县| 柘荣县| 宜阳县| 盘锦市| 湘乡市| 义马市| 蓬安县| 巴彦县| 枞阳县| 庐江县| 丁青县| 商丘市| 竹溪县| 蓬溪县| 南木林县|