《太阳能智能控制仪充放电控制自动跟踪毕业设计论文.doc》由会员分享,可在线阅读,更多相关《太阳能智能控制仪充放电控制自动跟踪毕业设计论文.doc(38页珍藏版)》请在三一办公上搜索。
1、摘 要为实现对太阳光的自动跟踪,最大化的利用太阳能,本课题实现了以单片机为核心处理器的太阳能控制仪,该控制仪可根据太阳转动的规律以及太阳能电池板的原理实现自动跟踪太阳光和控制充电放电。太阳能智能控制仪可以自动检测蓄电池的电压,当蓄电池的电量低于30%时,太阳能智能控制仪会控制蓄电池停止对外放电。该系统主要以单片机STC89C52、ADC0809、步进电机28BYJ-48、光敏电阻等为核心,使用PWM信号控制充放电,有效的防止过充,延长蓄电池的使用寿命。使用光敏电阻检测光的方向,原理简单,使用方便,具有很大的实用价值。关键词: 太阳能跟踪;单片机;智能充放电AbstractIn order to
2、 realize the automatic tracking of the sun light, solar maximum, the subject realizes the solar controller with single-chip microcomputer as the core processor, this controller according to the principle of the Sun rules as well as the solar panel to realize the automatic tracking solar light and co
3、ntrol the charging and discharge. Solar intelligent control device can automatically detect the battery voltage, when the battery is less than 30%, solar intelligent control device can control the battery to stop foreign discharge. The system is mainly based on STC89C52, ADC0809, 28BYJ-48 stepper mo
4、tor, photosensitive resistance as the core, the use of PWM signal to control the charging and discharging, effectively prevent overcharge, prolong the service life of the battery. The use of optical detection of photosensitive resistance direction, simple principle, easy to use, and has great practi
5、cal value.Keywords: Solar tracking; Microcontroller; Intelligent charging and discharging 目 录摘 要IAbstractII目 录III第一章 绪 论11.1系统的研究背景11.2 系统的研究意义11.3设计目标21.4本章小结2第二章 系统总体设计32.1系统的工作原理32.2系统的硬件组成32.3本章小结4第三章 系统方案论证53.1模块方案比较53.1.1跟踪方案的选择53.1.2电机的选择53.1.3太阳能板的选择53.1.4显示模块的方案选择63.2本章小结6第四章 系统硬件设计74.1 主要芯
6、片介绍74.1.1 STC89C5274.1.2 ADC080984.1.3 LCD160294.1.4步进电机28BYJ-4894.2 电路硬件的设计94.2.1充电控制模块94.2.2放电控制模块104.2.3单片机控制模块114.2.4 A/D转换模块124.2.5跟踪光信号采集模块134.2.6步进电机驱动模块134.2.7系统整体原理图144.3本章小结16第五章 系统软件设计175.1系统主程序流程图设计175.2子程序的设计205.2.1A/D转换程序205.2.2显示程序215.2.3跟踪程序225.2.4充放电控制程序245.3本章小结26第六章 系统安装调试276.1整体系
7、统调试276.2 硬件的调试276.3 软件调试286.4本章小结29第七章 总结与展望307.1 总结307.2 展望30参考文献31致 谢32附 录33附录1 控制仪的硬件实物图33附录2 控制仪的PCB图33附录3 系统的实物图34第一章 绪 论本课题主要设计一种基于单片机的太阳能智能控制系统,主要介绍该系统如何采集光信号,控制步进电机跟踪太阳,以及采集太阳能电池板和蓄电池的电压,如何使用PWM控制充放电的。1.1系统的研究背景面对日益枯竭的化石能源,寻找一种代替化石能源的绿色能源日益紧迫。而太阳能是一次能源,对环境无污染,还是可再生能源。因此发展太阳能,是解决能源问题的出路。随着光伏技
8、术的发展,现在光伏器件逐渐降价以及逐渐普及,个人太阳能电站联网已经不再是梦想。我国是一个能源消费大国,但我国的能源消费结构很不平衡,我国能源主要依赖煤炭和石油等常规能源。但是这些能源是不可再生能源,是会枯竭的。世界经济的现代化,也是得益于化石能源,如石油、天然气、煤炭与核裂变能的广泛的投入应用。因而它是建筑在化石能源基础之上的一种经济1。但随着这些化石能源的日益枯竭,必将导致世界经济危机。所以在化石能源供应日益紧张的背景下,如何开发和利用可再生能源成为各国能源战略中的重要组成部分。而太阳能是重要的清洁能源之一,它具有取之不尽、用之不竭、无污染等特点。只要有太阳光的地方,就可以直接开放和利用太阳
9、能,没有地域的限制。不需运输,无需开采。它是最清洁的能源之一。在当今社会污染越来越严重的今天,无污染性,显得特别重要。我国的太阳能资源非常丰富,全国各地的太阳能辐射总量高达837kJ/cm2。特别是青藏高原地区,该地区空气稀薄,日照时间长,太阳能源非常丰富,如果可以利用好这些能源就,将会给当地带来新的发展机遇。也对当地的环境提供更好的保护2。所以,如何开发使用这么丰富的太阳能资源,是当今能源开发的重任,是保护环境的重要途径,是可持续发展的重要途径。1.2 系统的研究意义随着太阳能技术的发展,开发个人太阳能发电站已经不再是梦想,有效的利用太阳能资源,不但可以缓解当今的能源紧张,还可以保护环境。太
10、阳能智能控制仪,实现自动跟踪太阳最大功率点,实现提高光电转换效率,系统成本低,可以应用在航天航空上,也可以应用在太阳能发电站上,也可以应用在太阳能路灯上。太阳能智能控制仪的主要功能是控制太阳能板自动跟踪太阳光,使太阳能板始终保持与太阳光垂直,只有太阳光与太阳能板垂直,太阳能板转换的效率才是最高的,同时太阳能智能控制仪控制充放电,只有太阳能板输出电压大于蓄电池的电压才开始充电,同时检测蓄电池的电压。当蓄电池满时,太阳能智能控制仪会自动停止充电。智能的控制跟踪、充放电。使光电转换效率最高。同时延长蓄电池的使用寿命。1.3设计目标 本课题的设计目标:可实现对太阳光线的实时跟踪;可供普通的手机电池充电
11、,输出电压4V左右;输出电流300mA-400mA;要求充电时间小于2小时要有相应的保护装置以防电池被过充;放电过程中若电池容量小于总容量的30%时,放电终止,保证电池不会因为过放电而损坏;系统损耗尽量降低以延长电池的使用寿命。1.4本章小结本文的第一章主要对太阳能智能控制器作了简单的概述,本文介绍了太阳能智能控制系统的工作原理,接着第三章主要介绍了太阳能智能控制器的设计方案选择,然后是主要控制芯片的介绍,接着介绍太阳能智能控制器的硬件设计,太阳能智能控制仪的软件设计部分,第六章介绍系统的安装以及调试,最后是总结部分,并提出这个系统的新看法以及展望。第二章 系统总体设计2.1系统的工作原理基于
12、单片机的太阳能智能控制仪的工作原理是:本系统是用一个单片机来自动控制跟踪太阳光,同时控制充放电。当检测到太阳能板不与太阳光线垂直时,就会控制步进电机转动,使太阳能板始终保持与太阳光线垂直。当检测太阳能板的电压达到可以为蓄电池充电的电压时同时检测蓄电池的电压是否低于设定值时,若两者都满足就控制开始快速充电,当检测到蓄电池的电压差不多达到饱和值时,就开始控制充电方式为浮充。这样提高蓄电池的寿命,同时提高太阳能板的转换效率。具体功能设计要求如下:(1)实现对太阳光线的实时跟踪。(2)实现智能控制蓄电池的最优充放电。(3)实现充电状态的显示,与蓄电池状态的显示。(4)实现稳定的太阳能电源输出,可以为外
13、设备提供电源(5V)。2.2系统的硬件组成太阳能智能控制仪的硬件组成:系统的信号采集电路主要是使用电阻分压方式采集,采集到适合ADC0809转换的电压。再交给ADC0809进行模数转换,再给单片机处理,然后单片机做出控制,控制显示部分、步进电机驱动电路和充放电路。系统总体设计方案如图2-1所示。图2-1 系统的硬件组成系统主要由STC89C51单片机、ADC0809、步进电机驱动芯片ULN2003A、开关芯片IRF9540N、稳压芯片7805等器件组成。单片机主要完成控制ADC0809、ULN2003和IRF9540。系统有以功能模块:(1) 充放电控制模块;(2) 单片机控制模块;(3) 步
14、进电机驱动模块;(4) LCD显示模块;(5) A/D转换模块;(6) 跟踪光信号采集模块;2.3本章小结本章对系统设计的工作原理和结构作了简单的介绍,本系统主要有单片机控制模块、步进电机驱动模块、A/D转换模块、光电采集模块、LCD显示模块。单片机模块主要负责处理数据,并控制其他模块,是系统的控制中心。A/D模块负责将模拟数据转换为数字数据,因单片机只能处理数字数据。本章主要简单介绍了系统的总体设计。第三章 系统方案论证本系统需要实现的功能有:实现自动跟踪太阳光,实现自动控制充放电,实现对外输出稳定电源,实现实时显示充电状态和蓄电池的电量,但随着电子技术的高速发展,各种控制器技术也日益完善,
15、控制芯片已经加速换代,由此需要讨论跟踪方案、控制方案、电机的选择。以下是本系统的方案选择。3.1模块方案比较 3.1.1跟踪方案的选择方案一:视日运动轨迹跟踪由于地球绕太阳转动是有规律的,所以太阳的位置是可以预测的,只要计算好每时每刻太阳的位置,就可以控制跟踪。但算法十分复杂,所以控制系统的成本也很高,而且没有反馈,初始校准麻烦。方案二:光电跟踪在太阳能板安装两个光敏电阻,检测两个光敏电阻的电阻值,就可判断光线的方向。这种跟踪方式原理简单,成本低,具有实时反馈,可以控制实时跟踪。而且误差小。方案选择:根据两种方案,方案一控制系统复杂,算法复杂,成本高,而方案二实现实时跟踪,成本低,精度高,所以
16、本系统采用方案二光电跟踪。3.1.2电机的选择方案一:直流电机直流电机就是输入为直流信号就可以控制电机转动的,实现了直流电能转换为机械能。直流电机具有调速特性好,能实现频发制动和逆向旋转,过载能力强。方案二:步进电机 步进电机是将电脉冲信号转化为角位移的,当步进电机就收到一个脉冲,它就驱动步进电机转动一个固定的角度。所以通过控制脉冲个数和频率就可以控制步进电机转动的角度和速度。所以步进电机具有准确定位的能力,同时可以准确的控制速度。步进电机在自动控制上和机器人上应用非常广泛。方案选择:本系统需要实现准确跟踪太阳位置,根据直流电机和步进电机的特点,本方案选择使用步进电机。3.1.3太阳能板的选择
17、方案一: 单晶硅太阳能板单晶硅太阳能板时采用转换效率比较高的单晶硅电池片按照需求串、并阵列方式构成的板块。使用寿命长,转换效率高,可以应用在交通领域、卫星、航天器上。但是其制作成本比较高,价格也比较高。方案二:多晶硅太阳能板多晶硅太阳能板时使用多晶硅电池片串并联出不同功率的太阳能板。制作成本低,市场价格便宜,可以应用在小型太阳能电源。但是其转换效率不是很高,寿命不长。方案选择:根据设计要求,设计成本不能太高,本设计选用价格比较低的多晶硅太阳能板。3.1.4显示模块的方案选择方案一:数码管显示一个数码管有八个小LED发光二极管,通过控制不同的LED发光二极管的亮灭来显示不同的字形。价格便宜,但可
18、以显示的内容少,软件编写繁琐,硬件设计比较复杂。方案二:LCD显示LCD1602显示可以同时显示1602个字符,显示字母和数字非常方便,控制也很简单,成本不高,显示质量高,体积小,重量轻,功耗低。方案选择:根据设计要求,本设计要求要显示四个电压值,显示量大,如果使用数码管显示的话,就需要很多接口控制,且设计硬件很繁琐,软件编写也很麻烦。而LCD1602可以同时显示1602个字符,显示量足够,且设计简单,软件编写也很简单,所以选择方案二LCD显示。3.2本章小结本章对系统的设计方案作了简单的论证,并结合实际情况,对跟踪方案、电机方案、太阳能板方案、显示方案做出了论证分析,结合实际需求,做出了合理
19、的方案选择。具体的硬件设计将在第四章详细讲解。第四章 系统硬件设计本系统主要以单片机为处理器,单片机的外围电路有A/D转换电路、步进电机驱动电路,LCD显示电路等。接下来将详细介绍各个器件和电路的原理。4.1 主要芯片介绍4.1.1 STC89C52STC89C52是属于STC公司最新推出的STC系列的单片机,具有反复擦写程序的能力,且兼容MCS-51指令系统, STC89C52是一种低功耗、高性能的微控制器,在众多嵌入式控制应用系统中提供灵活有效的解决方案3。其引脚图如图4-1所示。STC89C52主要性能参数:1、8k字节Flash;2、512字节RAM;3、32位I/O口线;4、看门狗定
20、时器;5、MAX810复位电路;6、3个16位定时器/计数器;7、4个外部中断;8、全双工串行口; 图4-1 STC89C52单片机引脚STC89C52具有32位I/O端口,两个外部中断,3个16位可设定的计数器,它有40个引脚,按功能分大致可以分为4类,分别为电源、时钟、控制、I/O口等四类4。以下就按这四类功能对STC89C52进行管脚分析。1、 电源管脚(1)VCC:接5V电源正极。(2)GND:接电源地线。2、时钟管脚(1)X1:内部振荡电路的输入端。(2)X2:内部振荡电路的输出端。3、输入/输出口STC89C52有4组8位并行的输入/输出口,分别为P0、P1、P2、P3。(1)P0
21、口:8位双向并行I/O接口。当P0口作为输入/输出口时,P0口是漏极开路输出,当驱动拉电流负载时,需要外接上拉电阻。(2)P1口:8位准双向并行I/O接口。P1口是纯粹的输入/输出口,没有其他的第二功能。(3)P2口:8位准双向并行I/O接口,可以作为输入/输出口,也可以作为地址总线。(4)P3口:P3口是一个多功能口,除了可以作为输入/输出口外,还有第二功能。4.1.2 ADC0809ADC0809是一个8位逐次逼近式的模数转换芯片,它是由美国国家半导体公司生产的,是CMOS器件,多路开关可以选择8个模拟通道,允许8路模拟量输入,ADC0809的转换时间为100s,模拟量输入范围为05V 5
22、。 图4-2 ADC0809引脚图其引脚图如图4-2所示,ADC0809芯片有28条管脚,使用的是双列直插式封装。下面将介绍主要管脚的功能。(1) IN0IN7:8路模拟通道输入端。(2) D0D7:8位数据输出端。(3) ADDA、ADDB、ADDC:模拟通道选择端,地址信号和通道选择的关系如表4-1。表4-1地址信号与通道选择的关系ADDCADDBADDA选择的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN74.1.3 LCD1602LCD1602显示模块是专门用于显示字母和数字的LCD阵列。LCD1602可以显示两行,每一行可以显示16
23、个字符。图4-3 LCD1602管脚图 LCD1602采用的是16脚接口,各引脚功能说明如下表4-2。表4-2 LCD1602管脚说明表 编号符合引脚说明编号符合引脚说明0VSS电源地8D2数据1VDD电源正极9D3数据2VL液晶显示偏压10D4数据3RS数据/命令选择11D5数据4R/W读/写选择12D6数据5E使能信号13D7数据6D0数据14BLA背光源正极7D1数据15BLK背光源负极4.1.4步进电机28BYJ-4828BYJ-48是一种将脉冲信号转换为角位移的机器,28BYJ-48是四相8拍电机,输入电压可以为5V-12V,四相步进电机的通电方式有单四拍和双四拍之分,单四拍是(A-
24、B-C-D-A),双四拍的是(AB-BC-CD-DA-AB)6。4.2 电路硬件的设计本系统分为六个模块,分别为充放电控制模块、单片机控制模块、步进电机驱动模块、AD转换模块、光电采集模块和LCD显示模块。下文将会对各个模块进行详细介绍。4.2.1充电控制模块充放电控制模块的原理电路图如图4-4所示。图4-4充电控制模块如图所示,J2为太阳能电池板接入端子,太阳电池板的峰峰值为11V,功率为2.5W。该系统主要工作在5V电压下,蓄电池的电压为6.5V左右。所以5V电压可由蓄电池P2接一个LM7805稳压管,输出为5.0V。同时可以作为本系统的输出。由上所述,J2接入太阳能电池板,P2接入蓄电池
25、,充电回路则是D2Q1 D1P2丄。其中D2是防回充二极管,使用型号是1N4007。Q1是MOS管IRF9540。充电控制的核心是控制MOS管。而三极管Q3、R1、R5、R21构成的电路是实现控制MOS管的。控制系统产生的PWM0控制信号接入NPN型三极管Q3的基极上。当PWM0信号输出为高电平时,可以知道三极管处于导通状态,所以MOS管的IRF9540的门极为低电平,MOS管处于导通状态,充电回路就处于导通状态,蓄电池则处于充电状态。当PWM0输出为低电平时,三极管处于截止状态,MOS管Q1的源极和门极的电压相等,则MOS管处于截止状态,所以充电回路处于断开状态。本系统可以控制PWM0改变充
26、电状态,当PWM0一直为高电平时为快速充电状态;当PWM0为一定频率的脉冲信号,则此时为浮充状态,从而有效的保护电池,延长蓄电池的寿命。图4-3中,R2、R20与太阳能构成的回路是太阳能电源采集电路,由于太阳能的电压不能直接给A/D转换,所以要一个分压电路,使R20的电压在05V之间,R20的电阻为10K,R2的阻值为22K,R20的电压接入ADC0809的通道0上,通过转换得到R20的电压,就可以计算出太阳能电池的电压。R4、R8与蓄电池构成的路是蓄电池电压采集电路,R4的电阻为6.8K,R8的阻值为10K,R8的电压接入ADC0809的通道1上。通过转换得到R8的电压,就可以计算出蓄电池的
27、电压。通过检测太阳能的电压和蓄电池的电压,实现对充放电状态的控制,图4-3中的J1为USB接口,可以输出稳定的5V电源为手机等电器充电7。4.2.2放电控制模块放电控制部分的原理和充电控制的原理一样的,如图4-5所示,放电控制主要由Q2、Q4、R3、R7、R22构成的电路组成。当PWM1为高电平时,则三极管Q4导通,Q2的门极则为低电平,MOS管Q2则导通,则系统可以对外放电,当PWM1为低电平时,三极管Q4不导通,则Q2的门极为高电平,MOS管Q2截止,系统停止对外止放电。通过检测蓄电池的电量,当蓄电池的电量过小时,可以通过控制PWM1,控制蓄电池是否停止放电。R3的阻值为5K,R7的阻值为
28、1 K。R3和R7的作用是分压和限流。图4-5中的J1为USB接口,U1是LM7809,由于蓄电池的电压大于5V。而系统是工作于5V的电源,所以控制系统的电源由蓄电池接一个5V稳压管LM7809。同时可以输出稳定的5V电源为手机等电器充电。C6和C8都是滤波电容,电容值都为0.01F。开关SW是系统的电源开关。图4-5放电控制模块4.2.3单片机控制模块STC89C52作为本系统的主要控制芯片,STC89C52控制系统的数据处理,控制AD转换器,控制LCD的显示,同时控制显示状态灯,控制步进电机的转动,STC89C52是控制仪的核心。本节将介绍STC89C52的外围电路,如图4-6所示。图4-
29、6单片机控制模块电路图中主要有单片机的复位电路和时钟电路。复位电路由开关S1、瓷片电容C9和电子R19组成。当按下开关S1时,单片机的RST口输入为高电平,则单片机就会复位,R19是限流电阻,C9的电容值为20F。电阻R19的阻值为1k。时钟电路由晶振Y1和两个22pF的瓷片电容组成。单片机的P0口接AD转换出来的数据。P2.0是控制DS1的端口。当P2.0为低电平时,这DS1亮,当P2.0为高电平时,则DS1灭;P2.1控制ADC0809的EOC管脚;P2.2是用来检测A/D转换器的OE,检测A/D转换器是否转换结束;P2.3是接AD转换器的CLK,AD转换器的时钟是有单片机用编程控制实现的
30、;P2.4、P2.5、P2.6是AD转换器的通道选择控制位;P2.7口是AD转换器的开关控制位,当将P2.7拉高一段可以使AD转换器响应的时间,则AD转换器开始转换数据;P0口是读取AD转换出来的数据,并将这个数据储存起来。P1口低四位接步进电机驱动电路。P1.4和P1.5是输出控制充放电的PWM信号。P3口是接LCD1602的八位数据引脚。DS1是显示充电状态的LED灯,当开始充电时,则单片机控制LED亮,当系统开始浮充是,则控制DS1闪烁。充满电时,则关闭DS1。R16是LED灯的分压电阻,因为LED灯工作电压在3V左右,5V电压可能会烧坏LED灯。4.2.4 A/D转换模块ADC0809
31、是一个8位逐次逼近式的模数转换芯片,如图4-7为A/D转换模块电路图,本系统需要转换4个模拟量,一个是太阳能电池板的电压,一个是蓄电池的电池,还有两个是光信号的电压。这四个模拟量分别选用了通道0、通道1、通道2、通道3。ADC0809的时钟信号由单片机的使用软件产生,由单片机的P2.3输出。ADC0809的数据输出端口接入单片机的P0口。逐次逼近形就是将输入的模拟变量和ADC0809的参考电压比较,在ADC0809内部有将参考电压分压成为n等分,输入的模拟量如果大于参考电压则输出1.并在三态锁存器里保存,当都比较完之后就将EOC置1,这表示转换已经结束,若果在OE口输入高电平,则打开三态锁存器
32、,将数据输出。图4-7 A/D转换模块4.2.5跟踪光信号采集模块 光信号采集主要是由光敏电阻检测光的强度,在太阳能板的东西两侧各安装一个光敏电阻,当光没有垂直照射到太阳能板上的话,东西两侧的光敏电阻的阻值则不一样,只要通过检测光敏电阻的电压就可以判断光线的方向。如图4-8是跟踪光信号的电路图8。P3和P4是控制器和检测模块的接口。如图4-8所示R18和R17是精密滑动变阻器,将两个滑动变阻器调为10k,R14、R15为光敏电阻,光敏电阻的阻值根据光强的不同其变化范围为1k到17k之间。两个电阻的电压送到ADC0809的通道2和通道3上。转换为数字量时交给单片机处理,控制驱动模块驱动电机跟踪。
33、根据光敏电阻的光照特性,当光线照到光敏电阻上时,光敏电阻的阻值会很小,当没有光照射时,光敏电阻的阻值就会很大,由此可以判断光线的方向,这样就可以控制步进电机转动跟踪,具体跟踪控制程序第五章将详细介绍。图4-8跟踪光信号采集模块4.2.6步进电机驱动模块本系统的步进电机驱动芯片选择的是ULN2003,ULN2003是耐高压大电流的达林顿晶体管阵列。具有电流增益高、工作电压高、带负载能力强等特点。由于单片机输出电流不够大,所以要接上拉电阻才可以驱动步进电机转动。当输入为低电平时,ULN2003则输出高电平。P4是步进电机接口。步进电机28BYJ-48的红色线接到P4的管脚1。ULN2003的IN1
34、到IN4分别接到单片机的P1口的低四位,由单片机控制输出步进电机的控制脉冲。如图4-9是本系统的步进电机驱动模块的电路原理图9。图4-9步进电机驱动模块4.2.7系统整体原理图如图4-10所示是本系统的整体原理图。整体的原理图是按照功能模块来设计的,整个控制系统的原理图包括单片机控制模块、充放电控制模块、A/D转换模块、步进电机驱动模块、LCD显示控制模块、光信号采集模块。每个模块都有独立的功能,但每个模块都有联系的。该系统以单片机为核心,单片机模块负责其他模块的控制信号的输出。充放电控制模块主要负责实现充放电的控制,单片机控制模块输出的PWM是控制充放电模块的,而单片机的数据是从A/D转换模
35、块读取的。光信号采集模块采集的电压是输入到A/D转换模块转换为数字量的。LCD显示控制模块是有单片机控制的,显示的数据也是A/D转换出来的数字量。图4-10系统的整体原理图4.3本章小结本章主要介绍了太阳能的硬件模块电路,分析了主要器件的原理,分析了单片机的原理、ADC0809的原理与管脚的功能,还有步进电机28BYJ-48的原理,以及LCD1602的的显示特性和管脚功能。本系统是分模块设计的,本章详细的介绍了各个模块的原理和功能,本系统的主要模块有单片机控制模块、充放电控制模块、A/D转换控制模块、光信号采集模块、步进电机驱动模块。还详细介绍了本系统各个模块的信号流,和各个模块的各个器件的作
36、用。第五章 系统软件设计本系统的软件设计主要分为系统初始化、A/D转换程序、显示程序、跟踪控制程序、充放电控制程序。A/D转换程序是本设计的重点,如果A/D转换程序不好的话就会影响本系统的准确性,下面将是对每个单元模块程序进行详细说明。5.1系统主程序流程图设计该系统的主程序整体流程图如图5-1所示。图5-1整体流程图系统初始化程序主要是初始化单片机的数据,和LCD的初始化显示。跟踪程序是检测两个光敏电阻的电压,判断光线的位置,然后控制步进电机转动。显示程序是主要显示蓄电池的电压和天阳能电池板的电压,同时显示两个光敏电阻的电压。控制充放电程序是根据天阳能电池板的电压和蓄电池的电压,然后做出充电
37、放电的控制。/*-主函数-*/void main() /主函数init();while (1) AD(0);/转换通道0的值 AD0=AD_DATA1; AD(1);/转换通道1的值 AD1=AD_DATA2; AD(2); AD2=AD_DATA3;/转换通道3的值 AD(3); AD3=AD_DATA4;/转换通道4的值 AZ0=AD0*3.23;/计算太阳能板电压的真实值 AZ1=AD1*1.68;/计算蓄电池电压的真实值 write_rs(2,AZ0); /显示通道0的值 delay(20); write_xs(11,AZ1); /显示通道1的值 delay(20); write_ys
38、fm(2,AD2); /显示通道2的值 delay(10); write_ysfm(11,AD3); /显示通道3的值 k=0;/ AD0=150; / AD1=195; if(AD190) /充放电控制 if(AD1=215) /如果电池电压高于7V则停止充电 g=0;/控制停止充电TR1=0;LED=1;/关掉充电显示灯 else if(AD1200) /如果电池的电压在6.8V到7V之间则开始浮充 TR1=1;/定时器1开始运行LED=0;/开显示充电灯g=1;/开启充电 else if(AD1=200) /如果电池电压低于6.0V则开始快速充电 g=1;/开始快速充电TR1=0;/ 关
39、闭定时器1LED=0;/ 开显示充电灯 elseif(AD0AD3) /跟踪控制 aa=AD2-AD3 ;if(aa15) R_Rotation(aa); delay(10) ; P1=P1& 0xf0; else aa=AD3-AD2; if(aa15) L_Rotation(aa); P1=P1&0xf0; delay(10) ; 5.2子程序的设计5.2.1A/D转换程序A/D转换程序,主要是将控制A/D转换,采集需要的数据,以及处理数据,其程序流程图如图5-2所示。先是初始化,A/D转换子程序的输入值m是通道的选择,输入0时,则选择通道0,输入m为1时,则选择了通道1,然后将STA1拉
40、高,开始转换,然后检查EOC是否输出高,若果EOC输出高,则表示转换已经结束,再将OE拉高,则允许ADC0809将转换的数据输出,然后单片机的P0口将数据读走,保存在AD_DATAm里面。void AD(uchar m) /A/D转换函数STA1=0; delay(20); if(m=0) /选择通道 ADA=0;ADB=0;ADC=0;else if(m=1) ADA=1; ADB=0;ADC=0;else if(m=2) 图5-2 A/D转换程序流程图ADA=0;ADB=1;ADC=0;else if(m=3)ADA=1;ADB=1;ADC=0;STA1=1;/开始转换delay(20);
41、STA1=0;while (EOC=0);/等待转换结束信号 delay(2);AD0E=1;/允许数据输出AD_DATAm+1=P0;delay(20);AD0E=0;5.2.2显示程序显示函数主要负责控制LCD1602,控制LCD显示太阳能电池板的电压和蓄电池的电压,还有两个光敏电阻的电压。显示函数可也让用户清晰的直到充电的状态,和太阳能电池板、蓄电池的状态。显示函数是先处理有A/D转换出来的数据,计算出要显示的真实,再调用LCD写数据函数,将数据写入LCD显示。void write_com(uchar com)/lcd写指令函数lcdrs=0;P3=com;delay(5);lcden=
42、1;delay(5);lcden=0;void write_data(uchar date)/lcd写数据函数 lcdrs=1;P3=date;delay(5);lcden=1;delay(5);lcden=0;void write_ysfm(uchar add,uchar date)/lcd定位写数据函数(第一行)uchar bai,shi,ge;addate=1.9607*date; /计算电压真实值bai=addate/100;/取出个位数shi=addate/10%10; /取出分位数ge=addate%10 ; /取出十分位数write_com(0x80+add); /写指令函数,将指针指到第一行第一位write_data