單片機的ADC接口屬於模數轉換接口,將外部的模擬量信號轉化為數位訊號,單片機屬於數字器件,需將模擬信號轉化為數位訊號才能夠為單片機處理。目前市場的很多單片機都自帶ADC轉換接口,若無ADC轉換接口,可以使用ADC數模轉換晶片外擴。
ADC模塊是將模擬信號轉化位數位訊號,數位訊號用0和1表示,ADC模塊有參考電壓,假設給的參考電壓是5V,ADC是12位的(幾位表示用二進位幾位數存儲模擬量轉化後的數字量,12位的ADC則可儲存數字量範圍為:(二進位)000000000000~111111111111,轉換為十進位數字範圍為0~2^12即0~4095。
也就是說把參考電壓分為2^12份即4096份,最小解析度為VREF/4096。
也就是說二進位的000000000000代表輸入模擬量0V,而111111111111代表最大值VREF。
下面以上圖C8051單片機為例子,如原理圖所示,該單片機工作電源為3.3V,參考電壓為2.048V,所以模擬量的輸入範圍為0~2.048V。若所需採集的電壓範圍大於參考電壓值時,可以使用電阻分壓進行降壓或者使用運放進行縮小等。
該單片機ADC為12位的。也就是說輸入電壓為0時,單片機轉換後的數字量結果為000000000000(二進位),當輸入電壓為2.048V時,單片機轉換後的數字量結果為111111111111(二進位),十進位為4095。
也就是說,輸入電壓的值V=2.048×ADC採集到的數字量÷4095。
比如我們要採集一個0~10V範圍的模擬量電壓進行顯示,那麼,可以先將0~10V的電壓縮小5倍,可以使用電阻分壓,也可以採用運放縮小等方式,然後接入單片機的ADC採樣口,可以接入上圖的P2.2口。
最後換算公式為:V = result * 2.048/ 4095 * 5;其中 result為單片機採集到的數字量。