單片機原理及應(yīng)用第12章-51單片機的總線接口技術(shù)課件_第1頁
單片機原理及應(yīng)用第12章-51單片機的總線接口技術(shù)課件_第2頁
單片機原理及應(yīng)用第12章-51單片機的總線接口技術(shù)課件_第3頁
單片機原理及應(yīng)用第12章-51單片機的總線接口技術(shù)課件_第4頁
單片機原理及應(yīng)用第12章-51單片機的總線接口技術(shù)課件_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第12章 51單片機的總線接口技術(shù)單片機原理及應(yīng)用22第12章 目錄12.1 I2C總線接口 12.1.1 I2C總線概述 12.1.2 串行EEPROM概述 12.1.3 24C02引腳功能 12.1.4 工作方式 12.1.5 器件尋址、寫操作和讀操作 12.1.6 24C02芯片與51單片機的接口電路及編程 12.1.7 ZLG7290接口電路及編程12.2 SPI總線接口 12.2.1 SPI總線概述及主要特點 12.2.2 12位串行A/D TLC2543介紹 12.2.3 TLC22543與51單片機的接口設(shè)計12.3 單總線串行擴展3 單片機的并行總線擴展(利用三總線DB、AB、

2、CB進行的系統(tǒng)擴展)已不再是單片機應(yīng)用系統(tǒng)唯一的擴展結(jié)構(gòu)。目前,串行總線擴展技術(shù)已得到廣泛地應(yīng)用。 例如:DALLAS 公司的單總線(1Wire)接口、Philips公司的I2C串行總線接口、Motorola公司的SPI串行外設(shè)接口以及Microwire總線三線同步串行接口。 本章介紹上述串行擴展接口總線的工作原理及特點,重點介紹I2C串行擴展技術(shù)和SPI 總線接口。 單片機的串行擴展技術(shù)與并行擴展技術(shù)相比具有顯著的優(yōu)點,串行接口器件與單片機接口時需要的I/O口線很少(僅需14條),串行接口器件體積小,因而占用電路板的空間小,約為并行接口器件的10%,明顯減少了電路板空間和成本 。除上述優(yōu)點,

3、還有工作電壓寬、抗干擾能力強、功耗低、數(shù)據(jù)不易丟失等特點。串行擴展技術(shù)在IC卡、智能儀器儀表以及分布式控制系統(tǒng)等領(lǐng)域得到廣泛應(yīng)用。12.1 I2C總線接口412.1.1 I2C總線概述 I2C總線使用廣泛,是很有發(fā)展前途的芯片間串行擴展總線。 I2C總線只有兩條信號線,一是數(shù)據(jù)線SDA,二是時鐘線SCL。兩條信號線都是雙向傳輸?shù)男盘柧€,所有連接到I2C上的器件的數(shù)據(jù)線都與SDA線連接;各器件時鐘線均與SCL線連接。I2C系統(tǒng)的基本結(jié)構(gòu)如圖121所示。I2C總線單片機(如PHILIPS公司的8xC552)可以直接與I2C接口的各種擴展器件(如存儲器、I/O芯片、A/D、D/A、鍵盤、顯示器、日歷

4、/時鐘)連接。 由于I2C總線的尋址采用純軟件的尋址方法,無需片選線的連接,這樣就大大簡化了總線數(shù)量。5 I2C的運行由主器件(主機)控制。主器件是指啟動數(shù)據(jù)的發(fā)送(發(fā)出起始信號)、發(fā)出時鐘信號、傳送結(jié)束時發(fā)出終止信號的器件,主器件通常由單片機來擔(dān)當。 從器件(從機)可以是存儲器、LED或LCD驅(qū)動器、A/D或D/A轉(zhuǎn)換器、時鐘/日歷器件等,從器件必須帶有I2C串行總線接口。圖121 I2C串行總線系統(tǒng)的基本結(jié)構(gòu) 6 當I2C總線空閑時,SDA和SCL兩條線均為高電平。由于連接到總線上器件(節(jié)點)輸出級必須是漏極或集電極開路,只要有一器件任意時刻輸出低電平,都將使總線上的信號變低,即各器件的S

5、DA及SCL都是“線與” 關(guān)系 。 由于各器件輸出端為漏級開路,故必須通過上拉電阻接正電源(見圖121中的兩個電阻),以保證SDA和SCL在空閑時被上拉為高電平。 SCL線上的時鐘信號對SDA線上的各器件間的數(shù)據(jù)傳輸起同步控制作用。 SDA線上的數(shù)據(jù)起始、終止及數(shù)據(jù)的有效性均要根據(jù)SCL線上的時鐘信號來判斷。 在標準I2C模式中,數(shù)據(jù)的傳輸速率為100kbit/s,高速模式下可達400kbit/s。7 總線上擴展的器件數(shù)量不是由電流負載決定的,而是由電容負載確定的。 I2C總線上每個節(jié)點器件的接口都有一定的等效電容,連接的器件越多,等效電容值越大,這會造成信號傳輸?shù)难舆t。總線上允許的器件數(shù)以所

6、有器件的等效電容量不超過400pF(通過驅(qū)動擴展可達4000pF)為宜,據(jù)此可計算出總線長度及連接器件的數(shù)量。 連到I2C總線上的每個器件有一個唯一的地址,擴展器件時也要受器件地址數(shù)目的限制。 I2C系統(tǒng)允許多主器件,究竟哪一主器件控制總線要通過總線仲裁來決定。如何仲裁,可查閱I2C仲裁協(xié)議。但在實際應(yīng)用中,經(jīng)常遇到的是以一個單片機為主機,其它外圍接口器件為從機情況,在這種情況下,時鐘線SCL為單向傳輸信號線,由單一主機發(fā)出。812.1.2 串行EEPROM概述 EEPROM (Electrically Erasable Programmable ReadOnly Memory),電可擦除可編

