智能型充电器的电源和显示的设计单片机期末课程设计.docx
《智能型充电器的电源和显示的设计单片机期末课程设计.docx》由会员分享,可在线阅读,更多相关《智能型充电器的电源和显示的设计单片机期末课程设计.docx(25页珍藏版)》请在冰豆网上搜索。
![智能型充电器的电源和显示的设计单片机期末课程设计.docx](https://file1.bdocx.com/fileroot1/2023-7/13/c40ca6dd-9b9b-4ab5-8899-6e9936b269a5/c40ca6dd-9b9b-4ab5-8899-6e9936b269a51.gif)
智能型充电器的电源和显示的设计单片机期末课程设计
目录
第一章绪论…………………………………………………………………4
1.1课题背景………………………………………………………………4
1.2毕业设计任务和要求…………………………………………………4
第二章硬件电路设计………………………………………………………5
2.1硬件电路主要芯片……………………………………………………5
2.1.1Atmega16L主要引脚说明……………………………………5
2.1.2Atmega16L的存储器…………………………………………7
2.1.3Atmega16L的时钟电路………………………………………7
2.1.4Atmega16L的系统复位………………………………………7
2.2LCD液晶显示………………………………………………………8
2.2.1LCD的显示原…………………………………………………8
2.2.2液晶显示控制驱动器…………………………………………8
2.2.3液晶显示模块的特点………………………………………10
2.3硬件电路设计…………………………………………………………12
2.4PROTELL99的应用简介………………………………………………13
第三章软件设计………………………………………………………………15
3.1用C语言开发单片机的优势…………………………………………15
3.2液晶显示汉字或字符的原理…………………………………………16
3.3LCD模块的指令说明…………………………………………………16
3.4液晶显示界面………………………………………………………19
3.5系统程序流程图………………………………………………………19
第四章系统调试过程…………………………………………………………22
4.1系统调试软件介绍…………………………………………………22
4.1.1ICCAVR编译器简介…………………………………………22
4.1.2ICCAVR的设置………………………………………………23
4.2调试过程……………………………………………………………23
第五章课程设计总结………………………………………………………25
参考文献………………………………………………………………………26
第一章 绪论
1.1课题背景
如今,随着越来越多的手持式电器的出现,对高性能、小尺寸、重量轻的电池充电器的需求也越来越大。
电池技术的持续进步也要求更复杂的充电算法以实现快速、安全的充电。
因此需要对充电过程进行更精确的监控,以缩短充电时间、达到最大的电池容量,并防止电池损坏。
与此同时,对充电电池的性能和工作寿命的要求也不断地提高。
从20世纪60年代的商用镍镉和密封铅酸电池到近几年的镍氢和锂离子技术,可充电电池容量和性能得到了飞速的发展。
目前各种电器使用的充电电池主要有镍镉电池(NiCd)、镍氢电池(NiMH)、锂电池(Li-Ion)和密封铅酸电池(SLA)四种类型。
电池充电是通过逆向化学反应将能量存储到化学系统里实现的。
由于使用的化学物质的不同,电池有自己的特性。
设计充电器时要仔细了解这些特性以防止过度充电而损坏电。
目前,市场上卖得最多的是旅行充电器,但是严格从充电电路上分析,只有很少部分充电器才能真正意义上被称为智能充电器,随着越来越多的手持式电器的出现,对高性能、小尺寸、轻重量的电池充电器的需求也越来越大。
电池技术的持续进步也要求更复杂的充电算法以实现快速、安全地充电,因此,需要对充电过程进行更精确地监控(例如对充、放电电流、充电电压、温度等的监控),以缩短充电时间,达到最大的电池容量,并防止电池损坏。
1.2本设计任务和要求
智能充电器的设计包括硬件和软件两大部分,本人的主要任务是完成充电器设计的LCD显示部分,其主要涉及的知识包括:
(1)自学AVR单片机的相关内容。
(2)设计电源电路。
(3)设计128*64液晶显示控制电路和用C语言编制LCD显示程序,用图形方式显示充电器电压、电流等参数。
(4)手工焊接和ICCAVR编译器的应用。
第二章硬件电路设计
经过前面对充电器原理、液晶模块、ATmega16L等的总体了解和掌握以及对各种元器件和电路图的分析和比较后,现在就可以开始进入硬件电路的设计了。
在本章里,首先将介绍一下液晶模块访问方式的两种接口电路,然后对LCD显示电路原理图作一个详细的介绍,接着介绍充电电路中所用到的各种芯片和元器件的原理和一些功能,最后对PROTEL99的使用和PCB板的绘制以及焊接做一简单介绍,然后再将自己的设计思想和同组人所设计的两部分结合,达成统一。
通过比较再结合本次设计的实际条件,由于Atmega16L芯片没有WR、RD管脚,而且为了使电路简单且方便软件实现,所以最终决定采用间接控制的方式来设计LCD显示电路。
2.1硬件电路主要芯片
2.1.1ATmega16L主要引脚芯片
以下是ATmega16L的引脚配置:
图2-1ATmega16L芯片引脚
引脚说明:
VCC 数字电路的电源
GND 地
端口A(PA7~PA0) 端口A作为A/D转换器的模拟输入端。
端口A为8位双向I/O口,具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
端口B(PB7~PB0) 端口B为8位双向I/O口,具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
端口C(PC7~PC0) 端口C为8位双向I/O口,具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
端口D((PD7~PD0)端口D为8位双向I/O口,具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
RESET 复位输入引脚。
持续时间超过最小门限时间的低电平将引起系统复位。
XTAL1 反向振荡放大器与片内时钟操作电路的输入端。
XTAL2 反向振荡放大器的输出端。
AVCC AVCC是端口A与A/D转换器的电源。
不使用ADC时,该引脚应直接与VCC连接。
使用ADC时应通过一个低通滤波器与VCC相连。
AREF A/D的模拟基准输入引脚。
2.1.2Atmega16L的存储器
AVR结构有两个主要的存储空间:
数据存储器空间和程序存储器空间,此外,Atmega16L还有一个EEPROM存储器以保存数据。
这三个存储器都为线性的平面结构。
(1)Atmega16L具有16K字节的在线编程Flash,用于存储程序指令代码。
因为AVR指令为16位或32位,故Flash组织成8K
16的形式。
用户程序的安全性要根据Flash程序存储器的两个区:
引导(Boot)程序区和应用程序区,分开来考虑。
(2)数据存储器的寻址方式分为5种:
直接寻址、带偏移量的间接寻址、间接寻址、带预减量的间接寻址和带后增量的间接寻址。
(3)ATmega16L包含512字节的EEPROM数据存储器。
它是作为一个独立的数据空间而存在的,可以按字节读写。
EEPROM的寿命至少为100,000次擦除周期。
2.1.3Atmega16L的时钟电路
单片机的时钟用于产生工作所需要的时序,其连接电路如下图:
图2-2晶体振荡器连接图
XTAL1与XTAL2分别为用作片内振荡器的反向放大器的输入和输出,考虑到其最大频率不超过8MHz,这里选用的晶振为7.3728MHz。
2.1.4Atmega16L的系统复位
Atmega16L有五个复位源:
(1)上电复位。
电源电压低于上电复位门限Vpot时,MCU复位。
如果在单片机加Vcc电压的同时,保持RESET引脚为低电平,则可延长复位周期。
VccVpotVpot
RESETVrstVrst
TIME-OUT
INTERINALtTOUTtTOUT
RESET
图2-3RESET引脚与VCC相连时,图2-4RESET引脚由外部控制时,
单片机的复位电平单片机的复位电平
(2)外电复位。
引脚RESET上的低电平持续时间大于最小脉冲宽度时MCU复位。
Vcc
RESETVrst
TIME-OUTtTOUT
INTERNAL
RESET
图2-5外部复位时序图
(3)看门狗复位。
看门狗使能并且看门狗定时器溢出时复位发生。
看门狗计数器溢出时,将产生一个晶振的复位脉冲。
Vcc
RESET
WDT1XTALCycle
TIME-OUT
RESETtTOUT
TIME-OUT
INTERNAL
RESET
图2-6看门狗复位时序图
(4)掉电检测复位。
掉电检测复位功能使能,且电源电压低于掉电检测复位门限Vpot时MCU即复位。
(5)JTAGAVR复位。
复位寄存器为1时MCU复位。
2.2LCD液晶显示
2.2.1LCD的显示原理
液晶显示器是一种功耗极低的显示器。
随着液晶显示技术的发展,LCD显示器的规格众多,其专用驱动芯片也相互配套,使LCD在控制和仪表系统中广泛应用提供了极大的方便。
要想在液晶模块上显示一个汉字或字符,需要3个最基本的控制操作:
分别向3个控制器写指令代码、写显示数据和读显示数据。
这里要特别引起注意的是完成这3项操作的前提条件是KS0108B控制器处于准备好的状态,即BUSY=0,由模块的软件特性知道,当BUSY=1时,系统的接口电路处于被封锁的状态,是不能接受除读状态指令外的任何操作的。
上面已经介绍到,MGLS-19264液晶模块中液晶屏显示区为192×64点阵,其中,它们的每8个像素行组成一页,整个显示区共分为8页,每64列为一个区,这样,它就有左、中、右3个区,它的显示区示意图如下:
左区中区右区
012…6263
6465…127
128129…191
DB0
…
DB7
…
DB0
…
DB7
图2-7液晶屏显示区示意图
液晶模块显示字符是从上到下,从左到右进行显示的。
假设定义从最左上角开始显示,则先从上到下显示第0页的第一列,依次从左向右开始显示。
MGLS-19264LCM的显示部分为左、中、右3个区,可以由CS片选的取值分别进行控制,其接口的片选定义如下:
表2-1MGLS的片选定义表
CS1
CS2
选中区域
0
0
左区
0
1
中区
1
0
右区
1
1
未选
有了上面的知识,就可以编写显示界面这一块程序。
由于每个汉字或字符在图中位置是固定的,只要定义了相应的选区及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.2.2液晶显示控制驱动器
HD61202及其兼容液晶显示控制器是一种带有驱动输出的图形液晶显示控制器,而在小规模点阵液晶显示模块上使用液晶显示驱动器组成液晶显示驱动控制系统是非常有益的,这将使液晶显示模块的硬件电路简单化,从而降低模块的成本,同时也提高了对软件功能的要求。
许多显示功能如光标、字符库、闪烁都需要由软件编制而成。
HD61203和HD61202就是这类液晶显示驱动控制器套件。
之所以称它们为套件是因为HD61203和HD61202必须配套使用,通常有12864和19264两种规格。
其特点如下:
1.内藏64*64=4096位显示RAM,RAM中每位数据对应LCD屏上的一个点的亮、暗状态。
2.HD61202及其兼容控制器是列驱动器,具有64路列驱动输出。
3.HD61202及其兼容控制驱动器读、写时序与68系列微处理妻相符,因此它可直接与68系列微处理器借口相联。
4.HD61202及其兼容控制器的占空比为1/32~1/64。
2.2.3液晶显示模块的特点
MGLS-12864图形液晶显示模块的驱动和控制系统是由一片KS0107B或兼容驱动器(HD61203)作为行驱动器和两片KS0108B或兼容驱动器(HD61203)作为列驱动器组成的。
它的主要技术参数及其供电特点如下:
(1)电源:
DC+5V,模块内自带用于LCD驱动的负压电路。
(2)显示内容:
128
64全屏幕点阵。
(3)指令形式:
七种指令。
(4)接口形式:
与控制器采用8位数据总线和8位控制线相连。
(5)工作环境:
-10~+50℃。
(6)模块应用有三种电源:
逻辑电源、液晶驱动电压、背光电压。
(7)本次选用的模块是双电源供电(VDD/V0),需要提供一个液晶驱动电压,用以调节对比度,接在液晶模块的V0引脚上,由于液晶的对比度会随着温度的变化而相应变化,所以其液晶显示驱动电压值应随着温度作相应的调整,这里采用了一个电位器,调整电压值。
(8)背光供电为3.8-4.1V的支流电源,选用电源太大不仅增加功耗,更有可能损坏背光灯和缩短模块的使用寿命。
MGLS-12864液晶显示模块一共有20个引脚,它的接口定义如下:
表2-2MGLS-12864的接口电路
序号
符号
状态
功 能
1
D7
三态
数据总线
2
D6
三态
数据总线
3
D5
三态
数据总线
4
D4
三态
数据总线
5
D3
三态
数据总线
6
D2
三态
数据总线
7
D1
三态
数据总线
8
D0
三态
数据总线
9
E
输入
R/W=“L”,E的下降沿锁存数据线
R/W=“H”,E为“H”时,数据由控制器输出至数据线
10
R/W
输入
R/W=“L”,E=“H”数据由控制器输出数据线
R/W=“H”,E的下降沿,数据由数据线输入到控制器
11
D/I
输入
D/I=“L”,表示DB7~DB0为显示数据
D/I=“H”,表示DB7~DB0为显示指令
12
V0
—
液晶显示器驱动电压
13
VCC
—
电源正
14
GND
—
电源地
15
CS1
输入
片选信号
16
CS2
输入
片选信号
17
VOUT
—
LCD负压驱动电压
18
RET
输入
复位信号
19
LED+
—
显示模块背光电源
20
LED-
—
显示模块背光电源
2.3硬件电路设计
经过对以上对ATmega16L芯片的端口、存储器、时钟电路、以及复位电路和LCD液晶显示等原理的介绍后,现在就可以完成对这部分硬件电路的设计了。
再结合前面的分析采用间接访问的方式实现单片机与液晶显示模块之间的连接。
LCD模块的8位数据线接在了Atmega16L芯片B口的8位数据线上,这里用了一个74LS24作为锁存器使它们间接连接在一起。
LCD的EN、D/I、CS1、CS2、R/W分别连接到PA3~PA7上,其详细的接法见下图
图2-8硬件接线图
2.4PROTEL99的应用简介
经过前面的努力,智能充电器硬件电路的设计在本人及同组人的共同努力下已经完成,接下来便是根据前面的设计用软件画出其原理图并生成PCB板。
PROTEL99SE是一个全32位的电路板设计软件,使用该软件可以容易地设计电路原理图、画元件图、设计电路板图、画元件封装图和电路仿真。
在这里主要用它来绘制电路原理图和生成印制电路板。
原理图的设计步骤如下:
(1)设置原理图设计环境。
其中,工作环境设置是使用Design/Options和Tool和Preferences菜单进行的,画原理图环境的设置主要包括图纸大小、捕捉栅格、电气栅格、模板设置等。
(2)放置元件,将电气和电子元件放置在图纸上。
(3)原理图布线。
元件一旦放置在原理图上,不需要用导线将元件连接起来,连接时一定要符合电气规则。
(4)编辑和调整。
编辑元件的属性。
包括元件名、参数、封装图等。
调整元件和导线的位置等操作。
本次设计所用的主要元件属性如下:
表2-3主要元件表
说明
编号
封装
元件名称
单片机
U1
DIP-40
Atmega16
LCD
J2
DIP-20
LCD模块
电阻
R
AXIAL0.3
RES2
电容
C
RAD0.1
CAP
锁存器
U5
DIP-20
74LS245
NPN三极管
Q
TO46
2N2222A
晶体
X
XTAL-1
XTAL
通用运放
U2A,U2B
DIP8
LM358
(5)检查原理图。
使用电气规则功能(ERC)检查原理图的连接是否合理和正确。
给出检查报告,若有错误则要根据错误进行改正。
(6)生成网络表。
所谓网络表就是元件名、封装、参数及元件之间的连接表,通过该表可以确认各个元件和它们之间的关系。
(7)打印原理图。
第三章软件设计
由于本人主要负责设计软件部分,而本人之前对C语言这门课的学习不是非常的精通,因此在着手本章之前本人对C语言以及AVR单片机与C语言编程方面的书籍做了认真仔细的回顾、学习和再研究,这样才对下面设计工作的开展打下了基础。
在本章里,本人将先介绍C语言开发的优势,然后介绍LCD的显示原理、模块的软件特性等,接下来便是最主要的整个程序的设计。
3.1.用C语言开发单片机的优势
C语言是一种编译型的结构化程序设计语言,具有简单的语法结构和强大的处理功能,具有运行速度快、编译效率高,移植性好和可读性强等多种优点,可以实现对系统便件的直接操作。
用C语言来编写目标系统软件,可以大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而开发出大规模、高性能的应用系统。
其优势如下:
(1)可以大幅度加快开发进度,程序量越大,用C语言就越有优势。
(2)无需精通单片机指令集和具体的硬件,也能够编出符合硬件实际专业水平的程序。
(3)可以实现软件的结构化编程,使得软件的逻辑结构变得清晰、有条理、便于开发小组计划任务、分工合作。
源程序的可读性和可维护性都很好。
(4)省去了人工分配单片机资源的工作,在汇编语言中要为每一个子程序分配单片机的资源。
(5)汇编语言的可移植性很差,而C语言只要将一些与硬件相关的代码作适当的修改,就可以方便地移植到其它种类的单片机上。
(6)C语言提供auto、static、flash等存储类型,针对单片机的程序存储空间、数据存储空间及EEPROM空间自动为变量合理地分配空间,而且C语言提供复杂的数据类型,极大地增强了程序处理能力和灵活性。
(7)对于一些复杂系统的开发,可以通过移植(或C编译器提供)的实时操作系统来实现。
3.2液晶显示汉字或字符的原理
LCD本身不发光只是调节光的亮度,目前市面上的LCD显示器都是利用液晶的扭曲一向列效应制成,这是一种电场效应,夹在两片导电玻璃电极间的液晶经过一定处理,它内部的分子呈直角扭曲,当线性偏振光透过其偏振面便会旋转一个直角。
当在玻璃电极上加上电压后,在电场作用下,液晶的扭曲结构消失,偏振光便可以直接通过。
当去掉电场后液晶分子又恢复取扭曲结构。
把这样的液晶置于两个偏振片之间,改变偏振片相对位置就可以得到白底黑子或黑底白字的显示形式。
结合以上知识具体显示原理如下:
(1)线段的显示
点阵图形式液晶由M*N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16*8=128个点组成,屏上64*16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。
例如屏的第一行的亮暗由RAM区的00H~00FH的16字节的内容决定,当(000)=FFH时,如屏的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则显示屏的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=FFH,(003H)=00H,…(00EH)=FFH,(00FH)=00H时,则在屏的顶部显示一条由8段亮线和8段暗线组成的虚线。
这就是LCD显示的基本原理。
(2)字符的显示
用LCD显示一个字符时比较复杂,因为一个字符由6*8或8*8点阵组成,既要找到和显示屏上某几个位置对应的显示RAM区的8字节,还要使每字节的不同的位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮,这样一来就组成某个字符。
但对于内带字符发生器的控制器(如HD61202)来说,显示字符就比较简单了,可让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。
3.3LCD模块的指令说明
要完成显示程序的设计,必须了解LCD液晶模块的指令系统。
这里采用的LCD是北京精电蓬远显示技术公司生产的MGLS系列图形液晶显示模块,其内藏KS0108B/HD61202控制器。
KS0108B及其兼容控制驱动器(HD61202)的指令系统比较简单,一共只有7条指令,从作用上可分为两类。
第一条指令和第二条指令为显示状态设置类;其余指令为数据读/写操作指令。
下面是各个指令的功能:
1.读状态指令
R/WRS
DB7DB6DB5DB4DB3DB2DB1DB0
10
BUSY0ON/OFFREST0000
状态字是计算机了解HD61202及其兼容控制驱动器当前状态,或是HD61202及其兼容控制驱动器向计算机提供其内部状态的唯一的信息渠道。
状态字为一字节,其中仅有3位有效位,它们是:
BUSY表示当前HD61202接口控制电路运行状态。
BUSY=1表示HD61202正在处理计算机发来的指令或数据。
此时接口电路被封锁,不能接受除读状态字以外的任何操作。
BUSY=0表示HD61202接口电路已处于“准备好”状态,等待计算机的访问。
ON/OFF表示当前的显示状态。
ON/OFF=1表示关显示状态;ON/OFF=0表示开显示状态。
RESET表示当前HD61202的工作状态,即反映RST端的电平状态。
当RST为低电平状态时,HD61202处于复位工作状态,RESET=1;当RST为高电平状态时,HD61202为正常工作状态,RESET=0。
2.显示开关指令
R/WRS
DB7DB6DB5DB4DB3DB2DB1DB0
00
00111111/0
该指令设置显示开/关触发器的状态,由此控制显示数据锁存器的工作方式,从而控制显示屏上的显示状态。
D位为显示开/关控制位。
当D=1为开显示设置,显示数据锁存器正常工作,显示屏上呈现所需的显示效果。
显示起始行设置指令
R/WRS
DB7DB6DB5DB