單片機原理、接口及應用:第9章 串行接口技術_第1頁
單片機原理、接口及應用:第9章 串行接口技術_第2頁
單片機原理、接口及應用:第9章 串行接口技術_第3頁
單片機原理、接口及應用:第9章 串行接口技術_第4頁
單片機原理、接口及應用:第9章 串行接口技術_第5頁
已閱讀5頁,還剩55頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第9章 串行接口技術單片機原理、接口及應用內 容 提 要 RS-485總線擴展 IIC總線擴展接口及應用 SPI總線擴展接口及應用 9.1 RS485總線擴展RS485標準接口是單片機系統種常用的一種串行總線之一。與RS232C比較,其性能有許多改進,細節請見表9.1所示。 表9.1 RS232C與RS485性能比較RS485接口可連接成半雙工和全雙工兩種通信方式。常見的半雙工通信芯片有MAX481、MAX483、MAX485、MAX487等,全雙工通信芯片有MAX488、MAX489、MAX490、MAX491等。 下面以MAX485為例來介紹RS485串行接口的應用。MAX485的封裝有D

2、IP、SO和uMAX三種,其中DIP封裝的管腳如圖9.1所示。 管腳的功能如下:RO:接收器輸出端。若A比B大200mV,RO為高;反之為低電平。RE:接收器輸出使能端。RE為低時,RO有效;為高時,RO呈高阻狀態。DE:驅動器輸出使能端。若DE1,驅動器輸出A和B有效;若DE0,則它們呈高阻態。若驅動器輸出有效,器件作為線驅動器用,反之作為線接收器用。DI:驅動器輸入端。DI0,有A0,B1;當DI1,則A1,B0。GND:接地。A:同相接收器輸入和同相驅動器輸出。B:反相接收器輸入和反相驅動器輸出。VCC:電源端,一般接+5V。圖9.1 MAX485芯片的DIP封裝管腳圖MAX485典型的

3、工作電路如圖9.2所示,其中平衡電阻Rp通常取100300歐姆。MAX485的收發功能見表9.3。表9.3 MAX485的收發功能89C51與MAX485的接口電路如圖9.4所示。P1.7用來控制MAX485的接收或發送,其余操作同串口 。9.2 I2C總線擴展接口及應用9.2.1 原理 I2C(IIC)總線是Philip公司推出的芯片間串行傳輸總線。它用兩根線實現了完善的全雙工同步數據傳送,可以極為方便地構成多機系統和外圍器件擴展系統。IIC總線采用了器件地址的硬件設置方法,通過軟件尋址完全避免了器件的片選線尋址方法,從而使硬件系統具有簡單靈活的擴展方法。按照IIC總線規范,總線傳輸中的所有

4、狀態都生成相對應的狀態碼,系統中的主機能夠依照這些狀態碼自動地進行總線管理,用戶只要在程序中裝入這些標準處理模塊,根據數據操作要求完成IIC總線的初始化,啟動IIC總線就能自動完成規定的數據傳送操作。 IIC總線接口為開漏或開集電極輸出,需加上拉電阻。系統中所有的單片機、外圍器件都將數據線SDA和時鐘線SCL的同名端相連在一起,總線上的所有節點都由器件和管腳給定地址。系統中可以直接連接具有IIC總線接口的單片機,也可以通過總線擴展芯片或I/O口的軟件仿真與IIC總線相連。在IIC總線上可以掛接各種類型的外圍器件,如RAM/EEPROM、日歷/時鐘、A/D、D/A、以及由I/O口、顯示驅動器構成

5、的各種模塊。 9.2.2 軟件IIC總線假設單片機所用晶體振蕩器的頻率為6MHz。用P1.7和P1.6分別模擬SDA和SCL,定義如下: SDAEQUP1.7 SCLEQUP1.6(1)產生起始位和停止位如果單片機則每個機器周期為2us,我們可分別寫出產生時鐘SCL和SDA的發送起始條件和停止條件兩段子程序如下。若晶振頻率并非 6MHz,則要相應增刪各程序段中NOP指令的條數,以滿足時序的要求。例如,若fosc=12MHz ,則兩條NOP指令應增至4條。 發送起始條件STARTSTA: SETB SDA SETB SCL NOP NOP CLR SDA NOP NOP CLR SCL RET

