新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > MAX1247芯片在MCS-51系列中的應用

        MAX1247芯片在MCS-51系列中的應用

        作者: 時間:2006-05-07 來源:網絡 收藏

        摘要:是美國MAXIM公司生產的一種新型12位A/D轉換器。文中介紹了它的功能、工作模式及轉換參數,并給出了與MCS-51的軟件程序。

        是一種12位的A/D轉換器。它帶有一個四通道的復用器一個高帶寬的采樣/保持器。可采用總線結構和單片機相連,其供電電壓在+2.7~+5.25V之間,可實現4路或2路的數據轉換,并可通過軟件實現多種轉換模式。

        1 引腳排列

        MAX1247的引腳排列如圖1所示,各引腳功能說明如下:

        1腳(VDD):電源端

        2~5腳(CH0~CH3):四個采樣模擬信號輸入端;

        6腳(COM):模擬信號輸入的地參考電壓,在單通道模式中,該腳必須連至地且必須穩定在-0.5LSB~+0.5LSB。

        7腳(SHDN):關閉輸入控制端,為低時,將使器件掉電;為高時,將使參考緩沖區放大器處于內部補償模式;將其浮動,則使參考緩沖區放大器處于外部補償模式;

        8腳(VREF):ADC參考輸入,是模數轉換的參考電壓,可用此腳來控制模式輸入的電壓范圍。該腳電壓最大為5.05V;

        9腳(REFADJ):參考緩沖區放大器的輸入,要使參考緩沖區放大器無效,需將其拉至VDD;

        10腳(AGND):模擬地;

        11腳(DGND):數字地;

        12腳(DOUT):串行數據輸出,數據在SCLK的下降沿輸出。當CS為高時,該端為高阻態;

        13腳(SSTRB):轉換結束腳,當處于內部時鐘模式,且芯片開始轉換時,該腳變低,但若轉換結束,該腳變高;在外部時鐘模式下,在MSB開始形成之前,該腳維持一個時鐘脈沖的高電平。

        14腳(DIN):串行數據輸入,數據在SCLK的上升沿被鎖存;

        15腳(CS):片選信號;

        16腳(SCLK):串行時鐘輸入,用來進行串行數據的輸入和輸出。

        2 工作模式

        MAX1247有四種工作模式,具體說明如下:

        ●UNIpolar/Bipolar:在UNIpolar模式下,模擬輸入的信號量可在0V~VREF之間,而在Bipolar模式下,模擬輸入的信號量可在-VREF/2~VREF/2之間;

        ●Full power-down/fast power-down:掉電模式;

        ●Internal clock mode/External clock mode(內部時鐘/外部時鐘):在外部時鐘模式下,外部時鐘不僅要控制數據的移入和移出,而且要驅動模數轉換,并要求模數轉換必須在一定的時間內結束,否則將使轉換結果降低,如果外部時鐘的頻率低于100kHz,最好用內部時鐘模式;在內部時鐘模式下,芯片將自動生成轉換用時鐘,這使得單片機不用主動生成轉換用時鐘,使可將轉換結果讀入(讀入讀出時鐘可在0~2MHz范圍之內);

        ●Single-ended/Differential:在Single-ended模式下,輸入信號電壓量和COM口構成相對電壓。在Differential模式下,CH0/CH1間也將構成,CH2/CH3間將構成,因而在Single-ended模式下,最大可構成四路模擬量輸入,而在Differential模式下,最大可構成兩路模擬量輸入,單通道模式和模式下的通道選擇見表1。

        表1 通道選擇

        單通道模式SEL2SEL1SEL0CH0CH1CH2CH3COM
        001+   -
        101 +  -
        010  + -
        110   +-
        差分輸入模式SEL2SEL1SEL0CH0CH1CH2CH3 
        001+-   
        010  +- 
        101-+   
        110  -+ 

        3 模數轉換的開始和結束

        當CS為低時,通過將一個控制字節由CLK端送入DIN腳,可以將第一個到達的邏輯“1”位定義為控制字的開始(MSB),控制字的格式如下:

        對控制字各位的解釋見表2所列。當芯片接受到該控制字后,器件開始進行模數轉換,在經過一段時間的延時后,再接收ROUT上的數據,該數據為所轉換的數字量。把CS拉高,將結束本次轉換過程。

        表2 控制字各位的解釋

        名 稱

        解 釋

        7START當CS選通后,該位為1表示一個控制字的開始
        6SEL2這3位選擇四個通道中選擇那一個在本次轉換中使用(參見表3)
        5SEL1
        4SEL0
        3UNI/BIPi=Single-end 0=differuantial
        2SGL/DIFI=Single-end 0=differantial
        1
        0(LSB)
        PD1
        PD0
        PD1 PD0 模式
        0 0 完全掉電模式
        0 1 快速掉電模式
        1 0 內部時鐘模式
        1 1 外部時鐘模式

        4 模擬量與數字量的關系

        4.1 關系

        對于Bipolar模式,其輸入模擬量的電壓范圍為-VREF+Vcom~+VREF+Vcom,將該電壓范圍分成4096等份,則1LSB=VREF/4096,相應的數字電壓范圍為8FF~7FF,例如:000代表Vcom,7FF代表+VREF+Vcom。

        對于UNIpolar模式,其輸入模擬量的電壓范圍為Vcom~VREF+Vcom,將該電壓范圍分為4096等份,則1LSB=VREF/4096,相應的數字電壓范圍為000~FFF,例如:000代表Vcom,FFF代表+VREF+Vcom。

        4.2 數字量的輸出

        MAX1247一共輸出兩個字節,每個字節都是高位在先,其結構如下:

        5 程序

        以下以給主MAX1247發送命令字以及從MAX1247接收采樣數據為例,給出一個簡單的程序的示例。

        send1247data: ;發送命令字子程序(A中為要發送的命令)

        mov rotcount,#08h

        clr do

        clr cs ;將CS變低

        rot-next:

        nop

        nop

        clr clk ;將CLK變低

        rlc a ;移出第一位

        mov din,c

        setb clk ;發送第一位

        djnz rotcount,rot-next

        nop

        clr clk ;啟動轉換

        setb cs ;將片選拉高

        ret

        recdata: ;數據接收子程序

        clr din

        clr cs ;將片選拉低

        nop

        nop

        setb clk

        mov rotcount,#08h

        recl-next:

        clr clk ;發送下降沿

        nop

        nop

        mov c,do ;移入數據

        rlc a

        setb clk

        nop

        dinz rotcount,recl-next

        push a ;保存接收到的高位數據

        mov rotcount,#08h ;為接收作準備

        rec2-next:

        clr clk ;發下降沿

        nop

        nop

        mov c,do

        rlc a

        setb clk

        nop

        djnz rotcount,rec2-next

        setb cs

        mov b,a

        pop a

        ret



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 文昌市| 丹阳市| 鹤峰县| 若羌县| 化隆| 彝良县| 双鸭山市| 仁怀市| 本溪| 雷山县| 崇信县| 象山县| 邵阳县| 全州县| 英超| 德保县| 香格里拉县| 牡丹江市| 醴陵市| 德化县| 嫩江县| 五台县| 藁城市| 文山县| 老河口市| 渭南市| 崇义县| 齐齐哈尔市| 洪泽县| 皮山县| 漳州市| 渭南市| 中阳县| 龙山县| 玛曲县| 奈曼旗| 海宁市| 衡阳县| 临沧市| 尼木县| 元朗区|