《微機(jī)式醫(yī)學(xué)儀器設(shè)計(jì)》實(shí)驗(yàn)教材實(shí)驗(yàn)4,5_第1頁(yè)
《微機(jī)式醫(yī)學(xué)儀器設(shè)計(jì)》實(shí)驗(yàn)教材實(shí)驗(yàn)4,5_第2頁(yè)
《微機(jī)式醫(yī)學(xué)儀器設(shè)計(jì)》實(shí)驗(yàn)教材實(shí)驗(yàn)4,5_第3頁(yè)
《微機(jī)式醫(yī)學(xué)儀器設(shè)計(jì)》實(shí)驗(yàn)教材實(shí)驗(yàn)4,5_第4頁(yè)
《微機(jī)式醫(yī)學(xué)儀器設(shè)計(jì)》實(shí)驗(yàn)教材實(shí)驗(yàn)4,5_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)四 生物信號(hào)的數(shù)據(jù)采集一、實(shí)驗(yàn)要求 利用8位串行控制模數(shù)轉(zhuǎn)換器TLC0832做A/D轉(zhuǎn)換器,采用實(shí)驗(yàn)板上的電位器,或其它信號(hào)(如心電仿真儀信號(hào))提供模擬量輸入,編制程序,將模擬量轉(zhuǎn)換成二進(jìn)制數(shù)字量。存放在RAM區(qū),以供查閱。二、實(shí)驗(yàn)?zāi)康?、 熟悉串行外圍設(shè)備接口SPI總線技術(shù)的結(jié)構(gòu)和原理。2、 掌握8位串行控制模數(shù)轉(zhuǎn)換器TLC0832的轉(zhuǎn)換性能及編程。3、 掌握TLC0832與80C51單片機(jī)的接口方法。4、 通過(guò)實(shí)驗(yàn)了解如何使用單片機(jī)進(jìn)行數(shù)據(jù)采集。 三、 實(shí)驗(yàn)設(shè)備 1 機(jī) 一臺(tái) 2 實(shí)驗(yàn)面包板 一個(gè) 3 80C51仿真器 一套 4 元件:TLC0832 一片 4 導(dǎo)線 若干四、實(shí)驗(yàn)說(shuō)明一

2、個(gè)微處理器系統(tǒng)中除了作為核心部件的微處理器外,多少要使用一些外圍設(shè)備(通常被簡(jiǎn)稱(chēng)為“外設(shè)”)。微處理器外設(shè)之間的連接方式基本上可以分為并行和串行2大類(lèi),也就是通過(guò)并行或串行接口連接。并行接口設(shè)備使用了多根數(shù)據(jù)線,一次同時(shí)可以傳遞多個(gè)BIT的數(shù)據(jù),所以傳遞速度較快,單器件之間的連線復(fù)雜。而串行接口設(shè)備僅使用了一根數(shù)據(jù)線,每次只能傳遞一個(gè)BIT的數(shù)據(jù),所以傳遞速度較慢,但由于使用串行接口的系統(tǒng)中器件之間的連線比較簡(jiǎn)單,在微型化的系統(tǒng)中倍受重視。隨著器件時(shí)鐘速度的不斷提高,串行接口的數(shù)據(jù)交換率同樣可以做得很高。另外基于異步串行接口電路的技術(shù)的器件因其相當(dāng)高的效率,在DSP 系統(tǒng)中被廣泛采用。(1)S

3、PI總線介紹串行外圍設(shè)備接口SPI(serial peripheral interface)總線技術(shù)是Motorola公司推出的一種同步串行接口。SPI總線是一種三線制同步式串行總線,其物理結(jié)構(gòu)是相當(dāng)?shù)湫偷?。因其硬件配?在各種串行接口中)較為“完整”,所以,與SPI有關(guān)的軟件就相對(duì)簡(jiǎn)單,使CPU有更多的時(shí)間處理其他事務(wù)。它基本上由3根連線構(gòu)成,即:DI,DO,CLK,故稱(chēng)為三線制串行總線。除了這3條基本信號(hào)線以外,當(dāng)系統(tǒng)使用多個(gè)SPI器件時(shí),為區(qū)別各個(gè)器件,往往還要加上一條片選信號(hào)線“/CS”。使用了/CS信號(hào)后,所有的SPI器件可以使用公共的DI,DO,CLK信號(hào),而只有/CS有效的芯片才

