51单片机光敏电阻程序
时间: 2023-08-12 22:07:50 浏览: 140
以下是一个简单的51单片机光敏电阻程序示例:
```c
#include <reg51.h>
#include <intrins.h>
#define ADC_POWER 0x80 // ADC电源控制位
#define ADC_FLAG 0x10 // ADC完成标志位
#define ADC_START 0x08 // ADC转换开始位
sbit LDR = P1^0; // 光敏电阻信号输入引脚
sbit LED = P2^0; // LED输出引脚
unsigned char ADC_Result = 0; // ADC转换结果变量
void ADC_Init()
{
P1ASF = 0x01; // P1.0设置为ADC输入口
ADC_RES = 0; // 清零ADC转换结果寄存器
ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
// 打开ADC电源,设置ADC时钟频率为普通模式
}
unsigned char Get_ADC_Result()
{
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START;
_nop_();
_nop_();
_nop_();
_nop_();
while(!(ADC_CONTR & ADC_FLAG));
ADC_CONTR &= ~ADC_FLAG;
return ADC_RES;
}
void main()
{
ADC_Init(); // 初始化ADC
while(1)
{
ADC_Result = Get_ADC_Result(); // 获取ADC转换结果
if(ADC_Result < 100) // 光强较弱
LED = 1; // LED灯亮
else // 光强较强
LED = 0; // LED灯灭
}
}
```
该程序通过ADC模块读取光敏电阻的电压值,并根据电压值控制LED的亮灭。当光强较弱时,LED灯亮;当光强较强时,LED灯灭。注意程序中的ADC转换结果需要根据实际电路进行调整。
阅读全文