本设计由STC89C52单片机电路+锂电池保护电路+比较器电路+光敏电阻检测电路+高亮LED灯电路+热释红外模块电路组成。
1、通过太阳能电池板给锂电池充电。
2、系统具有锂电池保护电路。
3、通过比较器模块电路对锂电池电量进行检测,当锂电池电量高于设置的阈值时,白天高亮LED灯不亮,晚上高亮LED灯亮。
4、当锂电池电量低于设置的阈值时,白天灯不亮,晚上,如果热释红外传感器检测到没人时,LED灯亮度自动调低,当热释红外模块检测到有人时,高亮LED灯恢复正常亮度。
资料下载地址
https://pan.baidu.com/s/1YpzR8yF3SJWv39YGCjAang?pwd=8888
部分代码
sbit dianl = P3^2;
sbit led_hot = P2^3;
unsigned char pwmVal=5; //pwm调整
unsigned char times=0;
void Init_Timer0(void);
void main (void)
{
Init_Timer0(); //定时器0初始化
DelayMs(10); //延时有助于稳定
while (1) //主循环
{
if(hot == 1)// 有人
{
led_hot = 0; //有人 人体显示标志
}
else
{
led_hot = 1;
}
else
{
pwmVal = 1; //调整pwm 关灯
}
}
}
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH0=(65536-20000)/256; //重新赋值 20ms
TL0=(65536-20000)%256;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
void Timer0_isr(void) interrupt 1
{
static unsigned char count;
TH0=(65536-1000)/256; //重新赋值 20ms
TL0=(65536-1000)%256;
count++;
if(count<pwmVal) //led1 占空比调节
{
led=0; //打开
}
else if(count<=10) //关闭时间段
{
led=1; //关闭
if(count == 10)count= 0; //结束本次循环
}
}
资料下载地址