4、被主控器件操縱。各信號(hào)線的意義為:信號(hào)符號(hào)信號(hào)名稱(chēng)信號(hào)意義DI數(shù)據(jù)輸入線外設(shè)的數(shù)據(jù)輸入端,其電平表示當(dāng)前輸入的數(shù)據(jù)DO數(shù)據(jù)輸出線外設(shè)的數(shù)據(jù)輸出端,其電平表示當(dāng)前輸出的數(shù)據(jù)CLK時(shí)鐘信號(hào)主控器件提供的同步時(shí)鐘,以保證數(shù)據(jù)的正確/CS片選信號(hào)用來(lái)選通所操縱的器件除了上述引線之外,由于各種外設(shè)控制功能的不同,采用SPI接口,有時(shí)還要添加一些輔助的控制線,例如復(fù)位信號(hào)、中斷信號(hào)等。(2)實(shí)際SPI器件TLC0832實(shí)際的SPI器件品種繁多,本次實(shí)驗(yàn)使用的TLC0832是一種基于SPI接口的雙路A/D轉(zhuǎn)換器。該器件的詳細(xì)資料參見(jiàn)參考文獻(xiàn)1和文獻(xiàn)2TLC0832是一種2通道逐次逼近似方式的A/D轉(zhuǎn)換器?;?/p>

5、本性能如下: 8位分辨率 可以“滿(mǎn)量程”工作或使用5V基準(zhǔn)電壓 單通道或多路器選擇的雙通道,可單端或差分輸入選擇 當(dāng)時(shí)鐘頻率為250kHz時(shí),轉(zhuǎn)換時(shí)間為32ms 總非調(diào)整誤差為1LSB TLC0832的引腳及其功能:實(shí)驗(yàn)用的TLC0832芯片為8腳的“雙列直插”(DIP)式封裝。其引線方式參見(jiàn)下圖。各引腳的意義參見(jiàn)下表:序號(hào)引腳名稱(chēng)意義1/CS片選信號(hào)。當(dāng)該信號(hào)為高電平時(shí),芯片未被選中,所有信號(hào)引線均為高阻態(tài)。芯片的任何功能必須當(dāng)該信號(hào)為低電平時(shí)方能實(shí)現(xiàn)。2CH0模擬通道0的輸入端??梢宰鳛楠?dú)立的輸入通道使用,也可以由程序控制,與CH1配合實(shí)現(xiàn)差分輸入方式。3CH1模擬通道1的輸入端??梢宰鳛?/p>

6、獨(dú)立的輸入通道使用,也可以由程序控制,與CH0配合實(shí)現(xiàn)差分輸入方式。4GND地線。5DI數(shù)據(jù)輸入端。來(lái)自主控器件(CPU)的控制命令由此輸入。6DO數(shù)據(jù)輸出端。轉(zhuǎn)換結(jié)果由此輸出。7CLK時(shí)鐘信號(hào)。8VCC/REF電源/參考電壓輸入端。TLC0832的動(dòng)作時(shí)序:TLC0832的動(dòng)作時(shí)序見(jiàn)下圖。圖中可見(jiàn)TLC0832的全部動(dòng)作過(guò)程。應(yīng)當(dāng)注意以下要點(diǎn):1 任何有效操作均必須在/CS為低電平時(shí)才能實(shí)現(xiàn)。所以,開(kāi)始對(duì)TLC0832作任何操作都必須首先將/CS由高電平置為低電平,一次完整的操作結(jié)束后,應(yīng)當(dāng)及時(shí)地將/CS置為高電平;2 時(shí)鐘信號(hào)CLK是由主控器件(CPU)主動(dòng)提供的,它控制了轉(zhuǎn)換的節(jié)拍;3

7、一個(gè)完整的轉(zhuǎn)換過(guò)程分2個(gè)基本步驟:A. 由CPU向器件發(fā)出控制命令;B. CPU從器件讀出轉(zhuǎn)換后的數(shù)據(jù);4 控制命令由CPU通過(guò)DI線向器件發(fā)出,包括3個(gè)BIT。第1個(gè)BIT為啟動(dòng)位,后2個(gè)BIT為配置位;5 2個(gè)BIT的配置位的名稱(chēng)為SGL/DIF和ODD/EVEN,共同決定了器件的輸入性質(zhì)(參見(jiàn)附表);6 CLK信號(hào)是由CPU操縱下“人為制造”出高低電平變化而形成的。每當(dāng)需要向器件寫(xiě)入命令時(shí),應(yīng)當(dāng)首先將所需要的數(shù)據(jù)加到DI腳上,然后讓CLK由低電平向高電平變化(上升沿),這時(shí)器件會(huì)自動(dòng)保持DI上的數(shù)據(jù),之后,應(yīng)當(dāng)將CLK恢復(fù)到低電平,以便下一個(gè)節(jié)拍的操作;7 由器件中讀出數(shù)據(jù)時(shí)有些不同,此