6、發送停止條件STOPSTOP:CLR SDA SETB SCL NOP NOP SETB SDA NOP NOP CLR SCL RET(2)發送應答位和非應答位子程序 IIC總線上的第9個時鐘對應于應答位,相應數據線上“0”為“ACK”和“1”為“”。發送應答位和非應答位的子程序分別如下。發送應答位ACKMACK: CLR SDA SETB SCL NOP NOP CLR SCL SETB SDA RET 發送非應答位ACKMNACK: SETB SDA SETB SCL NOP NOP CLR SCL CLR SDA RET(3)應答位檢查子程序 在I2C總線數據傳送中,接收器收到發送器傳

7、送來的一個字節后,必須向SDA線上返送一個應答位ACK,表明此字節已經收妥。本子程序使單片機產生一個額外的時鐘(第九個時鐘脈沖,在脈沖的高電平期間讀ACK應答位,并將它的狀態被復制到F0標志中以供檢查。若有正常ACK,則F0標志為0,否則為1。CACK: SETB SDA ;SDA作輸入 SETB SCL ;第9個時鐘脈沖開始 NOP MOV C,SDA ;讀SDA線 MOV F0,C ;轉存入F0中 CLR SCL ;時鐘脈沖結束 NOP RET(4)字節數據發送子程序 由于是SDA接在并行口線,無移位寄存器,因此數據通過指令完成移位再從SDA串行輸出。遵循時序要求,數據在時鐘低電平時變化,

8、高電平時穩定,每一個時鐘脈沖傳送一位,編寫字節數據傳送子程序。 該子程序的入口條件是待發送的字節位于累加器ACC中。WRB: MOV R7,#8 ;位計數器初值WLP: RLC A ;欲發送位移入C中JC WR1 ;此位為1,轉WR1CLR SDA ;此位為0,發送0SETB SCL ;時鐘脈沖變為高電平NOP ;延時NOPCLR SCL ;時鐘脈沖變為低電平DJNZ R7,WLP ;未發完8位,轉WLP RET ;8位已發完,返回 WR1: SETB SDA ;此位為 1,發送1 SETB SCL ;時鐘脈沖變高電 平 NOP NOP ;延時 CLR SCL ;時鐘脈沖變低電 平 CLR S

9、DA DJNZ R7,WLP RET(5)字節數據接收子程序 該子程序的功能是在時鐘的高電平時數據已穩定,讀入一位,經過8個時鐘從SDA線上讀入一個字節數據,并將所讀字節存于A和R6中。RDB:MOV R7,#8 ;R7存放位計數器初值RLP: SETB SDA ;SDA輸入 SETB SCL ;SCL脈沖開始 MOV C,SDA ;讀SDA線 MOV A,R6 ;取回暫存結果 RLC A ;移入新接收位 MOV R6,A ;暫存入R6 CLR SCL ;SCL脈沖結束 DJNZ R7,RLP ;未讀完8位,轉RLP RET ;8位讀完,返回 (6)n個字節數據發送子程序 這段子程序的入口條件

10、:假定控制字節已存放在片內RAM的SLA單元中;待發送數據各字節已位于片內RAM以MTD+1為起始地址的n個連續單元中。NUMBYT單元中存有欲發送數據的字節數。接收到數據的存放首址存放在片內RAM的MTD單元。 WRNBYT: PUSH PSW ;保護現場WRNBYT1: MOV PSW,#18H ;改用第3組工作寄存器 CALL STA ;發起始條件 MOV A,SLA ;讀寫控制字節 CALL WRB ;發送寫控制字節 CALL CACK ;檢查應答位 JB F0,WRNBYT ;無應答位,重發 MOV R0,#MTD ;有應答位,繼而發數據,第一個數據為首址WRDA: MOV A,R0

11、 ;讀一個字節數據 LCALL WRB ;發送此字節 LCALL CACK ;檢查ACK JB F0,WRNBYT1 ;無ACK,重發 INC R0 ;調整指針 DJNZ R5,WRDA ;尚未發完n個字節,繼續 LCALL STOP ;全部數據發完,停止 POP PSW ;恢復現場 RET ;返回(7)讀、存數據程序 假設數據接受緩沖區為片內RAM以MRD為首址的n個單元。 這段子程序的入口條件:片內RAM中的SLA單元存有讀控制字節;NUMBYT單元中存有欲接收數據的字節數。出口條件:所讀出的數據將存入片內RAM以MRD為首地址的n個連續單元內。RDNBYT: PUSH PSW RDNBY

12、T1: MOV PSW,#18H LCALL STA ;發送起始條件 MOV A,SLA ;讀入讀控制字節 LCALL WRB ;發送讀控制字節 LCALL CACK ;檢查ACK JB F0,RDNBYT1 ;無ACK,重新開始 MOV R1,#MRD ;接收數據緩沖區指針 GO_ON: LCALL RDB ;讀一個字節 MOV R1,A ;存入接收數據緩沖區; DJNZ NUMBYT,ACK;未全接收完,轉ACK LCALL MNACK ;已讀完所有字節,發 LCALL STOP ;發停止條件 POP PSW RETACK: LCALL MACK ;發ACK INC R1 ;調整指針 SJ

13、MP GO_ON ;繼續接收 9.2.3 典型IIC串行存儲器的擴展9.2.3.1 串行IIC總線EEPROM AT24CXX的擴展1)基本原理 AT24CXX的特點是:單電源供電,工作電壓范圍寬1.8V5.5V;低功耗CMOS技術(100KHz(2.5 V)和400KHz(5V)兼容),自定時寫周期(包含自動擦除)、頁面寫周期的典型值為2ms,具有硬件寫保護。圖9.6 AT24CXX的結構和引腳。(a)內部結構圖;(b)引腳圖。器件型號為AT24CXX的結構和引腳如圖9.6所示,其中SCL 串行時鐘端。SDA 串行數據端。 WP 為寫保護,當WP為高電平時存貯器只讀;當WP為低電平時存貯器可