7、程只讀存儲器,是一種掉電后數(shù)據(jù)不丟失的存儲芯片。 EEPROM可以應(yīng)用微處理器或?qū)S迷O(shè)備擦除已有信息,重新寫入數(shù)據(jù),寫入的數(shù)據(jù)在常溫下可以保持十年。 EEPROM芯片有兩類接口:并行接口和串行接口。并行EEPROM相對容量大、速度快、功耗大、價格貴,但讀/寫方法簡單;串行EEPROM體積小、功耗低、價格便宜,使用中占用系統(tǒng)信號線少,但讀/寫速度相對慢,讀/寫方法稍復(fù)雜一些。對于系統(tǒng)中那些需要較少修改的代碼或參數(shù),通常所需要的字節(jié)數(shù)和寫入的次數(shù)不會很多,寫入速度也沒有太高要求,這種情況下采用串行EEPROM是非常合適的。本節(jié)以24C02為例介紹二線制串行EEPROM的使用。912.1.3 24C

8、02引腳功能 24C02是一塊有2048位,即256個8位字節(jié)存儲容量的串行CMOS EEPROM芯片。該芯片有8個引腳,封裝有PDIP、SOIC、TSSOP和MSOP,圖122為PDIP封裝引腳圖。 SCL 串行時鐘輸入引腳,輸入發(fā)送或接收數(shù)據(jù)的時鐘信號。 SDA 串行數(shù)據(jù)/地址引腳,雙向信號傳輸,用于器件所有數(shù)據(jù)的發(fā)送或接收,SDA是一個開漏輸出引腳,可與其它器件的開漏輸出或集電極開路輸出端進行線或(wire-OR),使用時需要連接一個上拉電阻。圖122 24C02引腳圖10 A0 A1 A2 器件地址定義輸入引腳,輸入器件地址,最多可級聯(lián)8個同類型EEPROM器件。如果只有一塊24C02

9、芯片連接在I2C總線上,A0 A1 A2三個引腳可懸空或連接到Vss。 WP 寫保護,如果WP 引腳連接到 Vcc,所有的內(nèi)容都被寫保護,只能讀。當 WP 管腳連接到Vss或懸空,允許器件進行正常的讀/寫操作。 VCC 電源輸入,+1.8V6.0V的工作電壓。如果VCC低于3.8V,禁止內(nèi)部的擦/寫操作。 VSS 接系統(tǒng)地1112.1.4 工作方式 24C02的I2C總線協(xié)議定義如下: (1) 只有在總線空閑時才允許啟動數(shù)據(jù)傳送 (2) 在數(shù)據(jù)傳送過程中,當時鐘線SCL為高電平時,數(shù)據(jù)線SDA必須保持穩(wěn)定狀態(tài),不允許有跳變。因為SCL為高電平時,SDA的任何電平變化將被看作總線的起始或停止信號

10、。 24C02的I2C總線的時序狀態(tài)定義如圖123所示 串行總線狀態(tài)定義 總線非忙狀態(tài)(A段) 數(shù)據(jù)線SDA和時鐘線SCL都保持為高電平。 啟動數(shù)據(jù)傳輸(B段) 當時鐘線SCL為高電平狀態(tài)時,數(shù)據(jù)線SDA由高電平變?yōu)榈碗娖降南陆笛乇徽J為是“啟動”信號。只有出現(xiàn)“啟動”12信號以后,其它的命令才有效。 停止數(shù)據(jù)傳輸(C段) 當時鐘線SCL為高電平狀態(tài)時,數(shù)據(jù)線SDA由低電平變?yōu)楦唠娖降纳仙乇徽J為是“停止”信號。隨著“停止”信號的出現(xiàn),所有的外部操作都結(jié)束。圖123 串行總線狀態(tài)定義13 數(shù)據(jù)有效(D段) 出現(xiàn)“啟動”信號以后,時鐘線為高電平狀態(tài)時數(shù)據(jù)線的狀態(tài)必須是穩(wěn)定的,這時數(shù)據(jù)線的狀態(tài)就表示

11、要傳送的有效數(shù)據(jù)。 數(shù)據(jù)線上數(shù)據(jù)的改變必須在時鐘線為低電平期間完成,每一位數(shù)據(jù)傳輸占一個時鐘周期脈沖。每組數(shù)據(jù)的傳輸都是由“啟動”信號開始,結(jié)束于“停止”信號。在“啟動”與“停止”信號之間傳輸?shù)拿拷M的數(shù)據(jù)字節(jié)數(shù)由微處理器確定,從理論上來說字節(jié)數(shù)沒有限制。14 (3)應(yīng)答信號 I2C總線數(shù)據(jù)傳送的確認應(yīng)答時序如圖124所示。I2C總線數(shù)據(jù)傳送時,每成功地傳送一個8位字節(jié)數(shù)據(jù)后,接收器都必須產(chǎn)生一個應(yīng)答信號,應(yīng)答的器件在第9個時鐘周期將數(shù)據(jù)線SDA 拉低,表示其已收到一個8位字節(jié)數(shù)據(jù)。 24C02在接收到起始信號和從器件地址,并確認被主器件選中之后,要發(fā)出一個應(yīng)答信號,如果主器件已選擇了寫操作,則