8、時(shí)應(yīng)當(dāng)首先將CLK置為高電平,然后,再將CLK由高電平置為低電平,在由高電平向低電平變化的“下降沿”后,器件的DO端會(huì)出現(xiàn)有效的數(shù)據(jù)信號(hào)。CPU可以在此時(shí)檢測(cè)DO端的狀態(tài),讀出有效的數(shù)據(jù);8 命令BIT發(fā)送之后,便可以開(kāi)始讀出轉(zhuǎn)換結(jié)果,事實(shí)上,器件內(nèi)部的逐次近似轉(zhuǎn)換過(guò)程是在CLK的控制下一拍、一拍地進(jìn)行,每一拍完成一個(gè)BIT的轉(zhuǎn)換,轉(zhuǎn)換的結(jié)果同時(shí)就出現(xiàn)在DO上,這就是所謂的“外部時(shí)鐘方式”。特點(diǎn)是簡(jiǎn)單,但是對(duì)于外部時(shí)鐘的“占空比”有較嚴(yán)格的控制,否則精度將受到影響有些串行A/D器件內(nèi)部自己配備了時(shí)鐘系統(tǒng),無(wú)須CPU的CLK信號(hào),而是利用自身的時(shí)鐘系統(tǒng)完成轉(zhuǎn)換,這樣的器件精度比較有保障。使用這種

9、器件時(shí),在啟動(dòng)器件開(kāi)始轉(zhuǎn)換后,CPU應(yīng)當(dāng)?shù)却稗D(zhuǎn)換完成(EOC)”信號(hào),當(dāng)EOC出現(xiàn)后,才開(kāi)始讀取數(shù)據(jù);9 數(shù)據(jù)讀出時(shí),器件首先以“高位在前”(MSB-First)方式輸出數(shù)據(jù),然后再以“低位在前”(LSB-First)方式輸出數(shù)據(jù)。事實(shí)上,應(yīng)用系統(tǒng)的設(shè)計(jì)人員可以根據(jù)自己的需要選擇適當(dāng)?shù)姆绞阶x取數(shù)據(jù),如果只需要MSB-First方式,則啟動(dòng)轉(zhuǎn)換后只需要8個(gè)CLK就可以完成全部操作,這時(shí),從圖中的第12個(gè)CLK后面的操作可以不必進(jìn)行;10 全部操作完成后應(yīng)當(dāng)將/CS置為高電平。使用TLC0832需要注意: TLC0832要求在轉(zhuǎn)換數(shù)據(jù)時(shí)CLK占空比為40%60%,否則會(huì)導(dǎo)致轉(zhuǎn)換結(jié)果不正確,CLK

10、可由單片機(jī)的一根I/O口線驅(qū)動(dòng),用軟件控制脈沖的頻率和占空比。TLC0832的模擬輸入信號(hào)的的功能比較齊備,可以通過(guò)控制命令靈活地配置為差分或單端方式。即,2個(gè)輸入通道CH0和CH1可以作為一對(duì)差分輸入的互補(bǔ)信號(hào)線,也可以配置為各自獨(dú)立的單端輸入信號(hào)線。請(qǐng)注意以下要點(diǎn):1、 配置命令由信號(hào)SGL/DIF 和ODD/EVEN 2個(gè)BIT組成,排列順序是SGL/DIF在前,ODD/EVEN在后,2個(gè)控制BIT組合的意義參見(jiàn)附表;2、 差分輸入方式是指一對(duì)大小相同方向相反的輸入方式,它需要2個(gè)輸入端,而且這2個(gè)輸入端有極性之分;3、 單端輸入實(shí)際上也需要2個(gè)輸入端,一個(gè)是信號(hào)端,另一個(gè)是參考端,即所

11、謂的“地”。但是應(yīng)當(dāng)注意,地線作為參考端被假定為穩(wěn)定不變的,輸入信號(hào)完全由輸入端上的電壓變化而決定; 4、 TLC0832配置為差分輸入方式時(shí)只能組成一路輸入;配置為單端輸入方式時(shí),可以提供2路獨(dú)立的輸入。TLC0832 輸入信號(hào)地址控制邏輯表地址選擇通道號(hào)操作意義SGL/DIFODD/EVENCH0CH1LLH HLHLH+CH0 為正極性,CH1 為負(fù)極性的差分輸入方式CH0 為負(fù)極性,CH1 為正極性的差分輸入方式選擇 CH0 的單極性,單通道方式選擇 CH1 的單極性,單通道方式 H = 高電平, L = 低電平, or + = 所選擇的輸入端的終端極性五、實(shí)驗(yàn)電路及連線LC0832與

