51单片机是一种低成本、高性能、广泛应用的单片机。光敏电阻是指当外界照度变化时,其电阻值也随之变化。51单片机结合光敏电阻可以实现许多有趣的功能。
51单片机结合光敏电阻可以实现光敏电阻值的检测。光敏电阻的电阻值随着外界照度的变化而变化,通过ADC模拟转换,可以将光敏电阻的电阻值转换为数字量,然后通过程序对数字量进行处理,实现各种功能,如光敏报警、亮度自适应调节等。
可以通过下面代码实现对光敏电阻值的检测:
unsigned int adc_value; //定义ADC转换结果变量sbit light = P2^0; //定义控制LED的IO口
void main( ){
while( 1 ){
adc_value=get_adc(0); //读取ADC转换结果
if( adc_value>700 ) //如果光敏电阻值大于700
light=0; //LED灯熄灭
else
light=1; //LED灯亮起
}
}
通过光敏电阻检测,可以控制LED灯的亮度。在光线较暗时,LED灯亮度可以适当增大,使人眼感受到更好的亮度效果。在光线较亮时,则可以减小LED灯的亮度,节省能量,避免对人眼的刺激。
可以通过下面代码实现对LED灯亮度的自适应调节:
unsigned int adc_value; //定义ADC转换结果变量void main( ){
while( 1 ){
adc_value=get_adc(0); //读取ADC转换结果
P2=256-adc_value; //控制LED亮度
}
}
光敏电阻也可以用来控制舵机转动。将光敏电阻与P3.0口相连,舵机与P1.0口相连,通过测量光敏电阻的电阻值,我们可以控制舵机的转动,从而实现光线控制舵机转动的功能。
可以通过下面代码实现对舵机转动的控制:
unsigned int adc_value; //定义ADC转换结果变量void main( ){
while( 1 ){
adc_value=get_adc(0); //读取ADC转换结果
P1=256-adc_value/4; //控制舵机转动
}
}