|
/*軟件A/D所能實現(xiàn)的精度有限 , 測量電壓范圍是2-15V, 而且速度低(約1KHz),但僅用一個電容和一個電阻的誘惑 力,我想大蝦您會笑納的。用于某些場合是有用的。 原理是利用470K電阻對1uF電容充電,利用P0.0口作為檢測電壓, 當電壓低于1/3 VCC時,P0.0讀入的I/O電平為0,當充電電壓超過 1/3 VCC時,P0.0讀入的I/O電平為1。通過測量此過程所用的時間, 就能判斷輸入電壓(需要換算)。 程序的編寫用定時器0實現(xiàn) */
//設計時需要計算過2V充電時測量的電壓時間小于250ms,否則time溢出。 //如需要高精度,time,vol換成int,測量時間會長一點
sbit v_input=P0^0; unsigned char time,vol,n; unsigned int total;
void int_t0(void) interrupt 1 { TL0+=24;TH0=0xfb; //1000個機器周期 time++; if (v_input) { v_input=0; //把電容電壓放調(diào) total+=time; time=0; if ((++n)>10) { //統(tǒng)計10次測量的時間 n=0; vol=total/10; //vol的值為測量的電壓(還沒有轉(zhuǎn)換) total=0; } v_input=1; } } |