12、51系列微處理器的連接相當(dāng)簡(jiǎn)單,具體的參考電路參見(jiàn)下圖:實(shí)驗(yàn)中,我們采用選擇 CH0 的單極性,單通道方式。因此,CH1端應(yīng)接地,CH0端為輸入電壓。我們采用通過(guò)可調(diào)電位器的方法改變輸入電壓,以觀察A/D轉(zhuǎn)換結(jié)果。配置命令由信號(hào)SGL/DIF 和ODD/EVEN 2個(gè)BIT組成,在本實(shí)驗(yàn)中應(yīng)設(shè)置為:SGL/DIF =1;ODD/EVEN=0六、軟件流程及編程1、A/D轉(zhuǎn)換的軟件流程圖圖中繪出了A/D轉(zhuǎn)換的基本過(guò)程。必須說(shuō)明,這個(gè)流程圖并不是最優(yōu)化的,而僅僅表現(xiàn)了A/D轉(zhuǎn)換的主要步驟。流程圖的右側(cè)繪出了每個(gè)步驟相應(yīng)的注釋。圖中使用了sCLK子程序,該子程序的流程圖附在本小節(jié)的后部。這里應(yīng)當(dāng)注意的

13、是,sCLK子程序中使用了2個(gè)延時(shí)子程序,DELAY1和DELAY2,其目的是為了調(diào)整時(shí)鐘信號(hào)的頻率和占空比,實(shí)際的延時(shí)子程序可以用不同長(zhǎng)度的循環(huán)來(lái)實(shí)現(xiàn),或者簡(jiǎn)單地插入若干個(gè)NOP來(lái)解決。具體的延時(shí)長(zhǎng)度應(yīng)當(dāng)視實(shí)際需要而定。延時(shí)時(shí)間的確定原則在于使得CLK信號(hào)處于高電平和低電平的時(shí)段基本相等,而且必須考慮到sCLK子程序返回后,A/D程序進(jìn)行其它操作時(shí)CLK處于低電平的時(shí)段長(zhǎng)度。2、A/D轉(zhuǎn)換程序:( 見(jiàn)源程序文件TLC0832.ASM)BEGIN: CLRP1.4; /CS=0,選通器件SETBP1.1;DI=1,置啟動(dòng)條件CALLSCLK;發(fā)出一個(gè)時(shí)鐘SETBP1.1;DI=S/D=1,送控

14、制命令的第1個(gè)BITCALLSCLK;發(fā)出一個(gè)時(shí)鐘CLRP1.1;DI=O/E=0,送控制命令的第2個(gè)BITMOVA, #00H;設(shè)存放轉(zhuǎn)換結(jié)果的寄存器A初值MOV R0, #08H ;讀8位BITGETDATA:CALLSCLK;發(fā)出一個(gè)時(shí)鐘MOVC, P1.0;由DO讀出一個(gè)BIT,檢測(cè)DO的狀態(tài)RLCA;將讀出的BIT用于字節(jié)輸出到指定的BYTE,選通器件DJNZR0, GETDATA;讀完8次了嗎?未讀完,繼續(xù)SETBP1.4;/CS=1. 讀完,放棄對(duì)于器件的控制 SJMP$ ;SCLK入口 SCLK:SETBP1.2;CLK=1,發(fā)出時(shí)鐘的高電平NOP;適當(dāng)延時(shí)片刻N(yùn)OPNOPNO

15、PCLRP1.2;CLK=0,發(fā)出時(shí)鐘的低電平NOP;適當(dāng)延時(shí)片刻N(yùn)OPNOPNOPRETEND ; 查指令表可知NOP指令需用1個(gè)機(jī)器周期,在12MHz晶振時(shí),一個(gè)機(jī)器周期時(shí)間長(zhǎng)度為12/(12MHZ)=1us ; 所以該段延時(shí)程序執(zhí)行時(shí)間為:2*1us=2us ; 因此,若取CLK的時(shí)鐘占空比為50%,則高低電平延時(shí)時(shí)間相同,即總共的時(shí)鐘周期為:2*2us=4us, ; 即CLK時(shí)鐘頻率為1/(4us)=250KHz ; 同學(xué)們可以編寫(xiě)兩個(gè)不同的延時(shí)程序,實(shí)現(xiàn)不同的CLK時(shí)鐘頻率和占空比, ; 但是要注意CLK必須在10KHz600KHz之間,占空比必須在40%60%之間. 參考文獻(xiàn) 1

