镍镉电池自动放电器毕业论文.doc

上传人:仙人指路1688 文档编号:3035244 上传时间:2023-03-09 格式:DOC 页数:37 大小:2.35MB
返回 下载 相关 举报
镍镉电池自动放电器毕业论文.doc_第1页
第1页 / 共37页
镍镉电池自动放电器毕业论文.doc_第2页
第2页 / 共37页
镍镉电池自动放电器毕业论文.doc_第3页
第3页 / 共37页
镍镉电池自动放电器毕业论文.doc_第4页
第4页 / 共37页
镍镉电池自动放电器毕业论文.doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《镍镉电池自动放电器毕业论文.doc》由会员分享,可在线阅读,更多相关《镍镉电池自动放电器毕业论文.doc(37页珍藏版)》请在三一办公上搜索。

1、摘 要飞思卡尔“智能汽车”竞赛旨在培养大学生的综合知识运用能力、基本工程实践能力和创新意识。智能车调试的时候需要消耗大量的电池,根据电池的特点,使用后的电池必须放电到6V左右才能再次充电,学院现在放电方式是采用手动放电,速度慢并且误差较大。基于此,本课题设计旨在开发一个功能相对丰富的镍镉电池放电器,设计采用Freescale XS128单片机作为中央控制系统,利用单片机的AD功能模块时时采集电池电压,进行相应的反馈,来调节半桥电路的PWM方波占空比,让半桥通断来达到恒流放电的目的。电池自动放电器装置主要由硬件和软件两部分构成。硬件设计主要包括:放电硬件电路设计、单片机及外围电路设计、信息显示硬

2、件电路设计。软件设计主要包括:放电模块程序和信息显示模块的程序。关键词: 镍镉电池放电 Freescale XS128单片机 BTS7970AbstractFreescale smart car competition aims to cultivate students comprehensive ability to use knowledge, basic engineering practice ability and innovation consciousness. The subject of design uses Freescale XS128 microcontroller

3、 as the central control system; MCU AD function module keeps the voltage between the two resistants ,and do some feedback accordingly ,so that it can adjust the PWM square wave of half bridge circuit, let the half bridge circuit on and off, on discharge. Nickel cadmium battery automatic discharger d

4、evice mainly consists of two parts :hardware and software.Hardware circuit design, hardware design mainly includes: discharge according to single-chip microcomputer and peripheral circuit design, hardware circuit design.Software design mainly includes: discharge module program and information displa

5、y module.Keywords:Nickel cadmium battery discharger Freescale XS128 BTS7970 目 录摘 要IAbstractII引 言11.概述21.1市场上现有的同类产品21.2镍镉电池放电器开发的意义32.放电器硬件设计42.1主要元器件的选型介绍42.1.1电源芯片选型42.1.2单片机芯片的选择62.1.3显示和按键模块的选型112.1.4半桥驱动芯片的选型122.2硬件设计132.2.1电源供电模块设计142.2.2单片机电路设计152.2.3电池电压检测模块设计162.2.4放电电路设计162.2.5信息显示模块设计172.

6、2.6硬件电路总体设计图183放电器软件设计193.1飞思卡尔单片机的软件开发环境193.2软件设计部分的总体方案203.3软件功能模块的具体实现223.3.1部分模块的初始化223.3.2 A/D模块223.3.3 PWM模块233.3.4放电逻辑部分的主要程序243.3.5 LCD显示和按键设置模块254 .放电器设计总结284.1 硬件焊接部分总结284.2 软件调试部分总结284.3 完成测试部分总结28结 论30附录A 整体硬件原理图31参考文献32致 谢33 引 言全国大学生飞思卡尔“智能汽车”竞赛是教育部倡导的大学生科技竞赛之一。该竞赛旨在培养大学生的综合知识运用能力、基本工程实

