51單片機ADC0804模數轉換學習
dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0x7d;
wela=0;
delayms(5);
dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0x7b;
wela=0;
delayms(5);
}
程序中所說的時序圖如下:
從時序圖可知首先要選定片選,即置CS=0,程序中一直讓cs為0,這樣一直選定其工作。對轉換沒有影響。再看WR的時序圖WR先是高-->低-->高,從低-->高這個過程中至少要延時tw(WR)L(ns),程序中用的的_nop()_函數就是延時一個機器周期,本實驗板得機器周期為1000ns遠大于tw(WR)L(ns)。再看RD
RD的時序是高-->低-->高,RD為低后延時tACC后就有數據了,adval=P1; //A/D轉換后的數據賦給adval
于是再把wR拉高這樣就把數據讀走了。因為INTR是自動變化的,所以不需要人為設定。。(以上個人理解不知道是否正確^-^)
呵呵,不同的轉換器時序圖應該也不一樣,程序代碼也有差別,但本質是一樣的。
評論