16、武漢力源電子股份有限公司. TLC0831C/I,TLC0832C/I 8位串行控制模數(shù)轉(zhuǎn)換器產(chǎn)品資料. 1998.6 武漢2 Texas Instruments Incorporated. Data Sheet of TLC0831C, TLC0831I, TLC0832C, TLC0832I 8-BIT ANALOG-TO-DIGITAL CONVERTERS WITH SERIAL CONTROL. APRIL 1996, USA七、實(shí)驗(yàn)思考題1 單步執(zhí)行參考程序,觀察記錄實(shí)驗(yàn)結(jié)果:Vi=0V,1V,2V,3V,4V,5V時(shí),A/D轉(zhuǎn)換的數(shù)據(jù)。2 A/D轉(zhuǎn)換數(shù)據(jù)的分辨率?3 A/D轉(zhuǎn)換數(shù)

17、據(jù)的時(shí)間(1個(gè)字節(jié))?4 修改完善參考程序,實(shí)現(xiàn)定時(shí)采樣的功能。查看記錄DATA、CODE空間的數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的采集。實(shí)驗(yàn)五 生物信號(hào)數(shù)據(jù)通訊與存儲(chǔ)一、實(shí)驗(yàn)要求 本實(shí)驗(yàn)利用AT24C16對(duì)單片機(jī)進(jìn)行外部數(shù)據(jù)存儲(chǔ)器的擴(kuò)展,使用8051單片機(jī)模擬I2C總線實(shí)現(xiàn)串行E2PROM的讀寫(xiě)。將單片機(jī)內(nèi)部RAM 30H開(kāi)始的16個(gè)字節(jié)的數(shù)據(jù)寫(xiě)到外部數(shù)據(jù)區(qū),然后再將外部數(shù)據(jù)區(qū)的16個(gè)字節(jié)的內(nèi)容讀到內(nèi)部RAM 40H開(kāi)始的單元中,以檢驗(yàn)是否將數(shù)據(jù)正確的寫(xiě)到外部存儲(chǔ)器。二、實(shí)驗(yàn)?zāi)康?、 熟悉I2C串行數(shù)據(jù)總線技術(shù)的結(jié)構(gòu)和原理。6、 掌握AT24C系列 E2PROM接口的轉(zhuǎn)換性能及編程。7、 掌握AT24C系列與8

18、0C51單片機(jī)的接口方法。8、 通過(guò)實(shí)驗(yàn)了解如何使用具有I2C總線接口功能的串行E2PROM來(lái)擴(kuò)展單片機(jī)的外部數(shù)據(jù)存儲(chǔ)區(qū)。三、實(shí)驗(yàn)設(shè)備 1 機(jī) 一臺(tái) 2 實(shí)驗(yàn)面包板 一個(gè) 3 80C51仿真器 一套4 元件: AT24C16 1片5 導(dǎo)線 若干四、實(shí)驗(yàn)說(shuō)明 I2C 是一種新的芯片間的通訊方式,由PHILIPS 開(kāi)發(fā)和推廣。I2C通訊采用兩條線進(jìn)行通訊,一條數(shù)據(jù)線,一條時(shí)鐘線,可進(jìn)行多器件通訊??偩€上的每個(gè)器件都有自己的地址。數(shù)據(jù)傳送是雙向的,總線支持多主機(jī),8051上I2C總線的接口為P0 端口的兩根線,有專(zhuān)門(mén)的特殊功能寄存器來(lái)控制總線的工作和執(zhí)行傳輸協(xié)議。而在單片機(jī)系統(tǒng)中廣泛使用E2PROM

