从LDR获得价值

时间:2011-03-27 18:24:37

标签: c microcontroller microchip

我正在使用带有微芯片v8.63的picdem 18F4550和c编译器。 我使用的组件是: - 3个LED(红色,绿色,蓝色); - 一个LDR(327700 NORPS-12 farnell)。

我在RB4,RB5和RB6上连接了3个LED(红色,绿色和蓝色)作为输出。 我还在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) {
        ;
    }   
}

1 个答案:

答案 0 :(得分:0)

假设您正在将LDR连接到配置为GPIO的引脚。适用GPIO引脚的电压阈值。引脚上读取的值取决于LDR的电阻摆幅足够宽,以产生逻辑低电平和逻辑高电平。 您很可能希望将LDR连接到PIC A / D引脚而不是GPIO。使用ADCON配置A / D.设置A / D进行转换,并等待A / D完成中断。然后读取ADRESH和ADRESL,它产生LDR的模拟电压。