7、践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能。智能车调试的时候需要消耗大量的电池,根据电池的特点,使用后的电池必须放电到6V左右才能再次充电,学院现在放电方式是采用手动放电,速度慢并且误差较大。为了提高放电的自动化,提高放电效率,延长电池寿命,并节省人力资源,本课题旨在开发一个功能丰富的镍镉电池自动放电器。电池自动放电器装置主要由硬件和软件两部分构成。硬件设计主要包括:放电硬件电路设计、单片机及外围电路设计、信息显示硬件电路设计。软件设计主要包括:放电模块程序和信息显示模块的程序。1.概述1.1市场上现有的同类产品(1)上海顺盟电子科技有限公司所设计的SMFD920蓄电池放电仪该

8、放电仪是针该对整组电压为24V/48V/110V/220V/380V等蓄电池组,单体电池电压为2V、6V或12V的铅酸蓄电池组进行测试,具有对蓄电池组进行“在线检测”、“核对放电”和“快速容量测试”等功能,该仪器放电功率大,体积小,重量轻,上位机数据管理软件功能齐全,且具有计算机检测功能,大大减少了蓄电池日常测试维护的工作量。此产品主要功能是核对放电、快速容量测试和在线检测(如图1-1)。图 1-1蓄电池放电仪器(2)锂电池放电仪此放电仪可以随时监测电池各片电压情况,放电保护功能,并能起平衡各片电压的功能。它是专为聚合物锂电池和磷酸铁锂电池设计,可以精确测量电池总体电压和单体电压、对多颗串联电

9、池执行平衡操作,可对电池进行放电,以利于长时间存放,避免电池损坏(如图1-2)。图1-2 锂电池放电仪(3)镍镉电池放电仪此镍镉电池放电仪的数据处理软件可以直接获取放电仪的放电数据,并进行处理和分析,可查看、打印电流/电阻/功率曲线图、电压曲线图、检测数据等。根据这些图表可以查看电池的性能变化趋势、检测数据等情况,使电池组的性能直观的展现在我们面前(如图1-3)。如图1-3 镍镉电池放电器1.2镍镉电池放电器开发的意义经调查发现,市场上的同类产品中大部分产品功能齐全,具备多参数设置,体积较大;也有一些产品功能相对较少,适合个人使用。但是这些产品价格相对较贵,体积大,有的不具备恒流放电的功能,不

10、适合用于智能车比赛中。现今,智能车比赛在大学中已经相当广泛,该竞赛旨在培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能。智能车调试的时候需要消耗大量的电池,根据电池的特点,使用后的电池必须放电到6V左右才能再次充电,学院现在采用的放电方式是手动放电,速度慢并且误差较大。为了提高放电的自动化,提高放电效率,延长电池寿命,并节省人力资源,开发一个功能丰富的电池自动放电器显得极其必要。大学生智能车采用飞思卡尔单片机,为了与比赛更贴近以及有利于对飞思卡尔单片机的学习,我们采用飞思卡尔单片机来控制放电。所以本课题设计一个基于飞思卡尔单片机的镍镉电池放电器

11、。2.放电器硬件设计该课题设计的目的是实现镍镉电池的自动放电功能。该放电器采用Freescale(飞思卡尔)XS128单片机作为主控制器,当插入待放电电池后,单片机开始通过AD采集电池的电压,并进行相应的正反馈,来调节半桥电路的PWM方波占空比,让半桥通断来达到恒流放电的目的。在课题的设计当中,利用两个水泥电阻串联,之后与大电容相连,以达到消除尾波,拉平电压,使得电压平稳的作用。单片机与显示屏相连接,时刻显示放电的结果。2.1主要元器件的选型介绍2.1.1 电源芯片选型此次课题设计采用的稳压芯片为LM2940和LM1117两种类型。两者是低压差线性稳压器。当电压加在比较器的同相输入端,与加在反

12、相输入端的基准电压相比较,两者的差值经过放大器放大之后,控制串联调整管的压降,从而达到稳定输出电压的作用。当输出电压降低的时候,基准电压与取样电压的差值增大,比较放大器输出的驱动电流就会增加,串联调整管压降减小,从而使输出电压升高。反之,当输出的电压大于所需要的设定值,比较放大器输出的前驱动电流就会减小,从而使得输出电压降低。(1)LM1117是一款低压差电压调节器,其压差在1.2V输出,负载电流为800mA时为1.2V。此系列芯片的固定输出的电压为1.5V、1.8V、2.5V、3.3V、5.0V,但是在本次课题中,我们需要选取此芯片来调节电压到3.3V,以给显示模块nokia5510屏供电使

