太阳能充放电控制器设计课程设计.doc

上传人:laozhun 文档编号:2960964 上传时间:2023-03-05 格式:DOC 页数:47 大小:65.50KB
返回 下载 相关 举报
太阳能充放电控制器设计课程设计.doc_第1页
第1页 / 共47页
太阳能充放电控制器设计课程设计.doc_第2页
第2页 / 共47页
太阳能充放电控制器设计课程设计.doc_第3页
第3页 / 共47页
太阳能充放电控制器设计课程设计.doc_第4页
第4页 / 共47页
太阳能充放电控制器设计课程设计.doc_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《太阳能充放电控制器设计课程设计.doc》由会员分享,可在线阅读,更多相关《太阳能充放电控制器设计课程设计.doc(47页珍藏版)》请在三一办公上搜索。

1、太阳能充放电控制器设计_课程设计 太阳能充放电控制器设计摘 要太阳能光伏发电现已成为新能源和可再生能源的重要组成部分,也被认为是当前世界最有发展前景的新能源技术。目前太阳能光伏发电装置已广泛应用于通讯,交通,电力等各个方面,其核心部分就是充电控制器。本设计针对目前市场上传统充电控制器对蓄电池的充放电控制不合理,同时保护也不够充分,使得蓄电池的寿命缩短这种情况,研究确定了一种基于单片机的太阳能充电控制器的方案。在太阳能对蓄电池的充放电方式、控制器的功能要求和实际应用方面做了一定分析,完成了硬件电路设计和软件编制,实现了对蓄电池的高效率管理。 在总体方案的指导下,本设计使用低功耗、高性能,超强抗干

2、扰的STC89C52单片机作为核心器件对整个电路进行控制。系统硬件电路由太阳能电池充放电电路,电压采集和显示电路,单片机控制电路和RS232串口通信电路组成,主要实现对蓄电池电压的采集和显示。软件部分依据PWM(Pulse Width Modulation)脉宽调制控制策略,编制程序使单片机输出PWM控制信号,通过控制光电耦合器通断进而控制MOSFET管开启和关闭,达到控制蓄电池充放电的目的,同时按照功能要求实现了对蓄电池过充、过放保护和短路保护。实验表明,该控制器性能优良,可靠性高,可以时刻监视太阳能电池板和蓄电池状态,实现控制蓄电池最优充放电,达到延长蓄电池的使用寿命。关键词: 充电控制器

3、; 太阳能光伏发电; PWM脉宽调制;AbstractSolar photovoltaic power generation has become an important part of new energy and renewable energy, it is considered the current worlds most promising new energy technologies. At present solar photovoltaic device has been widely used in communications, transport, electric

4、ity and other aspects, the core part is the charge controller. The conventional charge controller on the market today on the battery charge and discharge control is unreasonable, and its protection is also inadequate,whichs makes the battery life to shorten. To solve this problem, the design identif

5、ies a solar charge controller based on single chip solution. In the solar energy to battery charge and discharge means, the controller of the functional requirements and the practical application aspects ,making some analysis,completed the hardware circuit design and software development, to achieve

6、 the high efficiency of the battery management. Under the guidance of the overall program, the design uses low-power, high performance, super anti-jamming STC89C52 microcontroller as a core device to control the entire circuit. Hardware circuit consists of a solar battery charging and discharging ci

7、rcuit, voltage acquisition and display circuit, the MCU control circuit and RS232 serial communication circuit, the main achievement of the acquisition and display battery voltage. Software is based in part on PWM Pulse Width Modulation pulse width modulation control strategy, programming the microc

8、ontroller output PWM control signal, by controlling the photocoupler on-off the control MOSFET opening and closing, to control battery charging and discharging purposes, and in accordance with the functional requirements implemented the battery over charge, over discharge protection and short circui

9、t protection. Experiments show that the controller performance, high reliability, can always monitor the state of solar panels and batteries to achieve optimal control of battery charge and discharge, to prolong battery life.Keywords: charge controller; solar photovoltaic; PWM pulse width modulation

10、;目 录1 绪论11.1 课题研究背景和意义11.2 太阳能充放电控制器现状21.3 设计主要任务32 太阳能充电控制器的总体设计方案42.1 太阳能路灯系统基本结构42.2 充电控制器的控制策略62.3 控制器的整体设计方案83 太阳能充电控制器的硬件电路设计103.1 系统层次原理图103.2 单片机最小系统113.2.1 STC89C52的简介113.2.2 单片机的最小系统及扩展电路133.3 充放电电路153.4光耦驱动电路163.5 A/D转换电路163.5.1 ADC0804的简介173.5.2 ADC0804外围接线电路183.6 LCD显示电路203.7 E2PROM数据存储

11、电路213.8 串口通信电路224 太阳能充电控制器的软件设计264.1 系统主程序设计264.2 电压采集转换模块274.3 显示模块284.4 数据存储模块314.5 软件调试和仿真335 总结与展望365.1 设计总结365.1 展望37参考文献38致 谢39附录 源程序40附录 硬件电路图541 绪论1.1 课题研究背景和意义能源资源是国民经济发展的重要基础之一,随着人民生活水平的不断提高和科学技术的迅速发展,能源的缺口增大,能源问题作为困扰人类长期稳定发展的一大因素摆在了人们面前。伴随着世界能源危机的日益严重,石油价格不断上涨,利用常规能源已经不能适应世界经济快速增长的需要,如何解决

12、能源问题,是每个国家都必须面临的问题。同时,以煤、石油作为燃料在燃烧过程中产生的有害物质已经开始造成全球变暖,即“温室效应,人类的生活将会由此受到很大的威胁。这些难题迫使政府和社会在发展常规能源的同时必须加大对新能源的开发和利用。新能源包括水能、风能、太阳能等。虽然风能或水能等更加便宜,但是大多数的自家用户却都不可能找到适当场合进行架设,架设成本较高。而太阳能则不同,任何自家用户只要找到一个有阳光照射到的窗户都可以装置太阳能极板作辅助能源,几百元投资便可以架设。所以综合考虑,太阳能无疑是符合我国可持续发展战略的理想绿色能源,全球能源专家也认为,太阳能将成为21世纪最重要也最有前景的能源之一。而

13、且太阳辐射能与煤炭、石油等常规能源相比较,更有如下的优点:(1)普遍性。地球上处处都有太阳能,不需要到处去寻找,去运输,容易获取。(2)无害性。利用太阳能作为能源,没有废渣,废料,废气,废水的排放,没有噪声,不会污染环境,没有公害,清洁干净。(3)长久性。 只要有太阳,就有太阳能,因此太阳能可以说是取之不尽,用之不竭。(4)巨大性。一年内到达地面的太阳辐射能总量要比现在地球上消耗的各种能量的总和大几万倍。我国幅员辽阔,有着十分丰富的太阳能资源。全国各地的年太阳辐射总量33408400MJm2,中值为5852MJm2。年日照时数在2200小时以上的地区约占国土面积的23以上。我国的西部地区,包括

14、西藏、新疆、青海、内蒙古等省年日照时间长,这些地区面积宽广、人口密集低,在一些偏僻的地区传统的供电设施建设成本高,电能的供需矛盾显得十分突出,因此当地政府充分利用太阳能发电解决无电地区的用电具有重大的战略意义。为了更高效的利用太阳能,白天将太阳能转化为电能,利用蓄电池将电能储存起来,需要用电时即可由蓄电池供电。2 太阳能充电控制器的总体设计方案在确定设计方案之前,需要结合应用实例,进行一定的综合分析,更加明确控制器的作用,最后来确定整体方案。这里以太阳能充电控制器应用于太阳能光伏发电路灯系统为例,对系统各个组成部分的主要功能做详细的分析说明。2.1 太阳能路灯系统基本结构本系统主要针对直流照明