12、24C02在每接收一個8位字節(jié)數(shù)據(jù)之后發(fā)出一個應(yīng)答信號。如果主器件已選擇了讀操作,24C02發(fā)送一個8位數(shù)據(jù)后,釋放SDA線并監(jiān)視主器件的應(yīng)答信號,一旦接收到主器件的應(yīng)答信號,24C02繼續(xù)發(fā)送數(shù)據(jù),如主器件沒有發(fā)送應(yīng)答信號,24C02停止傳送數(shù)據(jù)且等待一個停止信號。主器件對24C02發(fā)送的最后一個字節(jié)數(shù)據(jù)不產(chǎn)生應(yīng)答信號,但是發(fā)給24C02一個結(jié)束信號。圖124 確認應(yīng)答時序圖1512.1.5 器件尋址、寫操作和讀操作 (1)器件尋址 24C02作為I2C總線的從器件有一個從器件地址。24C02是內(nèi)部有256個字節(jié)的存儲單元的EEPROM,每個字節(jié)存儲單元也有一個字節(jié)的8位地址。 主器件發(fā)送一

13、個起始信號啟動發(fā)送過程,然后發(fā)送24C02的控制字節(jié)(從器件地址字節(jié)),其格式如圖125,控制字節(jié)包括主器件所要尋址的從器件的地址,高4位固定為 1010,接下來的3位 A2 A1 A0 為主器件選中某一個24C02器件的地址,I2C總線能夠掛接8個24C02,可單獨被主器件尋址,控制字的最低位( )為讀寫控制位,“1” 表示對從器件進行讀操作,“0”表示對從器件進行寫操作。在主器件發(fā)送起始信號和從器件地址字節(jié)(控制字節(jié))之后,24C02接收從器件地址字節(jié)并與本身的從器件地址進行比較,從器件地址相符時發(fā)出一個應(yīng)答信號(通過SDA線),然后24C02再根據(jù)讀寫控制位( )的狀態(tài)進行讀或?qū)懖僮鳌?

14、24C02內(nèi)部存儲單元的地址字節(jié)格式為:A7A0,A7為D7位,A0為D0位。圖125 24C02控制字節(jié)(從器件地址字節(jié))16 (2) 寫操作 字節(jié)寫操作: 要能夠進行字節(jié)寫操作,24C02的WP引腳應(yīng)為低電平,或與VSS連接,處于禁止寫保護功能狀態(tài)。 字節(jié)寫操作示意圖如圖126所示,在字節(jié)寫模式下,主器件發(fā)送起始位、4位控制碼1010緊隨其后,接下來的 3 位是從器件地址A2、A1、A0,然后是R/W位(寫操作該位為低電平),如果A2A1A0符合24C02引腳A2A1A0連接的地址值,A2A1A0就發(fā)出應(yīng)答信號,即在第九個時鐘周期產(chǎn)生一個確認位。圖126 字節(jié)寫操作示意圖17 主器件在收到

15、24C02發(fā)出的確認位的應(yīng)答信號后,發(fā)送的第二個字節(jié)是待寫入24C02內(nèi)部存儲單元的數(shù)據(jù)的地址字節(jié),24C02把地址字節(jié)鎖存到內(nèi)部的地址計數(shù)器,24C02器件再次發(fā)出確認信號ACK。 主器件在接收到該確認信號后即發(fā)送數(shù)據(jù)字節(jié),24C02接收數(shù)據(jù)字節(jié)寫入被選中地址的存儲單元中,之后主器件發(fā)出停止條件信號,24C02收到停止條件信號后,啟動內(nèi)部擦/寫周期,在內(nèi)部擦/寫過程中24C02不再應(yīng)答主器件的任何請求。 如果在WP引腳保持高電平時進行存儲器寫操作,從器件會確認命令,但不會啟動寫周期,也不會寫入數(shù)據(jù),而會立即接受新的命令。 寫保護: 通過把WP引腳連接到VCC,允許用戶設(shè)置24C02的寫保護功

16、能。把WP引腳連接到VSS將禁止寫保護功能。對于每個寫命令,24C02對WP引腳在停止位之前進行采樣,在停止位之后改變WP 引腳電平不會對寫周期的執(zhí)行產(chǎn)生任何影響。18 (3)讀操作 除了控制字節(jié)(從器件地址字節(jié))的R/W位設(shè)置為1外,讀操作與寫操作基本相同。24C02有三種基本的讀操作:當前地址的讀操作、隨機讀操作和連續(xù)讀操作。 當前地址單元內(nèi)容的讀操作: 當前地址單元內(nèi)容讀操作的示意圖如圖127所示,24C02內(nèi)置一個自動加1地址計數(shù)器,該計數(shù)器保留最后一次訪問的地址。因此,如果先前已對地址n(n 為任意合法地址)的存儲單元進行了讀或?qū)懖僮?,則下一條讀操作命令將自動對地址n+1的存儲單元訪

17、問。 24C02接收到 R/W 位設(shè)置為1的控制字節(jié)后,24C02發(fā)出確認信號,并發(fā)送當前地址單元的8位數(shù)據(jù)字節(jié)。主器件不會對數(shù)據(jù)傳輸作出確認,但會產(chǎn)生停止條件,24C02即停止數(shù)據(jù)發(fā)送。圖127 當前地址讀操作示意圖19 隨機讀操作: 隨機讀操作允許主器件以隨機方式訪問24C02中的任意一個存儲單元。隨機讀操作示意圖如圖128所示,發(fā)送的控制字節(jié)R/W 設(shè)置為0,執(zhí)行該指令前還需先設(shè)置24C02的內(nèi)部待讀出數(shù)據(jù)的存儲單元的地址字節(jié)。主器件接收到24C02發(fā)出的字節(jié)地址的確認信號再次產(chǎn)生起始條件,主器件再次發(fā)送控制字節(jié),而該字節(jié)中 R/W 位設(shè)置為1,之后24C02發(fā)出確認信號,并發(fā)送被選中的