13、用,所以选择其输出3.3V电压。LM1117系列稳压器可以提供1A直流输出,它可以运行在输入输出电压相差1V的情况下。它的最大输出电流为800mA,在最大输出电流的情况下,电压差设计可提供最大为1.5V,且它随着输出电流的减小而减小。这种限流起到平衡的作用。当芯片的温度达到一定的程度的时候,其会自动断电,起到相应的保护作用。此稳压芯片输出的电压精度在1% 以内。 图2-1 LM1117顶部视图 图2-2 LM1117实图(2)LM2940是一款低压差三端稳压器,其在输出电流为1A时,最小输入输出电压差小于0.8V。在输出电流为1A时,输出电压为0.5V,即输入电压要大于输出电压+0.5V=5.

14、5V;同样输出电流为100mA时,输出电压典型值为110mA,输入电压大于5.1V即可。该课题设计,对于整个系统而言,需要提供稳定的5V电源,由于LM2940的稳压的线性度比较好,所以选用LM2940对其进行供电。LM2940含有一个静态电流降低电路,当输入输出压差超过3V时,可以减少地电流。在输出电流为1A或输入输出压差为5V时,静态电流仅为30mA.此外,该电路内还含有防反接电路,防止输入电压反接对电路造成损害,并且含有电流限制,过热保护等电路(图2-3为LM2940的实物图)。图2-3 LM2940实物图LM2940的左侧接口为输入接口,右侧的接口为输出接口(如图2-4)图2-4 LM2

15、940引脚图2.1.2单片机芯片的选择本课题设计采用Freescale XS128单片机来作为主控制器,用飞思卡尔单片机做课题设计虽说略显浪费,但是选用它的目的在于做这个电池放电器的同时能够更好的了解以及学习飞思卡尔单片机,更加贴近智能车比赛。(1)单片机特性介绍XS128是飞思卡尔公司推出的S12XS系列单片机中一款增强型16位单片机。S12XS系列对16位微控制器是兼容的,是在S12XE系列基础上去掉XGate协处理器的单片机。该系列单片机采用CPU12X V2内核,可以运行在40MHAZ总线频率上。这些为家庭提供了一个简单的方法来开发从低端到高端应用的共同平台,最大限度地减少软件和硬件设

16、计。 这不仅在汽车电子、工业控制、中高档机电产品等应用领域具有广泛的用途,而且在Flash存储控制及加密等方面也同样具有很强的功能。 MC9S12XS128只是S12X家族中的一个成员。该器件包括大量的片上存储器和外部I/O。该器件是一个16位的,由16位中央处理单元、128KB程序Flash、8KBRAM、8KB数据Flash组成内存储器。同时还包括2个异步串行通信接口、1个串行外设接口、1个8通道输入捕捉/输出比较定时器模块、16通道12位A/D转换器和一个8通道脉冲宽度调制模块。该器件有三种封装,分别是64引脚封装、80引脚封装和112引脚封装。除了I / O端口可以在每个模块,多达18

17、个,进一步I / O端口,可与中断功能,允许唤醒从停止或等待模式。引脚封装见图2-5,引脚介绍见表2-1。图2-5 XS128引脚封装图表2-1相关引脚介绍引脚名称(17)额定电压/V说明VDDR5.0外部电源,为内部电压调节器供电VSSR0VDDX2、VDDX150外部电源和地,为I/O口供电VSSX2、VSSX10VDDA5.0A/D转换器工作电源和地,为内部电压调节器提供参考电源,允许单独为A/D提供工作电压 VSSA0VRH5.0A/D转换器参考电源和地VRL0VDD1.8内部电源和地,由内部调节器为核供电VSS1、VSS2、VSS30VDDF2.8内部电源和地,由内部调节器为内部NV

