基于51单片机太阳能风能太阳能风光互补路灯proteus仿真原理图PCB
3.本系统具备太阳能和风能两种方式给系统的锂电池充电,锂电池再经过升压之后给系统供电。4.采用DC002作为电源接口可直接输入5V给整个系统供电。0.本系统采用STC89C52作为单片机。1.手动模式下,由手动开关控制小灯的亮灭。2.自动模式下,由光强决定小灯的亮灭。
·
功能:
0.本系统采用STC89C52作为单片机
1.手动模式下,由手动开关控制小灯的亮灭
2.自动模式下,由光强决定小灯的亮灭
3.本系统具备太阳能和风能两种方式给系统的锂电池充电,锂电池再经过升压之后给系统供电
4.采用DC002作为电源接口可直接输入5V给整个系统供电
5.
原理图:
PCB :
主程序:
#include <reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include <stdio.h>
#include "delay.h"
sbit SWITCH_MODE = P2^0; //模式切换
sbit SWITCH_ONOFF = P2^1; //手动开关
sbit LED = P3^2; //USB小灯
sbit LIGHT = P2^5; //环境光检测
void Init_Timer0(void); //函数声明
void main(void)
{
Init_Timer0(); //定时器0初始化
while (1) //主循环
{
if (SWITCH_MODE == 0) //自动
{
if (LIGHT == 1) //光线暗
{
LED = 0; //开灯
}
else
{
LED = 1; //关灯
}
}
else // 手动
{
if (SWITCH_ONOFF == 1) //拨到下面
{
LED = 0; //开灯
}
else
{
LED = 1; //关灯
}
}
DelayMs(100); //防止抖动
}
}
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH0 = (65536 - 18432) / 256; //重新赋值 20ms
TL0 = (65536 - 18432) % 256;
EA = 1; //总中断打开
ET0 = 1; //定时器中断打开
TR0 = 1; //定时器开关打开
}
void Timer0_isr(void) interrupt 1
{
static unsigned char cnt = 0;
TH0 = (65536 - 18432) / 256; //重新赋值 20ms
TL0 = (65536 - 18432) % 256;
cnt++;
if (cnt >= 25)
{
cnt = 0;
}
}
更多推荐
所有评论(0)