18、地址單元的8 位數(shù)據(jù)字節(jié)。主器件不會對數(shù)據(jù)傳輸作出確認,但會產(chǎn)生停止條件,24C02即停止數(shù)據(jù)發(fā)送。在隨機讀取命令執(zhí)行結(jié)束之后,24C02內(nèi)部地址計數(shù)器加1指向下一個存儲單元的地址。圖128 隨機讀操作示意圖20 連續(xù)讀操作: 連續(xù)讀操作示意圖如圖129所示,連續(xù)讀操作的起動過程和隨機讀操作相同,只是在24C02發(fā)送完第一個數(shù)據(jù)字節(jié)后,主器件發(fā)出確認信號。該確認信號指示24C02器件發(fā)送下一個連續(xù)地址的存儲單元的數(shù)據(jù)字節(jié)。在24C02器件向主器件發(fā)送完最后一個數(shù)據(jù)字節(jié)后,主器件不再產(chǎn)生確認信號,而是產(chǎn)生停止條件。為了可以進行連續(xù)讀操作,24C02器件內(nèi)置了一個地址指針,在每次操作完成后該指針加

19、1。地址指針達到最后一個地址字節(jié)FFH后,地址指針將翻轉(zhuǎn)到地址00H。圖129 連續(xù)讀操作示意圖2112.1.6 24C02芯片與51單片機的接口電路及編程 一塊24C02芯片與51單片機的接口電路如圖1210所示。圖1210中,24C02的三個地址引腳直接接地,串行時鐘SCL引腳與51單片機的P1.0連接,雙向串行數(shù)據(jù)SDA引腳與P1.1連接,SDA和SCL都需要一個上拉電阻和+5V連接,WP寫保護引腳直接接地,允許24C02執(zhí)行一般的讀寫操作。 24C02內(nèi)部有地址寄存器。讀或?qū)?一個字節(jié)數(shù)據(jù)后,該地址寄存器自動加1,實現(xiàn)對下一個存儲單元的讀/寫。為降低總的寫入時間,一次操作可連續(xù)讀/寫多

20、達8個字節(jié)的數(shù)據(jù)。圖1210 24C02與51單片機的接口電路 22例121 將程序存儲器首地址為1000H的8個數(shù)據(jù)寫到 24C02中去,24C02的首址單元為01H;然后將24C02中的首地址為10H的8個單元讀到51單片機內(nèi)部RAM中的首地址為30H的8個單元中,參考程序如下: ORG 0000H SCL BIT P1.0;定義24C02的串行時鐘線 SDA BIT P1.1;定義24C02的串行數(shù)據(jù)線 LJMP WSTART; ORG 0030H;對從器件24C02寫字節(jié)操作,參見圖123的起始條件,圖126的字節(jié)寫操作 WSTART: MOV R2, #08H ;一串數(shù)據(jù)有8個字節(jié)

21、MOV DPTR, #1000H ;定義源數(shù)據(jù)的位置 MOV R1, #01H ;定義存放到24C02中的數(shù)據(jù)的首址單元位置23 LOOPW: LCALL STAR ;調(diào)用啟動,參見圖123 MOV R3, #10100000B ;寫控制字節(jié):1010+器件3位地址(000)+ (0) MOV A, R3 ;送控制字節(jié) LCALL SDATA ;調(diào)用主器件移位輸出(寫)8位數(shù)據(jù)操作子程序 LCALL ACK ;調(diào)用確認子程序,參見圖126 JC LOOPW ;判斷從器件是否已確認,未確認返回再傳輸一次 MOV A, R1 ;送從器件24C02的首址單元為01H的地址字節(jié), LCALL SDAT

22、A ;調(diào)用主器件移位輸出(寫)8位數(shù)據(jù)操作子程序 LCALL ACK ;調(diào)用確認子程序 JC LOOPW MOV A, #00H MOVC A, A+DPTR ;提取51單片機程序存儲器存儲單元的數(shù)據(jù)傳輸 LCALL SDATA ;調(diào)用寫操作子程序 LCALL ACK ;調(diào)用應(yīng)答子程序 JC LOOPW INC DPTR INC R1 ;存放地址增一 DJNZ R2, LOOPW LCALL STOP ;調(diào)用停止子程序 24 /(R7)=欲讀數(shù)據(jù)存放地址指針,(R1)=片內(nèi)字節(jié)地址,(R2)=連續(xù)讀字節(jié)數(shù) /(R3)=10100001(讀控制字節(jié):1010+器件3位地址(000)+ (1) R

23、START:MOV R2, #08H ;一串數(shù)據(jù)有8個字節(jié),連續(xù)讀字節(jié)數(shù) MOV R7, #10H ;定義從器件24C02源數(shù)據(jù)的首地址存儲單元 MOV R1, #30H ;定義讀入數(shù)據(jù)存放在51單片機中的首地址存儲單元 LOOPR:LCALL STAR ;調(diào)用啟動, MOV R3, #10100000B ;寫控制字節(jié):1010+器件3位地址(000)+ (0) MOV A, R3 ;送控制字節(jié) LCALL SDATA ;調(diào)用寫操作子程序 LCALL ACK ;調(diào)用確認子程序,參見圖128 JC LOOPR ;判斷從器件是否已確認,未確認返回再傳輸一次 MOV A, R7 ;送地址字節(jié) LCA

24、LL SDATA ;調(diào)用寫操作子程序 LCALL ACK ;調(diào)用從器件確認子程序 JC LOOPR ;C=1轉(zhuǎn)移,C=0順序執(zhí)行,表示從其器件已確認 MOV R3, #10100001B ;讀控制字節(jié):1010+器件3位地址(000)+ (1) MOV A, R3 ;送讀控制字節(jié) LCALL SDATA ;調(diào)用寫操作子程序,參見圖128 LCALL ACK ;調(diào)用確認子程序25 JC LOOPRMORE:ACALL SDATAR ;調(diào)用包括應(yīng)答處理的接收單字節(jié)子程序, MOV R1, A ;讀入的數(shù)據(jù)存儲在51單片機內(nèi)部RAM中 INC R1 ;51單片機內(nèi)部RAM存儲單元地址+1 DJNZ

