166 基于单片机太阳能充电路灯自动控制系统(人体检测)【毕设课设】

本设计由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; //结束本次循环
	}
}

 资料下载地址

https://pan.baidu.com/s/1YpzR8yF3SJWv39YGCjAang?pwd=8888

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值