14、讀可寫。A0、A1、A2 片選或塊選。 SDA為漏極開路端,需接上拉電阻到Vcc。數據的結構為8位。信號為電平觸發,而非邊沿觸發。輸入端內接有濾波器,能有效抑制噪聲。自動擦除(邏輯“1”)在每一個寫周期內完成。 AT24CXX采用IIC規程,運用主/從雙向通訊。器件發送數據到總線上,則定義為發送器 ,器件接收數據則定義為接收器。主器件(通常為微控制器)和從器件可工作于接收器和發送器狀態。總線必須由主器件控制,主器件產生串行時鐘(SCL),控制總線的傳送方向,并產生開始和停止條件。串行EEPROM為從器件。無論主控器件,還是從控器件,接收一個字節后必須發出一個確認信號ACK。 2)控制字節要求

15、開始位以后,主器件送出8位控制字節。控制字節的結構(不包括開始位)如下所示: 說明:控制字節的第14位為從器件地址位(存貯器為1010)。控制字節中的前4位碼確認器件的類型。此四位碼由飛利浦公司的IIC規程所決定。1010 碼即為從器件為串行EEPROM的情況。串行EEPROM將一直處于等待狀態,直到1010碼發送到總線上為止。當1010碼發送到總線上,其它非串行EEPROM從器件將不會響應。 控制字節的第57位為18片的片選或存貯器內的塊地址選擇位。此三個控制位用于選片或者內部塊選擇。標準的IIC規程允許選擇16K位的存貯器。通過對幾片器件或一個器件內的幾個塊的存取,可完成對16K位存貯器的

16、選擇,如表9-6所示。表9-6 AT24CXX的A2A1A0 控制字節的A2、A1、A0的選擇必須與外部A2、A1、A0引腳的硬件連接或者內部塊選擇匹配,A2、A1、A0引腳無內部連接的,則這三位無關緊要;作器件選擇的,可接高電平或低電平。 AT24CXX的存貯矩陣內部分為若干塊,每一塊有若干頁面,每一頁面有若干個字節。內部頁緩沖器只能寫入一頁字節數據,對24LC32和24LC64一次可以存8頁(每頁8個字節)。控制字節第8位為讀、寫操作控制碼。如果此位為1,下一字節進行讀操作(R);此位為0,下一字節進行寫操作(W)。 當串行EEPROM產生控制字節確認位以后,主器件總線上將傳送相應的字地址