18、M供电VDDPLL1.8为锁相环(PLL)提供电源和地,由内部电压调节器产生,允许单独为PLL提供工作电压VSSPLL0其他引脚RESRT(30) 外部复位引脚BKGD/MODC(15) 背景调试和模式引脚TEST(67) 工厂内部用,需接地XTAL和EXTAL(35、34) 振荡器引脚(2)XS128单片机相关寄存器介绍1. 端口A数据寄存器(PORTA) 表2-2端口A应用领域说明 描述 7-0 PA端口A是一个通用的输入/输出data-Data寄存器相关的引脚可作为通用I / O口。在通用输出模式寄存器导到引脚上。如果相关的数据方向位被置为1,读取端口当前的值,否则缓冲密码输入状态是等待

19、读取。2.端口A数据方向寄存器表2-3 端口A方向寄存器领域说明 描述 7-0DDRA端口A数据方向寄存器这个位决定了相关的端口是输入还是输出端口。1:寄存器相关端口为输出。0:寄存器相关端口为输入。3.PWM控制寄存器(PWMCTL)此寄存器的2到7位是可读且是可以写位的。只有在相应的通道关闭之后,这些控制字才可以改变。当CON67=0 ;通道6和通道7分别作为独立输出通道,对外输出。当CON67=1;通道6和7就串联为同一个输出通道,但是只有7通道的控制字有用。例如:7通道的PWME寄存器决定了其输出情况,7通道的PWMPOL寄存器决定了其是高电平翻转还是低电平翻转,7通道的PWMCAE寄

20、存器决定了其是左对齐输出还是居中对齐输出,7通道的PWMCLK寄存器决定了其两个的时钟源。当PSWAI=1; MCU只要处于等待状态,就会停止时钟的输入。这样就不会因为时钟在空操作而费电。当它设置为0的时候,则MCU就是处于等待状态,也允许时钟的输入。4.PWM通道占空比寄存器PWM通道有独立的占空比寄存器,寄存器中的数值决定相应PWM通道输出波形的占空比。表2-4 PWM通道占空比寄存器说明Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0读/写D7D6D5D4D3D2D1D0复位值111111 11每一个通道占空比寄存器PWMDTYx中的数值都是双缓的,因此当通道被激活以后,

21、PWMDTYx寄存器中的数值改变,将不会立即发生任何改变,除非当以下情况之一发生: 当前的有效周期结束 通道没有被激活 对计数器进行写入操作(计数器复位到$00)这样,PWM就会输出波形,要么是新波形要么是旧的波形。并不会在二者之间进行交换,产生无效的波形。如果通道被禁止的话,那么对寄存器占空比的数值进行写入操作,将导致周期寄存器和缓冲器一起闭锁。读出:任意时候; 写入:任意时候注意:读出PWMDTYx寄存器返回最新写入的数值,而不是返回当前有效的占空比数值。PWMDTYx寄存器中的含义,根据极性控制位PPOLx的不同而有所不一样。当占空比常数与计数值相等的时候,比较输出器就是有效的, 此时触

22、发器就会置位,计数器会继续计数。当PPOLx位=1,PWM的输出波形在起初的时候为高电平,当PPOLx=0,PWM的输出波形在起初的时候为低电平,在这种情况下,寄存器中的数值就代表高电平的持续的时间长; 当PWMDTYx寄存器的数值等于PWMCNTx计数器的数值的时候,其变成高电平,在这种情况下,PWMDTYx寄存器当中的数值就代表低电平的持续的时间长。5.AD功能模块ATD子系统输入或者通用输入引脚。复位之后,默认为通用I/O输入引脚并且只能作输入。AN0到AN6:模拟量输入通道6-0,通用数字输入端口。不可以被用作外部触发引脚。AN7:模拟量输入通道7,通用数字输入端口。它也可以被配置为A

