前言
A/D轉(zhuǎn)換模塊是單片機的高功能模塊,用于對模擬信號進(jìn)行數(shù)字轉(zhuǎn)換,本文以STC8H8K64U單片機為例(原理與其他51單片機并無差別),該單片機A/D模塊為16通道12位。
A/D轉(zhuǎn)換模塊的結(jié)構(gòu)
STC8H的這個單片機A/D轉(zhuǎn)換模塊輸入通道有16個(通道越多,同時可以接收的模擬量就越多),分別為ADC0——ADC15,其中ADC15用于測試內(nèi)部1.19V基準(zhǔn)電壓,工作時,各個輸入通道都工作在高阻狀態(tài)。
關(guān)于位數(shù):12位是用于精度,位數(shù)越多,精度越高,以5v電壓為例,當(dāng)一位時,只能分成兩份,2.5v以上是1,2.5v以下為0,當(dāng)兩位時,可以分成4份,也就是1.25v,2.5v,3.75v,5v為分界,提高了精度,以此類推。
該單片機A/D轉(zhuǎn)換模塊由多路選擇開關(guān)、比較器、逐次比較寄存器、12位數(shù)字模擬轉(zhuǎn)換器(D/A轉(zhuǎn)換模塊)、A/D轉(zhuǎn)換結(jié)果寄存器、A/D轉(zhuǎn)換模塊控制寄存器以及A/D轉(zhuǎn)換模塊配置寄存器構(gòu)成。
A/D轉(zhuǎn)換模塊的分類
按轉(zhuǎn)化原理分類:逐次逼近型、雙積分型、并行/串行比較型、壓頻轉(zhuǎn)換型等
按轉(zhuǎn)化速度分類:超高速<=1ns、高速<=20us、中速<=1ms、低速<=1s。
按轉(zhuǎn)化位數(shù)分類:8、12、14、16。
目前主要有逐次比較型轉(zhuǎn)換器(最常用的)和雙積分型轉(zhuǎn)換器,故接下來主要講解逐次比較型轉(zhuǎn)換器。
逐次比較型轉(zhuǎn)換器
逐次比較型模擬數(shù)字轉(zhuǎn)換器根據(jù)逐次比較的邏輯,從最高位(MSB)開始,逐次對每一個輸入的電壓模擬量與內(nèi)部D/A轉(zhuǎn)換器輸出進(jìn)行比較,多次比較之后,使得轉(zhuǎn)換得到的數(shù)字量逼近輸入模擬量對應(yīng)值,直到A/D轉(zhuǎn)換結(jié)束。
下圖為逐次比較型轉(zhuǎn)換器原理圖
A/D轉(zhuǎn)換模塊的參考電壓源
該A/D轉(zhuǎn)換模塊的電源與單片機電源是同一個,但A/D模塊有獨立的參考電壓源輸入端。
當(dāng)測量精度要求不高時,可以直接使用單片機的工作電壓,高精度時使用精準(zhǔn)的參考電壓。
A/D轉(zhuǎn)換模塊的控制
A/D轉(zhuǎn)換模塊主要由ADC_CONTR、ADCCFG、ADC_RES、ADC_RESL和A/D轉(zhuǎn)換模塊時序控制寄存器ADCTIM以及控制A/D轉(zhuǎn)換的有關(guān)中斷的控制寄存器進(jìn)行控制和管理。
由于寄存器標(biāo)志位等過多,此處僅列舉較為重要的個別寄存器。
此代碼中出現(xiàn)的寄存器有ADC_CONTR,ADC_RES,ADC_RESL。
其中ADC_RES和ADC_RESL共同作為存儲結(jié)果寄存器,RES是高8位,RESL是低8位。
ADC_CONTER各位如下圖:
B7是A/D模塊的電源控制位,1打開,0關(guān)閉。
B6是A/D轉(zhuǎn)換啟動控制位,1時啟動轉(zhuǎn)換,轉(zhuǎn)換完成后自動清0,為0時無影響(當(dāng)A/D轉(zhuǎn)換模塊啟動之后,即使寫0也無法停止)
B5是完成標(biāo)志位,完成轉(zhuǎn)換后置1,需要手動清0。
主要:啟動A/D轉(zhuǎn)換前一定保證A/D轉(zhuǎn)換模塊電源已打開,A/D轉(zhuǎn)換結(jié)束后關(guān)閉A/D轉(zhuǎn)換模塊電源可以降低能耗。初次打開時需要適當(dāng)延時,等內(nèi)部電路穩(wěn)定后再啟動A/D轉(zhuǎn)換。
A/D轉(zhuǎn)換模塊轉(zhuǎn)換結(jié)果選擇
A/D轉(zhuǎn)換模塊轉(zhuǎn)換結(jié)束后,結(jié)果保存到ADC_RES和ADC_RESL中(因為是12位,一個寄存器8位,所以需要兩個寄存器拼起來存儲結(jié)果),但是有兩種存儲格式,由ADCFG中的RESFMT控制。
RESFMT=0時,結(jié)果左對齊,右邊空余位自動為0。
RESFMT=1時,結(jié)果右對齊,左邊空余位自動為0。
評論
查看更多