太阳能充电过充保护系统

发布于:2022-11-28 ⋅ 阅读:(453) ⋅ 点赞:(0)

全套资料下载地址:https://download.csdn.net/download/sheziqiong/86791321
全套资料下载地址:https://download.csdn.net/download/sheziqiong/86791321
摘要 II
ABSTRACT III
1、绪论 2
1.1课题的背景及意义 2
2、太阳能电池板简介 2
2.1太阳能电池板材料 2
2.2太阳能电池板的分类: 3
2.3太阳能电池板工作原理 3
2.4太阳能电池的基本特性 4
3、总体方案设计 6
4、系统方案比较、设计与论证 7
4.1主控制器模块选择 7
4.2红外温度传感器的选择 8
4.3显示模块的选择 8
4.4电源选取 8
5、芯片资料简介 9
5.1模数转换器ADC0832 9
5.2LCD1602液晶显示模块 11
5.2.1LCD1602的特性及使用说明 11
5.3 STC89C52单片机的简介 14
5.3.1 STC89C52单片机主要特性 15
6、硬件实现及单元电路设计 18
6.1主控制模块 18
6.2显示模块电路 19
6.3充电电压AD采集电路 20
6.4太阳能充电模块电路设计 20
6.5电源部分的设计 21
7、系统软件设计 22
7.1程序结构分析 22
7.2系统程序流图 22
7.3红外测温程序模块 23
8、系统的安装与调试 25
8.1安装步骤 25
8.2电路的调试 26
结论 26
致谢 26
参考文献 27
附录1整体电路原理图 27
附录2元器件清单 28
附录3部分源程序 29
3、总体方案设计
太阳能充电系统的充电电路是太阳能充电板在阳光的照耀下产生电荷,用250mAh的锂电池存储太阳能电池板的电荷,经过充电模块TP4056芯片给锂电池充电同时也可以通过TP4056模块上的usb接口用手机充电器快速充电。充电时,充电红色指示灯点亮,说明锂电池正在充电中,当充电模块上的指示灯变成蓝灯亮亮时,充电完成。利用ADC0832转换器采集充电电池的电压并在液晶LCD1602上显示充电电压值,充电所使用的充电时间。系统总体框图如图3-1所示:

在这里插入图片描述
3-1总体结构框图

4、系统方案比较、设计与论证
该系统主要由红外测温模块、按键设置模块、报警模块和液晶显示模块态显电路组成,下面介绍实现此系统功能的方案。
4.1主控制器模块选择
方案1:
采用可编程逻辑器件CPLD 作为控制器。CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高。且从使用及经济的角度考虑我们放弃了此方案。
方案2:
采用STC89C52单片机作为整个系统的核心,用其控制水温测量控制系统,以实现其既定的性能指标。充分分析我们的系统,其关键在于实现水温的自动控制,而在这一点上,单片机就显现出来它的优势——控制简单、方便、快捷。这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。STC89C52单片机具有功能强大的位操作指令,I/O口均可按位寻址,程序空间多达8K,对于本设计也绰绰有余,更可贵的是STC89C52单片机价格非常低廉。
4.2太阳能板的选择
本设计是软硬件的综合体,每一个模块的选择都会对整个系统产生影响,选择的硬件模块好坏决定了本设计所能达到的高度,所以对比较重要的模块必须要通过对比选择,扬长避短。太阳能的选择有两个方案可供选择。
方案一:
采用ADC0809转换芯片。ADC0809是并行ADC,速度要比串行AD转换器的速度要快得多,不过外围电路比较复杂,价格也贵,因此在设计中放弃了本方案
方案二:
采用由于它体积小,兼容性,电路简单,性价比高。因此选择方案二。
4.3显示模块的选择
方案一:采用静态显示方法,静态显示模块的硬件制作较复杂及功耗大,要用到多个移位寄存器,但不占用端口,只需两根串口线输出。
方案二:采用动态显示方法,动态显示模块的硬件制作简单,段扫描和位扫描各占用一个端口,总需占用单片机14个端口,采用间断扫描法功耗小、硬件成本低及整个硬件系统体积相对减小。
方案三:采用LCD的方法,具有硬件制作简单可直接与单片机接口,显示内容多,功耗小,成本低等优点,LCM1602可显示32个字符,采用LCD的缺点是亮度不够。
比较以上三种方案:本文转载自http://www.biyezuopin.vip/onews.asp?id=14060方案一硬件复杂体积大、功耗大;方案二硬件简单、功耗小;方案三硬件简单,显示内容多,功耗小,成本低等。本系统设计要求达到功耗小、体积小、成本低,显示信息多等要求,权衡三种方案,选择方案三。
4.4电源选取
由于本系统采用USB线供电,我们考虑了如下几种方案为系统供电。
方案1:
采用usb5V为系统供电。USB供电电压稳定,操作方便,节能环保,经济实惠等特点。
方案2:
采用3节1.5 V干电池共4.5V做电源,经过实验验证系统工作时,单片机、传感器的工作电压稳定能够满足系统的要求,而且电池更换方便。综上所述采用方案1