23、/D转换的外部触发引脚。它具备4个控制寄存器,两个状态寄存器,8个结果寄存器。控制寄存器2ATDCTL2ADPU:A/D模块的电源管理。1的时候是正常模式,0的时候是低功耗模式。AFFC表示标志位快速清零。当为1的时候,是对转换结果寄存器访问会自动清楚标志位,当显示0的时候,表示为正常模式,访问结果寄存器前读状态寄存器1可以清除转换完成标志CCF。状态寄存器0ATDSTAT0ETORF:外部触发溢出寄存器它的清零条件:对此位写1;写控制寄存器2、3或者4,终止当前的队列;写控制寄存器5,开始新的队列。FIFOR:FIFO溢出标志。1的时候,有溢出,0的时候无溢出。如果转换完成标志(CCF),在

24、没有被清零的时候结果寄存器被写入一个新数值,则置位。清零的条件是对此位写1,写控制寄存器5,开始一个新队列。数字输入寄存器:PORTADPTADx:A/D模块的第x个通道(ANx)的数字输入。当对应通道的数字输入允许时,此位返回了相应引脚上的电平逻辑值。如果响应通道的输入缓冲区无效,读取操作只返回1。A/D转换结果寄存器ATDDRxATDDR0- ATDDR7:07通道的结果寄存器。A/D转换的结果需要从这几个寄存器中读取。每个16位寄存器可以分为2个8位的寄存器来读取。左对齐10位数据右对齐10位数据2.1.3显示和按键模块的选型(1)Nokia5510显示屏的优点显示屏选用的是诺基亚551

25、0液晶显示屏,主要是因为该显示屏体积较小,供电较低,适合用在一些电池供电的仪器当中。此外,它不易受到电路的干扰,不会出现常见的花屏现象。以下是对诺基亚5510显示屏的简要介绍。(2)显示屏相关引脚说明如表2-5所示,RO到R47是行驱动输出端,输出行信号;CO到C83是列驱动输出端,输出的是列信号;VSS1和VSS2是负电源供应。并且这两个必须连接在一起。 VDD1和VDD2是正电源供应的,并且两者要连在一起。VLCD1和VLCVD2是LCD电源供应液晶显示器正电源。这两者也要连接在一起。T1,T2,T3,T4是测试点,T1和T3必须连接到,而T2悬空,用户是不可以访问的。SDIN是串行数据线

26、输入:数据线。D/C 是模式选择,输入的为选择命令/地址或输入数据。RES 是复位,此信号是复位设备,应用于芯片初始化的时候,低电平是有效的。表2-5 显示屏相关引脚说明 (3)显示屏用到的相关时序1写命令/数据时序Nokia5510(PCD8544)的通信协议是一个没有MISO只有MOSI的SPI协议,如果单片机有富裕的SPI接口,也可以利用硬件SPI,但是在通常的情况下是没有必要的,只需要用相应的软件程序模拟就可以。 (4)使用按键的介绍本设计中,按键数量为12个,无需识别多按键。采用单片机自带的其中两个AD口可以轻松完成按键的识别,在识别复杂程度和设计成本上,优于矩阵按键、按键芯片。采用

27、电阻分压的方式设计按键,根据AD采集到的电压数值的大小,就可以知道是哪个按键在作用。2.1.4半桥驱动芯片的选型本课题设计中的半桥驱动芯片所选用的是Infineon的BTS7970,此芯片是NovalithIC家族三个独立芯片的一部分,其中有p行通道的高电位场效应晶体管,n型通道的低电位场效应晶体管,结合一个驱动晶片,形成完全整合的高电流半桥。(1)BTS7970的特性介绍BTS7970是应用于电机驱动的大电流半桥集成芯片,它带有一个p沟道的高遍MOSFET、一个N沟道的低边MOSFET和一个驱动IC。它的通态电阻的典型数值为16m,驱动的电流值可以达到43A。集成的驱动IC具备电流诊断、逻辑