19、作為數(shù)據(jù)存儲(chǔ)器,AT24C系列串行E2PROM是具有I2C總線接口功能的數(shù)據(jù)存儲(chǔ)器。本實(shí)驗(yàn)介紹了I2C總線及AT24C系列串行E2PROM,給出了8051單片機(jī)與串行E2PROM通訊的硬軟件實(shí)現(xiàn)方法和實(shí)用的讀/寫(xiě)子程序。1、I2C總線簡(jiǎn)介 I2C總線是一種雙線串行數(shù)據(jù)總線,具有多端控制能力,由串行數(shù)據(jù)(SDA)線和串行時(shí)鐘(SCL)線,在CPU與被控IC與IC之間進(jìn)行數(shù)據(jù)雙向傳輸,最高傳輸率為100千比特/秒。SDA線與SCL線均為雙向I/O線,經(jīng)電阻接+5伏,當(dāng)總線空閑時(shí),兩線為高電平,當(dāng)I2C總線有所掛IC準(zhǔn)備發(fā)送數(shù)據(jù)時(shí),把集電極電壓拉低,從而使與之相連的SDA線電壓降低,占據(jù)了SDA線發(fā)

20、送數(shù)據(jù)。在傳送數(shù)據(jù)過(guò)程,有三種信號(hào)出現(xiàn),分別是: 開(kāi)始信號(hào)。SCL線為高電平,SDA線由高電平變低電平,視為開(kāi)始傳送數(shù)據(jù)。 結(jié)束信號(hào)。SCL線為高電平,SDA線由低電平變高電平,視為結(jié)束傳送數(shù)據(jù)。 應(yīng)答信號(hào)。接收數(shù)據(jù)的IC收到期1字節(jié)(8比特)數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的IC發(fā)出低電平脈沖信號(hào),視為已收到信號(hào)。在I2C總線上傳送的一個(gè)數(shù)據(jù)字節(jié)由八位組成??偩€對(duì)每次傳送的字節(jié)數(shù)沒(méi)有限制,但每個(gè)字節(jié)后必須跟一位應(yīng)答位。數(shù)據(jù)傳送首先傳送最高位(MSB),數(shù)據(jù)傳送按圖1所示格式進(jìn)行。首先由主機(jī)發(fā)出啟動(dòng)信號(hào)“S”(SDA在SCL高電平期間由高電平跳變?yōu)榈碗娖?,然后由主機(jī)發(fā)送一個(gè)字節(jié)的數(shù)據(jù)。啟動(dòng)信號(hào)后的第一個(gè)字

21、節(jié)數(shù)據(jù)具有特殊含義:高七位是從機(jī)的地址,第八位是傳送方向位,0表示主機(jī)發(fā)送數(shù)據(jù)(寫(xiě)),1表示主機(jī)接收數(shù)據(jù)(讀)。被尋址到的從機(jī)設(shè)備按傳送方向位設(shè)置為對(duì)應(yīng)工作方式。標(biāo)準(zhǔn)I2C總線的設(shè)備都有一個(gè)七位地址,所有連接在I2C總線上的設(shè)備都接收啟動(dòng)信號(hào)后的第一個(gè)字節(jié),并將接收到的地址與自己的地址進(jìn)行比較,如果地址相符則為主機(jī)要尋訪的從機(jī),應(yīng)在第九位答時(shí)鐘脈沖時(shí)向SDA線送出低電平作為應(yīng)答。除了第一字節(jié)是通用呼叫地址或十位從機(jī)地址之外,第二字節(jié)開(kāi)始即數(shù)據(jù)字節(jié)。數(shù)據(jù)傳送完畢,由主機(jī)發(fā)出停止信號(hào)“P”(SDA在SCL高電平期間由低電平跳變?yōu)楦唠娖?。2、AT24C系列串行E2PROMAT24C系列串行E2PR

22、OM具有I2C總線接口功能,功耗小,寬電源電壓(根據(jù)不同型號(hào)2.5V6.0V),工作電流約為3mA,靜態(tài)電流隨電源電壓不同為30A110A,存儲(chǔ)容量見(jiàn)表1。(1) AT24C系列 E2PROM接口及地址選擇由于I2C總線可掛接多個(gè)串行接口器件,在I2C總線中每個(gè)器件應(yīng)有唯一的器件地址,按I2C總線規(guī)則,器件地址為7位數(shù)據(jù)(即一個(gè)I2C總線系統(tǒng)中理論上可掛接128個(gè)不同地址的器件),它和1位數(shù)據(jù)方向位構(gòu)成一個(gè)器件尋址字節(jié),最低位D0為方向位(讀/寫(xiě))。器件尋址字節(jié)中的最高4位(D7D4)為器件型號(hào)地址,不同的I2C總線接口器件的型號(hào)地址是廠家給定的,如AT24C系列E2PROM的型號(hào)地址皆為10

