基于C语言和汇编语言溷合编程的蓄电池在线测试仪_第1页
基于C语言和汇编语言溷合编程的蓄电池在线测试仪_第2页
基于C语言和汇编语言溷合编程的蓄电池在线测试仪_第3页
基于C语言和汇编语言溷合编程的蓄电池在线测试仪_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、蓄电池在线参数测试仪摘要:文章介绍了C语言与汇编语言之间的混合编程,开发了一个基于AT89C52单片机的蓄电池在线测试仪,重点介绍了系统的硬件组成和软件设计。系统具有方便、可靠、高精度等特点。关键词:C语言; 汇编语言; 单片机; 蓄电池; 在线测试1、C语言和汇编语言的混合编程    单片机用C语言编程具有开发周期短、可读性强、可移植性好和修改方便等特点,但是C语言反汇编生成的汇编代码往往较长。直接用汇编语言编程虽然编写的程序较短,在直接对机器配件进行控制方面具有相当的优势,但是开发周期长,修改也不方便。较好的解决办法是程序的框架或主体部分用C语言编写,要求执行

2、效率高的部分用汇编语言编写。这种混合编程的方法将C语言和汇编语言的优点结合起来,所以成为目前单片机开发最流行的编程方法。    在把汇编语言程序加入到C语言程序中之前,必须使汇编程序和C程序一样具有明确的边界、参数、返回值和局部变量,必须为汇编语言编写的程序段指定段名并进行定义,如果要在它们之间传递参数,则必须保证汇编程序用来传递参数的存储区和C函数使用的存储区是一样的。    在C语言中使用汇编语言有两种情况:一种是嵌入式汇编,即在C语言程序中嵌入一段汇编语言程序。另一种是汇编程序部分和C程序部分分别为不同的模块,或不同的文件,通常

3、由C程序模块调用汇编程序模块的变量和函数,这其中的关键问题在于C函数与汇编函数之间的参数传递,C语言中有两种参数传递方法:通过寄存器传递和通过固定存储区传递。2、系统简介    蓄电池作为辅助供电装置,在航天、军工、通信、电力、金融等领域应用广泛。由于电池本身的设计、生产工艺及使用维护等原因,电池失效现象时有发生,严重影响了系统的正常运行。为保证系统的安全、正常运转,必须要对蓄电池的状况进行检测。    蓄电池检测的方法很多,主要有如下几种:密度法、开路电压法、放电法和阻抗检测法。阻抗检测法是目前在世界范围内认知度最高的蓄电池检测方法

4、,得到了IEEE蓄电池组和INTELC国际通讯电源会议的认可,并在IEEEstd1188-1996中推荐使用。本文中的蓄电池在线测试系统主要也是采用了这种方法,同时测量蓄电池的端电压和温度,实现对蓄电池的在线检测。 2.1系统硬件结构设计    系统硬件结构框图如图1所示:    系统采用AT89C52作为控制芯片,它内置8KROM和256字节的RAM,不用扩展ROM和RAM, P2口直接作为I/O口使用,使单片机外围电路大大减少。交流信号发生器利用运放LM358产生100HZ的低频交流信号,通过音频功放LM386对蓄电池进行耦合驱动

5、。温度采集电路中采用的传感器是AD590。在内阻和端电压测试模块中,交流电流和电压信号较弱,因此在交流通道前端采用高精度的仪表放大器AD622对信号进行放大,低通滤波后,通过真均方根值-直流转换器AD736,将交流信号转换为直流信号。蓄电池的端电压经高精度电阻分压后,与温度采集值和交流信号的有效值一起进入数据采集模块。液显采用的是GDM12864E,它内嵌ST7920型中文字型点阵LCD控制/驱动器,接口简单,使用方便。电源部分采用了高效率的升压直流转换芯片MAX1675,通过两节5号电池供电,升压到+5V。采用MAX660实现+5V到-5V的转换,为系统提供负电源。  &

6、#160; 因为系统需要采集多路不同性质的信号,数据采集模块是系统硬件设计中的一个关键,包括前端调理电路和多路采集电路,其中多路采集电路具体电路如图2所示。CD4051是八选一模拟开关;MAX1240是一种新型的12位串行输出模数转换器,功耗低,转换速度快,15s便可完成一次转换,并且外部只有八个管脚,占用电路板面积小。系统中利用三个I/O口实现数据的串行输入,因为MAX1240在数据传输时对时序要求较高,在软件设计中采用汇编语言实现对MAX1240的控制和数据采集。    硬件工作基本过程:交流信号发生器产生固定频率的正弦交流信号,作为内阻和端电压测试模块测量蓄

7、电池交流内阻时的驱动信号; 温度测试模块直接测量蓄电池的温度; 内阻和端电压测试模块测量蓄电池的端电压、交流信号通过蓄电池时的电流和在蓄电池两端产生的交流电压,以及交流电流与交流电压之间的相移角,其中交流电流值通过采样电阻获得; 数据采集模块将蓄电池温度、端电压、交流电流和交流电压值模数转换后输入计算机,交流电流与电压之间的相移角通过调理电路转换为方波信号,利用单片机的INT1口直接进行采集; 单片机系统利用蓄电池内阻计算公式计算出蓄电池的交流内阻,将蓄电池的端电压、温度、交流内阻等参数在LCD上显示; 按键部分则实现人机交互。2.2 系统软件设计    根据设计

8、要求,按照实现功能的分类,系统软件主要完成五项任务:系统初始化、数据采集、数据处理、键盘响应和数据显示。在数据处理中,需要进行大量浮点数的乘除法和正弦、余弦运算,因此数据处理部分采用C语言编写,在Keil环境中模块化编程,充分利用C语言强大的计算能力,系统初始化、键盘响应和数据显示也采用C语言编程,在数据采集部分中,MAX1240对时序要求比较严格,采用汇编语言实现,所有功能模块均为独立的C文件或ASM文件。利用WAVE仿真器提供的一个与第三方编译器的接口,在WAVE仿真器集成环境中对在Keil环境中编写的整个程序进行编译、调试和仿真。    而实现C语言和汇编语言的混合编程是软件设计中的难点和关键之一。本文中,汇编语言采用单独的文件,通过寄存器传递函数参数,相关具体程序如下所示:3、结束语    研制的样机经实际对多种型号的蓄电池进行测量,蓄电池交流内阻误差不超过1.2%,端电压误差不超过2.7%,而温度误差在0.5摄氏度以内,表明系统具有良好的测量精度。并且,样机性能稳

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论