【问题标题】:Get value from LDR从 LDR 中获取价值
【发布时间】:2011-03-27 18:24:37
【问题描述】:

我将 picdem 18F4550 与 microchip v8.63 和 c 编译器一起使用。 我使用的组件是: - 3 个 LED(红、绿、蓝); - 一个 LDR(327700 NORPS-12 法内尔)。

我在 RB4、RB5 和 RB6 上连接了 3 个 LED(红色、绿色和蓝色)作为输出。 我还在 RB1 上连接了 LDR。

我的问题是,当另一个 LED 的绿色亮起时,我如何才能在我的代码中检索 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) {
        ;
    }   
}

【问题讨论】:

标签: c microcontroller microchip


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-04-11
    • 2020-11-07
    • 2018-09-14
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多