28、电平输入、斜率调节、过温、过压、欠压、过流以及短路保护功能。(2)BTS7970相关引脚的说明如图2-6所示,BTS7970芯片内部是一个半桥。INH引脚为高电平,使能BTS7970。IN引脚是用于确定哪个MOSFET是导通的。SR引脚外接电阻的大小,可以用来调节MOS管关断和导通的时间长短,具备防电磁干扰的功能。IS引脚是检测电流输出引脚。图2-6 BTS7970的引脚图表2-6 BTS7970引脚功能介绍PINSYMBOLI/O功能1GND接地2INI输入,低电位开关、高电位开关是否是开启决定的3INHI抑制,当设置为低电平的时候,进入到睡眠状态4,8OUTO功率输出5SRI斜率调节6IS

29、O电流取样的判断7VS电源2.2硬件设计硬件设计主要内容介绍(见图2-7):(1)电源供电设计;单片机的电源控制,可以由电源适配器通入电压,也可以用电池输入电压,在接到LM2940电源芯片上,最后输出5V电压,在显示屏方面,接到LM1117上,转换成3.3V电压为其供电。(2)检测电池电压电路设计;采用单片机AD功能模块,采集负载电阻之间的电压,之后进行相关的数据处。(3)检测电池放电电流电路设计;该模块设计一个半桥电路,通过控制PWM方波,实行放电。(4)单片机电路设计;单片机电路设计主要是单片机外围电路的连接,以保证单片机可以正常工作。单片机与半桥电路、LCD显示屏相关引脚的连接以确保信号

30、能够正常传输。(5)显示模块的设计;主要采用Nokia5510显示屏以及采取电阻分压设计按键。主要用来设置不同的参数,以及显示放电的实际数值等。电阻负载人机交换电池半桥BTS7970电源供电模块单片机及外接电路AD采集电压进行反馈进行反馈图2-7 硬件设计原理图2.2.1电源供电模块设计单片机的运行、半桥电路、散热器以及Nokia显示屏的工作都必须要以电源的供电模块为基础。如图2-8所示,在电源供电模块的设计当中,需要把输入的6V电压转换成5V的电压,给整个系统供电,在这部分使用的5V稳压压芯片是LM2940,K是电源开关,在电路板需要供电时关闭开关为电路供电,不需要供电时打开开关,起到省电的

31、目的。LM2940是电源芯片,可以把左侧的电压调整为5V在右侧输出,VCC输出为5V。图2-8 5V供电如图2-9所示,根据不同模块对电压要求的不同,其中Nokia5510显示屏需要3.3V的电压,所以选用3V稳压芯片LM1117将输入的5V电压转换成3.3V电压以为显示屏供电,否则提供过高的电压会对显示屏有所损坏。在本次课题中,我们只需要芯片输出3.3的电压,以给显示模块Nokia5510屏供电。LM1117系列稳压器可以提供1A直流输出,它可以运行在输入输出电压相差1V的情况下。它的最大输出电流为800mA,在最大输出电流的情况下,电压差设计可提供最大为1.5V。图2-9 3.3V供电2.

32、2.2单片机电路设计参照附录A 整体硬件原理图,单片机电路设计主要是确保其他模块与其端口的正常连接,与电源模块连接确保正常供电。其中端口PP是作为PWM通道使用。PT端口是作为TIM通道或者也可以PWM通道;PS端口是作为串行通信接口使用的。当插入待放电的电池之后,AN1、AN3作为电压检测电路与单片机连接的接口,此时,检测出相应的电压,若是电压大于6V,单片机PWM模块输出PWM方波,检测放电电流,端口PP1和PP3与半桥BTS7970相连,通过PWM方波占空比来控制放电。过程中,有四个水泥电阻,其中两两串联之后,串联到半桥电路上,与外围的两个大电容连接,起到一定的滤波作用。PS端口主要用于

