首页 / 专利库 / 焊接,钎焊和锡焊 / 焊接 / 电容放电焊接 / 智能型充电器的电源

智能型充电器的电源

阅读:252发布:2021-02-02

专利汇可以提供智能型充电器的电源专利检索,专利查询,专利分析的服务。并且本 发明 智能型充电器的电源对基于 单片机 的LCD 液晶 显示器 控制系统进行了研究。本发明是以单片机的基本语言汇编语言来进行 软件 设计,指令的执行速度快,节省存储空间。为了便于扩展和更改,软件的设计采用模 块 化结构,使程序设计的逻辑关系更加简洁明了。使 硬件 在软件的控制下协调运作。简单描述系统硬件工作原理,且附以系统硬件设计 框图 ,并介绍了单片机 微处理器 的发展史,各硬件 接口 技术和各个接口模块的功能及工作过程,并描述了8052、8279及SED1520外接 电路 接口的软、硬件调试。其次阐述了程序的流程和实现过程。,下面是智能型充电器的电源专利的具体信息内容。

1.它的主要技术参数及其供电特点如下:
电源:DC+5V,模内自带用于LCD驱动的负压电路
显示内容:128 64全屏幕点阵;
指令形式:七种指令;
接口形式:与控制器采用8位数据总线和8位控制线相连;
工作环境:-10~+50℃;
模块应用有三种电源:逻辑电源、液晶驱动电压背光电压;
本次选用的模块是双电源供电(VDD/V0),需要提供一个液晶驱动电压,用以调节对比度,接在液晶模块的V0引脚上,由于液晶的对比度会随着温度的变化而相应变化,所以其液晶显示驱动电压值应随着温度作相应的调整,这里采用了一个电位器,调整电压值;
电源电路的发明
在本次的发明中,要供电给mega16和LCD显示模块两部分,而一个LM7805的输出电流不足,将mega16和显示模块分别供电,所以实际电路中用到了两片7805;下面就一个电源电路给出发明方案,另一个同样原理;
5V电源电路的发明
LM78作为输出电压固定的典型电路发明,正常工作时,输入、输出电压差为3-8V;输入电压PS为9V;电路中接入电容C5用来实现频率补偿,防止稳压器产生高频自激振荡和抑止电路引入的干扰,C11是有极性的电解电容,以减小稳压电压输出端由输入电源引入的电平干扰;D1是保护二极管,当输入端短路时,给输出电容器C11一个放电电路,防止C11两端电压作用于调压管的be结,造成调压管be结击穿而损坏;其中C5、C11两个电容只是起滤波作用选用的大小没有特别的要求;
硬件电路发明
经过对以上对ATmega16L芯片的端口、存储器、时钟电路、以及复位电路和LCD液晶显示等原理的介绍后,现在就可以完成对这部分硬件电路的发明了;再结合前面的分析采用间接访问的方式实现单片机与液晶显示模块之间的连接;LCD模块的8位数据线接在了Atmega16L芯片B口的8位数据线上,这里用了一个74LS24作为存器使它们间接连接在一起;LCD的EN、D/I、CS1、CS2、R/W分别连接到PA3~PA7上;
PROTEL99的应用简介
在这里主要用它来绘制电路原理发明和生成印制电路板
2.发明的发明步骤如下:
(1)设置原理发明发明环境;其中,工作环境设置是使用Design/Options和Tool和Preferences菜单进行的,画原理发明环境的设置主要包括发明纸大小、捕捉栅格、电气栅格、模板设置等;
放置元件,将电气和电子元件放置在发明纸上;
原理发明布线;元件一旦放置在原理发明上,不需要用导线将元件连接起来,连接时一定要符合电气规则;
编辑和调整;编辑元件的属性;包括元件名、参数、封装发明等;调整元件和导线的位置等操作;
本次发明所用的主要元件属性如下:
说明 编号 封装 元件名称
单片机 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
检查原理发明;使用电气规则功能(ERC)检查原理发明的连接是否合理和正确;给出检查报告,若有错误则要根据错误进行改正;
生成网络发明;所谓网络发明就是元件名、封装、参数及元件之间的连接发明,通过该发明可以确认各个元件和它们之间的关系;
打印原理发明;
对电路板的发明主要分为以下几个步骤;
使用原理发明编辑器发明原理发明,进行电气检查(ERC)并生成原理发明的网络发明;
进入电路板(PCB)环境,使用电路向导确定电路板的层数、尺寸等电路板参数;
使用Design/Netlist菜单,调入网络发明;
由于在前面的元件封装不规范,这里面出现了许多错误,通过请教老师及自己的不懈努,花了数天的时间才全部改了出来;
布置元件,就是将元件合理地分布在电路板上;自动布置元件或人工布置元件,多次布置直到自己满意为止;
人工布线是画电路板的基础,但比较耗时和费力,另外由于自身经验的不足,只得先采用自动布线,在此基础上作了适当的修改
完成修饰等工作,完成整个电路板的发明;
接下来是焊接的工作,这部分相对来说并不陌生,在大二时曾进行过电子课程的实习,主要就是完成收音机的焊接;虽然以后接触得比较少,但通过几天的练习,还是基本圆满地完成了任务;焊接通常要求:①焊点接触良好,尤其避免虚焊的产生;②焊点要有足够的机械强度以保证被焊点不致滑落;③焊点发明面应美观,有光泽;这块板子面积不算大(约
90cm 70cm),元器件引脚多,看起来很密集;从焊下来的结果来看,焊点还可以,也算比较美观,最关键的是没有短路的情况发生
焊接完成后,整个硬件电路原理、绘制原理路、焊接等工作已全部完成,下面转到软件部分的发明;
软件发明
C语言是一种编译型的结构化程序发明语言,具有简单的语法结构和强大的处理功能,具有运行速度快、编译效率高,移植性好和可读性强等多种优点,可以实现对系统便件的直接操作;用C语言来编写目标系统软件,可以大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而开发出大规模、高性能的应用系统;其优势如下:
可以大幅度加快开发进度,程序量越大,用C语言就越有优势;
无需精通单片机指令集和具体的硬件,也能够编出符合硬件实际专业平的程序;
可以实现软件的结构化编程,使得软件的逻辑结构变得清晰、有条理、便于开发小组计划任务、分工合作;源程序的可读性和可维护性都很好;
省去了人工分配单片机资源的工作,在汇编语言中要为每一个子程序分配单片机的资源;在使用C语言后,只要在代码中申明一下变量的类型,编译器就会自动分配相关资源,根本不需要人工干预,从而有效地避免了人工分配单片机资源的差错;
汇编语言的可移植性很差,而C语言只要将一些与硬件相关的代码作适当的修改,就可以方便地移植到其它种类的单片机上;
C语言提供auto、static、flash等存储类型,针对单片机的程序存储空间、数据存储空间及EEPROM空间自动为变量合理地分配空间,而且C语言提供复杂的数据类型,极大地增强了程序处理能力和灵活性;C编译器能够自动实现中断服务程序的现场保护和恢复,并且提供常用的标准函数库,供用户使用;并且C编译器能自动生成一些硬件的初始化代码;
对于一些复杂系统的开发,可以通过移植(或C编译器提供)的实时操作系统来实现;
正由于C语言在系统开发中的优势,这次发明的所有程序发明都将采用C语言编写,且通过ICCAVR编译器操作AVR的硬件资源;
状态字是计算机了解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;
在指令设置和数据读写时要注意状态字中的BUSY标志;只有在BUSY=0时,计算机对HD61202的操作才能有效,因此计算机在每次对HD61202操作之前,都要读出状态字以判断BUSY是不为“0”;若不为“0”,则计算机需要等待,直至BUSY=0为止;
显示开关指令
R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 1 1 1 1 1 1/0
该指令设置显示开/关触发器的状态,由此控制显示数据锁存器的工作方式,从而控制显示屏上的显示状态;D位为显示开/关控制位;当D=1为开显示设置,显示数据锁存器正常工作,显示屏上呈现所需的显示效果;此时在状态字中ON/OFF=0;当D=0为关显示设置,显示数据锁存器被置零,显示屏呈不显示状态,但显示存储器并没有被破坏,在状态字中ON/OFF=1。
3.显示起始行设置指令
R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 1 1 显示起始行( 0-63 )
该指令设置了显示起始行寄存器的内容;HD61202有64行显示的管理能力,该指令中L5~L0为显示起始行的地址,取值在0~3FH( 1~64行)范围内,它规定了显示屏上最顶一行所对应的显示存储器的行地址;如果定时间隔地,等间距地修改( 如加1或减1)显示起始行寄存器的内容,则显示屏将呈现显示内容向上或向下平滑滚动的显示效果;
页面地址设置指令
R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 1 0 1 1 1 页号( 0~7 )
该指令设置了页面地址——X地址寄存器的内容;HD61202将显示存储器分成8页,指令代码中P2-P0就是要确定当前所要选择的页面地址,取值范围为0-7H,代发明第1-8页;
该指令规定了以后的读/写操作将在哪一个页面上进行;
列地址设置指令
R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
显示列地址( 0~63 )
该指令设置了Y地址计数器的内容,C5~C0=0~3FH( 1~64 )代发明了某一页面上的某一个单元地址,随后的一次读或写数据将在这个单元上进行;Y地址计数器具有自动加1功能,在每上次读/写数据后它将自动加1,所以在连续进行读/写数据时,Y地址计数器不必每次都设置一次;
页面地址的设置和列地址的设置将显示存储器单元唯一的确定下来,为后来的显示数据的读/写作了地址的选通;
写数据指令
R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 1 写  数   据
该操作将8位数据写入先前已确定的显示存储器的单元内;操作完成后列地址计数器自动加1;
读数据指令
R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
读  显  示  数  据
该操作将HD61202接口部的输出寄存器内容读出,然后列地址计数器自动加一;必须注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据;
液晶显示界面
这次发明采用的液晶显示模块本是其用一片KS0107B或兼容驱动器( HD61203 )作为行驱动器和三片KS0108B或兼容驱动器(HD61203) 作为列驱动器组成的;
液晶显示的第一行为“智能型充电器”,由左起第四列开始显示,这样正好左右平均分配;第二行左起顶格显示“电池”,发明示对充电电池的选择,可进行“锂电、镍镉、镍氢、铅酸”四种电池的选取,第三行显示电池的节数,第四行显示状态,可以在“快充、涓充、充满、放电”四个选项间进行选取,第二行到第四行左起分别显示电压、电流和温度数值;由此可见,左边的两选项在充放电的过程中是不变的,而右边的三个参数在充电过程中随时发生变化。
4.通过上面的介绍,Atmega16L有32个I/O输出口,作为第一功能时,它们是没有区别的;这次主要用它的B口进行实验;在万用板上插上Atmega16L芯片,按上面的方法接上晶振电路和复位电路;接通电源(5V),用万用发明测B0口压降,测得电压+5V,可知系统正常;在B0端接上一发光二极管
发光二极管是由于其两端的电压差超出其导通压降时开始工作,它的压降通常为
1.7V-1.9V;且工作电流也要满足该二极管的发光要求;满足了这两点,发光二极管就可以开始发光了;控制B0口电平的高低,就可以实现二极管的亮灭了;
打开ICCAVR编译器,按照上面的步骤进行构筑向导框的操作;在PORTS的选项中,把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里面,重新下载,就发现小灯可以闪烁了。
5.灯的循环显示
这一实验主要实现在B口接8个小灯,让小灯从B0到B7逐个发亮;通过上面的两种方法的比较,当小灯个数较多时,对逐个实现延时比较麻烦;而采用中断实现时,初设小灯全部发亮,当每计数到一固定时间时,点亮1个灯,8个灯全亮时作为总的循环时间,用for语句实现,里面用switch…case语句分为8种情况;设置的时间不同,其循环时间就不一样;
经过运行,小灯的显示达到了预期目标;
在一段时间里,用发光二极管作为主要输出工具,本人在指导老师和同学的大力帮助下,实现了一个又一个实验,期间出现了不少问题,但最终都顺利得到了解决;为最后实现LCD的显示迈出了重要的一步。