25、R2, MORE LCALL STOP ;調(diào)用停止子程序HERE:AJMP HERESDATAR:MOV R4, #08H ;讀單字節(jié)子程序LOOPR:SETB SCL ACALL DELAY MOV C, SDA RLC A CLR SCL ACALL DELAY DJNZ R4, LOOPR CJNE R2, #01H, LOW SETB SDA ;若是最后一個字節(jié)不確認 AJMP SETOK LOW:CLR SDA ;否則主器件發(fā)出確認信號26SETOK:ACALL DELAY SETB SCL ACALL DELAY CLR SCL ACALL DELAY SETB SDA ;應(yīng)答畢,

26、SDA置1,P口回到接收狀態(tài) RET STAR: SETB SDA ;啟動子程序,參見圖123,讀/寫操作都用該子程序 ACALL DELAY ;延時以滿足傳輸速率要求 SETB SCL ACALL DELAY ;延時以滿足傳輸速率要求 CLR SDA ACALL DELAY ;延時以滿足傳輸速率要求 CLR SCL RET SDATA:MOV R0,#08H ;寫單字節(jié)操作子程序 LOOP0:RLC A MOV SDA,C ACALL DELAY ;延時以滿足傳輸速率要求 SETB SCL 27 ACALL DELAY ;延時以滿足傳輸速率要求 CLR SCL DJNZ R0, LOOP0

27、RET ACK:SETB SDA ;SDA與P1.1連接,讀SDA首先置P1.1為“1” ACALL DELAY ;延時以滿足傳輸速率要求 SETB SCL ACALL DELAY ;延時以滿足傳輸速率要求 MOV C, SDA ;讀從器件的確認信號 CLR SCL RET STOP: CLR SDA ;參見圖123 ACALL DELAY ;延時以滿足傳輸速率要求 SETB SCL ACALL DELAY ;延時以滿足傳輸速率要求 SETB SDA ACALL DELAY ;延時以滿足傳輸速率要求 CLR SCL RET28DELAY:NOP NOP RET ORG 1000H DB 0A0

28、H,10H,01H,02H,03H,04H,05H,06H END 程序中多處調(diào)用了DELAY子程序,這是為了滿足I2C總線上數(shù)據(jù)傳送速率的要求,只有當SDA數(shù)據(jù)線上的數(shù)據(jù)穩(wěn)定下來之后才能進行讀寫(即SCL線發(fā)出正脈沖)。另外,在讀最后一個字節(jié)數(shù)據(jù)時,置應(yīng)答信號為“1”,表示讀操作即將完成。2912.1.7 ZLG7290接口電路及編程 ZLG7290采用I2C串行接口,提供鍵盤中斷信號,方便與微處理器接口。在顯示方面,能夠直接驅(qū)動 8 位共陰數(shù)碼管或64只獨立的LED;控制掃描數(shù)碼管的位數(shù),控制任一數(shù)碼管進行閃爍??梢詫崿F(xiàn)數(shù)據(jù)譯碼和循環(huán)、移位、段尋址等控制。在鍵盤處理方面,可直接驅(qū)動64個按

29、鍵,有8個功能鍵,可檢測任一按鍵的連擊次數(shù),無需外接元件就可擴展驅(qū)動電流和驅(qū)動電壓。 采用PDIP24封裝的ZLG7290引腳圖如圖1211所示,其引腳功能參見表121。圖1211 ZLG7290引腳圖3031 功能描述 : ZLG7290系統(tǒng)功能框圖見圖1212,系統(tǒng)功能框圖即寄存器映象圖。 (1) 鍵盤部分 ZLG7290可采樣64個按鍵或傳感器,可檢測每個按鍵的連擊次數(shù)。其基本功能如下: 鍵盤自動去抖動處理,無需編制鍵盤消抖動的程序。圖1212 ZLG7290系統(tǒng)功能框圖即寄存器映象圖32 雙鍵互鎖處理。 當有兩個以上按鍵被同時按下時,ZLG7290只采樣優(yōu)先級高的按鍵(優(yōu)先順序為 S1

30、S2S64,例如:同時按下S2 和S18按鍵時,只能夠采樣到S2按鍵被按下)。 連擊鍵處理 當某個按鍵按下時,輸出一次鍵值后,如果該按鍵還未釋放,該鍵值連續(xù)有效,就像連續(xù)按壓該鍵一樣,這種功能稱為連擊。ZLG7290的連擊次數(shù)計數(shù)器(RepeatCnt)可區(qū)別出單擊(某些功能不允許連擊,如開/關(guān))或連擊。判斷連擊次數(shù)可以檢測被按時間,以防止某些功能誤操作(如連續(xù)按5秒進入?yún)?shù)設(shè)置狀態(tài))。 功能鍵處理 如圖1213所示,ZLG7290B典型應(yīng)用電路原理圖中的按鍵S57S64是功能鍵,功能鍵能夠?qū)崿F(xiàn)2個以上按鍵同時按下來擴展按鍵數(shù)目或?qū)崿F(xiàn)特殊功能。類似于 PC機上的“Ctrl”、“Shift”、“

31、Ctrl”、“Alt”鍵,以及“Ctrl”+ “Shift”鍵構(gòu)成的組合鍵等。33 (2) 顯示部分 在每個顯示刷新周期,ZLG7290按照掃描位數(shù)寄存器(ScanNum)指定的顯示位數(shù)N,把顯示緩存 DpRam0DpRamN的內(nèi)容按先后循序送入LED驅(qū)動器實現(xiàn)動態(tài)顯示,減少N 值可提高每位顯示掃描時間的占空比,以提高LED亮度,顯示緩存中的內(nèi)容不受影響。修改閃爍控制寄存器(FlashOnOff)可改變閃爍頻率和占空比(亮和滅的時間)。 ZLG7290提供兩種控制方式:寄存器映象控制和命令解釋控制。寄存器映象控制是指直接訪問底層寄存器,實現(xiàn)基本控制功能,這些寄存器須字節(jié)操作。命令解釋控制是指通