#include <reg52.h>
//#include <string.h>
#define uchar unsigned char
#define uint  unsigned int
#define LCD_PINDATA P0	  //数据端口定义 P2
sbit RS  =  P1^4;		  //RS P0^7 
sbit RW  =  P1^5;		  //RW P0^6
sbit E   =  P1^6;		  //E  P0^5
sbit CS   = P1^2;
sbit Clk  = P1^1;
sbit DATI = P1^0;
sbit DATO = P1^0;
sbit State_led  = P3^7;	 //状态指示灯驱动端口==P3^4
sbit BUZZER = P1^2;	 //蜂鸣器驱动端口==P1^2
sbit Reduc  = P1^7;	 //按键键输入端口==P1^7
sbit Add = P3^0;	 //按键加输入端口==P3^1

/************************************************
** 函数名称 : Delay(uint T)
** 函数功能 : 延时函数
** 输    入 : T--延时倍数 大小--0~65535
** 输    出 : 无
** 说    明 :
************************************************/
void Delay(uint T)
{
    uchar i;
    for(T;T>0;T--)
        for(i=200;i>0;i--);
}
/************************************************
** 函数名称 : WriteCOMDATA(uchar LCD_DATA,uchar N)
** 函数功能 : LCD1602写指令、数据函数
** 输    入 : LCD_DATA:指令或者数据
               N:指令方式还是数据方式 
			   N=0时,LCD_DATA为指令,N=1时,LCD_DATA为数据
** 输    出	: 无
** 说    明 : 
************************************************/
void WriteCOMDATA(uchar LCD_DATA,uchar N)
{
	Delay(10);
	E=1;
	RW=0;
	RS=N;
	LCD_PINDATA=LCD_DATA;
	E=0;
}
/************************************************
** 函数名称 : void LCD_init(void)
** 函数功能 : LCD1602初始化操作
** 输    入 : 无
** 输    出 : 无
** 说    明 :
************************************************/
void LCD_Init(void)
{
    WriteCOMDATA(0x01,0);
	Delay(500);
	WriteCOMDATA(0x38,0);
	Delay(10);
	WriteCOMDATA(0x06,0);
	Delay(10); 
	WriteCOMDATA(0x0c,0);
	Delay(10);
}
/************************************************
** 函数名称 :void WriteChar(uchar Row,uchar Col,uchar Num,uchar *pBuffer)
** 函数功能 :在任意位置写指定个字符
** 输    入 :Row : 要写的字符所在的行,只能为1或2;
              Col : 要写的字符所在的列,只能为0---15
              Num : 要写字符的个数
              pbuffer : 要写字符的首地址
** 输    出 :无
** 说    明 :
************************************************/
void WriteChar(uchar Row,uchar Col,uchar Num,uchar *pBuffer)
{
	uchar i;
	if(Row==1)Row=0x80+Col;
	else Row=0xC0+Col;
	WriteCOMDATA(Row,0);
	for(i=Num;i!=0;i--)
	{	
		WriteCOMDATA(*pBuffer,1);	
		pBuffer++;
	}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
全套资料下载地址:https://download.csdn.net/download/sheziqiong/86791321
全套资料下载地址:https://download.csdn.net/download/sheziqiong/86791321

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到