2011-03-27 147 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。