15、路灯进行系统设计,所以构成太阳能路灯系统主要有四大部分组成,即太阳能极板、蓄电池、充电控制器、照明电路。太阳能路灯系统基本结构如图2-1所示。图 2-1 太阳能路灯系统基本结构从图2-1中可以看出,太阳能极板阵列将太阳能转换为电能并将电能存储到蓄电池中,蓄电池再将存储的电能输出给照明电路供电,完成能量的传递。系统各个部分的控制功能全由充电控制器来完成。(1)太阳能电池板如图2-2所示,太阳能电池板是利用半导体光伏效应制成的,能够直接将太阳辐射转换成电能的器件。具有很强的光伏效应半导体材料,当吸收一定能量的光子后其内部导电的载流子分布和浓度发生变化。光照在半导体P/N结上,当外部接通电路时,在该

16、电压的作用下,将会有电流流过外部电路产生一定的输出功率。图2-3 输出电压波形针对目前市场上的太阳能充电控制器当蓄电池给负载供电时,没有时刻检测蓄电池的电压,很容易导致蓄电池的深度放电这个问题,本论文提出时刻在线检测蓄电池电压来避免蓄电池发生过放现象,保护蓄电池,提高其使用寿命。2.3 控制器的整体设计方案通过对应用实例的分析,更加明确太阳能充电控制器的在系统中重要性和作用,同时依照其功能要求和改进的控制策略,最后确定了整体设计方案。本系统以89C52单片机为,利用分压电路对蓄电池的电压、进行采样经过A/D转换输入到单片机中进行处理输出经光耦驱动MOSFET管开启关闭来控制电路。该系统可以实现

17、控制蓄电池的最优充放电图2-4 系统整体结构框图以上通过对控制器、被控对象蓄电池的分析,结合硬件资源和软件控制策略,进行了硬件电路设计和软件编程设计,最终确定整体设计方案。整体方案设计,讲述了光伏发电技术中最重要部分控制器和蓄电池的作用,控制器主要负责控制太阳能极板对蓄电池的充电以及控制蓄电池对负载的供电。由于不合适的充放电方式会导致蓄电池的损坏,缩短蓄电池的使用寿命,本论文提出了PWM脉宽调制充电方法,这种充电方法能够使蓄电池有较充分的反应时间,与以前的充电方式相比,提高了蓄电池的充电效率。同时提出了时刻在线检测蓄电池电压的放电控制方法,避免蓄电池发生过放现象,保护蓄电池。各个部分的控制功能

18、通过对单片机进行软件编程来实现。3 太阳能充电控制器的硬件电路设计在整体方案的指导下,依据工程设计的常见思路,本论文从硬件电路设计和软件设计两个方面入手,运用模块化的设计方法去进行控制器的设计。硬件电路主要由以下几部分组成:单片机最小系统、充放电电路、光耦驱动电路、A/D转换电路、LCD显示电路、E2PROM数据存储电路、串口通信电路等。下面先从系统层次原理图入手,对系统原理进行详细的分析,然后再对具体电路地进行一一介绍。3.1 系统层次原理图系统层次原理图如图所示,电路设计以89C52单片机A/D转换得到一个数字信号的电压值,再将送入到单片机进行处理单片机输出经光耦电路控制MOSFET。控制

19、MOSFET管导通的方式是脉冲宽度调制 PWM ,根据变化来调制MOSFET管栅的偏置,达到实现开关功能。图 3-1 系统原理图最后通过通信模块实现数据的传送和保存。串口通信模块采用232芯片进行TTL电平和RS-232电平之间的转换,加入串口的目的主要是使控制器具有远程通信或远程监控功能,同时方便将每天的异常状态数据记录下来,供工作人员查看。数据存储电路模块,使得当电压出现异常时,让蜂鸣器报警,同时把异常电压值通过I2C总线存放在E2PROM中,作为以后分析使用。3.2 单片机最小系统3.2.1 STC89C52的简介STC89C52是一种低功耗、高性能CMOS 8位微控制器,具有8K在系统

20、可编程Flash存储器使用公司高密度非易失性存储器技术制造与工业80C51产品指令和引脚完全兼容在芯片,拥有8位CPU和在系统可编程Flash,使得为众多嵌入式控制应用系统提供高灵活、有效的解决方案具有以下标准功能8k字节Flash,256字节RAM,32位I/O 口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。同时该芯