32、過解釋命令緩沖區(qū)(CmdBuf0 CmdBuf1)中的指令,間接訪問底層寄存器實現(xiàn)擴展控制功能。如實現(xiàn)寄存器的位操作:對顯示緩存循環(huán),移位,對操作數(shù)譯碼等操作。 寄存器詳解和指令詳解請參閱相關(guān)手冊。34 (3) 通信接口 ZLG7290作為I2C總線的從器件的接口傳輸速率可達32kbit/s,其從地址(slave address)為70H(01110000B)。 ZLG7290內(nèi)部可通過I2C總線訪問的寄存器地址范圍為00H17H,任一寄存器都可按字節(jié)直接讀寫,也可以通過命令接口間接讀寫或按位讀寫。支持自動增址功能(訪問一寄存器后,寄存器子地址(sub address)自動加一)和地址翻轉(zhuǎn)功能

33、(訪問最后一寄存器(子地址 17H)后,寄存器子地址翻轉(zhuǎn)為00H )。ZLG7290 的控制和狀態(tài)查詢?nèi)慷际峭ㄟ^讀/寫寄存器實現(xiàn)的,用戶只需象讀寫24C02內(nèi)的單元一樣,即可實現(xiàn)對LG7290的控制。35 典型應(yīng)用電路 : 在圖1213中,U1 就是 ZLG7290。為了使電源更加穩(wěn)定,一般要在 Vcc 到GND之間接入 47470uF 的電解電容 E1。P1是ZLG7290與微控制器的接口,按照 I2C 總線協(xié)議的要求,信號線SCL和SDA上必須要分別連接上拉電阻,其典型值是 10K。晶振X1通常取值8MHz,調(diào)節(jié)電容C1和C2通常取值在 10pF左右。復(fù)位信號是低電平有效,一般只需外接簡

34、單的RC復(fù)位電路,也可以通過直接拉低RST引腳的方法進行復(fù)位。 數(shù)碼管必須是共陰結(jié)構(gòu)的LED數(shù)碼管,L1 和L2 是4位聯(lián)體式數(shù)碼管,共同組成8位數(shù)碼管顯示電路。數(shù)碼管在工作時要消耗較大的電流,R1R8是限流電阻,典型值是 220。64 個按鍵中,前56 個按鍵是普通按鍵S1S56,最后8個S57S64為功能鍵 F0F7。鍵盤電阻 R11R118 的典型值是3.3K。數(shù)碼管掃描線和鍵盤掃描線是共用的,所以二極管 D1D8 是必須的,有了它們就可以防止按鍵干擾數(shù)碼管顯示的情況發(fā)生。36圖1213 ZLG7290B典型應(yīng)用電路原理圖3712.2 SPI總線接口 12.2.1 SPI總線概述及主要特

35、點 SPI(Serial Periperal Interface)是Motorola公司推出的同步串行外設(shè)接口,允許單片機與多個廠家生產(chǎn)的帶有標準SPI接口的外圍設(shè)備直接連接,以串行方式交換信息。 圖1214為SPI串行總線外圍器件擴展結(jié)構(gòu)圖。圖中,51單片機作為主器件,外圍器件1#n#作為從器件。對于每一個從器件使用SPI總線4條線:串行時鐘SCK,主器件輸入/從器件輸出數(shù)據(jù)線MISO,主器件輸出/從器件輸入數(shù)據(jù)線MOSI,每一個從器件的一條選擇線。圖1214 SPI外圍串行擴展結(jié)構(gòu)圖38 SPI的典型應(yīng)用是單主系統(tǒng),一臺主器件,從器件通常是外圍接口器件,如存儲器、I/O接口、A/D、D/A

36、、鍵盤、日歷/時鐘和顯示驅(qū)動等。擴展多個外圍器件時,SPI總線無法通過數(shù)據(jù)線譯碼選擇外圍器件,故外圍器件都有片選端。在擴展單個SPI器件時,外圍器件的片選端 可以接地或通過I/O口控制;在擴展多個SPI從器件時,單片機通過I/O口線來分時選通外圍器件。如果SPI串行總線只擴展一個從器件,該從器件只作輸入(如鍵盤)或只作輸出(如顯示器),可省去一條數(shù)據(jù)輸出(MISO)或一條數(shù)據(jù)輸入(MOSI)線,構(gòu)成二線系統(tǒng), 可以接地。 SPI總線系統(tǒng)與I2C總線選通比較,每個從器件多兩根連接線,從器件擴展比較多時,主器件需要控制較多的從器件 端,連線較多。但由于主器件單片機對從器件的選通是直接控制其 端,省

37、去I2C總線數(shù)據(jù)傳輸時的從器件地址字節(jié)(控制字節(jié)),而且SPI總線應(yīng)用MISO和MISO線,數(shù)據(jù)傳送軟件的編制比I2C總線簡單的多。39 SPI總線的8位數(shù)據(jù)傳輸時序如圖1215所示。圖中,主器件單片機將選中的從器件的 信號由“1”“0”,發(fā)出SCK時鐘信號,啟動一次8位數(shù)據(jù)傳輸,SCK時鐘信號作為從器件的同步時鐘,控制數(shù)據(jù)的輸入和輸出。傳輸格式是高位(MSB)在前,低位(LSB)在后。輸出數(shù)據(jù)的變化以及輸入數(shù)據(jù)時的采樣,都取決于SCK。但對不同外圍芯片的從器件,可能是SCK的上升沿起作用,也可能是SCK的下降沿起作用。SPI總線有較高的數(shù)據(jù)傳輸速度,最高可達1.05Mbit/s。 Motor

