智能型充电器的设计 下载本文

潍坊学院本科毕业设计

4 系统调试

4.1 调试过程

为了巩固前面所学的知识,培养对AVR单片机学习的兴趣,同时也为了学会并熟练掌握ICCAVR编译器的应用,为最后的联机调试打下基础。在这里设计了一些最简单的单片机系统实例进行调试,其核心部件采用Atmega16L芯片。

一个最简单的单片机系统的开发也需要电路设计、单片机器件选择和程序编写3个步骤。对于单片机系统,最简单的功能无非是控制输出电平的高低。单片机的最简单系统是指单片机能正常工作所必须的外围元件,主要由单片机、晶振电路和复位电路组成。

同传统的单片机系统一样,Atmega16L的晶振电路也分为外部时钟模式和内部时钟模式两种,其内部时钟电路如图4.1:

C1

C2

GND MPU XTAL2 XTAL1 图4.1 晶振电路

鉴于Atmega16L的主频范围为0-8MHz,这里选用的是晶振为7.3728MHz。 复位电路采用了上电复位电路,其电路图如下:

22Uf VCC MPU 1K R RESET + GND 图4.2 复位电路

注意这一点和有51系列的单片机是不同的,Atmega16的RST是低电平复位,而8051系列单片机是高电平才发生复位,换句话说,这两种单片机复位电路的设计完全相反。

29

潍坊学院本科毕业设计

了解了以上两部分电路,再配合I/O接口中,就可以进行电路的设计了。 本来这次是准备在面包板上完成实验的,但后来觉得引脚插在面包板里面,松紧不一,且面包板是一个长条形,如果做到后面的实现随着线的增多,空间跨度太大,影响视觉,某根线一旦出了问题也不易检查,综合各方面考虑,最后选用了一次性万用板来进行,这和印制电路板差不多,是通过焊接焊上去的,这既美观,出了问题也方便查找并解决。

编写好的程序通过并行通信下裁AVR-ISP烧到板子里面,其下裁电缆的电源由目标板提供,其管脚如图4.3:

图4.3 目标板管脚图

使用广东双龙电子提供的MCU下载程序软件,用数据线将ISP下载插座同电脑相连。就可以进行程序的调试了。

前面说到,测试单片机的最简单系统最简单的就是控制输出电平的高低,这里采用发光二极管作为它的输出器件,用二极管的亮或灭表示自己设计的单片机系统是否能够正常工作。具体进行了以下实际电路的设计。

4.2一个灯的闪烁

通过上面的介绍,Atmega16L有32个I/O输出口,作为第一功能时,它们是没有区别的。这次主要用它的B口进行实验。在万用板上插上Atmega16L芯片,按上面的方法接上晶振电路和复位电路。接通电源(5V),用万用表测B0口压降,测得电压+5V,可知系统正常。在B0端接上一发光二极管。

发光二极管是由于其两端的电压差超出其导通压降时开始工作,它的压降通常为1.7V-1.9V。且工作电流也要满足该二极管的发光要求。满足了这两点,发光二极管就可以开始发光了。控制B0口电平的高低,就可以实现二极管的亮灭了。

打开ICCAVR编译器,按照上面的步骤进行构筑向导框的操作。在PORTS的选项

30

潍坊学院本科毕业设计

中,把B口设置为输出口,值为“1”。其它按上面的设置,进入到IDE环境。编辑显示程序,编辑窗口里面已经有初始化程序、看门狗程序等基本程序。只要进行主函数的编写就可以了。

要让输出口电平发生转换,采用了两种方法。一种是用延时的办法。初始设B0口为0,二极管不亮,经过一定时间的延时后,B0口变为1,二极管发光。再过相同时间,B0口再为0?按上述步骤循环,就可以实现二极管的亮灭了。

编写程序,由于这里采用的是C语言编写,程序相对来说比较简单,延时程序如下: void delay_1ms(void) { unsigned int i;

for(i=1;i<(unsigned int)(xtal*143-2;i++); }

xtal是晶振频率,这里采用的是7.3728MHz,从理论上讲,应出现1ms左右的延时。编译器上通过以后,可以进行程序的下载。选中“Flash”存储器,选择保存的路径。二极管出现了快速的亮灭交替显示。将143设置为143000,将周期提高到近1s,实际运行时,小灯的闪动明显变慢,基本达到了预期目标。

第二种利用中断。主程序将B0口置1,使小灯发亮。在timer0中设置计数操作,当到达一定的数值时,B0口跳为0。程序跳到timer0中运行,实现中断。然后跳出中断,每计数到一固定的数值时,程序就执行中断操作。

第一次运行时,小灯发亮,但不闪烁。检查电路,接线完好,程序是编译通过的,语法上不可能有毛病。程序设计的思想也应该没有错误。反复读写程序,结果发现没有调用看门狗复位程序。看门狗可以保证程序执行过程中不会复位,而当程序陷入死循环后,能保证在允许的时间里复位。把看门狗程序放在timer0里面,重新下载,就发现小灯可以闪烁了。

4.3灯的循环显示

这一实验主要实现在B口接8个小灯,让小灯从B0到B7逐个发亮。通过上面的两种方法的比较,当小灯个数较多时,对逐个实现延时比较麻烦。而采用中断实现时,初设小灯全部发亮,当每计数到一固定时间时,点亮1个灯,8个灯全亮时作为总的循环时间,用for语句实现,里面用switch?case语句分为8种情况。设置的时间不同,其循环时间就不一样。经过运行,小灯的显示达到了预期目标。

31

潍坊学院本科毕业设计

结束语

本次毕业设计在自己的努力,老师的指点下已全部完成,结果重要,过程也很珍贵,因为好的结果必然得经过一个艰辛的过程,而从这个坚信的过程中我获得了珍贵的经验和教训,仔细认真的总结将对自己是个质的提升。现先将此次毕业设计的成果简要汇报如下:

(一)完整的电池充电器设计方案

通过运用合理的硬件和软件的设计方案,实现了其完整的智能充电效果。硬件设计选用LCD显示模块和ATmega16L芯片,LCD显示模块是一种被动显示器,将其用在设计智能型充电器中具有功耗低,显示信息大,寿命长和抗干扰能力强等优点。液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就显示黑色,这样即可显示出图形。Atmel AVR微处理器是当今市场上能够以单片方式提供Flash,EEPROM和10位ADC的最高效的8位微处理器,其程序可以多次更改而不必浪费单片机和电路板,而且其程序采用C语言编程,具有汇编语言编程所不可比拟的优势。因此,AVR被证明是下一代充电器的完美控制芯片。软件设计采用了C语言来编程,C语言是一种编译型的结构化程序设计语言,具有简单的语法结构和强大的处理功能,具有运行速度快、编译效率高,移植性好和可读性强等多种优点,可以实现对系统便件的直接操作。用C语言来编写目标系统软件,可以大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而开发出大规模、高性能的应用系统。 (二)支持多数电池类型

通过以上完整的设计方案,实现了对多类电池的充电。 (三)充电参数易修改

因其采用的是便于改进和扩充的C语言来编写的,所以对其的各种充电参数易于修改,从而实现了其的智能性和灵活性。 (四)片内EEPROM 可用于存储电池信息

EEPROM 可用于保存标定系数和电池特性参数,如保存充电记录以提高实际使用的电池容量。

通过这次课程设计使我了解到AVR单片机与LCD的应用面广,功能强大,使用方便,已经广泛地应用在生产过程的各个方面。在课程设计过程中不仅巩固了我的基础理论知识, 而且使我各个方面的能力都有很大的提高。从一开始的无从下手,资料的整

32