導航:首頁 > 操作系統 > 單片機ad轉換實驗

單片機ad轉換實驗

發布時間:2022-08-04 12:13:13

單片機AD轉換的實質是不是就是檢測電壓的大小

單片機AD轉換的實質可以理解為檢測電壓的大小,但不準確。對於模擬電壓可以用萬用表測出電壓多少。但對於單片機卻無法識別和處理模擬電壓,所以,需要把模擬電壓(模擬量)轉換成對應的數字量,才能進行計算,比較等處理。而且,自然界中的物理量都是模擬量,要測量就要先轉換成電壓,再進行A/D轉換,單片機通過換算,計算出物理量的值。所以,AD轉換不只是要檢測電壓大小,而是要採集各種物理量。

㈡ 51單片機AD轉換實驗,電路和程序

#include <reg51.h>
#include <INTRINS.H>
#include <STDIO.H>

// define P1.0 to check STATUS.
sbit STATUS = P1^0;

unsigned char xdata CTRL _at_ 0x2FFF;
unsigned char xdata ADSEL _at_ 0x4FFF;
unsigned char hByte;
unsigned char lByte;

void adc_Convert (void)
{ // Start a conversion with A0 and A/$C$ low.
// The convesion takes place on rising CE edge.
CTRL = 0x00;
ADSEL = 0x00;
// Wait until we have completed a conversion .
while(STATUS==1);
// Set R/$C$ with A0 low and read the low byte.
CTRL = 0x02;
hByte = ADSEL;
// Set R/$C$ with A0 high and read the high.
CTRL = 0x03;
lByte = ADSEL;
}

void main(void)
{ unsigned int delay, MSB , LSB, adc_Res;
// Initialize serial interface
SCON = 0xDA; // SCON: mode 1, 8-bit UART, enable rcvr */
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload */
TH1 = 0xFD; // TH1: reload value for 1200 baud @ 12MHz */
TR1 = 1; // TR1: timer 1 run */
TI = 1; // TI: set TI to send first char of UART */

while(1)
{ adc_Convert();
MSB=(unsigned int)(hByte << 4);
LSB=(unsigned int)(lByte >> 4);
// adc_Res now has the converted data with 12-bit resolution.
adc_Res = MSB + LSB;
// Send adc results to the serial interface
printf("ADC READINGS: %03Xh\n", adc_Res);
// simple delay - it is mcu clock dependent !
for (delay=0; delay<10000; delay++)
;
}
}

㈢ 單片機,AD轉換的原理謝謝啦

簡單點將就是將IO口獲得的電壓信號與基準電壓(如VCC或者其他參考源)做比較,得出一個數字量。測量的結果精度取決於你AD的位數

㈣ 單片機AD和DA轉換具體過程是怎麼樣的

比如8位的AD轉換吧,轉換0~5V為數字量信號,就是把5V分成256份,每份是5/256,這個也就是精度,最小一份就是5/256 V,0.02V左右,比如輸入信號為5V,就佔了256份,AD輸出結果換成16進制就是0xff,比如說輸入是3.1V,就佔了3.1/(5/256)=158.72份,所以輸出結果只能是158份,0x9e,就偏差了0.72份,就是0.72*5/256=0.014V,就偏差了0.014V左右,如果10位的AD轉換,每份就是5/1024,精度也就高了很多,反過來DA轉換也是一樣的

㈤ 51單片機與AD轉換程序

#include<reg51.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitwr=P2^6;

sbitrd=P2^7;

sbitadint=P2^5;

delay(uintz)

{

ucharw;

while(z--)

{

for(w=0;w<125;w++);

}

}

ad_star()

{

wr=1;

wr=0;

wr=1;

}

main()

{

uchara;

while(1)

{

ad_star();

while(adint);

rd=0;

a=P0;

delay(10);

rd=1;

if(a>0&a<=20){P3=0xc0;}

if(a>20&a<=40){P3=0xf9;}

if(a>40&a<=60){P3=0xa4;}

if(a>60&a<=80){P3=0xb0;}

if(a>80&a<=100){P3=0x99;}

if(a>100&a<=120){P3=0x92;}

if(a>120&a<=140){P3=0x82;}

if(a>140&a<160){P3=0xf8;}

if(a>160&a<=180){P3=0x80;}

if(a>180&a<=200){P3=0x90;}

if(a>200&a<=220){P3=0x88;}

if(a>220&a<=240){P3=0x83;}

if(a>240&a<=255){P3=0xc6;}

}

}

㈥ 什麼是單片機ad轉換,單片機ad轉換處理方法

不管哪個單片機或者哪個應用系統,AD轉換的作用都是,將被測電壓轉換成相對應的數值,這樣的話單片機才能夠據此進行運算、判斷、和控制處理.
例如,一個溫度感測器在0℃的時候是100歐,對應2.5V的電壓,那麼單片機是無法直接知道此時的電壓是2.5V的,單片機本身只能知道電平是高還是低,因此這個2.5V的電壓就需要經過ADC轉換為數字量,如果是用8位解析度的ADC、參考電壓為5V,那麼轉換結果就是127,也就是0x7F,這樣的話,單片機就可以判斷這個溫度是否過高或者過低,就能進行運算和控制了.

㈦ 如何實現單片機中多路AD轉換

有兩種辦法,一個就是用兩個AD轉換晶元,兩路模擬量分別接一個。用單片機控制兩個AD晶元同時啟動轉換,這樣基本可以實現採集到同一時刻的兩路模擬量值。
另一種辦法就是用兩個采樣保持器(LF398),來暫時保存模擬量的瞬時值。兩個保持器後面接模擬多路轉換器,模擬多路轉換器後面接一個AD轉換器。過程是這樣的:要採集之前先給兩個采樣保持器一個保持信號,緊接著選擇多路開關通道,緊接著啟動AD轉換器。分別選擇多路開關的兩個通道,來取得兩路模擬量的值。

㈧ 51單片機關於AD轉換的問題

假設AD的精度滿足要求,就跟跟AD沒有關系,就是數據處理顯示問題,k=AD_IN0*10就是把數字處理成兩位數,然後後面代碼就是顯示出來

㈨ 單片機ad輸出的結果如何轉換

可以通過移位的方式來合並兩個寄存器的值,不同的單片機有不同的結構。具體情況要看單片機硬體結構來處理。10位值要與8位的來比較大小,可以在精度允許的情況下將10位的低2位略去。

閱讀全文

與單片機ad轉換實驗相關的資料

熱點內容
如何創立app軟體 瀏覽:7
keil中編譯工具欄不見了 瀏覽:114
哪裡下載若琪app 瀏覽:665
融密碼伺服器是什麼意思借 瀏覽:476
嵌入式qt514編譯 瀏覽:995
adb如何開啟伺服器伺服器 瀏覽:685
文華副圖莊家建倉指標源碼 瀏覽:3
如何將文件夾中的圖片快捷命名 瀏覽:230
36045的簡便演算法 瀏覽:361
小米筆記本電腦用什麼解壓器 瀏覽:579
弄回城雪球的命令 瀏覽:517
什麼是java動態代理 瀏覽:894
白溝跟淶水源碼 瀏覽:411
c語言rpc框架源碼 瀏覽:523
中公怎麼注銷app賬號 瀏覽:848
linux驅動命令 瀏覽:91
SCM加密幣上交易平台了嗎 瀏覽:674
照片視頻沒有壓縮功能 瀏覽:575
計算機單片機微機實驗箱 瀏覽:236
程序源碼網址 瀏覽:303