33、与LCD显示屏连接,用来接收和发送相应的数据,最后显示在显示屏上。2.2.3电池电压检测模块设计如图2-10所示,电池电压检测模块主要是用来随时检测待放电的电池的电压值。电池电压一般大于6V,因此采用二个49.9K电阻,采集这两个电阻之间的电压,然后在程序中再换算成电池电压。此外在这个电路中还增加了D1二极管保护电路,防止电压过高,击穿单片机的AD口。图2-10电池电压检测电路设计2.2.4放电电路设计如图2-11所示,放电电路设计部分所选用的是BTS7970半桥芯片。根据BTS7970引脚的功能,其中端口7接电池正极;端口2与单片机的PP1连接,利用单片机的PWM模块的PWM方波来控制半桥电

34、路的放电过程;水泥电阻RL1和RL2串联之后与BTS7970连接,之后与外围的大电容CE3连接,以达到消除尾波,使得电压平稳恒流放电的效果。对于AN0端口,利用AD功能模块采集RL1与RL2之间的电压,进行相应的反馈,当采集的电压过高,就放电,当采集的电压过低的时候,就停止放电。图2-11 电池放电检测电路设计2.2.5信息显示模块设计显示模块的设计主要是与电源模块连接以确保正常显示,以及显示屏与单片机芯片相关引脚的连接。其中端口1接电源VCC,此时的电压是在3.3V左右;端口2接地;端口3接单片机的PS0,此为串行通信接口0接收数据的引脚,端口4接单片机的PS1,是通信接口0发送数据的引脚;

35、端口5接单片机的PS2,用来接收数据,端口6接PS3,用来发送相应的数据;其他两个端口接AN4和AN5,为通用I/O口。在按键设计方面,采用单片机自带的其中两个AD口来完成按键的识别,在识别复杂程度和设计成本上,优于矩阵按键、按键芯片。利用AD部分来检测到电压的数值,根据不同的电压值,可以确认是按下的哪个按键。图2-12 按键模块AD口采集原理图图 2-13按键模块PCB图2.2.6硬件电路总体设计图采用Protel DXP 2004软件绘制镍镉电池自动放电器的原理图及PCB电路板。该镍镉电池放电器硬件设计总体原理图见附录A,该放电器的PCB电路板如图2-14所示。图2-14 镍镉电池自动放电

36、器的PCB电路板3放电器软件设计本系统软件部分采用模块化结构,各模块采用C语言均编成子程序,便于函数之间相互调用和对问题的调试。本系统软件主要分为4大模块,分别为主程序模块、A/D转换模块、PWM模块、Nokia显示屏的显示模块。3.1飞思卡尔单片机的软件开发环境Freescale XS128单片机的软件开发环境选择的是Codewarrior5.0, Codewarrior5.0是飞思卡尔单片机的软件编程工具,所有程序模块都在上面编写。显示界面如下,其中右侧为源代码文件Main.c的编辑环境,可以在此输入程序,也可以删除、修改或拷贝编辑完成的程序。(如图3-1) 图3-1程序输入以后,点击工具

37、栏的 图标(make )检查程序是否有错,如果有错,会在编辑框上方提示错误警告,以为标志,程序中会随之用红色箭头在程序中标出出错位置。例如下图中的程序有两个错误(第 12 行少了一个分号,导致无法编译通过)。检查程序并修改,直到没有错误为止。(如图3-2)图 3-23.2软件设计部分的总体方案本系统软件部分采用模块化结构,各模块均编成子程序,便于函数之间相互调用和对问题的调试。本系统软件主要分为4大模块,分别为主程序模块、A/D转换模块、PWM模块、Nokia显示屏的显示模块。系统以飞思卡尔单片机作为中央控制芯片。首先要将单片机和Nokia显示屏进行初始化设置,使中央控制系统开始工作;然后单片

38、机的AD功能模块采集电阻之间的电压,看检测到的电压是否高于6V,并且进行相应的反馈来调节半桥电路的PWM波(占空比),让半桥通断。在这过程中,检测放电电流,如果检测到电流过高,就减小PWM方波的占空比,如果检测到的电流偏小了,就增大PWM方波的占空比,直到电池的电压为6V左右(软件流程如图3-3)系统初始化程序开始检测电压是否高于6V输出PWM方波检测放电电流减小PWM方波的占空比增大PWM方波的占空比检测电压是否高于6V结束YN大小Y结束,显示N 图3-3 软件部分的流程图3.3软件功能模块的具体实现3.3.1部分模块的初始化(1)时钟初始化系统总线频率恒定为40MHz,选定锁相环时钟。st