17、或數據信息。3)確認要求 在每一個字節接收后,接收器件必須產生一個確認信號位ACK。主器件必須產生一個與此確 認位相應的額外時鐘脈沖。在此時鐘脈沖的高電平期間拉SDA線為穩定的低電平,為確認信號(ACK)。若不在從器件輸出的最后一個字節中產生確認位,主器件必須發一個數據結束信 號給從器件。在這種情況下,從器件必須保持數據線為高電平(用表示),使 得主器件能產生停止條件。注意:如果內部編程周期(燒寫)正在進行,AT24CXX不產生任何確認位。4)寫操作 字節寫在主器件發出開始信號以后,主器件發送寫控制字節即1010A2A1A00(其中R/W讀寫控制位為低電平“0”)。這指示從接收器被尋址,由主器

18、件發送的下一個字節為字地址 ,將被寫入到AT24CXX的地址指針。主器件接收來自AT24CXX的另一個確認信號以后,將發送數據字節,并寫入到尋址的存貯器地址。AT24CXX再次發出確認信號,同時主器件產生 停止條件P。啟動內部寫周期,在內部寫周期內AT24CXX將不產生確認信號(見圖9.7)。圖9.7 AT24CXX字節寫 頁面寫 如同字節寫方式,先將寫控制字節、字地址發送到AT24CXX,接著發n個數據字節,主器件發送不多于一個頁面字節的數據字節到AT24CXX,這些數據字節暫存在片內頁面緩存器中,在主器件發送停止信號以后寫入到存貯器。接收每一字節以后,低位順序地址指針在內部加1。高位順序字

19、地址保持為常數。如果主器件在產生停止條件以前要發送多于一頁字的數據,地址計數器將會循環,并且先接收到的數據將被覆蓋。象字節寫操作一樣,一旦停止條件被接收到,則內部寫周期將開始(見圖9.8)。 圖9.8 AT24CXX頁面寫 寫保護當WP端連接到Vcc,AT24CXX可被用作串行ROM,編程將被禁止,并且整個存貯器寫保護。5)讀操作 當從器件地址的R/W位被置為“1”,啟動讀操作。存在三種基本讀操作類型:讀當前地址內容,讀隨機地址內容,讀順序地址內容。讀當前地址內容AT24CXX片內包含一個地址計數器,此計數器保持被存取的最后一個字的地址,并在片內自動加1。因此,如果以前存取(讀或者寫操作均可)

20、的地址為n,下一個讀操作從n+1地址中讀出數據。在接收到從器件的地址中R/W位為1的情況下,AT24CXX發送一個確認位并且送出8位數據字。主器件將不產生確認位(相當于產生ACK),但產生一個停止條件。AT24CXX不再繼續發送(見圖9.9)。 圖9.9 AT24CXX讀當前地址內容 讀隨機地址內容這種方式允許主器件讀存貯器任意地址的內容,操作如圖9.10所示。 圖9.10 AT24CXX讀隨意地址的內容 主器件發1010A2A1A0后發0位,再發讀的存貯器地址,在收到從器件的確認位ACK后 產生一個開始條件S,以結束上述寫過程,再發一個讀控制字節,從器件AT24CXX在發ACK信號后發出8位

21、數據,主器件發后,發一個停止位,AT24CXX不再發后續字節。讀順序地址的內容讀順序地址內容的方式與讀隨意地址內容的方式相同,只是在AT24CXX發送第一個字節以后,主器件不發和STOP,而是發ACK確認信號,控制AT24CXX發送下一個順序地址的8位數據字,直到x個數據讀完(見圖9.11)。 圖9.11 AT24CXX讀順序地址的內容防止噪聲 AT24CXX使用了一個Vcc門限檢測器電路。在一般條件下,如果Vcc低于1.5V,門限檢測器對內部擦/寫邏輯不使能。 SCL和SDA輸入端接有施密特觸發器和濾波器電路,即使在總線上有噪聲存在的情況下,它們也能抑制噪聲峰值以保證器件正常工作。 6)串行