38、ola提供了一系列具有SPI接口的單片機和外圍接口芯片,如存儲器MC2814、顯示驅(qū)動器MC14499和MC14489等各種芯片。 目前已有許多增強型51單片機和其它機型的單片機都帶有SPI接口。但對51單片機,由于不帶SPI接口,要實現(xiàn)SPI接口,可采用軟件控制I/O口來模擬SPI的接口時序。圖1215 SPI數(shù)據(jù)傳送格式4012.2.2 12位串行A/D TLC2543介紹 功能特點與引腳: TLC2543是美國TI公司的12位串行SPI接口的A/D轉(zhuǎn)換器,使用開關(guān)電容逐次逼近技術(shù)完成A/D轉(zhuǎn)換過程,轉(zhuǎn)換時間為10s。片內(nèi)有1個14路模擬開關(guān),用來選擇11路模擬輸入以及3路內(nèi)部測試電壓中的

39、1路進行采樣。由于是串行輸入結(jié)構(gòu),能夠節(jié)省51單片機I/O資源;且價格適中,分辨率較高,因此在儀器儀表中有較為廣泛的應(yīng)用。 TLC2543具有如下特點: (1) 12位分辯率A/D轉(zhuǎn)換器; (2) 在工作溫度范圍內(nèi)10s轉(zhuǎn)換時間; (3) 11個模擬輸入通道; (4) 3路內(nèi)置自測試方式; (5) 采樣率為66kbps;圖1216 TLC2543引腳圖41 (6) 線性誤差1LSBmax; (7) A/D轉(zhuǎn)換結(jié)束輸出EOC; (8) 具有單、雙極性輸出; (9) 可編程的MSB或LSB前導(dǎo); (10)可編程輸出數(shù)據(jù)長度。42 工作原理: TLC2543內(nèi)部有一個8位控制寄存器、輸出數(shù)據(jù)寄存器、

40、A/D轉(zhuǎn)換器和模擬量采樣器。8位控制寄存器規(guī)定了 TLC2543 要轉(zhuǎn)換的模擬量通道、轉(zhuǎn)換后的輸出數(shù)據(jù)長度、輸出數(shù)據(jù)的格式,上電后8位控制寄存器初始狀態(tài)被置為00H。輸出數(shù)據(jù)寄存器鎖存A/D轉(zhuǎn)換的結(jié)果,模擬量采樣器實現(xiàn)對8位控制寄存器所規(guī)定的模擬量通道的輸入模擬量的采樣,A/D轉(zhuǎn)換器完成對采樣值的A/D轉(zhuǎn)換。 TLC2543完成模擬量通道的選擇,模擬量的采樣,輸出數(shù)據(jù)寄存器串行輸出數(shù)據(jù)和A/D轉(zhuǎn)換的時間稱為一個工作周期,其中,輸出數(shù)據(jù)寄存器串行輸出數(shù)據(jù)的過程和模擬量通道的選擇,模擬量的采樣過程并行執(zhí)行。 片選 輸入端為高電平時,I/O CLOCK、DATA INPUT被禁止,DATA OUT呈

41、高阻狀態(tài),EOC端輸出為高電平。43 一次工作周期的開始,TLC2543的片選 輸入端必須從高電平變換到低低電平,I/O CLOCK、DATA INPUT使能,DATA OUT脫離高阻狀態(tài),EOC輸出為高電平,8位控制寄存器被置為0。 I/O CLOCK輸入端依次輸入12 或16個時鐘信號,隨著時鐘信號的輸入,首先控制字從DATA INPUT一位一位地在時鐘信號的上升沿時被送入TLC2543(高位先送入) 的8位控制寄存器,同時存放在輸出數(shù)據(jù)寄存器中的上一個工作周期A/D轉(zhuǎn)換數(shù)據(jù)的結(jié)果從DATA OUT一位一位地移出。第4個時鐘信號后,TLC2543已收到模擬通道號,此時TLC2543開始對選

42、定的通道模擬量進行采樣,并保持到第12或16個時鐘的下降沿。在第12或16個時鐘下降沿,EOC變?yōu)榈碗娖?,開始對本次采樣的模擬量進行A/D轉(zhuǎn)換,轉(zhuǎn)換時間約需10s,轉(zhuǎn)換結(jié)束后EOC變?yōu)楦唠娖?,轉(zhuǎn)換的數(shù)據(jù)鎖存在輸出數(shù)據(jù)寄存器中,待下一個工作周期輸出。44 (1) 內(nèi)部控制寄存器 8位內(nèi)部控制寄存器各位的基本功能如下: 1) 高4位D7D4決定模擬量輸入通道號。0通道至10通道的地址分別為00001010H ,該4位為10111101時,用于對TLC2543的自檢,分別測試( VREF+ +VREF) /2、VREF、VREF+的值,當為1110時,TLC2543 進入休眠狀態(tài)。 2) D3、D2

