新闻中心

EEPW首页>测试测量>设计应用> 基于PIC单片机的便携式测试记录仪设计

基于PIC单片机的便携式测试记录仪设计

作者:高培先, 张相 时间:2008-08-27 来源:电子技术应用 收藏

  2 软件设计

本文引用地址://m.amcfsurvey.com/article/87442.htm

  本软件由实时处理程序和组成诸功能部件的组成。

  2.1 实时处理程序

  实时处理程序调用相关完成模拟量采集、数字滤波、插值运算、实时显示、记录合成及记录保存。本采用的记录格式从高至低依序为:传感器号,量程,采集值,年,月,日,时,分,秒。

  2.2设计

  驱动程序设计的基本思想是:首先完成相关接口、寄存器的初始化,然后根据具体物理部件产生微操作时序,并对操作过程中遇到的异常事件进行容错处理。

  2.2.1 读/写E2PROM 驱动程序

  I2C总线由时钟线(SCL)和数据线(SDA)组成。根据I2C总线协议,将图1所采用的24LC65芯片的读/写操作按操作顺序分解为:使总线处于空闲状态(SCL、SDA均为高电平);发送读/写启动信号(SCL保持高电平,SDA从高变低产生下降沿);在数据线SDA上读或写数据位(SCL高电平时,SDA状态为有效的读或写数据位,SDA状态,即0或1的变化必须在 SCL低电平期间完成);发送读/写结束信号(SCL保持高电平,SDA从低变高产生上升沿)。如果为写操作,每写完1字节数据后,24LC65在数据线SDA上回送握手应答信号,表示该字节数据已被可靠写入。以上微操作通过汇编语言编程实现。

  本记录仪以记录方式读/写数据片。因此,对写来说,首先读字典片,以便用其中的表头参数判断当前数据片是否已写满。若已写满,则在LCD上显示无写空间标记代码,然后返回休眠状态;否则,将记录写入记录指针所指向的数据片中,同时对表头参数进行修改。在写过程中,重要的是处理疵点单元。尽管24LC65在写过程中出现的疵点概率极少,但若不正确处理,则会导致目标数据丢失甚至出现系统死机现象。作者曾采用数据轮询技术进行容错处理,收到了良好的效果。其基本思想是:每当在数据线上写完1字节数据后,便反复查询24LC65回送的应答信号,但最多不超过50次(此数足够24LC65写入时间);若超过查询次数仍无应答信号,便认为该单元为疵点单元,将其地址记入疵点单元地址队列,并使疵点单元计数器加1,然后在下一比邻单元继续写入原数据。如果连续两单元为疵点单元,则认为整个芯片有问题,此时,在LCD上显示该单元所在的芯片号(芯片号参见图1),然后,返回休眠状态。

  对读来说,首先判断数据片是否为空。若为空,则在LCD上显示无记录标记代码,然后返回休眠状态。否则,继续判断数据片是否有疵点,如果无疵点,则从数据片首址开始按序读出所有记录;否则,在按序读记录过程中,根据疵点单元地址队列内容,跳过所有疵点单元,以保证读出的记录连续、真实、可靠。

  2.2.2 采集驱动程序设计

  A/D转换器MAX189所带串口与16C74的SPI口完全兼容。因此,在A/D转换完成后,只要启动SPI口产生13个同步时钟脉冲便可连续两次从SPI数据缓冲器上获得12位转换结果。由于本记录仪采集的参数个数依现场安装的传感器数不同而不同,因此,驱动程序必须能予以自动识别。图2为采集驱动程序流程,其基本设计思想是:首先读识别片,以确定实际安装的传感器数量,然后从0通道传感器开始进行采集,直到实际安装的最后一个传感器采集完毕为止。图2中:CHAN:通道寄存器;COUNT:传感器数量寄存器。

  3

是通过测试程序完成对记录仪本身各功能硬件的性能测试。测试程序独立于实际应用程序,在单独的中,使用时只要拔掉记录仪模板上的单片机而用其代之即可。测试程序设计的基本思想是:首先根据不同测试对象(即部件)产生不同的测试数据和测试期望数据,然后以测试数据为入口参数,调度相关驱动程序产生目标数据,最后用测试期望数据与目标数据进行比较,以此判断所测硬件性能之良劣。

  3.1 E2PROM

  E2PROM测试需要与PC机通讯。其基本原理是:首先产生8种测试数据:0x00、0xff、0x55、0xaa、0x0f、0xf0、0x5a、0xa5(0x表示16进制数),然后分别以此8种测试数据为入口参数,交替调度写、读E2PROM驱动程序3次(即先写后读3次)。每读一次,与测试期望数据(此处测试数据与测试期望数据相同)进行比较,若不相等,则对相应片错误计数器加1。测试结果实时地显示在记录仪LCD和PC机上。LCD只显示总错误个数,PC机则依次显示、保存总错误个数及错误单元地址。

  3.2 A/D测试设计

  A/D测试也需要与PC机通讯。由于本记录仪最多可采集8路传感器参数,因此,测试程序对键盘重新定义如下:当手动、自动、通讯、打印、清零键有键按下时,对应测试0~4通道传感器;当手动、自动、通讯键其中之一与清零键同时按下时,则对应测试5~7通道传感器。测试只对放大器满量程的10%、50%、90%等3点进行采集。其原理是:首先,测试程序扫描键盘,当扫描到有键按下时,则调度采集驱动程序对该键盘定义的通道传感器进行连续采集,采集结果不作任何处理,实时地显示在记录仪LCD和PC机上。LCD只显示当前的A/D转换码值,PC机则显示并保存当前A/D转换码值、各点最大、最小转换码值及两者绝对差值。技术人员可以此判断前向通道(传感器、放大器、A/D)工作性能的好坏。笔者曾连续测试0通道传感器6个半小时,发现最大码差为9,表明前向通道工作相当稳定。

  3.3 实时时钟测试设计

  实时时钟DS1302测试需要借助PC机完成。其测试原理是:首先PC机上的测试程序读PC系统日历信息─年、月、日、时、分、秒、星期,并进行发送。记录仪在接收后,立即调度写DS1302驱动程序将接收的PC系统日历信息写入DS1302相关功能寄存器中,并使DS1302以此为时基进行计时。此后,进入记录仪发送、PC接收的无限循环状态,即:每隔10ms,记录仪调度一次读DS1302驱动程序,并将获得的最近日历信息予以迅速发送;而处于接收状态的PC接收后,立即与PC系统当前日历信息进行比较,如此循环,直到人工干预结束测试为止。在上述测试过程中,记录仪LCD只实时地显示日历信息的分、秒两位,PC机则实时地显示记录仪和PC机两端完整的日期、时间及两者比较差。另外,通过观察记录仪LCD上显示的分、秒位变化,也可初步判定DS1302的性能。笔者曾连续运行该测试程序24小时,偏差极小,足以满足本系统的需要。

  4 实际应用

  本记录仪已投入实际应用一年多,其可靠性、稳定性、操作性和精度均受用户欢迎。不足之处是:目前功耗还比较大,作者在+12V供电时测得电流为45.5mA,尚需进一步改进。

  参考文献

  1 窦振忠.系列单片机原理和程序设计.北京:北京航空航天大学出版社,1998

  2 王福瑞. 单片机测控系统设计大全. 北京:北京航空航天大学出版社,1999

  3 王幸之. 单片机应用系统抗干扰技术. 北京:北京航空航天大学出版社,2000


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