一、无纸记录仪总体布局
无纸记录仪所要实现的功能是这样的:记录仪有4个通道,每秒采样1次,每个通道每次采样需记录两个字节,根据各个通道的转储速率(从1至255可设定),把采样的数据写入外部数据存储器62256,一旦数据满512字节,就把512字节一次性写入FLASH闪存中。
图1:记录仪总体功能图
二、系统电路构成
无纸记录仪电路由单片机AT89C55WD、液晶显示电路、A/D采集电路、FLASH闪存存储电路、时钟电路和看门狗电路组成,下面简要介绍各个组成部分。
1.单片机AT89C55WD及电路组成
AT89C55WD与MCS-51相兼容,可对内核进行1000次的电擦写,其电压、电流和功耗都比较小,带有20K的可重写快闪存储器和硬件看门狗定时器。
看门狗定时器是在系统软件崩溃后进行恢复的一种方法,WDT由14位计数器和看门狗复位特殊功能寄存器(WDTRSTSFR)组成,在缺省设置下,系统复位时即关闭。要使WDT有效,用户必须向0A6H单元的WDTRSTSFR顺序写入01EH和0E1H。当WDT有效,计数器每经过一个机器周期后加1,除了硬件或WDT溢出复位,没有任何方法可使WDT无效。当计数器溢出,WDT就在RST引脚产生一个复位的高脉冲。
要使WDT持续有效,就必须每隔一定时间往WDTRST写入01EH和0E1H来避免WDT溢出。当WDT的14位计数器计数至16383(3FFFH)时,计数器便溢出,引起设备的复位。这就意味着用户必须至少每16383个机器周期复位WDT一次。使WDT复位,必须向只写寄存器WDTRST写入01EH和0E1H。当WDT溢出时在RST引脚产生一个复位的高电平脉冲,持续时间为:98×TOSC,TOSC=1/FOSC。为了充分利用WDT,在要求防止WDT溢出复位时,应每隔一定周期写WDTRST一次。
单片机AT89C55WD通过P0口驱动液晶显示器;通过T1输出作为AD7715的采样脉冲同时用P2.6引脚读入AD7715的采样数据;因为FLASH的8根数据线与地址线是复用的,用单片机的P0口通过一片74ALS244及TC4010BP将电平转化后与FLASH相连;用单片机的P2.4经过74ALS32作为时钟DS1305的脉冲输入,INT0与时钟的引脚6即INT0相连,这样DS1305每秒产生中断信号作为AD7715采样的开始;通过把对时钟DS1305的脉冲输入作为看门狗X25045的输入,通过P2.6向X25045写入数据来实现看门狗功能。
2.液晶显示电路
在记录仪中使用HG16501点阵式液晶显示器,其内置有T6963C控制芯片,与单片机接口较为简单。
3.A/D采集电路
A/D采集电路主要由AD7715构成,该芯片是串行输入,三线接口,而4个通道的输入则选用了HCF4051。
4.电平转换电路
该电路主要是5V与3.3V之间的电平转换电路,本设计采用三片TC4010BP来实现。
5.时钟电路
系统时钟采用串行时钟芯片DS1305,并使用MotorolaSPI工作方式。DS1305的INT0与单片机INT0直接相连,DS1305每秒产生中断启动AD7715进行采样。
6.看门狗电路
系统防复位的看门狗电路由可编程的X25045来实现,该芯片具有看门狗定时器、电压监控和EEPROM三种功能,这种组合降低了系统的成本并节省了电路板空间。
三、系统软件部分
系统软件采用C51语言与A51汇编语言混合编程,其中中断采样部分采用A51汇编语言来编写。
1.编程语言
本系统采用Keil公司V6.10的C51编译器。A51是一个有通用特性机用法的重定位宏汇编器,能很好地与INTEL公司的MASM51宏汇编兼容,支持模块化编程,可以方便地与高级语言接口,但与MASM51还是有很大区别,主要是A51对许多MASM51的寄存器都不支持,这一点需要注意。
2.工作过程
系统上电,对时钟、液晶显示器HG16501、AD7715芯片初始化后,主程序处于循环检测键盘的按键状态,并根据按键作相应处理,而采集部分是由CPU每秒产生中断来执行。四个通道采集后先向外部存储器62256写完512个字节后置写入允许,主程序一发现写入允许置位,就将这512字节的数据写入FLASH闪存,同时把写允许复位。因为软件是分级菜单结构,每进入下一级子菜单,都必须作同样的事,时钟读并显示,检查写FLASH闪存允许位是否置位,如置位,则把数据写入FLASH闪存,所以把它单独列为常规操作。
四、C51及A51程序
整个系统软件C51部分的源程序约70KB,中断部分的A51源程序约7.1KB,两部分编译连接后产生的HEX文件将近16KB,仅用了20KB程序存储器的五分之四,剩下的4K可留给将来添加新功能。