2011-03-27 323 views
0

我正在使用microchip v8.63和c編譯器的picdem 18F4550。 我使用的組件是: - 3個LED(紅色,綠色,藍色); -LDR(327700NORPS-12 farnell)。從LDR獲得價值

我連接了3個LED(紅色,綠色和藍色),RB4,RB5和RB6作爲輸出。 我也連接RB1上的LDR。

我的問題是,當另一個指示燈的綠燈亮起時,我如何檢索LDR測量的代碼中的值?

我包括我的代碼:

#include "p18cxxx.h" 
#pragma config WDT = OFF 

void main(void) 
{ 
    // turn off all LED latches 
    LATDbits.LATD0 = 0; 
    LATDbits.LATD1 = 0; 
    LATDbits.LATD2 = 0; 
    // make port d bits which drive LEDs outputs 
    TRISDbits.TRISD0 = 0; 
    TRISDbits.TRISD1 = 0; 
    TRISDbits.TRISD2 = 0; 

    TRISB = 0; 
    // RB port output. 
    PORTB = 0; 
    PORTB = 0b10001111; // 0b01011010 

    if(PORTBbits.RB4 == 0) { 
     LATDbits.LATD0 = 1;  
    } 
    if(PORTBbits.RB5 == 0) { 
     LATDbits.LATD1 = 1; 
    } 
    if(PORTBbits.RB6 == 0) { 
     LATDbits.LATD2 = 1; 
    } 
    if(PORTBbits.RB1 == 1) { 

    } 
    while(1) { 
     ; 
    } 
} 
+0

你可能會得到更好的運氣問這[http://electronics.stackexchange.com](http://electronics.stackexchange.com)(這似乎你[已經](http:// electronics。 stackexchange.com/questions/12122/get-value-from-ldr))。 – 2011-03-27 18:55:57

回答

0

假設您連接到LDR配置爲GPIO引腳。 GPIO引腳的電壓閾值適用。引腳上讀取的值取決於LDR擺動的電阻足夠大以產生邏輯低電平和邏輯高電平。 很可能您想將LDR連接到PIC A/D引腳而不是GPIO。使用ADCON配置A/D。設置A/D進行轉換,並等待A/D完成中斷。然後讀取產生LDR模擬電壓的ADRESH和ADRESL。