22、EEPROM和AT89C51接口 圖9.12為8XX51微控制器與4K位的AT24C04串行EEPROM的典型連接。圖中P1.6、P1.7提供AT24C04的時鐘SCL、SDA和AT24C04進行數據傳送,A2、A1、A0內部無連接,為無關位。WP為EEPROM的寫保護信號,高電平有效。因為我們要進行寫入操作,所以只能把它接低電平。利用上面的子程序,將8XX51單片機內部RAM 6067H存放的“1”“8”LED顯示器的字形 碼寫入24C04存貯器的2027H單元,為檢查寫入效果,再將24C04的2027H單元的內容讀出 存入8XX51內部RAM的40H47H單元,同時送LED顯示器顯示。 9

23、.2.4 IIC總線接口的串行A/D、D/A擴展 PCF8591是一款典型的IIC總線接口的串行8位A/D、D/A轉換器,該器件為單一電源供電(2.56V),CMOS工藝。PCF8591有4路8位A/D輸入,屬逐次比較型,內含采樣保持電路;1路8位D/A輸出,內含有DAC的數據寄存器。A/D、D/A的最大轉換速率約為11kHz,轉換的基準電源需由外部提供。PCF8591的內部結構和外部引腳分別如圖9.18所示。 圖9.18 PCF8591的內部結構(a)的外部引腳(b)PCF8591引腳功能描述見表9.7。 表9.7 PCF8591的引腳功能表PCF8591的工作字有兩個,地址選擇字和轉換控制

24、字。地址選擇字的格式如表9.8所示。表9.8 PCF8591的地址選擇字格式PCF8591的轉換控制字存放在控制寄存器中,用于實現器件的各種功能。總線操作時,為主發送的第二個字節。其格式如表9.9所示。 表9.9 PCF8591的轉換控制字格式PCF8591的包括D/A轉換和A/D轉換兩個部分,下面分別介紹之。1)PCF8591的D/A轉換D/A轉換器是PCF8591的關鍵單元,除作為D/A轉換使用外,還用于A/D轉換中。D/A轉換使用IIC總線的寫入操作完成的,其數據操作格式如下:其中data 1data n為待轉換的二進制數字。CONBYT為PCF8591的控制字節。圖中灰底位由主機發出,

25、白底位由PCF8591產生。D/A轉換時,控制字中的輸出允許位(D6)應為1,寫入PCF8591的數據字節存放在DAC數據寄存器中,通過D/A轉換器轉換成相應的模擬電壓通過AOUT引腳輸出,并保持到輸入新的數據為止。由于片內DAC單元還用于A/D轉換,在A/D轉換周期里釋放DAC單元供A/D轉換用,而DAC輸出緩沖放大器的采樣、保持電路在這期間將保持D/A轉換的輸出電壓。 2)PCF8591的A/D轉換PCF8591的A/D轉換為逐次比較型ADC,在A/D轉換周期中借用DAC及高增益比較器。A/D轉換的時序如圖9.21所示,對PCF8591進行讀寫操作便立即啟動A/D轉換,并讀出A/D轉換結果

26、。在每個應答位的后沿觸發A/D轉換周期,采樣模擬電壓并讀出當前一個轉換結果。A/D轉換中,一旦A/D采樣周期被觸發,所選擇通道的采樣電壓便保存在采樣、保持電路中,并轉換成8位二進制碼(單端輸入)或8位二進制補碼(差分輸入)存放在ADC數據寄存器中等待主器件讀出。如果控制字節中自動增量選擇位置1,則一次A/D轉換完畢后自動選擇下一通道。讀周期中讀出的第一個字節為前一個周期的轉換結果。上電復位后讀出的第一字節為80H。 PCF8591的A/D轉換使用IIC總線的讀操作,其數據格式如下: 其中data 0data n為A/D的轉換結果,分別對應于前一個數據讀取期間所采樣的模擬電壓。上電復位后控制字節

27、狀態為00H,如果A/D轉換時須設置控制字,須在讀操作之前進行控制字節的寫入操作。PCF8591一個典型的應用電路如圖9.20所示。假設從A/D的通道0采樣數據送至D/A轉換輸出,利用前面所給出的IIC軟件,編程如下:圖9.20 PCF8591的典型應用電路 LCALL STA;啟動IIC總線操作MOV A, #10010001B;訪問PCF8591的A/DLCALL WRBLCALL RDB;讀上次采樣數據,結果存放在R6中LCALL STOP;停止IIC總線操作LCALL STA;啟動IIC總線操作MOV A, #10010000B;訪問PCF8591的D/ALCALL WRBMOV A,

