關於ADC0804的讀取

小弟目前在做專題,是要用ad讀取加速規的訊號經8051後顯示在led燈上

程式在模擬時沒有問題,由於加速規型號未確定,先由電源供應器調變電壓給AD讀取,但接出實體實測後燈號只會全亮或全暗,請各位幫小弟看一下哪邊有出錯誤,感激不盡>"<

PS:P0的值是我在模擬時先假定AD轉換完成給的值,附上圖片

http://f6.wretch.yimg.com/blaspheme/32764/12993685...

http://f6.wretch.yimg.com/blaspheme/32764/12993552...

#include <reg51.h>

sbit ADCRD=P1^0 ;

sbit ADCWR=P1^1 ;

main ()

{

EA=1 ;

IT0=1 ;

EX0=1 ;

ADCWR=0 ; ADCWR= 1;

while(1) ;

}

void externa10 (void) interrupt 0

{

ADCRD=0 ;

P0=10111101

P2=P0 ;

ADCRD=1 ;

ADCWR=0 ; ADCWR= 1;

}

Update:

有阿~第二個網址就是電路圖

Update 2:

恩~已經有接了,前面忘了補充,這個圖有少了一些線,RD、WR、INTO(ADC0804)都有接到P3.2、P1.0、P1.1了

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    沒電路圖 蠻難猜的啦~~~

    2009-08-10 22:08:54 補充:

    把 INTR (ADC0804.) 接到 P3.2 先

    2009-08-13 16:10:27 補充:

    先不要用 中斷

    sbit ADCRD = P1^0 ;

    sbit ADCWR = P1^1 ;

    sbit ADCINTR = P3^2;

    void main( )

    {

    unsigned int delay--;

    P2 = 0x00;

    while( --delay); while( --delay);

    P2 = 0xAA;

    while( --delay); while( --delay);

    P2 = 0xFF;

    while( --delay); while( --delay);

    2009-08-13 16:10:45 補充:

    P1 = 0xFF;

    P0 = 0xFF;

    while(1)

    {

    ADCWR = 0 ; ADCWR = 1;

    while ( ADCINTR );

    ADCRD = 0 ; ADCRD = 1;

    P2 = P0 ;

    while( --delay);

    }

    }

    2009-08-13 16:10:51 補充:

    你應該會先看到 LED 明滅變化, 確定 8051 正常

    接下來 輸入不同電壓 給 ADC0804 看結果 ~~~

  • Anonymous
    1 decade ago

    電路圖 無法看

Still have questions? Get your answers by asking now.