21、片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。是一个有40个引脚的芯片,引脚如图3-所示。、ALE/、/VPP。(3)I/O口引脚。如P0、P1、P2、P3。图 3-2 STC89C52引脚图RST:复位输入。时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR 地址8EH 上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/:地址锁存控制信号 ALE 是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚 也用作编程输入脉冲。在一般情况下,

22、ALE以晶振六分之一的频率输出脉冲,可作为外部定时器或时钟使用。如果需要,通过将地址为8EH的SFR的第0位置1”,ALE操作将无效。这一位置1”,ALE仅在执行MOVX或MOVC指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位 地址为8EH的SFR的第0位 的设置对微控制器处于外部执行模式下无效。:外部程序存储器选通信号 是外部程序存储器选通信号。当从外部程序存储器执行外部代码时,在每个机器周期被激活两次,而在访问外部数据存储器时,将不被激活。/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器指令,必须接GND。为了执行内部程序指令,EA应该接V

23、CC。在flash编 程期间,也接收12伏Vpp电压。单片机电路包括上电复位电路,指示灯单片机内部有一个用于构成振荡器的高增益反相放大器,此放大器的输入和输出端分别是引脚XTAL1和XTAL2,在XTAL1和XTAL2上外接时钟源即可构成时钟电路,CPU的所有操作均在时钟脉冲同步下进行。片内振荡器的振荡频率非常接近晶振频率,一般多在1.2MHz12MHz之间选取。时钟电路如图3-3所示。C6、C是反馈电容,其值在5pF30pF之间选取本电路选用的电容为30pF,晶振频率为11.0952MHz。图 3-3 时钟电路 图 3-4 复位电路(2)复位电路复位是单片机的初始化操作。其主要功能是把PC初

24、始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。单片机的复位电路如图3-4所示。本系统采用的是上电+电平按钮复位,上电复位是通过外部复位电路的电容充电来实现的。按钮复位是当按钮按下后,电源通过电阻R施加到复位端上,实现单片机复位。复位电路虽然简单,但其作用非常重要。一个单片机系统能否正常运行,首先要检查是否能复位成功。初步检查可用示波器探头监视RST引脚,按下复位键,观察是否有足够幅度的波形输出 瞬时的 ,还可以通过改变复位电路容值进行实验。 图 3-5工作状态指示灯电路图

25、 3-6 蜂鸣器报警电路(4)蜂鸣器报警电路报警电路采用蜂鸣器来发出报警声音,由于的驱动能力较弱,所以蜂鸣器要加三极管驱动实时监测的过程中,一旦发现检测值连续超出阈值范围,便启动自身报警电路,即当超过设定的最高或最低时,三极管导通,蜂鸣器发出报警信号。电路图如图3-所示电路由防反充二极管D1、滤波电容C、续流二极管DMOSFET管Q1等构成。二极管D1是为了反充,当阴天或晚上蓄电池的电压高于太阳能电池的电压时,D1就生效。通过控制闭合断开的时间(即PWM脉冲宽度调制),就可以控制输出电压。所使用的MOSFET是电压控制单极性金属氧化物半导体场效应晶体管,所需驱动功率较小。而且MOSFET只有多

26、数载流子参与导电,不存在少数载流子的复合时间,因而开关频率可以很高,非常适合作控制充放电开关。设计中采用IR沟道MOSFET管,沟道MOSFET的导通电压V0。当光耦时,由于Q1的G极电压,Vgs 0,当极电压达到一定值时,Q1导通C4是太阳能电池板输出电压滤波,使得更稳定地给蓄电池充电。电容C5是对蓄电池输出电压进行滤波,以保证负载供电电路的稳定性。图中稳压管D2用来对蓄电池进行稳压作用。当用户将蓄电池反接至控制器时,续流二极管D3可以进行续流,从而保护控制器不被毁坏。图 3-7 充放电电路按程序设计当检测到蓄电池的电压低于1V,充电模式为均充,Q1为完全导通状态,也就是导通的脉冲占空比最大