39、atic void SetBusCLK(void) CLKSEL=0X00;/停止锁相环输入系统 PLLCTL_PLLON=1;/打开锁相环 SYNR =0x40 | 0x04; /SYNR=4 REFDV=0x80 | 0x01; /REFDV=1 POSTDIV=0x00; /pllclock=2*osc*(1+SYNR)/(1+REFDV); 2*16*5/2=80 _asm(nop); /BUS CLOCK=pllclock/2 _asm(nop); while(!(CRGFLG_LOCK=1); /当锁相环稳定的时候,可以使用; CLKSEL_PLLSEL =1; /锁相环输入系统;

40、 (2)I/O口初始化AN端口为AD采集电压的口,PP端口是PWM方波的输入输出端口。DDRx为端口x数据方向寄存器,对DDRx寄存器的某一位写入逻辑“0”则对应该位的引脚被定义为输入引脚,写入逻辑“1”则对应该位的引脚被定义为输出引脚。* led port,power enable port init */static void InitPort(void) DDRB=0xFF; DDRB_DDRB7=0;3.3.2 A/D模块ATD模块由一个总线时钟预分频器、逐次逼近寄存器和D/A转换器、采样保持器、比较器和16通道多路开关等组成。AN15到AN0是模拟量输入通道15到0,也可以作为数字I

41、/O口使用。通道AN1和AN3口采集待放电电池的电压,并做数据处理。(1)A/D模块的初始化在对AD功能模块进行编程之前要先对此模块先进行初始化,进行最初的赋值,作一些声明。要对每个控制寄存器进行赋值,作清零处理和确定数据对齐方式和分辨率的设置。void ADInit(void) ATD0CTL1=0x40; / 0x00:8BIT RES0x40:12BIT ATD0CTL2=0x40;/ CCF自动清零;A/D转换结束产生不中断 ATD0CTL3=0x8b;/ 右对齐,不循环使用FIFO,序列长度1,冻结ATD0CTL4=0xFF; / AD_clk = Fbus/(2*(PRS+1);f

42、_bus=80MH, AD_clk=80/32=2.5MH(fATDCLK8.3MH),PRS=31(2)A/D模块的采集采用ATD控制寄存器5,该寄存器写操作将中止当前的转换序列,启动新的转换序列。CD、CC、CB、CA是模拟量输入通道选择编码位。SCAN表示连续转换序列模式选择位,是用于确定A/D转换序列是连续执行还是只转换一次。void AD_start(void) ATD0CTL5=0x00; / 通道0只转换一次 while(!ATD0STAT0_SCF); g_adVal0=ATD0DR0; ATD0CTL5=0x01; / 通道1只转换一次 while(!ATD0STAT0_SC

43、F); g_adVal1=ATD0DR0;3.3.3 PWM模块 PWM模块具有8路8位独立PWM通道,通过相应的设置也可以变为4个16位PWM通道,每个PWM通道由独立运行的8位通道计数器、两个比较寄存器为通道周期寄存器和占空比寄存器等组成。通过对各个寄存器的参数设置,可以确定PWM波形的输出周期和占空比。(1)PWM模块的初始化在对此模块进行编程之前,也同样要先对该模块进行初始化。要先对相关的寄存器进行赋值。程序如下:static void InitPWM(void) /clocka: pwm0 1 4 5 /chockb: pwm2 3 6 7 /舵机rudder: pwm01级联 电机motor: pwm23 pwm45 PWME = 0x00; /pwm 禁止 PWMPRCLK = 0x00; /clockA和clockB分频值为总线时钟的 0分频, 40MHz PWMSCLA = 4; /clockSA 的频率为1MHz, Clock SA = Clock A / (2 * PWMSCLA) PWMSCLB = 4; /clockSB PWMCLK = 0x00; /时钟来源选择:0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号