單片機的ADC接口屬于模數(shù)轉換接口,將外部的模擬量信號轉化為數(shù)字信號,單片機屬于數(shù)字器件,需將模擬信號轉化為數(shù)字信號才能夠為單片機處理。目前市場的很多單片機都自帶ADC轉換接口,若無ADC轉換接口,可以使用ADC數(shù)模轉換芯片外擴。
ADC模塊是將模擬信號轉化位數(shù)字信號,數(shù)字信號用0和1表示,ADC模塊有參考電壓,假設給的參考電壓是5V,ADC是12位的(幾位表示用二進制幾位數(shù)存儲模擬量轉化后的數(shù)字量,12位的ADC則可儲存數(shù)字量范圍為:(二進制)000000000000~111111111111,轉換為十進制數(shù)字范圍為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時,單片機轉換后的數(shù)字量結果為000000000000(二進制),當輸入電壓為2.048V時,單片機轉換后的數(shù)字量結果為111111111111(二進制),十進制為4095。
也就是說,輸入電壓的值V=2.048×ADC采集到的數(shù)字量÷4095。
比如我們要采集一個0~10V范圍的模擬量電壓進行顯示,那么,可以先將0~10V的電壓縮小5倍,可以使用電阻分壓,也可以采用運放縮小等方式,然后接入單片機的ADC采樣口,可以接入上圖的P2.2口。
最后換算公式為:V = result * 2.048/ 4095 * 5;其中 result為單片機采集到的數(shù)字量。