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