河南城建学院本科毕业设计(论文) 基于单片机的太阳能充电器系统的软件设计
4.3 基于单片机的太阳能充电器系统的子程序的设计
4.3.1电路启动初始化
初始化是为单片机的运行设置初始的运行环境,主要完成以下工作:清片内,每次单片机加电时,都将引起单片机的上电复位操作。复位操作完成以后,单片机的寄存器会被置以不同的值,这些值中有相当一部分是未知的值。这些未知的值在单片机复位完成,正式运行以后,会产生无法让程序设计人员掌握的后果,甚至会造成系统的损坏。因此,在单片机运行后,首先清0使之置初始参数设定,便于程序设计人员掌握,以利系统的工作。设置系统运行所需的各个参数,设置定时器和中断设定。图4.2为初始化程序流程。
开始 清片内RAM 初始参数设定 AD设定 定时器设定 中断设定 返回
图4.2 初始化程序流程
19
河南城建学院本科毕业设计(论文) 基于单片机的太阳能充电器系统的软件设计
4.3.2按键采集程序
键盘子程序用于探测开关、是否处在有效的开关状态,以决定是否启动系统运转。读线、读取、相连的端口,并将其值判断处理后存于相关缓存中。其中读取端口后要做一定的延时以排除键抖引起的误动作。图4.3为按键子程序结构流程图。
入口 读I/O口 延时 N Y 处理后存入缓存 返回
图4.3按键子程序结构流程图
20
河南城建学院本科毕业设计(论文) 基于单片机的太阳能充电器系统的软件设计
4.3.3数据采集及模数转换程序
数据采集主要由单片机控制ADC0809完成,程序分为数据初始化,发送启动转换命令,等待转换结束,接收数据,处理并存入缓存,程序流程如图4.4所示。
图4.4 数据采集子程序结构流程图
返回 处理存储 Y 转换结束 N启动转换 初始化 入口
21
河南城建学院本科毕业设计(论文) 基于单片机的太阳能充电器系统的软件设计
4.3.4数码管显示子程序
开机时,初始化数码管,通过串口将“0”的字形码输出使数码管显示“O”。然后判断是否有键按下,如果没键按下继续判断。
显示子程序首先初始化串口,使串口工作在方式0,再读取显示缓冲区内的数据(显示缓冲区主要是用来存放即将要显示的数据),然后通过查表的方式找到对应的字形码,最后把字形码写入串口寄存器SBUF通过串口方式0发送出去。显示子程序是怎么将显示缓冲区中的数据变成相应的字形码呢?具体的方法是将每个数字的字形码以16进制数从小到大的次序依次存放在存储器中的固定区域中,构成显示代码表。当要显示某字符时,把表格的起始地址送入数据指针寄存器DPTR中作为基址,将显示缓冲区内的数据作为偏移量送入变址寄存器A,执行查表指令“MOVCA,@A+DPTR”,则累加器A中得到的结果即表格中取出的对应数字的字形码。
4.3.5 充电子程序的设计
充电过程分两阶段进行,第一阶段为预充电,充电电流以0.01CA的小电流进行充电;第二阶段,当充电电压达到3V时转入第二阶段(一般认为三分钟后电池电压大于3V),以0.5CA的电流进行恒流充电方式,第三阶段,以限额充电电压值进行恒压充电阶段。第四阶段当充电电流降到小于0.01CA时,表明电池已充到额定容量,此时即可认为基本充满,如果继续充下去,充电电流会慢慢降低到零,电池完全充满[4]。充电过程中,“充电”指示灯亮;充满时,“充饱”指示灯亮,“充电”指示灯灭,通过按键设置可控制充电时间。充电子程序流程图如图4. 5所示。
22
河南城建学院本科毕业设计(论文) 基于单片机的太阳能充电器系统的软件设计
否 结束 图4.5 充电子程序
充电完成 是 否电压大于4V 是 否电流小于0.01CA 是 电压大于3V 恒流充电 否 电压大于4V 恒压充电 预充电 否 电压大于3V 是 采集电压电流 入口
23
相关推荐: