㈠ 單片機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位略去。