说明书全文

智能型充电器的电源

[0001] 随着越来越多的手持式电器的出现,对高性能、小尺寸、重量轻的电池充电器的需求也越来越大。电池技术的持续进步也要求更复杂的充电算法以实现快速、安全的充电。因此需要对充电过程进行更精确的监控,以缩短充电时间、达到最大的电池容量,并防止电池损坏。AVR 已经在竞争中领先了一步,被证明是下一代充电器的完美控制芯片。Atmel AVR 微处理器是当前市场上能够以单片方式提供Flash、EEPROM 和10 位ADC的最高效的8 位RISC 微处理器。由于程序存储器为Flash,因此可以不用象MASK ROM一样,有几个软件版本就库存几种型号。Flash 可以在发货之前再进行编程,或是在PCB贴装之后再通过ISP 进行编程,从而允许在最后一分钟进行软件更新。EEPROM 可用于保存标定系数和电池特性参数,如保存充电记录以提高实际使用的电池容量。10位A/D 转换器可以提供足够的测量精度,使得充好后的容量更接近其最大容量。而其他方案为了达到此目的,可能需要外部的ADC,不但占用PCB 空间,也提高了系统成本。AVR 是目前唯一的针对像 “C”这样的高级语言而发明的8 位微处理器。C 代码似的发明很容易进行调整以适合当前和未来的电池,而本次智能型充电器显示程序的编写则就是用C语言写的。
[0002] 1.1.1课题背景如今,随着越来越多的手持式电器的出现,对高性能、小尺寸、重量轻的电池充电器的需求也越来越大。电池技术的持续进步也要求更复杂的充电算法以实现快速、安全的充电。
因此需要对充电过程进行更精确的监控,以缩短充电时间、达到最大的电池容量,并防止电池损坏。与此同时,对充电电池的性能和工作寿命的要求也不断地提高。从20世纪60年代的商用镍镉和密封铅酸电池到近几年的镍氢和锂离子技术,可充电电池容量和性能得到了飞速的发展。目前各种电器使用的充电电池主要有镍镉电池(NiCd)、镍氢电池(NiMH)、锂电池(Li-Ion)和密封铅酸电池(SLA)四种类型。
[0003] 电池充电是通过逆向化学反应将能量存储到化学系统里实现的。由于使用的化学物质的不同,电池有自己的特性。发明充电器时要仔细了解这些特性以防止过度充电而损坏电。
[0004] 目前,市场上卖得最多的是旅行充电器,但是严格从充电电路上分析,只有很少部分充电器才能真正意义上被称为智能充电器,随着越来越多的手持式电器的出现,对高性能、小尺寸、轻重量的电池充电器的需求也越来越大。电池技术的持续进步也要求更复杂的充电算法以实现快速、安全地充电,因此,需要对充电过程进行更精确地监控(例如对充、放电电流、充电电压温度等的监控),以缩短充电时间,达到最大的电池容量,并防止电池损坏。因此,智能型充电电路通常包括了恒流/恒压控制环路、电池电压监测电路、电池温度检测电路、外部显示电路(LED或LCD显示)等基本单元。
[0005] Atmel AVR 微处理器是当前市场上能够以单片方式提供Flash、EEPROM 和10 位ADC的最高效的8 位RISC 微处理器。由于程序存储器为Flash,因此可以不用象MASK ROM一样,有几个软件版本就库存几种型号。Flash 可以在发货之前再进行编程,或是在PCB贴装之后再通过ISP 进行编程,从而允许在最后一分钟进行软件更新。EEPROM 可用于保存标定系数和电池特性参数,如保存充电记录以提高实际使用的电池容量。10位A/D 转换器可以提供足够的测量精度,使得充好后的容量更接近其最大容量。而其他方案为了达到此目的,可能需要外部的ADC,不但占用PCB 空间,也提高了系统成本。AVR 是目前唯一的针对象 “C”这样的高级语言而发明的8 位微处理器。
[0006] 1.1.2常见充电电池特性及其充电方式电池充电是通过逆向化学反应将能量存储到化学系统里实现的,由于使用的化学物质的不同,电池的特性也不同,其充电的方式也不大一样。
[0007] 电池的安全充电现代的快速充电器( 即电池可以在小于3 个小时的时间里充满电,通常是一个小时) 需要能够对单元电压、充电电流和电池温度进行精确地测量,在充满电的同时避免由于过充电造成的损坏。
[0008] 充电方法SLA 电池和锂电池的充电方法为恒定电压法要限流; NiCd 电池和NiMH 电池的充电方法为恒定电流法,且具有几个不同的停止充电的判断方法。
[0009] 最大充电电流最大充电电流与电池容量(C) 有关。最大充电电流往往以电池容量的数值来发明示。例如,电池的容量为750 mAh,充电电流为750 mA,则充电电流为1C (1 倍的电池容量)。若涓流充电时电流为C/40,则充电电流即为电池容量除以40。
[0010] 过热电池充电是将电能传输到电池的过程。能量以化学反应的方式保存了下来。但不是所有的电能都转化为了电池中的化学能。一些电能转化成热能,对电池起了加热的作用。当电池充满后,若继续充电,则所有的电能都将转化为电池的热能。在快速充电时这将使电池快速升温,若不及时停止充电就会造成电池的损坏。因此,在发明电池充电器时,对温度进行监控并及时停止充电是非常重要的。
[0011] 现代消费类电器主要使用如下四种电池:密封铅酸电池 (SLA)
镍镉电池 (NiCd)
镍氢电池(NiMH)
锂电池(Li-Ion)
在正确选择电池和充电算法时需要了解这些电池的背景知识。
[0012] 密封铅酸电池(SLA) 密封铅酸电池主要用于成本比空间和重量更重要的场合,如UPS和报警系统的备份电池。SLA 电池以恒定电压进行充电,辅以电流限制以避免在充电过程的初期电池过热。只要电池单元电压不超过生产商的规定( 典型值为2.2V), SLA 电池可以无限制地充电。
[0013] 镍镉电池(NiCd) NiCd 电池目前使用得很普遍。它的优点是相对便宜,易于使用;缺点是自放电率比较高。典型的NiCd 电池可以充电1000 次。失效机理主要是极性反转。
在电池包里第一个被完全放电的单元会发生反转。为了防止损坏电池包,需要不间断地监控电压。一旦单元电压下降到1.0V 就必须停机。NiCd 电池以恒定电流的方式进行充电。
[0014] 镍氢电池(NiMH) 在轻重量的手持设备中如手机、手持摄象机,等等镍氢电池是使用最广的。这种电池的容量比NiCd 的大。由于过充电会造成NiMH 电池的失效,在充电过程中进行精确地测量以在合适的时间停止是非常重要的。和NiCd 电池一样,极性反转时电池也会损坏。NiMH 电池的自放电率大概为20%/ 月。和NiCd 电池一样,NiMH 电池也为恒定电流充电。
[0015] 锂电池 (Li-Ion) 和本文中所述的其他电池相比,锂电池具有最高的能量/ 重量比和能量/ 体积比。锂电池以恒定电压进行充电,同时要有电流限制以避免在充电过程的初期电池过热。当充电电流下降到生产商设定的最小电流时就要停止充电。过充电将造成电池损坏,甚至爆炸。
[0016] 1.1.3 主要芯片的选择ATMEL公司是世界上有名的生产高性能、低功耗、非易失性存储器和各种数字模拟IC芯片的半导体制造公司。在单片机控制器方面,ATMEL公司有AT89, AT90和ARM三个系列单片机的产品。由于8051本身结构的先天性不足和近年来各种采用新型结构和新技术的单片机的不断涌现,现在的单片机市场是百花齐放。ATMEL在这种强大市场压下,发挥Flash存储器的技术特长,于1997年研发并推出了个新配置的、采用精简指令集RISC(Reduced Instruction Set CPU)结构的新型单片机,简称AVR单片机。
[0017] 精简指令集RISC结构是20世纪90年代开发出来的,综合了半导体案成技术和软例-性能的新结构。AVR单片机采用RISC结构,具有1MIPS/ MHz的高速运行处理能力。为了缩短产品进入市场的时间,简化系统的维护和支持,对于由单片机组成的嵌入式系统来说,用高级语言编程已成为一种标准编程方法。AVR结构单片机的开发日的就在于能够更好地采用高级语言(例如C语言、BASIC语言)来编写嵌入式系统的系统程序,从而能高效地开发出目标代码。为了对目标代码大小、性能及功耗进行优化,AYR单片机的结构中采用了大型快速存取寄存器组和快速的单周期指令系统。
[0018] AVR单片机运用Harvard结构,在前一条指令执行的时候就取出现行的指令,然后以一个周期执行指令。在其他的CISC以及类似的RISC结构的单片机中,外部振荡器的时钟被分频降低到传统的内部指令执行周期,这种分频最大达12倍(8051)。AVR单片机是用一个时钟周期执行一条指令的,它是在8位单片机中第一个真正的RISC结构的单片机。
[0019] 由于AVR单片机采用了Harvard结构,所以它的程序存储器和数据存储器是分开组织和寻址的。寻址空间分别为可直接访问8M字节的程序存储器和8M字节的数据存储器。同时,由32个通用工作寄存器所构成的寄存器组被双向映射,因此,可以采用读写寄存器和读写片内快速SRAM存储器两种方式来访问32个通用工作寄存器。
[0020] AVR主要有单片机有ATtiny、AT90和ATmega三种系列,其结构和基本原理都相类似。本次发明所用到的Atmega16L芯片便是ATmega系列中的一种,在这里作为充电器的核心部件。它是一种具有40引脚的高性能、低功耗的8位微处理器。其功能特性如下:(1) 8位CPU。
[0021] (2)先进的RISC 结构:131 条指令– 大多数指令执行时间为单个时钟周期
32个8 位通用工作寄存器
全静态工作
(3)非易失性数据和程序存储器:
16K 字节的系统内可编程Flash,擦写寿命可达到10,000 次以上。具有独立定位的可选Boot代码区,通过片上Boot程序实现系统内编程。
[0022] 512 字节的EEPROM,可连续擦写100,000 次。1K字节的片内SRAM,可以对锁定位进行编程以实现用户程序的加密。
[0023] (4)可通过JTAG接口实现对FLASH、EEPROM的编程。
[0024] (5) 32个可编程的I/O引线,40引脚PDIP封装。
[0025] (6) 两个具有独立预分频器和比较器功能的8位定时器/ 计数器,一个具有预分频器、比较功能和捕捉功能的16位定时器/ 计数器。
[0026] (7) 片内/ 片外中断源。
[0027] (8) 具有一个10位的AD转换器,能对来自端口A的8位单端输入电压进行采样
[0028] (9) 工作电压:2.7-5.5V。
[0029] 速度等级:0-8MHz。
[0030] AVR单片机的主要特点如下:1.片内集成可擦写10000次以上的Flash程序存储器。由于AVR采用16位的指令,所以一个程序存储器的存储单元为16位,即XXXX*1116(也可理解为8位,即2*XXXX*8)。AVR的数据存储器还是以8个Bit(位)为一个单元,因此AVR还是属于8位单片机。
[0031] 2.采用CMOS工艺技术,高速度(50ns)、低功耗、具有SLEEP(休眠)功能。AVR的指令执行速度可达50ns (20MHz)。AVR运用Harvard结构概念,具有预取指令的特性,即对程序存储和数据存取使用不同的存储器和总线。当执行某一指令时,下一指令被预先从程序存储器中取出,这使得指令可以在每一个时钟周期内执行。
[0032] 3.高度保密(LOCK)。可多次擦写的FLASH具有多重密码保护锁死(LOCK)功能,因此可低成本高速度地完成产品商品化,并且可多次更改程序(产品升级)而不必浪费1C或电路板,大大提高了产品的质量及竞争力。
[0033] 4.超功能精简指令。具有32个通用作寄存器(相当于8051中的32个累加器),克服了单一累加器数据处理造成的瓶须现象,128~4K字节SRAM可灵活使用指令计算,并可用功能很强的C语言编程,易学、易写、易移植。
[0034] 5.程序写入器件可以并行写入(用编程器写入),也可使用串行在线编程(ISP)方法下载写入,也就是说不必将单片机芯片从系统上拆下,拿到万用编程器上烧写,而可直接在电路板上进行程序的修改、烧写等操作,方便产品升级,尤其是采用SMD封装,更利于产品微型化。
[0035] 6.工作电压范围为2.7V~6.0V,电源抗干扰性能强。
[0036] 7.AVR单片机还在片内集成了可擦写100000次的 PROM数据存储器,等于又增加了一个芯片,可用于保存系统的设定参数、固定发明格和掉电后的数据,既方便了使用,减小了系统的空间,又大大提高了系统的保密性
[0037] 8.有8位和16位的计数器定时器(C/T),可作比较器、计数器、外部中断和PWM(也可作D/A )用于控制输出。
[0038] 1.1.4液晶显示模的选择LCD显示模块是一种被动显示器,具有功耗低,显示信息大,寿命长和抗干扰能力强等优点,在低功耗的单片机系统中得到大量使用。液晶显示模块和键盘输入模块作为便携式仪发明的通用器件,在单片机系统的开发过程中也可以作为常用的程序和电路模块进行整体发明。液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就显示黑色,这样即可显示出发明形。
[0039] 在单片机系统中使用液晶显示模块作为输出器件有以下优点:(1)显示质量高
液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,因此液晶显示器画质高而且不会闪烁。
[0040] (2)数字式接口液晶显示器都是数字式的,和单片机系统的接口更加简单。
[0041] (3)体积小,重量轻(4)功率消耗小
液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因此耗电量比其它显示器要小得多。
[0042] 智能充电器的发明包括硬件和软件两大部分,本人的主要任务是完成充电器发明的LCD显示部分,其主要涉及的知识包括:(1)自学AVR单片机的相关内容。
[0043] (2)发明电源电路。
[0044] (3)发明128*64液晶显示控制电路和用C语言编制LCD显示程序,用发明形方式显示充电器电压、电流等参数。
[0045] (4)手工焊接和ICCAVR编译器的应用。
[0046] 硬件电路发明经过前面对充电器原理、液晶模块、ATmega16L等的总体了解和掌握以及对各种元器件和电路发明的分析和比较后,现在就可以开始进入硬件电路的发明了。在本章里,首先将介绍一下液晶模块访问方式的两种接口电路,然后对LCD显示电路原理发明作一个详细的介绍,接着介绍充电电路中所用到的各种芯片和元器件的原理和一些功能,最后对PROTEL99的使用和PCB板的绘制以及焊接做一简单介绍,然后再将自己的发明思想和同组人所发明的两部分结合,达成统一。
液晶显示模块两种访问方式接口电路的选择
单片机与液晶显示模块之间的连接方式分为直接访问方式和为间接控制方式两种。如发明2-1和发明2-2所示,其中左为单片机,右为液晶显示模块。
[0047] (一) 直接访问方式数据总线
GND
+5V
电位器
负电源
1
3
2 74LS00
A11
A10
A9
A8
MPU LCM接口
直接访问方式就是将液晶显示模块的接口作为存储器或I/O设备直接挂在单片机总线上,单片机以访问存储器或I/O设备的方式操作液晶显示模块的工作。直接访问方式的接口电路如发明2-1所示,在发明中,单片机通过高位地址A11控制CSA,A10控制CSB,以选通液晶显示屏上各区的控制器;同时用地址A9作为R/W信号控制数据总线的数据流向;
用地址A8作为D/I信号控制寄存器的选择,E(使能)信号由RD和WE共同产生,这样就实现了单片机对液晶显示模块的电路边接。电位器用于显示对比度的调节。
[0048] (二)间接控制方式10K
负电源
GND
MPU LCM接口
间接控制方式是单片机通过自身的或系统中的并行接口与液晶显示模块连接。单片机通过对这些接口的操作,以达到对液晶显示模块的控制。这种方式的特点就是电路简单,控制时序由软件实现,可以实现高速单片机与液晶显示模块的接口。以 P1口作为数据口,P3.4为CSA,P3.3为CSB,P3.2为使能端,P3.1为R/W和P3.0为D/I信号。电位器用于显示对比度的调节。
[0049] 通过比较再结合本次发明的实际条件,由于Atmega16L芯片没有WR、RD管脚,而且为了使电路简单且方便软件实现,所以最终决定采用间接控制的方式来发明LCD显示电路。
[0050] 硬件电路主要芯片2.2.1 ATmega16L主要引脚说明
以下是ATmega16L的引脚配置:
引脚说明:
VCC        数字电路的电源
GND        地
端口A(PA7~PA0)端口A 作为A/D 转换器的模拟输入端。
[0051] 端口A 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口A 处于高阻状态。
[0052] 端口B(PB7~PB0)端口B 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口B 处于高阻状态。
[0053] 端口C(PC7~PC0)端口C 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口C 处于高阻状态。如果JTAG接口使能,即使复位出现引脚PC5(TDI)、PC3(TMS)与PC2(TCK)的上拉电阻被激活。
[0054] 端口D((PD7~PD0)端口D 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口D处于高阻状态。
[0055] RESET 复位输入引脚。持续时间超过最小限时间的低电平将引起系统复位。
[0056] XTAL1  反向振荡放大器与片内时钟操作电路的输入端。
[0057] XTAL2  反向振荡放大器的输出端。
[0058] AVCC  AVCC是端口A与A/D转换器的电源。不使用ADC时,该引脚应直接与VCC连接。使用ADC时应通过一个低通滤波器与VCC相连。
[0059] AREF  A/D 的模拟基准输入引脚。
[0060] 2.2.2 Atmega16L的存储器AVR结构有两个主要的存储空间:数据存储器空间和程序存储器空间,此外,Atmega16L还有一个EEPROM存储器以保存数据。这三个存储器都为线性的平面结构。
[0061] (1) Atmega16L具有16K字节的在线编程Flash,用于存储程序指令代码。因为AVR指令为16位或32位,故Flash组织成8K 16的形式。用户程序的安全性要根据Flash程序存储器的两个区:引导(Boot) 程序区和应用程序区,分开来考虑。
[0062] Flash存储器至少可以擦写10,000次。Atmega16L的程序存储器为13位,因此可以寻址8K的存储器空间。关于用SPI 或JTAG 接口实现对Flash 的串行下载,将在软件部分作详细的介绍。
[0063] (2) 数据存储器的寻址方式分为5种:直接寻址、带偏移量的间接寻址、间接寻址、带预减量的间接寻址和带后增量的间接寻址。
[0064] ATmega16L的全部32个通用寄存器、64个I/O寄存器及1024个字节的内部数据SRAM可以通过所有上述的寻址模式进行访问。
[0065] (3) ATmega16L 包含512 字节的EEPROM 数据存储器。它是作为一个独立的数据空间而存在的,可以按字节读写。EEPROM 的寿命至少为100,000 次擦除周期。EEPROM 的访问由地址寄存器、数据寄存器和控制寄存器决定。
[0066] 2.2.3 Atmega16L的时钟电路单片机的时钟用于产生工作所需要的时序,其连接电路如下发明:
晶体振荡器连接发明
XTAL1 与XTAL2 分别为用作片内振荡器的反向放大器的输入和输出,考虑到其最大频率不超过8MHz,这里选用的晶振为7.3728MHz。
[0067] 2.2.4 Atmega16L的系统复位Atmega16L有五个复位源:
(1)上电复位。电源电压低于上电复位门限Vpot时,MCU复位。如果在单片机加Vcc电压的同时,保持RESET引脚为低电平,则可延长复位周期。
[0068]Vcc Vpot Vpot
RESET Vrst Vrst
TIME-OUT
INTERINAL tTOUT tTOUT
RESET
发明2-5 RESET引脚与VCC相连时, 发明2-6 RESET引脚由外部控制时,单片机的复位电平 单片机的复位电平
(2)外电复位。引脚RESET上的低电平持续时间大于最小脉冲宽度时MCU复位。
[0069] VccRESET Vrst
TIME-OUT tTOUT
INTERNAL
RESET
(3)看门狗复位。看门狗使能并且看门狗定时器溢出时复位发生。看门狗计数器溢出时,将产生一个晶振的复位脉冲。
[0070] VccRESET
WDT 1 XTAL Cycle
TIME-OUT
RESET tTOUT
TIME-OUT
INTERNAL
RESET
(4)掉电检测复位。掉电检测复位功能使能,且电源电压低于掉电检测复位门限Vpot时MCU即复位。
[0071] (5)JTAG AVR复位。复位寄存器为1时MCU复位。
[0072] LCD液晶显示2.3.1 LCD的显示原理
液晶显示器是一种功耗极低的显示器。随着液晶显示技术的发展,LCD显示器的规格众多,其专用驱动芯片也相互配套,使LCD在控制和仪发明系统中广泛应用提供了极大的方便。根据LCD显示原理的不同,常见和常用的LCD可以分为字符型LCD和点阵型LCD两种。
不同的显示原理使得这两种LCD的指令系统、接口和功能等是不相同的,各有优缺点,但结合到本次发明的实际要求,经过比较还是选用点阵型LCD。现就点阵型LCD的显示原理、模块特点等做一简要介绍。
[0073] 要想在液晶模块上显示一个汉字或字符,需要3个最基本的控制操作:分别向3个控制器写指令代码、写显示数据和读显示数据。这里要特别引起注意的是完成这3项操作的前提条件是KS0108B控制器处于准备好的状态,即BUSY=0,由模块的软件特性知道,当BUSY=1时,系统的接口电路处于被封锁的状态,是不能接受除读状态指令外的任何操作的。因此在访问控制器之前,一定要判断控制器的当前状态。具体到软件发明时,则需发明一判忙程序,在判断BUSY=0后,再往下进行操作。
[0074] 在本模块中,每个汉字的大小是16×16点阵,而每个字符的大小是8×16点阵,即字符的宽度为汉字的1/2。它们都是以二维数组的格式存放在ROM中。向液晶模块显示一个汉字的过程就是:由液晶屏显示区的指定字符行的指定列开始,连续输出该字符对应的字符库中的16个列数据,如果是显示字符,则输出8个列数据即可。
[0075] 上面已经介绍到,MGLS-19264液晶模块中液晶屏显示区为192×64点阵,其中,它们的每8个像素行组成一页,整个显示区共分为8页,每64列为一个区,这样,它就有左、中、右3个区,它的显示区示意发明如下:左区 中区 右区
0 1 2 … 62 63 64 65 … 127 128 129 … 191
DB0

DB7

DB0

DB7
液晶模块显示字符是从上到下,从左到右进行显示的。假设定义从最左上开始显示,则先从上到下显示第0页的第一列,依次从左向右开始显示。
[0076] MGLS-19264LCM的显示部分为左、中、右3个区,可以由CS片选的取值分别进行控制,其接口的片选定义如下: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),其它字符依此发明即可。
[0077] 2.3.2 液晶显示控制驱动器HD61202及其兼容液晶显示控制器是一种带有驱动输出的发明形液晶显示控制器,而在小规模点阵液晶显示模块上使用液晶显示驱动器组成液晶显示驱动控制系统是非常有益的,这将使液晶显示模块的硬件电路简单化,从而降低模块的成本,同时也提高了对软件功能的要求。许多显示功能如光标、字符库、闪烁都需要由软件编制而成。HD61203和HD61202就是这类液晶显示驱动控制器套件。之所以称它们为套件是因为HD61203和HD61202必须配套使用,通常有12864和19264两种规格。其特点如下:
1.内藏64*64=4096位显示RAM,RAM中每位数据对应LCD屏上的一个点的亮、暗状态。
[0078] 2.HD61202及其兼容控制器是列驱动器,具有64路列驱动输出。
[0079] 3.HD61202及其兼容控制驱动器读、写时序与68系列微处理妻相符,因此它可直接与68系列微处理器借口相联。
[0080] 4.HD61202及其兼容控制器的占空比为1/32~1/64。
[0081] 2.3.3 液晶显示模块的特点MGLS-12864发明形液晶显示模块的驱动和控制系统是由一片KS0107B或兼容驱动器( HD61203 )作为行驱动器和两片KS0108B或兼容驱动器(HD61203) 作为列驱动器组成的。
[0082] 它的主要技术参数及其供电特点如下:(1)电源:DC+5V,模块内自带用于LCD驱动的负压电路。
[0083] (2)显示内容:128 64全屏幕点阵。
[0084] (3)指令形式:七种指令。
[0085] (4)接口形式:与控制器采用8位数据总线和8位控制线相连。
[0086] (5)工作环境:-10~+50℃。
[0087] (6)模块应用有三种电源:逻辑电源、液晶驱动电压、背光电压。
[0088] (7)本次选用的模块是双电源供电(VDD/V0),需要提供一个液晶驱动电压,用以调节对比度,接在液晶模块的V0引脚上,由于液晶的对比度会随着温度的变化而相应变化,所以其液晶显示驱动电压值应随着温度作相应的调整,这里采用了一个电位器,调整电压值。
[0089] 电源电路的发明在本次的发明中,要供电给mega16和LCD显示模块两部分,而一个LM7805的输出电流不足,所以本人打算将mega16和显示模块分别供电,所以实际电路中用到了两片7805。下面就一个电源电路给出发明方案,另一个同样原理。
[0090] 5V电源电路的发明LM78作为输出电压固定的典型电路发明,正常工作时,输入、输出电压差为3-8V。输入电压PS为9V。电路中接入电容C5用来实现频率补偿,防止稳压器产生高频自激振荡和抑止电路引入的干扰,C11是有极性的电解电容,以减小稳压电压输出端由输入电源引入的电平干扰。D1是保护二极管,当输入端短路时,给输出电容器C11一个放电电路,防止C11两端电压作用于调压管的be结,造成调压管be结击穿而损坏。其中C5、C11两个电容只是起滤波作用选用的大小没有特别的要求。
[0091] 硬件电路发明经过对以上对ATmega16L芯片的端口、存储器、时钟电路、以及复位电路和LCD液晶显示等原理的介绍后,现在就可以完成对这部分硬件电路的发明了。再结合前面的分析采用间接访问的方式实现单片机与液晶显示模块之间的连接。LCD模块的8位数据线接在了Atmega16L芯片B口的8位数据线上,这里用了一个74LS24作为锁存器使它们间接连接在一起。LCD的EN、D/I、CS1、CS2、R/W分别连接到PA3~PA7上。
[0092] PROTEL99的应用简介在这里主要用它来绘制电路原理发明和生成印制电路板。原理发明的发明步骤如下:
(1)设置原理发明发明环境。其中,工作环境设置是使用Design/Options和Tool和Preferences菜单进行的,画原理发明环境的设置主要包括发明纸大小、捕捉栅格、电气栅格、模板设置等。
[0093] (2)放置元件,将电气和电子元件放置在发明纸上。
[0094] (3)原理发明布线。元件一旦放置在原理发明上,不需要用导线将元件连接起来,连接时一定要符合电气规则。
[0095] (4)编辑和调整。编辑元件的属性。包括元件名、参数、封装发明等。调整元件和导线的位置等操作。
[0096] 本次发明所用的主要元件属性如下:说明 编号 封装 元件名称
单片机 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)检查原理发明的连接是否合理和正确。
给出检查报告,若有错误则要根据错误进行改正。
[0097] (6)生成网络发明。所谓网络发明就是元件名、封装、参数及元件之间的连接发明,通过该发明可以确认各个元件和它们之间的关系。
[0098] (7)打印原理发明。
[0099] 对电路板的发明主要分为以下几个步骤;(1)使用原理发明编辑器发明原理发明,进行电气检查(ERC)并生成原理发明的网络发明。
[0100] (2)进入电路板(PCB)环境,使用电路向导确定电路板的层数、尺寸等电路板参数。
[0101] (3)使用Design/Netlist菜单,调入网络发明。
[0102] 由于在前面的元件封装不规范,这里面出现了许多错误,通过请教老师及自己的不懈努力,花了数天的时间才全部改了出来。
[0103] (4)布置元件,就是将元件合理地分布在电路板上。自动布置元件或人工布置元件,多次布置直到自己满意为止。
[0104] 人工布线是画电路板的基础,但比较耗时和费力,另外由于自身经验的不足,只得先采用自动布线,在此基础上作了适当的修改。
[0105] (5)完成修饰等工作,完成整个电路板的发明。
[0106] 接下来是焊接的工作,这部分相对来说并不陌生,在大二时曾进行过电子课程的实习,主要就是完成收音机的焊接。虽然以后接触得比较少,但通过几天的练习,还是基本圆满地完成了任务。焊接通常要求:①焊点接触良好,尤其避免虚焊的产生;②焊点要有足够的机械强度以保证被焊点不致滑落;③焊点发明面应美观,有光泽。这块板子面积不算大(约90cm 70cm),元器件引脚多,看起来很密集。从焊下来的结果来看,焊点还可以,也算比较美观,最关键的是没有短路的情况发生。
[0107] 焊接完成后,整个硬件电路原理、绘制原理路、焊接等工作已全部完成,下面转到软件部分的发明。
[0108] 软件发明3.1.用C语言开发单片机的优势
C语言是一种编译型的结构化程序发明语言,具有简单的语法结构和强大的处理功能,具有运行速度快、编译效率高,移植性好和可读性强等多种优点,可以实现对系统便件的直接操作。用C语言来编写目标系统软件,可以大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而开发出大规模、高性能的应用系统。其优势如下:
(1)可以大幅度加快开发进度,程序量越大,用C语言就越有优势。
[0109] (2)无需精通单片机指令集和具体的硬件,也能够编出符合硬件实际专业平的程序。
[0110] (3)可以实现软件的结构化编程,使得软件的逻辑结构变得清晰、有条理、便于开发小组计划任务、分工合作。源程序的可读性和可维护性都很好。
[0111] (4)省去了人工分配单片机资源的工作,在汇编语言中要为每一个子程序分配单片机的资源。在使用C语言后,只要在代码中申明一下变量的类型,编译器就会自动分配相关资源,根本不需要人工干预,从而有效地避免了人工分配单片机资源的差错。
[0112] (5)汇编语言的可移植性很差,而C语言只要将一些与硬件相关的代码作适当的修改,就可以方便地移植到其它种类的单片机上。
[0113] (6)C语言提供auto、static、flash等存储类型,针对单片机的程序存储空间、数据存储空间及EEPROM空间自动为变量合理地分配空间,而且C语言提供复杂的数据类型,极大地增强了程序处理能力和灵活性。C编译器能够自动实现中断服务程序的现场保护和恢复,并且提供常用的标准函数库,供用户使用。并且C编译器能自动生成一些硬件的初始化代码。
[0114] (7)对于一些复杂系统的开发,可以通过移植(或C编译器提供)的实时操作系统来实现。
[0115] 正由于C语言在系统开发中的优势,这次发明的所有程序发明都将采用C语言编写,且通过ICCAVR编译器操作AVR的硬件资源。
[0116] 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显示的基本原理。
[0117] ( 2 )字符的显示用LCD显示一个字符时比较复杂,因为一个字符由6*8或8*8点阵组成,既要找到和显示屏上某几个位置对应的显示RAM区的8字节,还要使每字节的不同的位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮,这样一来就组成某个字符。但对于内带字符发生器的控制器 (如HD61202)来说,显示字符就比较简单了,可让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。
[0118] ( 3 )汉字的显示汉字的显示一般采用发明形方式,事先从微机中提取要显示的汉字的点阵码,每个汉字占32B,分左右两半部,各占16B,左边为1、3、5…右边为2、4、6…根据在LCD上开始显示的行列号及每行的列数可找到显示RAM对应的地址,设立光标,送上要显示的汉字的一字节,光标位置加1,送第二字节,按行按列对齐,送第三字节……直到32B显示完就可在LCD上得到一个完整的汉字。
[0119] 3.3 LCD模块的指令说明要完成显示程序的发明,必须了解LCD液晶模块的指令系统。这里采用的LCD是北京精电蓬远显示技术公司生产的MGLS系列发明形液晶显示模块,其内藏KS0108B/HD61202控制器。
[0120] KS0108B及其兼容控制驱动器( HD61202 )的指令系统比较简单,一共只有7条指令,从作用上可分为两类。第一条指令和第二条指令为显示状态设置类;其余指令为数据读/写操作指令。下面是各个指令的功能:1.读状态指令
R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
1 0 BUSY 0 ON/OFF REST 0 0 0 0
状态字是计算机了解HD61202及其兼容控制驱动器当前状态,或是HD61202及其兼容控制驱动器向计算机提供其内部状态的唯一的信息渠道。状态字为一字节,其中仅有3位有效位,它们是:
BUSY发明示当前HD61202接口控制电路运行状态。BUSY=1发明示HD61202正在处理计算机发来的指令或数据。此时接口电路被封锁,不能接受除读状态字以外的任何操作。
BUSY=0发明示HD61202接口电路已处于“准备好”状态,等待计算机的访问。
[0121] ON/OFF发明示当前的显示状态。ON/OFF=1发明示关显示状态;ON/OFF=0发明示开显示状态。
[0122] RESET发明示当前HD61202的工作状态,即反映RST端的电平状态。当RST为低电平状态时,HD61202处于复位工作状态,RESET=1;当RST为高电平状态时,HD61202为正常工作状态,RESET=0。
[0123] 在指令设置和数据读写时要注意状态字中的BUSY标志。只有在BUSY=0时,计算机对HD61202的操作才能有效,因此计算机在每次对HD61202操作之前,都要读出状态字以判断BUSY是不为“0”。若不为“0”,则计算机需要等待,直至BUSY=0为止。
[0124] 2.显示开关指令R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 1 1 1 1 1 1/0
该指令设置显示开/关触发器的状态,由此控制显示数据锁存器的工作方式,从而控制显示屏上的显示状态。D位为显示开/关控制位。当D=1为开显示设置,显示数据锁存器正常工作,显示屏上呈现所需的显示效果。此时在状态字中ON/OFF=0;当D=0为关显示设置,显示数据锁存器被置零,显示屏呈不显示状态,但显示存储器并没有被破坏,在状态字中ON/OFF=1。
[0125] 3.显示起始行设置指令R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 1 1 显示起始行( 0-63 )
该指令设置了显示起始行寄存器的内容。HD61202有64行显示的管理能力,该指令中L5~L0为显示起始行的地址,取值在0~3FH( 1~64行)范围内,它规定了显示屏上最顶一行所对应的显示存储器的行地址。如果定时间隔地,等间距地修改( 如加1或减1)显示起始行寄存器的内容,则显示屏将呈现显示内容向上或向下平滑滚动的显示效果。
[0126] 4.页面地址设置指令R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 1 0 1 1 1 页号( 0~7 )
该指令设置了页面地址——X地址寄存器的内容。HD61202将显示存储器分成8页,指令代码中P2-P0就是要确定当前所要选择的页面地址,取值范围为0-7H,代发明第1-8页。
该指令规定了以后的读/写操作将在哪一个页面上进行。
[0127] 5.列地址设置指令R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 1 显示列地址( 0~63 )
该指令设置了Y地址计数器的内容,C5~C0=0~3FH( 1~64 )代发明了某一页面上的某一个单元地址,随后的一次读或写数据将在这个单元上进行。Y地址计数器具有自动加1功能,在每上次读/写数据后它将自动加1,所以在连续进行读/写数据时,Y地址计数器不必每次都设置一次。
[0128] 页面地址的设置和列地址的设置将显示存储器单元唯一的确定下来,为后来的显示数据的读/写作了地址的选通。
[0129] 6.写数据指令R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 1 写  数   据
该操作将8位数据写入先前已确定的显示存储器的单元内。操作完成后列地址计数器自动加1。
[0130] 7.读数据指令R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
1 1    读  显  示  数  据
该操作将HD61202接口部的输出寄存器内容读出,然后列地址计数器自动加一。必须注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据。
[0131] 3.4液晶显示界面这次发明采用的液晶显示模块本是其用一片KS0107B或兼容驱动器( HD61203 )作为行驱动器和三片KS0108B或兼容驱动器(HD61203) 作为列驱动器组成的。
[0132] 液晶显示的第一行为“智能型充电器”,由左起第四列开始显示,这样正好左右平均分配。第二行左起顶格显示“电池”,发明示对充电电池的选择,可进行“锂电、镍镉、镍氢、铅酸”四种电池的选取,第三行显示电池的节数,第四行显示状态,可以在“快充、涓充、充满、放电”四个选项间进行选取,第二行到第四行左起分别显示电压、电流和温度数值。由此可见,左边的两选项在充放电的过程中是不变的,而右边的三个参数在充电过程中随时发生变化。
[0133] 系统调试软件介绍完成对系统的硬、软件发明后,就可以对系统进行调试了。本次发明本人采用了ICCAVR编译器作为系统的开发工具,进行程序的烧录和仿真。
[0134] 4.1.1 ICCAVR编译器简介(一) ICC AVR是ImageCraft公司针对AVR单片机而开发的一个C语言编译,它具有以下几个特点:
1.支持不带SRAM的单片机器件。
[0135] 2.带嵌入式的应用程序编译器。
[0136] 3.带全局优化器。
[0137] 4.支持在线编程(STK200/300)。
[0138] 5.ICC AVR是一个运行于Windows 9X/NT的集成开发环境(ODE),它包括单片机软件开发所需要的编辑器、工程管理器和C编译器。
[0139] 6.ICC AVR采用了工程的组织形式。程序的所有源文件全部以工程的一个要素保存在工程中,并且程序的编辑和编译也都在这个环境中进行。工程管理器最后还能生成HEX格式的烧录文件和COFF格式的仿真文件。
[0140] (二)ICC AVR支持的数据类型数据类型就是数据的不同发明示形式,它们按照被描叙数据的性质及其所占存储空间的大小来划分。ICC AVR的C编译器可以支持4种数据类型,它们分别是:基本数据类型、构造类型、指针类型和空类型。
[0141] 1.基本数据类型基本数据类型包括字符型(Unsign Char和Signed Char)、整型(Unsigned Int和SignedInt)、长整型(Unsigned Long和Signed long)、浮点型(Float)和双精度型(Double〕。基本数据类型不只有再分性,它不可以再分解为其他的数据类型。
[0142] 2.构造数据类型构造数据类塑包括数组型(Array)、结构体类型(Smuct)、公用体类型(Union)和枚举类刑(Enum)。构造数据类型由若干个基本数据类型采用构造的方法成,因此,每个构造数据类烈都可以分解成若干个基本数招类型。
[0143] 3.指针类型指针是一种用来专门存放所指对象地址的变量,它指向计算机内的一个内存单元。指针的处理具有较高的灵活性,使用它可以有效地发明示复杂的数据结构,有效地使用内存空间,方便地处理数组,因此,它是C语言中一种非常重要的数据类型。
4.空类型
空类型也就是Void类型。在调用函数时,函数通常都会返同一个函数值。这个返回的函数值的数据类型可以在函数定义和函数说明中由用户指定。但有一些函数,它只进行一定的处理,在调用后并不需要返回某个函数值,那么这种函数可以定义为“空类型”。
[0144] 当一个计算的几个运算分量的数据类型不相同时.要根据一些规则把它们转换成某个共同的数据类型。这种转换可自动进行,也可以人工强制转换。通常来说,编译器会把“窄”的数据类型自动转换成“宽”数据类型,以保证计算信息不被丢失。
[0145] 4.1.2 ICC AVR的主要设置点击菜单中“Tools”栏中的“Application Builder”命令,打开应用构筑向导对话框,其框发明如4-1所示。框发明主要有以下页面:
⑴CPU选项:可对芯片的种类、频率、是否使用看门狗以及是否使用INT0和INT1等进行选择。在这里选择M16芯片,7.3728频率,使用看门狗。
[0146] ⑵PORTS选项:可以发明I/O的属性,发明示它已和AVR的ISP插座连接好,可以进行程序下载的操作了。否则,将显示“程序编程连接失败”的字样。在第一次进行操作时,也出现了连接失败的信号。软件是最新下载的,通过万用发明检查,软件周围的接线都没有问题,显然不是自身的问题。再经仔细检查,原来是Atmega16L的芯片的5V电源掉线了。单片机不能运作,当然没法进行程序的下载了。虽然这一过程花了不少时间,吃一堑,长一智,从这也看出了进行电子创作的严谨性,不通过细心的观察,冷静的分析,是不可能完成的。
[0147] 前面说到,测试单片机的最简单系统最简单的就是控制输出电平的高低,这里采用发光二极管作为它的输出器件,用二极管的亮或灭发明示自己发明的单片机系统是否能够正常工作。具体进行了以下实际电路的发明。
[0148] (一)一个灯的闪烁。
[0149] 通过上面的介绍,Atmega16L有32个I/O输出口,作为第一功能时,它们是没有区别的。这次主要用它的B口进行实验。在万用板上插上Atmega16L芯片,按上面的方法接上晶振电路和复位电路。接通电源(5V),用万用发明测B0口压降,测得电压+5V,可知系统正常。在B0端接上一发光二极管。
[0150] 发光二极管是由于其两端的电压差超出其导通压降时开始工作,它的压降通常为1.7V-1.9V。且工作电流也要满足该二极管的发光要求。满足了这两点,发光二极管就可以开始发光了。控制B0口电平的高低,就可以实现二极管的亮灭了。
[0151] 打开ICCAVR编译器,按照上面的步骤进行构筑向导框的操作。在PORTS的选项中,把B口设置为输出口,值为“1”。其它按上面的设置,进入到IDE环境。编辑显示程序,编辑窗口里面已经有初始化程序、看门狗程序等基本程序。只要进行主函数的编写就可以了。
[0152] 要让输出口电平发生转换,采用了两种方法。一种是用延时的办法。初始设B0口为0,二极管不亮,经过一定时间的延时后,B0口变为1,二极管发光。再过相同时间,B0口
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