28、 #01000000H;設置控制字LCALL WRBMOV A, R6;從D/A輸出采樣值LCALL WRBLCALL STOP;停止IIC總線操作 9.3 SPI總線擴展接口及應用9.3.1 SPI的原理SPI(Serial Peripheral Interface 串行外設接口)總線系統是Motorola公司提出的一種同步串行外設接口,允許MCU與各種外圍設備以同步串行方式進行通信來交換信息。其外圍設備種類繁多,從最簡單的TTL移位寄存器到復雜的LCD顯示驅動器、網絡控制器等,可謂應有盡有。SPI總線可直接與各廠家生產的多種標準外圍器件直接接口,該接口一般使用4根線:串行時鐘線SCK、主機

29、輸入/從機輸出數據線MISO、主機輸出/從機輸出數據線MISO和低電平有效的從機選擇線SS。由于SPI系統總線只需3根公共的時鐘數據線和若干位獨立的從機選擇線(依據從機數目而定),在SPI從設備較少而沒有總線擴展能力的單片機系統中使用特別方便。即使在有總線擴展能力的系統中采用SPI設備也可以簡化電路設計,省掉很多常規電路中的接口器件,從而提高了設計的可靠性。圖9.21 一個典型的SPI總線系統結構示意圖一個典型的SPI總線系統結構如圖9.21所示。在這個系統中,只允許有1個做主SPI設備的主MCU和若干做SPI從設備的I/O外圍器件。MCU控制著數據向1個或多個從外圍器件的傳送。從器件只能在主

30、機發命令時才能接收或向主機傳送數據,其數據的傳輸格式是高位(MSB)在前,低位(LSB)在后。當有多個不同的串行I/O器件若要連至SPI上作為從設備,必須注意兩點:一是其必須有片選端;二是其接MISO線的輸出腳必須有三態,片選無效時輸出高阻態,以不影響其它SPI設備的正常工作。9.3.2 SPI總線的軟件模擬及串并擴展應用9.3.2.1 SPI總線的軟件模擬對于大多的51單片機而言,沒有提供SPI接口,通常可使用軟件的辦法來模擬SPI的總線操作,包括串行時鐘、數據輸入和輸出。值得注意的是,對于不同的串行接口外圍芯片,它們的時鐘時序有可能不同,按SPI數據和時鐘的相位關系來看通常有4種情況,它是

31、由片選信號有效前的電平和數據傳送時的有效沿來區分的,傳送8位數據的時序種類具體如圖9.22所示。現在用軟件來模擬一下圖9.22中最上面的一種情況。我們假定圖9.21中的MCU為51單片機,系統接有兩個從器件,用P1.7模擬SCK,P1.6模擬MOSI,P1.5模擬MISO線,P1.4模擬SS1,P1.3模擬SS2。其模擬的程序如下。圖9.22 SPI總線的4種數據/時鐘時序圖SCK BIT P1.7MOSI BIT P1.6MISO BIT P1.5SS DB 0 ;分配片選擴展字單元PF0 BIT 0;分配片選有效前電平標志位PF1 BIT 1;分配數據傳送有效沿標志位CLR PF0;初始化

32、電平標志位PF0CLR PF1;初始化沿標志位PF1MOV SS, #11101111B ;初始化從器件選擇字數據發送程序:MOV R0, #DATA8;待發送的數據放在R0中MOV C, PF0MOV SCK, C;欲設置有效電平NOP ;延時,均可調整,為匹配時序要求MOV A, SS ANL P1, A;選中從器件NOPXCH A, R0MOV R0, #08H ;置循環次數SPIOUT: MOV C, PF1MOV SCK, C;準備有效觸發沿CPL PF1RLC A ;發送下一位數據(從最高位開始) MOV MOSI, CNOPMOV C, PF1MOV SCK, C;產生有效沿,以