43、決定輸出數(shù)據(jù)長度。00和10表示輸出數(shù)據(jù)長度為12位(標準位數(shù),12個時鐘的工作周期),01為8位(精度較低),11為16位(16個時鐘的工作周期,低四位為零,便于16位串行數(shù)據(jù)傳輸)。 3) D1:決定輸出數(shù)據(jù)是高位先送出,還是低位先送出。0:表示輸出數(shù)據(jù)的最高位導(dǎo)前;1:最低位導(dǎo)前。 4) D0:單極性(無符號二進制)還是雙極性(有符號的補碼二進制)輸出控制位。0:單極性;1:雙極性。 (2) 采樣過程 TLC2543的工作周期可以分為二個子周期:I/O周期和轉(zhuǎn)換周期t(conv)。 1) I/O周期完成對內(nèi)部控制寄存器的置數(shù)、模擬量的采樣,并同時完成輸出數(shù)據(jù)寄存器的數(shù)據(jù)(上一個工作周期A

44、/D轉(zhuǎn)換的結(jié)果)從DATA OUT端的串行輸出,工作在I/O周期時,EOC輸出高電平;I/O周期又可以分為訪問周期A和采樣周期B。 訪問周期A:4個時鐘脈沖,使得TLC2543接收到模擬量輸入通道號,然后進入采樣周期B。45 采樣周期B:3個并行處理的周期,一是58個時鐘脈沖,8位控制寄存器的D3D0的數(shù)據(jù)輸入;二是輸出數(shù)據(jù)寄存器數(shù)據(jù)的串行輸出;三是對選定的模擬量輸入通道的輸入信號進行采樣。采樣開始于I/O時鐘的第四個下降沿。采樣方式按照內(nèi)部控制寄存器的D3、D2的設(shè)置值,01:采樣直到第8個I/O CLOCK下降沿;00和10:12個時鐘周期的采樣;11:16個時鐘周期的采樣。采樣周期B結(jié)束

45、,EOC由輸出高電平變換為輸出低電平,進入轉(zhuǎn)換周期。 2) 轉(zhuǎn)換周期完成模擬量采樣值的A/D轉(zhuǎn)換,是由I/O時鐘同步的內(nèi)部時鐘來控制。在轉(zhuǎn)換周期開始時,EOC輸出變?yōu)榈碗娖?;當轉(zhuǎn)換完成時變?yōu)楦唠娖剑珹/D轉(zhuǎn)換的數(shù)據(jù)結(jié)果由輸出數(shù)據(jù)寄存器鎖存。 上電后的第一個工作周期從輸出數(shù)據(jù)寄存器串行輸出的轉(zhuǎn)換結(jié)果不準確,應(yīng)忽略。 TLC2543可以用四種傳輸方法使TLC2543得到12位分辯率,每次轉(zhuǎn)換和數(shù)據(jù)串行輸出可以使用12或16個時鐘周期。 一個片選( )脈沖要插到每次轉(zhuǎn)換的開始處,或是在A/D轉(zhuǎn)換時序的開始處變化一次直到工作周期時序結(jié)束。46 圖1217是使用 ,MSB在前的I/O周期為16個時鐘的一

46、個工作周期的時序圖,圖1218是不使用 ,MSB在前的I/O周期使用16個時鐘的一個工作周期的時序圖。圖1217 I/O周期為16時鐘的一個工作周期時序圖(使用 ,MSB在前)47圖1218 I/O周期為16時鐘的一個工作周期時序圖(不使用 ,MSB在前) 4812.2.3 TLC22543與51單片機的接口設(shè)計 設(shè)計的51單片機與串行A/D轉(zhuǎn)換器TLC2543的SPI接口原理圖如圖1219所示。TLC2543的I/O CLOCK、DATA INPUT和 端由51單片機的P1.0、P1.1和P1.3來控制。轉(zhuǎn)換結(jié)果的輸出數(shù)據(jù)(DATA OUT)由51單片機的P1.2串行接收,51單片機將命令字

47、通過P1.1輸入到TLC2543的輸入寄存器中。 TLC2543的數(shù)據(jù)采集程序結(jié)構(gòu)可以參照第10章例104的編程方法,應(yīng)用定時器定時中斷采樣的方法設(shè)計程序結(jié)構(gòu)。主要不同點在于定時中斷服務(wù)程序。圖1219 51單片機與TLC2543的SPI接口49例122 編寫51單片機選擇TLC2543的某一通道(例如AIN0通道)進行1次數(shù)據(jù)采集的子程序,A/D轉(zhuǎn)換結(jié)果共12位,分兩次讀入。先讀入TLC2543中的8位轉(zhuǎn)換結(jié)果到51單片機中,同時寫入下一次轉(zhuǎn)換的命令,然后再讀入4位的轉(zhuǎn)換結(jié)果到51單片機中。ADCOMD DATA 6FH ;定義命令存儲單元ADOUTH DATA 6EH ;定義存儲轉(zhuǎn)換結(jié)果高

48、4位單元ADOUTL DATA6DH ;定義存儲轉(zhuǎn)換結(jié)果低8位單元ADCV:CLR P1.0 ;時鐘引腳為低電平,P1.0模擬SCK信號CLR P1.3 ;片選 有效,選中TLC2543,P1.3模擬選擇信號MOV R2, #08H ;送出下一次8位轉(zhuǎn)換命令和讀8位轉(zhuǎn)換結(jié)果做準備MOV A, ADCOMD ;下一次轉(zhuǎn)換命令在ADCOMD單元中送ALOOP1:MOV C, P1.2 ;讀入1位轉(zhuǎn)換結(jié)果;P1.2模擬MOSO信號RRC A ;1位轉(zhuǎn)換結(jié)果帶進位位右移MOV P1.1, C;送出命令字節(jié)中的1位;P1.1模擬MOSI信號SETB P1.0 ;產(chǎn)生1個時鐘NOPCLR P1.0NOPDJNZ R2, LOOP1 ;是否完成8次轉(zhuǎn)換結(jié)果讀入和命令輸出,未完則轉(zhuǎn)移50MOV ADOUTL, A ;讀8位轉(zhuǎn)換結(jié)果存入ADOUTL單元MOV A, #00H;A清0MOV R2, #04H ;為讀入4位轉(zhuǎn)換結(jié)果做準備LOOP2: MOV C, P1.2 ;讀入高4位轉(zhuǎn)換結(jié)果中的1位 RRC A ;帶進位位循環(huán)右

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論