27、;当检测到蓄电池的电压在12V-14.5V,充电模式为浮充,Q1导通与不导通的占空比例变小;当检测到蓄电池的电压等于15V,Q1截止充电停止。当检测到蓄电池的电压低于10.8V,Q2关闭停止放电.4光耦电路当信号为低电平时,光耦内部的发光二极管的电流近似为零,输出端两管脚间的电阻很大,相当于开关“断开”MOSEFT的Vgs0,当为高电平时,光耦内部的发光二极管发光,输出端两管脚间的电阻变小,相当于开关“接通”,此时从U输入的电压经光耦流向接地端,K1处的电压接近为零,MOSEFT的Vgs 0,Q1。图 3-8 光耦驱动电路3.5 A/D转换电路单片机没有内置的A/D转换模块,因此采集的电压经A

28、/D转换才可接入单片机。A/D转换器品种很多,选用时需要综合考虑各种因素进行选取。一般逐次比较型A/D转换器用到较多,本设计采用8行A/D转换器芯片AD转换就是模数转换,顾名思义,就是把模拟信号转换成数字信号。A/D转换器转换速度高和双积分型转换精度高的优点,所以得到普遍应用。ADC0804就是这类集成A/D转换器。ADC0804 为一只具有20引脚8位CMOS的A/D 转换器, 其规格如下: 1 高阻抗状态输出分辨率:8 位 0255 2 存取时间:135 转换时间:100 3 总误差:1LSB 4 工作温度:0度70度; 5 模拟输入电压范围:0V5V 6 参考电压:2.5V工作电压:5V

29、 7 输出为ADC0804引脚功能 芯片片选信号输入端,低电平有效,一旦有效,表明A/D转换器别选中,可启动工作。外部读取转换结果的控制输出信号。为 1 时,DB0DB7 处理高阻抗: 为 0 时,数字数据才会输出。用来启动转换的控制输入,相当于 ADC 的转换开始( 0 时),当 由 1变为 0时,转换器被清除:当 回到 1时,转换正式开始。 图 3-9 ADC0804引脚图CLK IN时钟信号输入端CLK R:内部时钟发生器的外接电阻端,与CLK配合可有芯片自身产生时钟脉冲,其振荡频率为 1/(1.1RC) 中断请求信号输出,端,低地平动作.,表明本次转换已完成。VIN + VIN - 差

30、动模拟电压输入。输入单端正电压时, VIN - 接地:而差动输入时, 直接加入 VIN + VIN - . AGND,DGND模拟信号以及数字信号的接地. VREF/2参考电平输入,决定量化单位。 DB0DB7三态特性数字信号输出端. VCC: 电源供应以及作为电路的参考电压. 3.5.2 ADC0804外围接线电路(1)电压采集电路 如所示,电压采集电路使用两个串联的电阻,大小比例为,然后并联在需要检测的电压两端,从两个电阻中间采集电压。由分压公式得出采集的电压为,当蓄电池充满电时电压大概为14.5V,计算出采集到的电压为,符合A/D转换芯片的的输入值。图 3-10 电压采集电路(2)ADC

31、0804构成的典型A/D转换电路图 3-11 A/D转换电路、分别接单片机的P3.6和P3.7引脚,进行读写控制;CLK、CLKR、GND之间用电阻和电容构成RC振荡电路,用来给ADC0804提供工作所需的脉冲。蓄电池的电压采集信号ADIN从6脚引入,在内部采集转换后,从数字输出端输出到单片机的P1口,通过读P1口数据,便可以得到蓄电池的电压,实现实时在线检测。3.6 LCD显示电路液晶具有体积小、功耗低,显示清晰的优点,所以比较适合作显示使用。为了更好的显示电压值,同时扩展自己学习芯片的能力,本设计用液晶1602来显示蓄电池的电压值。在使用1602之前,我们首先查阅其使用手册,对其进行一定的