33、便從器件鎖存數據CPL PF1NOPDJNZ R0, SPIOUT ;8位數據發送未完成,則繼續發送下一位MOV C, PF0MOV SCK, CMOV A, SSCPL AORL P1, A;結束SPI總線操作,關閉從器件RET 數據接收程序:SPIR: MOV C, PF0MOV SCK, C;欲設置有效電平NOP ;延時,均可調整,為匹配時序要求MOV A, SS ANL P1, A;選中從器件NOPMOV R0, #08H ;置循環次數SPIIN: MOV C, PF1MOV SCK, C;準備有效觸發沿CPL PF1NOPMOV C, PF1MOV SCK, C;產生有效沿,以便從器

34、件鎖存數據MOV MOSI, C;接收下一位數據(從最高位開始)RRC A ;接收到的數據依次存入ACPL PF1NOPDJNZ R0, SPIIN ;8位數據未接收完,則繼續接收下一位MOV C, PF0MOV SCK, CMOV A, SSCPL AORL P1, A;結束SPI總線操作,關閉從器件RET其它三種情況只需改變初始相位條件即可模擬實現。 9.3.3 10位串行D/A TLC5615的擴展 TLC5615是帶有緩沖基準輸入的10位電壓輸出型D/A轉換器。器件可在單5V電源下工作,且具有上電復位功能。TLC5615的控制是通過三線串行總線進行,可使用的數字通信協議包括SPI、QS

35、PI以及Microwire標準。低功耗,在5V供電時功耗僅1.75mW,數據更新速率為1.2MHz,典型的建立時間為12.5us。TLC5615廣泛應用于電池供電測試儀表、數字增益調整、電池遠程工業控制和移動電話等領域。9.3.3.1 TLC5615的內部結構和外部引腳 TLC5615的內部結構如圖9.24所示,其主要由16位移位寄存器、10位D/A寄存器、D/A轉換權電阻、基準緩沖器、控制邏輯和2倍程放大器等電路組成。圖9.24 TLC5615的內部結構 TLC5615的管腳與Maxim公司的MAX515完全兼容,如圖9.25所示。各管腳的功能介紹如下。DIN:串行數據輸入腳SCLK:串行時

36、鐘輸入腳CS:片選端,低電平有效DOUT:用于菊花鏈的串行數據 輸出端AGND:模擬地REFIN:基準輸入端,一般接2V 到VCC2VVCC:電源端,一般接+5V圖9.18 TLC5615的引腳圖 9.3.3.2 TLC5615的接口及應用TLC5615與AT89C52的典型接口電路如圖9.26所示。 TLC5615通過固定增益為2的運放緩沖電阻網絡,把10位數字數據轉換為模擬電壓。上電時,內部電路把D/A寄存器復位為0。其輸出具有與基準輸入相同的極性,表達式為 TLC5615最大的串行時鐘速率不超過14MHz,10位DAC的建立時間為12.5us,通常更新速率限制至80kHz以內。TLC56

37、15的16位移位寄存器在SCLK的控制下從DIN引腳輸入數據,高位在前,低位在后。16位移位寄存器中間的10位數據在上升沿的作用下打入10位的D/A寄存器供給D/A轉換。其輸入的數據格式位為: SPI和AT89C52的接口傳送8位字節形式的數據。因此,要把數據輸入到D/A轉換器需要兩個寫周期。QSPI接口具有從8位至16位的可變輸入數據長度,可以在一個寫周期之內裝入好轉換數據代碼。當系統不使用D/A轉換器時,最好把D/A寄存器設置為全0,這樣可以使基準電阻陣列和輸出負載的功耗降為最小。依據圖9.16,TLC5615的一個簡單的應用編程見下。DIN BIT P1.4;定義I/O口SCLK BIT P1.7CS5615 BIT P1.5DataH EQU 30HDataL EQU 31HTLC5615: CLR SCLK ;準備操作TLC5615CLR CS5615 ;選中TLC5615MOV R7, #08HMOV A, DataH ;裝入高8位數據LOOPH: LCALL DELAY ;延時RLC A ;最高位移向5615MOV DIN, CSETB SCLK ;產生上升沿,移入一位數據 LCALL DELAYCLR SCLKDJNZ R7, LOOPHMO

溫馨提示

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

評論

0/150

提交評論