23、10,器件地址中的低3位為引腳地址A2A1A0,對(duì)應(yīng)器件尋址字節(jié)中的D3、D2、D1位,在硬件設(shè)計(jì)時(shí)由連接的引腳電平給定。對(duì)于E2PROM的片內(nèi)地址,容量小于256字節(jié)的芯片(AT24C01/02),8位片內(nèi)尋址(A0A7)即可滿(mǎn)足要求。然而對(duì)于容量大于256字節(jié)的芯片,則8位片內(nèi)尋址范圍不夠,如AT24C16,相應(yīng)的尋址位數(shù)應(yīng)為11位(211=2048)。若以256字節(jié)為1頁(yè),則多于8位的尋址視為頁(yè)面尋址。在AT24C系列中對(duì)頁(yè)面尋址位采取占用器件引腳地址(A2、A1、A0)的辦法,如AT24C16將A2、A1、A0作為頁(yè)地址。凡在系統(tǒng)中引腳地址用作頁(yè)地址后,該引腳在電路中不得使用,作懸空處

24、理。AT24C系列串行E2PROM的器件地址尋址字節(jié)如表1所示,表中P0P1P2表示頁(yè)面尋址位。(2)AT24C系列 E2PROM讀寫(xiě)操作對(duì)AT24C系列 E2PROM的讀寫(xiě)操作完全遵守I2C總線的主收從發(fā)和主發(fā)從收的規(guī)則。連續(xù)寫(xiě)操作:連續(xù)寫(xiě)操作是對(duì)E2PROM連續(xù)裝載n個(gè)字節(jié)數(shù)據(jù)的寫(xiě)入操作,n隨型號(hào)不同而不同,一次可裝載字節(jié)數(shù)見(jiàn)表1。SDA線上連續(xù)寫(xiě)操作數(shù)據(jù)狀態(tài)如圖2。 AT24C系列片內(nèi)地址在接收到每一個(gè)數(shù)據(jù)字節(jié)地址后自動(dòng)加1,故裝載一頁(yè)以?xún)?nèi)規(guī)定數(shù)據(jù)字節(jié)時(shí),只須輸入首地址,若裝載字節(jié)多于規(guī)定的最多字節(jié)數(shù),數(shù)據(jù)地址將“上卷”,前面的數(shù)據(jù)被覆蓋。連續(xù)讀操作:連續(xù)讀操作時(shí)為了指定首地址,需要兩個(gè)

25、偽字節(jié)寫(xiě)來(lái)給定器件地址和片內(nèi)地址,重復(fù)一次啟動(dòng)信號(hào)和器件地址(讀),就可讀出該地址的數(shù)據(jù)。由于偽字節(jié)寫(xiě)中并未執(zhí)行寫(xiě)操作,地址沒(méi)有加1。以后每讀取一個(gè)字節(jié),地址自動(dòng)加1。 在讀操作中接收器接收到最后一個(gè)數(shù)據(jù)字節(jié)后不返回肯定應(yīng)答(保持SDA高電平)隨后發(fā)停止信號(hào)。連續(xù)讀操作SDA上數(shù)據(jù)狀態(tài)如圖3。五、8051單片機(jī)與AT24C系列 E2PROM通訊的硬軟件實(shí)現(xiàn)(1) 硬件電路圖4是用8051 P1口模擬I2C總線與E2PROM連接電路圖(以AT24C16為例),由于AT24C16是漏極開(kāi)路,圖中R1、R2為上拉電阻(5.1k)。A0A2地址引腳、TEST測(cè)試腳均懸空。(2) 軟件實(shí)現(xiàn)由前述分析和圖

