资源描述
智能蓄电池充电控制器的设计
摘 要
电子技术的快速发展使得各种各样的电子产品都朝着便携式和小型轻量化的方向发展,也使得更多的电气化产品采用基于电池的供电系统。目前,较多使用的电池有镍镉、镍氢、铅蓄电池和锂电池。它们的各自特点决定了它们将在相当长的时期内共存发展。由于不同类型电池的充电特性不同,通常对不同类型,甚至不同电压、容量等级的电池使用不同的充电器,但这在实际使用中有诸多不便。
本文在综合考虑电池安全充电的成本、设计效率及重要性的基础上,利用 AT89C52微控制器实现锂离子电池充电器的原理和方法。AT89C52系列单片机由于其超低功耗,性能强大,稳定性好等多方面优点成为本次设计的首选芯片。本文撰写的主导思想是软、硬件相结合,以硬件为基础,来进行各功能模块的编写。
第一部分中介绍了本课题的课题背景、研究意义及预期研究目标。
第二部分简单描述了系统硬件工作原理,且附以系统硬件设计框图,并介绍了单片机微处理器的发展史,论述了本毕业设计所用到的各硬件接口技术和各个接口模块的功能及工作过程。
第三部分阐述了程序的流程和实现过程。最后对用单片机实现LCD液晶显示器控制原理的设计思想和软、硬件调试作了详细的论述。
该智能充电器具有检测电池的状态;自动切换充电模式以满足充电电池的充电需要;充电状态显示的功能。在生活中更好的维护了充电电池,延长了它的使用寿命。
关键词:AT89C52 LCD A/D转换 智能控制 硬件构成
ABSTRACT
Electronic technology's fast development causes various electronic products develops toward portable and the small lightweight direction, It also causes the more electrification products to use based on battery's power supply system. At present, the many use's batteries have the nickel cadmium, the nickel hydrogen, the lead accumulator and the lithium battery. Their respective characteristic had decided they will coexist in a long time develop. Because the different type battery's charge characteristic is different, usually to different type, even different voltage, capacity rank battery use different battery charger, but this has many inconveniences in the actual use.
In this paper, taking into account the cost of charging the battery safety, efficiency and the importance of design, based on the AT89C52 microcontroller using Li-Ion battery charger to achieve the principles and methods. AT89C52 family of single chip because of its ultra-low power consumption, powerful performance, the advantages of good stability and so become the first choice for the design of the chip.
The main idea of this paper is the software and hardware combination, regarding hardware as the foundation, for the writing preparation of the functional modules.
In the first part, the subject background, research meaning and expected research objectives were introduced.
In the second part, the working principle of the system hardware was simply described and the system block diagram of hardware design was attached. The history of the development of single chip microprocessor was introduced and the hardware interface technology and the function and work process of each interface module used in the graduation paper were also discussed.
In the third part, the process and realization of the program were elaborated. Finally, the design ideas of the MCU control principle realized by single chip LCD and software or hardware debugging are discussed in detail.
The intelligence battery charger has the examination battery's condition; The automatic cut over charge pattern meets when rechargeable battery's charge needs; The charge condition demonstration's function. The battery charger has made the better maintenance rechargeable battery in the life,and lengthened the rechargeable battery’s service life.
Keywords: AT89C52 LCD A/D convert Intelligent charger Hardware structure
目 录
摘 要 Ⅰ
ABSTRACT Ⅱ
第1章 概述 1
1.1绪论 1
1.1.1 课题背景 1
1.1.2 设计任务要求 2
1.1.3 设计思路与方案 2
1.1.4 拟达到的要求或技术指标: 3
1.1.5 设计的优点与不足 4
第2章 硬件电路设计 5
2.1所用单片机AT89S52 5
2.1.1 AT89C52的简介 5
2.1.2 AT89C52的引脚分配 8
2.2模数转换器 8
2.2.1 ADC0809的内部逻辑结构 8
2.2.2 ADC0809引脚结构 9
2.2.3 ADC0809应用说明 11
2.3 LCD液晶显示 11
2.3.1 LCD的简介 11
2.3.2 液晶显示模块两种访问方式接口电路的选择 14
2.4 电源电路的设计 16
第3章 软件设计 17
3.1 用C语言开发单片机的优势 17
3.2 系统程序流程图 18
3.2.1 主程序流程图 18
3.2.2 程序设计 18
第4章 系统调试 26
4.1 系统调试软件介绍 26
4.2 仿真调试步骤 26
第5章 测试 29
总结 30
致谢 31
参考文献 32
附录1 硬件电路原理图 33
附录2 仿真电路图 34
附录3 PCB电路图 35
第1章 概述
1.1绪论
1.1.1 课题背景
如今,随着越来越多的手持式电器的出现,对高性能、小尺寸、重量轻的电池充电器的需求也越来越大。电池技术的持续进步也要求更复杂的充电算法以实现快速、安全的充电。因此需要对充电过程进行更精确的监控,以缩短充电时间、达到最大的电池容量,并防止电池损坏。与此同时,对充电电池的性能和工作寿命的要求也不断地提高。从20世纪60年代的商用镍镉和密封铅酸电池到近几年的镍氢和锂离子技术,可充电电池容量和性能得到了飞速的发展。目前各种电器使用的充电电池主要有镍镉电池(NiCd)、镍氢电池(NiMH)、锂电池(Li-Ion)和密封铅酸电池(SLA)四种类型。
电池充电是通过逆向化学反应将能量存储到化学系统里实现的。由于使用的化学物质的不同,电池有自己的特性。设计充电器时要仔细了解这些特性以防止过度充电而损坏电。
目前,市场上卖得最多的是旅行充电器,但是严格从充电电路上分析,只有很少部分充电器才能真正意义上被称为智能充电器,随着越来越多的手持式电器的出现,对高性能、小尺寸、轻重量的电池充电器的需求也越来越大。电池技术的持续进步也要求更复杂的充电算法以实现快速、安全地充电,因此,需要对充电过程进行更精确地监控(例如对充、放电电流、充电电压、温度等的监控),以缩短充电时间,达到最大的电池容量,并防止电池损坏。因此,智能型充电电路通常包括了恒流/恒压控制环路、电池电压监测电路、电池温度检测电路、外部显示电路(LED或LCD显示)等基本单元。其框图如下:
外部电源
电源转换装置
电压控制
电流控制
温度控制
时间控制
智能单元
显示控制
电池
图 1 常用智能型充电电路机构框图
1.1.2 设计任务要求
根据铅酸蓄电池的特点设计一个智能蓄电池充电控制器,能检测蓄电池的电压电量状况、温度状况;采取相应的充电措施、充分保护蓄电池。
(1)确定系统的设计方案;
(2)设计相应的硬件电路;
(3)设计相应的软;
(4)完成系统软、硬件调试;
1.1.3 设计思路与方案
1.思路:
本次主要是要设计出一个能自行检测出蓄电池的电量状态并判断出蓄电池是否需要充电,并且控制电路对蓄电池进行充放电控制的智能控制器,并且用液晶显示出来。我们可以利用了单片机对数据的处理功能和继电器对电路控制的功能,通过两者相互辅助达到智能化判断和实现控制的功能。至于显示部分我们可以用LCD连接单片机进行显示。
2.方案:
首先将继电器接在蓄电池和充电电路的中间。待蓄电池接入充电电路当中,对蓄电池进行电压和温度信号采集。然后把信号传输到单片机中,通过预先的C语言编程控制单片机对信号进行智能分析一方面单片机把电压和温度信号传到液晶显示器中显示出来。另一方面单片机在分析处理好电压信号之后发送给继电器一个充放电指令来控制充电电路的开断,当单片机判断出蓄电池需要充电时继电器将闭合使蓄电池接入充电电路进行充电,当单片机判断电池已经充满时继电器将断开充电电路结束充电达到对蓄电池的保护从而最终实现智能充放电控制的目的。为使使用者更易判断出蓄电池充电状态,我在有液晶显示的基础上再
加上了黄绿灯指示灯来更好的提醒使用者控制器的状态。
电压控制
温度监测
蓄电池电压监测
外部电路
电源转换装置
智能控制模块
LCD显示
继电器
指示灯显示
3. 结构框图:
4.
图2 智能控制器基本结构框图
1.1.4 拟达到的要求或技术指标:
1)当蓄电池接入控制器时控制器能够检测出蓄电池的电量状态并通过单片机来判别蓄电池是否需要充电:
① 当检测到蓄电池电压低于12V时,单片机发送指令给继电器,继电器接通电路对蓄电池进行充电。
① 当蓄电池电压超过12V时,控制器将自动停止充电。
2)能够通过显示出蓄电池的电量与控制器当前所处的状态
① 当蓄电池在充电时,黄灯会亮起,LCD将显示出当前蓄电池的电量和当前蓄电池的温度。
② 当蓄电池充满时,电量显示为“FULL”,此时绿灯亮,表示蓄电池充电已满,提醒用户可取下蓄电池。
1.1.5 设计的优点与不足
(1)优点
v 实时检测功能:在传统充电器的基础上加上了单片机控制模块能够实时的监测控制器状态 ;
v 智能控制:结合了单片机与继电器的智能控制功能,能自主地控制充电器充电,从而保证蓄电池电量充足;
v 蓄电池保护:当蓄电池充满时能够主动断开充电防止过充伤害电池,从而达到保护蓄电池的功能;
v 液晶显示:增加了液晶显示功能,能更直观地显示出蓄电池的电量与温度;
v 热心提示:辅助的充放电指示灯,更有效地提醒用户蓄电池已经充满可以使用;
(2)不足
v 充电模式单一:只能进行快速充电,不能根据用户需要转换成其他模式;
v 保护模式单一:只能在蓄电池充满时才会断开保护蓄电池,期间如果出现异常。例如:蓄电池短路,蓄电池过热等可能损害蓄电池安全的状况,控制器不能达到及时断电保护蓄电池安全;
v 显示方面还有很大改进:暂时不能计算出充电所需时间;
v 稳定性差:暂时只是实验阶段,偶尔会出现异常。
第2章 硬件电路设计
在整个控制当中单片机的地位至关重要,它是控制器的大脑,决定着控制器是否能够实现智能化。其次模数转换器也必不可少。对于需要液晶显示的控制器来说LCD也是必不可少的。当然最终实现所有功能,提供电压的电源电路也不可忽视。所以在这章将主要对这几大块进行说明。
2.1所用单片机AT89S52
单片机AT89S52,它是美国ATMEL公司生产的低电压,高性能COMS 8位单片机,片内含4KB的可反复擦写的只读程序存储器(PEROM)和128B的随机存取数据存储器(RAM),同时片内置通用8位中央处理器(CPU)和FLASH存储单元,全面兼容标准的MCS-51指令系统,可适用于众多的控制领域.
2.1.1 AT89C52的简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。AT89C系列单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
(1)主要特性:
·与MCS-51 兼容
·4K字节可编程闪烁存储器
·寿命:1000写/擦循环
·数据保留时间:10年
·全静态工作:0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
(2)管脚说明:
VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口:也可作为AT89C51的一些特殊功能口,如下表1所示:
表1 P3口功能
口管脚
备选功能
P3.0/RXD
(串行输入口)
P3.1/ TXD
(串行输出口)
P3.2/INT0
(外部中断0)
P3.3/INT1
(外部中断1)
P3.4 T0
(记时器0外部输入)
P3.5 T1
(记时器1外部输入)
P3.6/WR
(外部数据存储器写选通)
P3.7/RD
(外部数据存储器读选通)
P3口:同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。
EA/VPP:当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
(3)振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
(4)芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
2.1.2 AT89C52的引脚分配
这里只说明一下重要的引脚接口,其他基本系统模块省略。
·P00-P07:液晶显示;
·P10-P17:模数数据通讯;
·P23:电池充满指示灯控制;
·P27:电池充电指示灯控制;
·P25:蓄电池电压信号通讯;
2.2模数转换器
ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。
2.2.1 ADC0809的内部逻辑结构
由下图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
八路模拟量开关
地址锁存与译码器
八
路
AD
转
换
器
三
态
输
出
锁
存
器
IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
D0
D1
D2
D3
D4
D5
D6
D7
DOC
CLK
ST
vref(+)
vref(-)
OE
A
B
C
ALE
图3 ADC0809结构图
2.2.2 ADC0809引脚结构
ADC0809各脚功能如下:
·D7-D0:8位数字量输出引脚。
·IN0-IN7:8位模拟量输入引脚。
·VCC:+5V工作电压。
·GND:地。
·REF(+):参考电压正端。
·REF(-):参考电压负端。
·START:A/D转换启动信号输入端。
·ALE:地址锁存允许信号输入端。
(以上两种信号用于启动A/D转换).
·EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平
·OE:输出允许控制端,用以打开三态数据输出锁存器。
·CLK:时钟信号输入端(一般为500KHz)。
·A、B、C:地址输入线。
IN3 IN2
IN4 IN1
IN5 IN0
IN6 A
IN7 B
ST C
EOC ALE
D3 D7
OE D6
LCK D5
VCC D4
VREF+ D0
GND VREF+
D1 D2
引脚
1
2
3
4
5
6
7
8
9
10
11
12
13
14
引脚
28
27
26
25
24
23
22
21
20
19
18
17
16
15
图4 ADC0809引脚图
ADC0809对输入模拟量要求:信号单极性,电压范围是0-12V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。
地址输入和控制线:4条
ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进入转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。通道选择表如下表所示。
表2 通道选择表
C
B
A
选择的通道
0
0
0
IN0
0
0
1
IN1
0
1
0
IN2
0
1
1
IN3
1
0
0
IN4
1
0
1
IN5
1
1
0
IN6
1
1
1
IN7
数字量输出及控制线:11条
ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。
CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ, VREF(+),VREF(-)为参考电压输入。
2.2.3 ADC0809应用说明
(1)ADC0809内部带有输出锁存器,可以与AT89S52单片机直接相连。
(2)初始化时,使ST和OE信号全为低电平。
(3)送要转换的哪一通道的地址到A,B,C端口上。
(4)在ST端给出一个至少有100ns宽的正脉冲信号。
(5)是否转换完毕,我们根据EOC信号来判断。
(6)当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。
2.3 LCD液晶显示
2.3.1 LCD的简介
1.管脚功能
1602采用标准的16脚接口,其中:
·第1脚:VSS为电源地
·第2脚:VDD接5V电源正极
·第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
·第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
·第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。
·第6脚:E(或EN)端为使能(enable)端。
·第7~14脚:D0~D7为8位双向数据端。
·第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。
2.1602LCD的特性
·n+5V电压,对比度可调
·n内含复位电路
·n提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能
·n有80字节显示数据存储器DDRAM
·n内建有192个5X7点阵的字型的字符发生器CGROM
·n8个可由用户自定义的5X7的字符发生器CGRAM
3.1602LCD特征及应用范围
微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。
4.字符集
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’。
读的时候,先读左边那列,再读上面那行,如:感叹号!的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。
5.指令集
·1602通过D0~D7的8位数据端传输数据和指令。
·显示模式设置:(初始化)
·0011 0000 [0x38] 设置16×2显示,5×7点阵,8位数据接口;
·显示开关及光标设置: (初始化)
·0000 1DCB D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)
·0000 01NS N=1(读或写一个字符后地址指针加1 &光标加1)
·N=0(读或写一个字符后地址指针减1 &光标减1),
·S=1 且 N=1 (当写一个字符后,整屏显示左移)
·s=0 当写一个字符后,整屏显示不移动
·数据指针设置:
·数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)
其他设置:
01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。
6. 显示地址
显示地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
00H
01H
02H
03H
04H
05H
06H
07H
08H
09H
0AH
0BH
0CH
0DH
0EH
0FH
40H
41H
42H
43H
44H
45H
46H
47H
48H
49H
4AH
4BH
4CH
4DH
4EH
4FH
2.3.2 液晶显示模块两种访问方式接口电路的选择
单片机与液晶显示模块之间的连接方式分为直接访问方式和为间接控制方式两种。如图2.7和图2.8所示,其中左为单片机,右为液晶显示模块。
(一) 直接访问方式
数据总线
PD0
PD1
PD2
PD3
PD4
PD5
PD6
PD7
RD
WE
P2.3
P2.2
P2.1
P2.0
DB0
DB1
DB2
DB3
DB4
DB5
DB6
DB7
GND
VCC
V0
E
/CSA
/CSB
R/W
D/I
10K
GND
+5V
电位器
负电源
1
3
74LS00
MPU LCM接口
图5 直接访问方式电路图
直接访问方式就是将液晶显示模块的接口作为存储器或I/O设备直接挂在单片机总线上,单片机以访问存储器或I/O设备的方式操作液晶显示模块的工作。直接访问方式的接口电路如图2-7所示,在图中,单片机通过高位地址A11控制CSA,A10控制CSB,以选通液晶显示屏上各区的控制器;同时用地址A9作为R/W信号控制数据总线的数据流向;用地址A8作为D/I信号控制寄存器的选择,E(使能)信号由RD和WE共同产生,这样就实现了单片机对液晶显示模块的电路边接。电位器用于显示对比度的调节。
(二) 间接控制方式
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
P3.4
P3.3
P3.2
P3.1
P3.0
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
/CSA
/CSB
E
R/W
D/I
VCC
V0
GND
电
位
器
+5V
负电源
GND
MPU LCM接口
图6 间接访问方式电路图
间接控制方式是单片机通过自身的或系统中的并行接口与液晶显示模块连接。单片机通过对这些接口的操作,以达到对液晶显示模块的控制。这种方式的特点就是电路简单,控制时序由软件实现,可以实现高速单片机与液晶显示模块的接口。电路图如图2.8所示。在图中以 P1口作为数据口,P3.4为CSA,P3.3为CSB,P3.2为使能端,P3.1为R/W和P3.0为D/I信号。电位器用于显示对比度的调节。
通过比较再结合本次设计的实际条件,由于Atmega16L芯片没有WR、RD管脚,而且为了使电路简单且方便软件实现,所以最终决定采用间接控制的方式来设计LCD显示电路。
2.4 电源电路的设计
在本次的设计中,要供电给AT89C52和LCD显示模块两部分,而一个LM7805的输出电流不足,所以本人打算将AT89C52和显示模块分别供电,所以实际电路中用到了两片7805。下面就一个电源电路给出设计方案,另一个同样原理。12V电源电路的设计
图7 12V的电源电路设计原理图
上图是LM7805作为输出电压固定的典型电路图,正常工作时,输入、输出电压差为3-8V。输入电压PS为15V。电路中接入电容C5用来实现频率补偿,防止稳压器产生高频自激振荡和抑止电路引入的干扰,C11是有极性的电解电容,以减小稳压电压输出端由输入电源引入的电平干扰。D1是保护二极管,当输入端短路时,给输出电容器C11一个放电电路,防止C11两端电压作用于调压管的be结,造成调压管be结击穿而损坏。其中C5、C11两个电容只是起滤波作用选用的大小没有特别的要求。
第3章 软件设计
软件设计当中最重要的是对单片机进行编程。在设计过程中我使用了C语言。在本章里,本人将先介绍C语言开发的优势,然后便是最主要的整个程序设计的流程图和吧编写的程序。
3.1 用C语言开发单片机的优势
C语言是一种编译型的结构化程序设计语言,具有简单的语法结构和强大的处理功能,具有运行速度快、编译效率高,移植性好和可读性强等多种优点,可以实现对系统便件的直接操作。用C语言来编写目标系统软件,可以大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而开发出大规模、高性能的应用系统。其优势如下:
(1)可以大幅度加快开发进度,程序量越大,用C语言就越有优势。
(2)无需精通单片机指令集和具体的硬件,也能够编出符合硬件实际专业水平的程序。
(3)可以实现软件的结构化编程,使得软件的逻辑结构变得清晰、有条理、便于开发小组计划任务、分工合作。源程序的可读性和可维护性都很好。
(4)省去了人工分配单片机资源的工作,在汇编语言中要为每一个子程序分配单片机的资源。在使用C语言后,只要在代码中申明一下变量的类型,编译器就会自动分配相关资源,根本不需要人工干预,从而有效地避免了人工分配单片机资源的差错。
(5)汇编语言的可移植性很差,而C语言只要将一些与硬件相关的代码作适当的修改,就可以方便地移植到其它种类的单片机上。
(6)C语言提供auto、static、flash等存储类型,针对单片机的程序存储空间、数据存储空间及EEPROM空间自动为变量合理地分配空间,而且C语言提供复杂的数据类型,极大地增强了程序处理能力和灵活性。C编译器能够自动实现中断服务程序的现场保护和恢复,并且提供常用的标准函数库,供用户使用。并且C编译器能自动生成一些硬件的初始化代码。
(7)对于一些复杂系统的开发,可以通过移植(或C编译器提供)的实时操作系统来实现。
正由于C语言在系统开发中的优势,这次设计的所有程序设计都将采用C语言编写。
3.2 系统程序流程图
3.2.1 主程序流程图
这次设计课题的主要内容是在充电器的充电控制过程中,采集参数,进行电压、温度的实时显示,并且控制蓄电池的充放电。其主流程图设计如下:
开始
初始化
电压、温度显示
展开阅读全文