32、了解。从芯片手册中,可以得到1602液晶的主要技术资料,如表3-1所示,通过此表我们可以知道1602工作电压和显示容量,可以验证设计选择的是否合适。表 3-1 1602的主要技术参数显示容量 162个字符 芯片工作电压 4.55.5V 工作电流 2.0mA(5.0V)模块最佳工作电压 5.0V 字符尺寸 2.954.35(WH)mm显然,1602液晶可以满足要求,接下来介绍其各个引脚的功能,为后面设计电压显示电路做准备。1602引脚功能引脚功能表符 号名 称功 能1Vss接地0V2VDD电路电源5V10%3V液晶4RS寄存器选择信号H:数据寄存器 L:指令寄存器5R/W读/写信号H:读 L:写

33、6E片选信号下降沿触发,锁存数据7-14DB0-DB7数据线数据传输I2C总线接口的串行E2PROM器件,这里选择AT24C02芯片。AT24C02可有效解决掉电数据保存问题,可对所存在数据保存100年,并可多次擦写,擦写次数可达10万次以上。AT24C02是一个2K位串行CMOS E2PROM, 内部含有256个字节,先进CMOS技术实质上减少了器件的功耗。AT24C02有一个字节页写缓冲器。该器件通过I总线接口进行操作,有一个专门的写保护功能。AT24C02,首先来介绍其各个引脚功能,如表3-3 所示。表 3-3 AT24C02管脚描述管脚名称 功能 A0 A1 A2 SDA 串行数据/地

34、址 SCL 串行时钟 WP 写保护 Vcc +1.8V6.0V 工作电压 地 I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。总线系统的典型硬件连接图,AT24C02与单片机连接构成的数据存储电路如图3-13所示。图 3-13 数据存储电路3.8 串口通信电路随着单片机系统的广泛应用和计算机网路技术的普及,单片机的通信功能愈来愈显得重要。单片机通信是指单片机与计算机或单片机与单片机之间的信息交换,不过通常使用的是单片机与计算机之间的通信。通信有并行和串行两种方式

35、。由于并行通信存在使用传输线较多,长距离传送成本高且收、发方的各位同时接受存在困难等诸多问题,所以在现代单片机测控系统中,信息的交换多采用串行通信方式。本设计中加入串行通信电路的目的主要有三个:一是方便给单片机下载程序;二是使控制器具有远程通信或远程监控的功能;三是将控制器每天采集到数据的极限值和发生异常状态时的数据记录下来,供用户查看。由于单片机的电平和计算机电平不兼容,设计中采用232芯片进行TTL电平和RS-232电平之间的转换。而且系统采用易于实现的异步串行通信方式,用最简单也最实用的奇偶校验作为串行通信错误校验方式。232芯片是专门为电脑的标准串口设计的单电源电平转换芯片,使用+5v

36、单电源供电。片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V- (4)功耗低,典型供电电流5mA (5)内部集成2个RS-232C驱动器 (6)内部集成两个RS-232C接收器 (7)高集成度,片外最低只需4个电容即可工作。图3-15 串口通信电路本章对充放电控制器的原理以及具体的硬件实现电路进行了详细的介绍,并对电路中使用到的芯片也予以描述,使读者通过阅读可以清晰的明白控制器的设计思路和实现过程。4 太阳能充电控制器的软件设计 软件设计采用C语言来实现,受C语言模块化编程设计思想的启发,本系统软件设计采用模块化设计思路,即整个控制软件由许多独立的程序模块组成,它们

37、之间通过连接。既便于调试,连接,又便于移植、修改。系统软件主要完成采集,实时显示,报警包括以下几部分:主程序设计,主程序流程图如图4-1所示图 4-1 主程序流程图主程序是整个测控系统中最重要的程序,是一个顺序执行的无限循环程序。和都在测控子程序中进行应用程序采用模块化结构图 4-3 A/D转换子程序4.3 显示模块通过电压采集转换子程序,通过单片机处理就可以得到蓄电池的实际电压值,本设计用液晶1602作显示器来进行显示。液晶1602通常用并行操作,作为一款显示芯片,为了使其能够正常的工作,首先必须对其进行初始化,然后按照其时序图进行正确操作,才能够得到满意的显示效果,这就是软件设计中显示模块