26、4的硬件電路,我們編制了E2PROM的讀寫(xiě)子程序。兩者的主要區(qū)別在于讀子程序需發(fā)器件地址(寫(xiě))和片內(nèi)地址作為偽字節(jié),之后再發(fā)一次開(kāi)始信號(hào)和器件地址(讀命令)。讀寫(xiě)程序分別見(jiàn): I2CREAD.ASM I2CWRITE.ASM 寫(xiě)程序: I2CWRITE.ASM;將51單片機(jī)內(nèi)部RAM區(qū)30H開(kāi)始的16個(gè)字節(jié)寫(xiě)到E2PRPR0M的第0頁(yè)中00H單元開(kāi)始的區(qū)域;寫(xiě)串行E2PROM子程序EEPW; (R3)=器件地址 1010 p2p1p0 R/W = 1010*0 ; (R4)=片內(nèi)字節(jié)地址 A7A6A5A4A3A2A1A0=*; (R1)=欲寫(xiě)數(shù)據(jù)存放地址指針 8051RAM區(qū)地址0255; (

27、R7)=連續(xù)寫(xiě)字節(jié)數(shù)n 224C16連續(xù)寫(xiě)字節(jié)數(shù)n=16MOV R3, #10100000B ;器件尋址(寫(xiě)),選擇向24c16第0頁(yè)寫(xiě)數(shù)據(jù)MOV R4, #00000000B ;片內(nèi)地址為00HMOV R1, #30H ; 8051RAM區(qū)地址30HMOV R7, #16 ;24C16連續(xù)寫(xiě)字節(jié)數(shù)n=16 EEPW:MOVP1, #0FFH CLRP1.0;發(fā)開(kāi)始信號(hào)( 高電平變?yōu)榈碗娖? MOVA, R3;送器件地址 CALLSUBS MOVA, R4;送片內(nèi)字節(jié)地址CALLSUBSAGAIN: MOV A, R1 CALL SUBS;調(diào)發(fā)送單字節(jié)子程序 INCR1; 8051RAM區(qū)地址

28、 DJNZ R7, AGAIN;連續(xù)寫(xiě)n個(gè)字節(jié) CLR P1.0;SDA置0, 準(zhǔn)備送停止信號(hào) CALL DELAY;延時(shí)以滿(mǎn)足傳輸速率要求 SETBP1.1;發(fā)停止信號(hào) CALL DELAY SETB P1.0;電平變高,寫(xiě)停止位 SJMP FINISH;結(jié)束寫(xiě)數(shù)據(jù),轉(zhuǎn)讀數(shù)據(jù)程序 ;寫(xiě)一個(gè)字節(jié) SUBS: MOV R0,#08H;發(fā)送單字節(jié)子程序 LOOP: CLR P1.1;產(chǎn)生低電平 RLC A;從高位到低位發(fā)送,左移到進(jìn)位標(biāo)志中 MOV P1.0, C NOP SETB P1.1;產(chǎn)生高電平,形成寫(xiě)數(shù)據(jù)脈沖 CALL DELAY DJNZ R0, LOOP ;循環(huán)8次送8個(gè)bit CL

29、R P1.1 CALL DELAY SETB P1.1 ;產(chǎn)生應(yīng)答脈沖REP: MOVC, P1.0 ;讀應(yīng)答信號(hào) JC REP;判應(yīng)答到否,未到則等待 CLR P1.1;應(yīng)達(dá)到,使電平變低,準(zhǔn)備下一字節(jié)數(shù)據(jù)的發(fā)送 RETDELAY: NOP NOP RETFINISH:END讀程序: I2CREAD.ASM;將E2PRPR0M的第0頁(yè)中00H單元開(kāi)始的16個(gè)字節(jié)讀到51單片機(jī)內(nèi)部RAM區(qū)40H開(kāi)始的區(qū)域;讀串行E2PROM子程序EEPR;(R1)=欲讀數(shù)據(jù)存放地址指針 8051RAM區(qū)地址0255;(R3)=器件地址 1010 p2p1p0 R/W = 1010*0 和 1010 p2p1p

30、0 R/W = 1010*1分別送一次;(R4)=片內(nèi)字節(jié)地址 A7A6A5A4A3A2A1A0=*;(R7)=連續(xù)讀字節(jié)數(shù) 24C16連續(xù)讀字節(jié)數(shù)n=16 READDATA:MOV R3, #10100000B ;器件尋址(寫(xiě)),選擇24c16第0頁(yè)MOV R4, #00000000B ;片內(nèi)地址為00HMOV R1, #40H ; 8051RAM區(qū)地址40HMOV R7, #16 ;24C16連續(xù)寫(xiě)字節(jié)數(shù)n=16 EEPR: MOV P1,#0FFHCLR P1.0;發(fā)開(kāi)始信號(hào)MOV A ,R3;送器件地址(寫(xiě))CALL SUBS;調(diào)發(fā)送單字節(jié)子程序MOV A,R4;送片內(nèi)字節(jié)地址CALL SUBSMOV P1,#0FFHCLR P1.0;再發(fā)開(kāi)始信號(hào);下面這倆句使A=10100000 的第0位變?yōu)?,表示:器件尋址(讀),選擇從24c16第0頁(yè)讀數(shù)據(jù). ;等同于命令: MOV R3, #10100001B 和 MOV A, R3MOV A,R3;再送器件地址(讀)SETB ACC.0;發(fā)讀命令CALL SUBSMORE: CALL SUBRMOV R1,AI

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論