基于51单片机太阳能风能太阳能风光互补路灯proteus仿真原理图PCB

功能:
0.本系统采用STC89C52作为单片机
1.手动模式下,由手动开关控制小灯的亮灭
2.自动模式下,由光强决定小灯的亮灭
3.本系统具备太阳能和风能两种方式给系统的锂电池充电,锂电池再经过升压之后给系统供电
4.采用DC002作为电源接口可直接输入5V给整个系统供电
5.

原理图:
基于51单片机太阳能风能太阳能风光互补路灯proteus仿真原理图PCB_第1张图片

PCB :

基于51单片机太阳能风能太阳能风光互补路灯proteus仿真原理图PCB_第2张图片

主程序:

#include  //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include 
#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;
    }
}

仿真演示视频:
https://www.bilibili.com/video/BV19G4y1s7GF/

实物演示视频:
https://www.bilibili.com/video/BV1fG411g7xo/

你可能感兴趣的:(单片机,51单片机,proteus)