38、的任务。下面就1602的初始化指令和操作时序进行介绍。液晶1602的初始化,是让其正确显示的前提,其初始化通常如下:EN 0;首先关闭使能,防止开始时显示乱码,同时为以后高脉冲写入数据做准备。write_com 0x38 ; /设置16X2显示,5X7点阵,8位数据接口write_com 0x0c ;/设置开显示,不显示光标write_com 0x06 ;/写一个字符后地址指针加1write_com 0x01 ;/显示清零,数据指针清零了解液晶1602的基本操作时序,读懂其操作时序图,是对其读写操作的关键。1602的基本时序如下:读状态 输入:RS L, H, E H输出:DOD7 状态字读数

39、据 输入:RS H, H, E H输出:无写指令 输入:RS L, L, DOD7 指令码,E H高脉冲输出:DOD7 状态字写数据 输入:RS H, L, DOD7 数据,E H高脉冲输出:无作为显示用的芯片,通常对其进行写操作,1602液晶写操作时序图如图4-4所示。图 4-4 1602液晶写操作时序图分析时序图可知,对1602液晶进行写操作的流程如下:(1)通过RS确定是写数据还是写操作,写命令包括使液晶的光标显示/不显示、光标是否闪烁、需/不需要移屏、在液晶的什么位置显示,等等。写数据是指要显示什么内容。(2)读/写控制端设置为写模式,即低电平。(3)将数据或命令送到达数据线上。(4)

40、给使能端E一个高脉冲将数据送入到液晶控制器,完成写操作。关于时序图中的各个延时,不同厂家生产的液晶延时不同,不过大多数基本为纳秒级,而单片机操作最小单位为微秒级,因此在写程序是可不做延时,不过为了使液晶运行稳定,最好做简短延时即可。本设计采用C51库中自带的延时函数_nop_()(延时一个机器周期的意思)来实现简短延时。按照1602液晶的写操作时序图,结合硬件连接电路,软件设计中电压显示模块的流程图如图4-5所示。图4-5 电压显示流程图4.4 数据存储模块在对蓄电池充放电控制过程中,会出现电压值过高或过低的异常情况,很有必要对其进行存储,作为以后分析优化使用;同时我们可以按一定周期间隔性的对

41、蓄电池电压进行采集,然后求取电压的平均值,通过分析每天的平均值情况,可以大致了解蓄电池的充电情况,这对以后优化充放电很有用。本设计用常见E2PROM器件AT24C02作为存储器对数据进行保存记录。AT24C02芯片的优点:采用总线标准,串行操作,可以简化硬件电路;同时具有很好的掉电保护功能。由于STC89C52单片机没有总线接口,所以使用时要先通过软件模拟总线的工作时序,正确的调用函数就可方便的扩展总线接口部件。总线模拟时序图如图4-6所示。图 4-6 总线模拟时序图按照时序图,设计中为了模拟总线通信,写出了几个关键部分的程序:总线初始化、启动信号、应答信号、停止信号等。下面以启动信号为例进行

42、介绍。启动信号的程序如下:在SCL为高电平期间,SDA一个下降沿为启动信号。void start /启动信号 sda 1;delay1 ;scl 1;delay1 ;sda 0;delay1 ; 作为存储芯片最重要的是对其进行写操作,下面将给出总线发送一个字节的流程图如图4-7所示。并根据AT24C02字节写入方式,结合总线时序图,软件中实现异常数据存储的流程图如图4-8所示。图 4-7 发送字节流程图 图 4-8 异常数据存储流程图当检测蓄电池充电使电压值超过14.5v造成过充电时,首先蜂鸣器报警,标志位置1,然后调用数据存储函数把此时刻的电压值保存下来;当发生过放电时,同理如此。由于单片机

43、的处理速度很快,因此很容易实现循环检测,做到对蓄电池状态的实时监控。4.5 软件调试和仿真为了检验自己设计的单片机系统是否可以正常工作以及设计合理性,很有必要对系统进行模拟仿真。通过仿真可以看出系统硬件设计的不合理部分,以方便改善使得系统更加合理;同时更重要的是验证自己编写的软件程序是否已经实现其功能,完成了相应的设计要求和设计任务。软件调试的过程:首先根据太阳能充电控制器软件设计要完成的设计任务,然后按照C语言模块化设计的编程方法,设计出各个子模块和主程序的算法流程图,最后在KEIL C51中去编写相应的程序去实现。当然在编写程序进行软件实现过程中,遇到的第一个问题就是:程序的调试。程序编写

44、后,进行编译,一开始发现了很多错误,一下子把自己卡住了;后来通过查看相关资料,同时咨询指导老师和同学的经验,在软件的提示下,慢慢地修改,最终把出现的错误都改正过来了。最终在显示输出信息窗口出现了一下信息:Build target Target 1 /创建目标Target 1compiling 控制器移屏.c. /编译文件控制器移屏.clinking./链接. Program Size: data 21.1 xdata 0 code 1572 /项目大小:存储空间RAM和ROM的数据存储量creating hex file from 充放电控制器. / 创建了十六进制的目标文件充放电控制器 -

45、0 Error s , 0 Warning s . /工程“充放电控制器”,编译结果-0个错误,0个警告。当看到这个信息时,我很激动,知道自己编写的程序终于调试成功了。通过编写和调试程序,深深的体会到了程序编写的不易和艰辛,同时积累了很多的经验,收益匪浅。更十分地感谢我的同学和指导老师的无私帮助,是在他们的指导下,我才把程序调试无误完成了软件调试工作。程序调试成功后,下一步就是软件仿真,是检验程序运行是否正确的关键所在,更是优化系统所必须的。Proteus软件为单片机系统提供了良好的仿真环境,所以程序调试完成后,把在KEIL中生成的目标文件HEX文件,下载在仿真系统的单片机中,进行KEIL和p

46、roteus联合调试,看系统是否能正常工作。和自己当初预料的一样,在刚开始仿真时,遇到了许多的问题,如1602液晶不显示,系统工作状态指示灯指示状态不正确等等,调试很久找不到关键所在。无奈之下,最后去咨询指导老师该怎么办,老师说可以在模拟的电池板和蓄电池附近并联虚拟的电压表,通过电压表的示数,用以时刻监测蓄电池的充放电状态。果然加上虚拟电压表,通过监测后发现蓄电池两端电压表的示数一直显示为零,明白是AD转换部分出现问题,然后通过修改AD转换模块的子程序,同时调整硬件引脚部分与软件相一致,慢慢的调试,最终蓄电池两端电压表有了示数,液晶1602也正确的显示了。然后再慢慢调试主程序,修改控制指令,最

47、终三个工作状态指示灯也正确指示了。系统共三种状态:正常充电、过充、过放。这里仅列出系统在正常工作状态下的仿真图,如下图4-9所示,以便更形象的看出充电控制器内部结构设计和实现功能。正常工作时的状态:(此时电压13.4V)图 4-9 正常工作状态仿真 其工作原理如下,单片机在软件程序控制下,控制着各个部分硬件电路有序工作,把从模数转换器得到的蓄电池的电压值,用1602液晶去显示,同时绿灯亮起表示系统正在充电。(注:这里为了得到更加逼真效果,仿真时采用直流电机作为负载)。由于利用C语言开发单片机与汇编语言相比,具有易于操作、规范性好、适合模块化处理且容易移植的优点,所以本设计采用C语言作为编程语言。按照C语言模块化程序设计方法,论文编制了系统主程序和各个子程序模块来实现PWM脉宽调制控制策略和各种保护,完成了软件设计任务。5 总结与展望5.1 设计总结通过解读与分析、研究参与课题的实践,在导师的指导和同学的帮助下,基本完成了开题报告中确定的任务。论述了基于单片机的系统的硬件电路组成及其工作

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号