《基于avr的智能充电器.doc》由会员分享,可在线阅读,更多相关《基于avr的智能充电器.doc(24页珍藏版)》请在三一办公上搜索。
1、编号:56校级大学生创新性实验计划项目申 报 书 项 目 名 称: 基于avr的智能充电器申 请 者: 陶凤婷所 在 院 系: 电子科学与技术学院 专 业 年 级: 08通信工程指 导 教 师: 孙学平 起 止 时 间: 2010年7月1日2011年7月1日 联 系 电 话: 15555131026电 子 信 箱: tao_ft申 报 时 间: 2010年7月1日安徽大学教务处制表项目名称基于avr的智能充电器申请经费1800元起止时间2007年7月1日2011年7月1日负责人学号姓名年级所在院系、专业联系电话E-mail P20814034陶凤婷08电院通信15555131026tao_ft
2、参加成员P10714131申智博07电院电子15056971553642671310P20814001牛坤08电院通信13085003223952897548P20814127童发军08电院通信158551756351056297243P20814102董莹莹08电院通信13965035629dongying200889指导老师姓名职称所在院系联系电话 E-mail孙学平副教授电子科学与技术学院13866133139一、 项目申请理由1. 项目背景如今,随着越来越多的手持式电器的出现,对高性能、小尺寸、重量轻的电池充电器的需求也越来越大。电池技术的持续进步也要求更复杂的充电算法以实现快速、安全
3、的充电。因此需要对充电过程进行更精确的监控,以缩短充电时间、达到最大的电池容量,并防止电池损坏。与此同时,对充电电池的性能和工作寿命的要求也不断地提高。从20世纪60年代的商用镍镉和密封铅酸电池到近几年的镍氢和锂离子技术,可充电电池容量和性能得到了飞速的发展。目前各种电器使用的充电电池主要有镍镉电池(NiCd)、镍氢电池(NiMH)、锂电池(Li-Ion)和密封铅酸电池(SLA)四种类型。 目前,市场上卖得最多的是旅行充电器,但是严格从充电电路上分析,只有很少部分充电器才能真正意义上被称为智能充电器,随着越来越多的手持式电器的出现,对高性能、小尺寸、轻重量的电池充电器的需求也越来越大。电池技术
4、的持续进步也要求更复杂的充电算法以实现快速、安全地充电,因此,需要对充电过程进行更精确地监控(例如对充、放电电流、充电电压、温度等的监控),以缩短充电时间,达到最大的电池容量,并防止电池损坏。因此,需要对充电过程进行更精确的监控,以缩短充电时间、达到最大的电池容量,并防止电池损坏。AVR 已经在竞争中领先了一步,被证明是下一代充电器的完美控制芯片。 智能型充电电路通常包括了恒流恒压控制环路、电池电压监测电路、电池温度检测电路、外部显示电路(LED或LCD显示)等基本单元。2. 自身现状简介 组员中有三个是实验室管理员,对仪器操作熟练。这些组员中有拿过不止一次二等或三等奖学金,还有假期参加过单片
5、机培训的同学。其中,有编程好的和动手能力强的同学加入,加上有07级学长和老师的指导。有这些出色的队员加上合理的分工,我们一定能够出色的完成该项目。 我们设计的智能充电器的设计包括硬件和软件两大部分,这次设计要解决的关键问题是如何用Atmega16L芯片控制LCD模块及用C语言编制相应的显示程序。其主要涉及的知识包括:(1) 自学AVR单片机的相关理论知识。(2) 用ICCAVR编译器以及Proteus仿真。(3) 用Protel 99设计电源电路。(4) 采用雕刻机印制电路板。相信在明确已掌握的知识与需要自学的知识后,通过小组成员的努力,一定能将该项目完成。二、 项目研究内容 特点与创新点:1
6、)设计128*64液晶显示控制电路和用C语言编制LCD显示程序,用图形方式显示充电器电压、电流等参数。2)采用AVR 设计充电器,可以有效精确地监控充电过程。3)此智能型充电器主要包括恒流恒压控制环路、电池电压监测电路、电池温度检测电路、外部显示电路(LED或LCD显示)等基本单元。4)采用C语言开发单片机。用C语言来编写目标系统软件,可以大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而开发出大规模、高性能的应用系统。5)采用了ICCAVR编译器作为系统的开发工具,进行程序的烧录和仿真。它有许多优势,例如支持不带SRAM的单片机器件、带全局优化器、支持在线编程。6)拥有模块化的
7、 “C”源代码,支持多数电池类型,快速充电算法,充电参数易修改,片内EEPROM 可用于存储电池信息,支持在线编程,低成本。7)内置EEPROM,且有外部显示电路(LED或LCD显示),可保存和观看标定系数和电池特性参数,如充电记录以提高实际使用的电池容量。8)可以自动计算电池的已充电量和剩余的充电时间,也可以改变参数来适应各种不同电池的充电。9)系统中的管理电路还具有保护功能,可防止电池的过充和过放对电池造成的负面影响。10)能自动识别电池的类型(镍镉电池、镍氢电池、锂电池)。11)良好的抗干扰能力。12)通电后能自动检测整个电源系统,有故障报警。13)采用单片机开发充电器,灵活易修改,功能
8、更强大,有储存和显示信息的设置。实现步骤:智能型充电电路通常包括了恒流恒压控制环路、电池电压监测电路、电池温度检测电路、外部显示电路(LED或LCD显示)等基本单元。其框图如下: 图1 智能充电器基本框图 智能充电器的设计包括硬件和软件两大部分。第一部分 硬件电路设计在对充电器原理、液晶模块、ATmega16L等的总体了解和掌握以及对各种元器件和电路图的分析和比较后开始进入硬件电路的设计。首先将介绍一下液晶模块的间接控制电路,然后对LCD显示电路原理图作一个详细的介绍,接着介绍充电电路中所用到的各种芯片和元器件的原理和一些功能。 (一) 间接控制方式间接控制方式是单片机通过自身的或系统中的并行
9、接口与液晶显示模块连接。单片机通过对这些接口的操作,以达到对液晶显示模块的控制。这种方式的特点就是电路简单,控制时序由软件实现,可以实现高速单片机与液晶显示模块的接口。电路图如图2所示。在图中以 P1口作为数据口,P3.4为CSA,P3.3为CSB,P3.2为使能端,P3.1为R/W和P3.0为D/I信号。电位器用于显示对比度的调节。 单片机与液晶显示模块之间的连接方式分为直接访问方式和为间接控制方式两种。结合本次设计的实际条件,由于Atmega16L芯片没有WR、RD管脚,而且为了使电路简单且方便软件实现,所以决定采用间接控制的方式来设计LCD显示电路。 P1.7 P1.6 P1.5 P1.
10、4 P1.3 P1.2 P1.1 P1.0 P3.4 P3.3 P3.2 P3.1 P3.0DB7DB6DB5DB4DB3DB2DB1DB0/CSA/CSBER/WD/IVCCV0GND电位器+5V 10K GND MPU LCM接 图2 间接控制方式电路图 (二)ATmega16L主要引脚说明以下是ATmega16L的引脚配置: 图3 ATmega16L芯片引脚1. Atmega16L的存储器AVR结构有两个主要的存储空间:数据存储器空间和程序存储器空间,此外,Atmega16L还有一个EEPROM存储器以保存数据。这三个存储器都为线性的平面结构。(1) Atmega16L具有16K字节的在
11、线编程Flash,用于存储程序指令代码。因为AVR指令为16位或32位,故Flash组织成8K16的形式。用户程序的安全性要根据Flash程序存储器的两个区:引导(Boot) 程序区和应用程序区,分开来考虑。Flash存储器至少可以擦写10,000次。Atmega16L的程序存储器为13位,因此可以寻址8K的存储器空间。关于用SPI 或JTAG 接口实现对Flash 的串行下载,将在软件部分作详细的介绍。(2) 数据存储器的寻址方式分为5种:直接寻址、带偏移量的间接寻址、间接寻址、带预减量的间接寻址和带后增量的间接寻址。ATmega16L的全部32个通用寄存器、64个I/O寄存器及1024个字
12、节的内部数据SRAM可以通过所有上述的寻址模式进行访问。(3) ATmega16L 包含512 字节的EEPROM 数据存储器。它是作为一个独立的数据空间而存在的,可以按字节读写。EEPROM 的寿命至少为100,000 次擦除周期。EEPROM 的访问由地址寄存器、数据寄存器和控制寄存器决定。2. Atmega16L的时钟电路单片机的时钟用于产生工作所需要的时序,其连接电路如下图: 图4 晶体振荡器连接图 XTAL1 与XTAL2 分别为用作片内振荡器的反向放大器的输入和输出,考虑到其最大频率不超过8MHz,这里选用的晶振为7.3728MHz。3. Atmega16L的系统复位Atmega1
13、6L有五个复位源:(1) 上电复位。电源电压低于上电复位门限Vpot时,MCU复位。如果在单片机加Vcc电压的同时,保持RESET引脚为低电平,则可延长复位周期。Vcc Vpot VpotRESET Vrst VrstTIME-OUTINTERINAL tTOUT tTOUT RESET 图5 RESET引脚与VCC相连时, 图6 RESET引脚由外部控制时, 单片机的复位电平 单片机的复位电平(2) 外电复位。引脚RESET上的低电平持续时间大于最小脉冲宽度时MCU复位。VccRESET VrstTIME-OUT tTOUTINTERNALRESET 图7 外部复位时序图(3) 看门狗复位。
14、看门狗使能并且看门狗定时器溢出时复位发生。看门狗计数器溢出时,将产生一个晶振的复位脉冲。(4)Vcc RESET WDT 1 XTAL CycleTIME-OUT RESET tTOUT TIME-OUTINTERNALRESET 图8 看门狗复位时序图(5) 掉电检测复位。掉电检测复位功能使能,且电源电压低于掉电检测复位门限Vpot时MCU即复位。(6) JTAG AVR复位。复位寄存器为1时MCU复位。(三)LCD液晶显示 1. LCD的显示原理液晶显示器是一种功耗极低的显示器。随着液晶显示技术的发展,LCD显示器的规格众多,其专用驱动芯片也相互配套,使LCD在控制和仪表系统中广泛应用提供
15、了极大的方便。根据LCD显示原理的不同,常见和常用的LCD可以分为字符型LCD和点阵型LCD两种。不同的显示原理使得这两种LCD的指令系统、接口和功能等是不相同的,各有优缺点,但结合到本次设计的实际要求,经过比较还是选用点阵型LCD。现就点阵型LCD的显示原理、模块特点等做一简要介绍。要想在液晶模块上显示一个汉字或字符,需要3个最基本的控制操作:分别向3个控制器写指令代码、写显示数据和读显示数据。这里要特别引起注意的是完成这3项操作的前提条件是KS0108B控制器处于准备好的状态,即BUSY=0,由模块的软件特性知道,当BUSY=1时,系统的接口电路处于被封锁的状态,是不能接受除读状态指令外的
16、任何操作的。因此在访问控制器之前,一定要判断控制器的当前状态。具体到软件设计时,则需设计一判忙程序,在判断BUSY=0后,再往下进行操作。在本模块中,每个汉字的大小是1616点阵,而每个字符的大小是816点阵,即字符的宽度为汉字的1/2。它们都是以二维数组的格式存放在ROM中。向液晶模块显示一个汉字的过程就是:由液晶屏显示区的指定字符行的指定列开始,连续输出该字符对应的字符库中的16个列数据,如果是显示字符,则输出8个列数据即可。上面已经介绍到,MGLS-19264液晶模块中液晶屏显示区为19264点阵,其中,它们的每8个像素行组成一页,整个显示区共分为8页,每64列为一个区,这样,它就有左、
17、中、右3个区,它的显示区示意图如下:左区 中区 右区0 1 2 62 63 64 65 127128 129 191DB0DB7DB0DB7 图9 液晶屏显示区示意图液晶模块显示字符是从上到下,从左到右进行显示的。假设定义从最左上角开始显示,则先从上到下显示第0页的第一列,依次从左向右开始显示。MGLS-19264LCM的显示部分为左、中、右3个区,可以由CS片选的取值分别进行控制,其接口的片选定义如下: 表1 MGLS的片选定义表CS1CS2选中区域 0 0 左区 0 1 中区 1 0 右区 1 1 未选 有了上面的知识,就可以编写显示界面这一块程序。由于每个汉字或字符在图中位置是固定的,只
18、要定义了相应的选区及X、Y地址,就可以显示出具体的位置。用lr来表示汉字的区域,当lr=0,表示左区;lr=1,表示中区;lr=2,表示右区。X表示页面,Y表示列地址。则(lr.X.Y)就可以定义出这个字在屏上的实际位置。以第一行的“智”字为例,这个字位于模块的左区,则lr=0;它位于第一页和第二页,则X=0;它位于列地址的48-63字节,Y=48,那么“智”就可以通过(0.0.48)精确地表示出它的位置。这里要注意的是每个汉字占用的行地址是两页,如“智”字占的就是X0和X1,即第二行的汉字其X=2而不是1。因此,第二行的“电”就应该表示为(0.2.0),其它字符依此设计即可。2. 液晶显示控
19、制驱动器HD61202及其兼容液晶显示控制器是一种带有驱动输出的图形液晶显示控制器,而在小规模点阵液晶显示模块上使用液晶显示驱动器组成液晶显示驱动控制系统是非常有益的,这将使液晶显示模块的硬件电路简单化,从而降低模块的成本,同时也提高了对软件功能的要求。许多显示功能如光标、字符库、闪烁都需要由软件编制而成。HD61203和HD61202就是这类液晶显示驱动控制器套件。之所以称它们为套件是因为HD61203和HD61202必须配套使用,通常有12864和19264两种规格。其特点如下:1内藏64*64=4096位显示RAM,RAM中每位数据对应LCD屏上的一个点的亮、暗状态。2HD61202及其
20、兼容控制器是列驱动器,具有64路列驱动输出。3HD61202及其兼容控制驱动器读、写时序与68系列微处理妻相符,因此它可直接与68系列微处理器借口相联。4HD61202及其兼容控制器的占空比为1/321/64。3. 液晶显示模块的特点MGLS-12864图形液晶显示模块的驱动和控制系统是由一片KS0107B或兼容驱动器( HD61203 )作为行驱动器和两片KS0108B或兼容驱动器(HD61203) 作为列驱动器组成的。它的主要技术参数及其供电特点如下:(1) 电源:DC+5V,模块内自带用于LCD驱动的负压电路。(2) 显示内容:12864全屏幕点阵。(3) 指令形式:七种指令。(4) 接
21、口形式:与控制器采用8位数据总线和8位控制线相连。(5) 工作环境:10+50。(6) 模块应用有三种电源:逻辑电源、液晶驱动电压、背光电压。(7) 本次选用的模块是双电源供电(VDD/V0),需要提供一个液晶驱动电压,用以调节对比度,接在液晶模块的V0引脚上,由于液晶的对比度会随着温度的变化而相应变化,所以其液晶显示驱动电压值应随着温度作相应的调整,这里采用了一个电位器,调整电压值。(8) 背光供电为3.8-4.1V的支流电源,选用电源太大不仅增加功耗,更有可能损坏背光灯和缩短模块的使用寿命。 MGLS-12864的逻辑电路图如下:HD61202 *LCD: VGLS-1286412864
22、DOTS64HD61202 (1) HD61202 (2)6464 VDDVSSV0/CSA/CSBDB0DB7D/IR/WE 图9 MGLS-12864的逻辑电路图MGLS-12864液晶显示模块一共有20个引脚,它的接口定义如下:表2 MGLS-12864的接口电路序号符号状态功能D7三态数据总线D6三态数据总线D5三态数据总线4D4三态数据总线5D3三态数据总线6D2三态数据总线7D1三态数据总线8D0三态数据总线9E输入R/W=“L”,E的下降沿锁存数据线R/W=“H”,E为“H”时,数据由控制器输出至数据线10R/W输入R/W=“L”,E=“H”数据由控制器输出数据线R/W=“H”,
23、E的下降沿,数据由数据线输入到控制器11D/I输入D/I=“L”,表示DB7DB0为显示数据D/I=“H”,表示DB7DB0为显示指令12V0液晶显示器驱动电压13VCC电源正14GND电源地15CS1输入片选信号16CS2输入片选信号17VOUTLCD负压驱动电压18RET输入复位信号19LED+显示模块背光电源20LED-显示模块背光电源(四) 电源电路的设计在本次的设计中,要供电给mega16和LCD显示模块两部分,而一个LM7805的输出电流不足,所以本人打算将mega16和显示模块分别供电,所以实际电路中用到了两片7805。下面就一个电源电路给出设计方案,另一个同样原理。5V电源电路
24、的设计 图10 5V的电源电路设计原理图上图是LM78作为输出电压固定的典型电路图,正常工作时,输入、输出电压差为3-8V。输入电压PS为9V。电路中接入电容C5用来实现频率补偿,防止稳压器产生高频自激振荡和抑止电路引入的干扰,C11是有极性的电解电容,以减小稳压电压输出端由输入电源引入的电平干扰。D1是保护二极管,当输入端短路时,给输出电容器C11一个放电电路,防止C11两端电压作用于调压管的be结,造成调压管be结击穿而损坏。其中C5、C11两个电容只是起滤波作用选用的大小没有特别的要求。(五)硬件电路设计经过对以上对ATmega16L芯片的端口、存储器、时钟电路、以及复位电路和LCD液晶
25、显示等原理的介绍后,现在就可以完成对这部分硬件电路的设计了。再结合前面的分析采用间接访问的方式实现单片机与液晶显示模块之间的连接。LCD模块的8位数据线接在了Atmega16L芯片B口的8位数据线上,这里用了一个74LS24作为锁存器使它们间接连接在一起。LCD的EN、D/I、CS1、CS2、R/W分别连接到PA3PA7上,其详细的接法见下图 图11 硬件接线图 第二部分 软件设计大一时本专业开了C语言这门课,但只是学了个入门。应该再结合AVR单片机认真仔细的回顾C语言编程,为下面设计工作的开展打下基础。在部分里,将先介绍C语言开发的优势,然后介绍LCD的显示原理、模块的软件特性等,接下来便是
26、最主要的整个程序的设计。3.4 液晶显示界面本着简单明了的基本思想前面提到,结合液晶显示模块的相关知识,设计出如下界面:智能型充电器电池:电压: V节数;电流: A状态:温度: 图1 LCD界面显示这次设计采用的液晶显示模块本是由北京精电公司所造的图形式的MGLS-12864芯片,其用一片KS0107B或兼容驱动器( HD61203 )作为行驱动器和三片KS0108B或兼容驱动器(HD61203) 作为列驱动器组成的。液晶显示的第一行为“智能型充电器”,由左起第四列开始显示,这样正好左右平均分配。第二行左起顶格显示“电池”,表示对充电电池的选择,可进行“锂电、镍镉、镍氢、铅酸”四种电池的选取,
27、第三行显示电池的节数,第四行显示状态,可以在“快充、涓充、充满、放电”四个选项间进行选取,第二行到第四行左起分别显示电压、电流和温度数值。由此可见,左边的两选项在充放电的过程中是不变的,而右边的三个参数在充电过程中随时发生变化。3.5 系统程序流程图为了方便程序的设计,使自己在设计过程中做到思路清晰,设计起来游刃有余。这里首先画出了程序流程图,后面根据次流程图具体设计程序,现具体分析如下:(一)主程序流程图这次设计课题的主要内容是在充电器的充电过程中,采集参数,进行电压、电流、温度的实时显示。其主流程图设计如下:按 键 调 节采样V、A、T显示V、A、T 充满?结 束YN 初 始 化采 集 电
28、 池 电 压0开 始Y有 电 池无 电 池等 待扫 描 按 键有键按下?YNN 图2主程序流程图(二)控制程序流程图要想在液晶模块上显示一个字符或汉字,首先必须得对控制字进行写指令代码、写显示数据和读显示数据3项操作。完成这3项工作都必须保证控制器处于不忙的情况下,这就必须有一个判忙子程序,其流程图如下:开 始读左边控制器的状态字驱动器忙?送 状 态 字返 回YN 图3 判忙程序流程图(三)显示程序流程图根据上面采用的方法设置汉字的初始值(lr、X、Y),当显示完第一列的8字节以后,跳到第二列又从上往下显示。由于一个汉字每一列有16字节,则当一页的16列显示完,只相当于显示的汉字的上半部分,则
29、再次跳到下一页的初始位,进行汉字下半部分的显示,值到16列显示完成,才表示一个汉字全部显示结束。通过上面的介绍,一个汉字的显示流程图编写如下:满16列?NY汉显完成,继续吗?NY返 回设lr、X、Y初始值 ,lr选取控制器 X页面值,Y列地址值开 始 显 示显示满16列?NYX+1显示下半部分开 始初 始 化 图4 汉字显示流程图按上面的流程图,就可以进行显示程序的设计了。 第三部分 调试过程为了巩固前面所学的知识,培养对AVR单片机学习的兴趣,同时也为了学会并熟练掌握ICCAVR编译器的应用,为最后的联机调试打下基础。在这里设计了一些最简单的单片机系统实例进行调试,其核心部件采用Atmega
30、16L芯片。一个最简单的单片机系统的开发也需要电路设计、单片机器件选择和程序编写3个步骤。对于单片机系统,最简单的功能无非是控制输出电平的高低。单片机的最简单系统是指单片机能正常工作所必须的外围元件,主要由单片机、晶振电路和复位电路组成。XTAL2XTAL1MPUGNDC1 同传统的单片机系统一样,Atmega16L的晶振电路也分为外部时钟模式和内部时钟模式两种,其内部时钟电路如下图: C2 图1 晶振电路 鉴于Atmega16L的主频范围为0-8MHz,这里选用的是晶振为7.3728MHz。复位电路采用了上电复位电路,其电路图如下: RESET+RGND1K22UfVCC MPU 图2 复位
31、电路注意这一点和有51系列的单片机是不同的,Atmega16的RST是低电平复位,而8051系列单片机是高电平才发生复位,换句话说,这两种单片机复位电路的设计完全相反。了解了以上两部分电路,再配合I/O接口中,就可以进行电路的设计了。本来这次是准备在面包板上完成实验的,但后来觉得引脚插在面包板里面,松紧不一,且面包板是一个长条形,如果做到后面的实现随着线的增多,空间跨度太大,影响视觉,某根线一旦出了问题也不易检查,综合各方面考虑,最后选用了一次性万用板来进行,这和印制电路板差不多,是通过焊接焊上去的,这既美观,出了问题也方便查找并解决。 编写好的程序通过并行通信下裁AVR-ISP烧到板子里面,
32、其下裁电缆的电源由目标板提供,其管脚如下: 图3 目标板管脚图使用广东双龙电子提供的MCU下载程序软件,用数据线将ISP下载插座同电脑相连。就可以进行程序的调试了。其中下载软件界面如图5-4所示。将“通信参数设计及器件选择”栏中的“AT89C52”改为“Atmega16”。当下载软件的(1)区域出现“擦除完成,编程开始”字样时,表示它已和AVR的ISP插座连接好,可以进行程序下载的操作了。否则,将显示“程序编程连接失败”的字样。在第一次进行操作时,也出现了连接失败的信号。软件是最新下载的,通过万用表检查,软件周围的接线都没有问题,显然不是自身的问题。再经仔细检查,原来是Atmega16L的芯片
33、的5V电源掉线了。单片机不能运作,当然没法进行程序的下载了。虽然这一过程花了不少时间,吃一堑,长一智,从这也看出了进行电子创作的严谨性,不通过细心的观察,冷静的分析,是不可能完成的。前面说到,测试单片机的最简单系统最简单的就是控制输出电平的高低,这里采用发光二极管作为它的输出器件,用二极管的亮或灭表示自己设计的单片机系统是否能够正常工作。具体进行了以下实际电路的设计。(一)一个灯的闪烁。通过上面的介绍,Atmega16L有32个I/O输出口,作为第一功能时,它们是没有区别的。这次主要用它的B口进行实验。在万用板上插上Atmega16L芯片,按上面的方法接上晶振电路和复位电路。接通电源(5V),
34、用万用表测B0口压降,测得电压+5V,可知系统正常。在B0端接上一发光二极管。发光二极管是由于其两端的电压差超出其导通压降时开始工作,它的压降通常为1.7V-1.9V。且工作电流也要满足该二极管的发光要求。满足了这两点,发光二极管就可以开始发光了。控制B0口电平的高低,就可以实现二极管的亮灭了。打开ICCAVR编译器,按照上面的步骤进行构筑向导框的操作。在PORTS的选项中,把B口设置为输出口,值为“1”。其它按上面的设置,进入到IDE环境。编辑显示程序,编辑窗口里面已经有初始化程序、看门狗程序等基本程序。只要进行主函数的编写就可以了。要让输出口电平发生转换,采用了两种方法。一种是用延时的办法
35、。初始设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设置为14300
36、0,将周期提高到近1s,实际运行时,小灯的闪动明显变慢,基本达到了预期目标。第二种利用中断。主程序将B0口置1,使小灯发亮。在timer0中设置计数操作,当到达一定的数值时,B0口跳为0。程序跳到timer0中运行,实现中断。然后跳出中断,每计数到一固定的数值时,程序就执行中断操作。第一次运行时,小灯发亮,但不闪烁。检查电路,接线完好,程序是编译通过的,语法上不可能有毛病。程序设计的思想也应该没有错误。反复读写程序,结果发现没有调用看门狗复位程序。看门狗可以保证程序执行过程中不会复位,而当程序陷入死循环后,能保证在允许的时间里复位。把看门狗程序放在timer0里面,重新下载,就发现小灯可以闪烁
37、了。(二)灯的循环显示这一实验主要实现在B口接8个小灯,让小灯从B0到B7逐个发亮。通过上面的两种方法的比较,当小灯个数较多时,对逐个实现延时比较麻烦。而采用中断实现时,初设小灯全部发亮,当每计数到一固定时间时,点亮1个灯,8个灯全亮时作为总的循环时间,用for语句实现,里面用switchcase语句分为8种情况。设置的时间不同,其循环时间就不一样。经过运行,小灯的显示达到了预期目标。在一段时间里,用发光二极管作为主要输出工具,本人在指导老师和同学的大力帮助下,实现了一个又一个实验,期间出现了不少问题,但最终都顺利得到了解决。为最后实现LCD的显示迈出了重要的一步。三、 项目进度安排起止时间工
38、作内容成果形式7月8月1.自学AVR-Atmega16L单片机。2.ICCAVR编译器的使用和Proteus的仿真使用。3.熟悉绘图软件Protel99的使用。4.学习液晶显示的相关内容。掌握一定的基础知识9月1月1. 设计LCD显示电路,电源电路,用Protel99绘制原理图,并与组员一起完成整个充电电路原理图,并绘制印制电路板。2.编写显示程序完成初期制作1月3月印制、调试电路,根据各部分的作用对硬件电路进行调试,最后联机调试。得到调试好后的实物 最终研究成果最终成果名称最终成果形式基于avr的智能充电器智能充电器四、拟利用资源实验室资源:1.示波器、数字式万用表、模拟万用表、集成芯片测试仪等;2.电烙铁、面包板、覆铜板、焊锡丝、剥线器等;3.电脑及编程器等软件;4. A510的单片机学习板、A410的雕刻机等。参考资料:郭天祥的十天学会单片机。中国电力出版社AVR单片机开发从入门到精通。人民邮电出版社protel99se 入门与提高。黄子强的液晶显示原理(第2版)。五、项目经费预算与用途序号预算项目预算金额(元)备注1分析测试费2资料打印、复印费50打印3文献检索费50芯片资料等4元