摘要:介绍了一种基于串行接口方式的单片机通用数据采集系统,该系统以AT89C52单片机为核心,从数据的采集、存储与上位机的通信到数据的显示、打印输出全部采用串行接口器件,从而降低了布线密度,提高了系统可靠性。文中对系统的硬件组成结构予以详细介绍,并给出了软件流程。
关键词:串行接口方式 单片机 数据采集系统 硬件电路
1 引言
在传统微机化的数据采集系统中,均是以总线方式来扩展各功能部件,如A/D转换器、程序存储器、数据存储器、日历/时钟器件、显示器件及微型打印机等,由三总线方式构成的数据采集系统,突出的问题是由于总线引出,易受干扰,造成系统的可靠性降低,同时也带来了布线密度高,占用电路板空间大,外围元件较多,时序复杂等问题。近年来随着片内具有FLASH存储器的非总线型单片机及具有串行接口的外围器件的推出,使得设计出基于串行接口方式的数据采集系统成为可能。
2 硬件结构
基于串行接口方式的单片机通用数据采集系统硬件系统框图如图1所示。
本系统根据实际采集数据的需要,分别设计了模拟量采集接口电路、开关量采集接口电路、数字量采集接口电路及频率量采集接口电路,基本涵盖了各种数据信息的采集。为了将采集的信息保存下来,扩展了一片容量为64K字节的E2PROM AT24C512,为实现数据的定时采集和按时间日期保存数据而扩展了一片实时时钟日历芯片SD2001E,为便于输入各种数据而扩展了键盘接口管理器件 SK5278,为便于实时显示采集的数据及人机交互而扩展了中文液晶图文显示器OCMJ4X8C,为便于将采集的数据打印输出而扩展了MP-A16-8型汉字微型打印机,为便于将采集的数据传送给上位计算机进行数据的处理分析而使用MAX232扩展了RS-232接口,下面对上述各串行接口器件予以介绍。
2.1 模拟数转换器TLC2543
TLC2543是具有11个模拟量输入通道,12位分辨率的A/D转换器,因而本系统最多可实现11路模拟量的采集任务,为了保证测量结果的准确性,该器件具有3路内置自测试方式,可分别测试REF+高基准电压值,REF-低基准电压值和REF+/2值,该器件的模拟量输入范围为REF+-REF-,一般模拟量的变化范围为0-5V,但为了能满足一些传感器输出的非标准电压值的数据采集任务,这里利用了TLC2543的基准电压设定功能,设计了模拟量输入范围设定调整电路,采用电阻分压的方式设定采集基准电压值。其中R1和RP1用于设定满度电压值,调整RP1可使满度电压值在1/2VDD-VDD之间变化,R2和RP2用于设定零值电压,调整RP2可使零基准电压在0-1/2 VDD之间变化,RP1和RP2应采用多圈精密电位器。TLC2543的基准电压设定功能,使得本系统可满足各种非0-5V标准输出的传感器数据采集任务,TLC2543与单片机的接口采用4线SPI串行接口,三个控制输入端分别为“CS”(片选)输入/输出时钟(CLK)及地址输入端“DI”,片内的 14通道多路器可以选择11个输入端的任何一个或3个内部自测电压中的一个且采样保持是自动完成的,转换结束后“EOC”输出变高,转换结果由三态输出端 “DO”输出,AT89C52单片机与TLC2543的硬件接口电路如图2所示。
2.2 I/O扩展器GM8164
为了实现开关量采集及开关量输出控制的功能,这里使用了一片具有大量I/O扩展功能的串行芯片GM8164,该器件的主要特点如下:
图2 单片机与TLC2543的硬件接口电路
⑴扩展I/O口数量众多,可提供32位数据输入口和40位数据输出口;
⑵同时提供8个开漏输出口,方便电平转换和驱动;
⑶可达1MHz的全速率同步串行接口,非常方便与通用MCU接口;
⑷可多个芯片级联,扩展I/O口的数量;
使用GM8164可使本系统实现最多32个开关量的数据采集任务,同时可提供40个开关量控制输出功能。
2.3 高精度实时时钟/日历SD2001E
实时时钟器件使用了具有I2C总线接口的实时时钟器件SD2001E,该器件将实时时钟所需的电池、晶振、电源管理等电路全部集成在了芯片内部。在系统掉电的情况下也可保证时钟的运行。该芯片无需任何的外围元件,就可构成一个高精度的实时时钟日历,且可为系统提供32k byte擦写次数达100亿次的非易失性SRAM,该器件的主要性能指标如下:
⑴年、月、日、星期、时、分、秒的BCD码输入/输出;
⑵I2C总线接口(包括实时时钟部分和SRAM部分);
⑶自动日历到2099年(包括闰年自动换算功能);
⑷内置高精度晶振,精度≤±5ppm,即一个月内,走时误差不超过13秒(25℃);
钟走时时间超过10年以上;
2.4 串行E2PROM AT24C512
由于SD2001E为系统提供了容量达32k字节的非易失性数据存储器,已能够满足一般数据采集系统的需要,如采集系统的数据存储量较大时,可在扩展一片容量为64k字节的E2PROM AT24C512。由于该器件的擦写寿命有限,故在使用时可将数据先写入SD2001E片内NVRAM,当NVRAM写满后再将数据存入到 AT24C512中,这样可使AT24C512的读写频率大为降低,从而大大延长了该存储器的使用寿命。
2.5 中文图文液晶显示模块OCMJ4X8C
为便于将采集的数据实时显示出来,并实现友好的全中文图形人机界面,这里使用了串行接口具有中文字库的图形点阵液晶模块OCMJ4XC8, OCM4X8C是具有串/并接口且内部含有中文字库的液晶显示模块。该模块的控制/驱动器采用台湾矽创电子公司的ST7920,因而使得该模块具有较强的控制显示功能。该模块的液晶显示点阵为128*64,可显示4行,每行8个汉字,为了便于简单和方便地显示汉字,该模块的内部具有2Mbit的中文字型 CGROM,该字型ROM中含水量有8192个16*16点阵中文字型库,同时为了便于英文字符和其它常用字符的显示该模块的内部还具有16Kbit的 16*8点阵的ASCⅡ字符库,为便于构造用户图形,该模块还提供了一个64*256点的GDRM绘图区域,且为便于构造用户所需字型,模块内部提供了4 组16*16点阵的造字空间。利用上述功能,OCMJ4X8C实现汉字、ASCⅡ码、点阵图形、自选字型的同屏显示。为便于和多种微处理器接口,模块提供了8位并行、4 位并行、2线并行、3线并行接口方式。
2.6 微型汉字打印机
为便于将采集数据打印出来,这里使用了具有汉字库的串行中文打印机MP-A(D)16-8该打印机的主特点如下:方便的汉字打印功能,除存储字符集一、二外,还自带16×16点阵与12×12点阵国标一二级汉字库,故不但能打印全部ASCⅡ字符和德文、法文、俄文、日语、数字符号、专用符号、自选字符、点阵曲线以及条码等,更能同行混合打印16×16、12×12、8×16、16×8、8×8、6×12,点阵汉字或5×7、6×8、8×12、8×16点阵 ASCⅡ字符。由于自带2k字节的数据缓存器及汉字字库,使得打印汉字及图符速度与英文字符一样快捷;丰富的文字修饰功能;方便的接口方式。
2.7 数字量与频率量的采集
数字量与频率量的采集直接使用单片机自身硬件资源,对于数字传感器输出的数字信号可直接使用单片机的口线完成数字信息的采集任务,这里将单片机的P1口作数字量采集接口。频率量的采集如转速、流量、风向等可使用单片机的定时/计数器,这里将定时器0和定时器1作为频率量采集用,当不使用的频率量采集功能时可做它用。
3 监控软件设计
本系统监控软件采用模块化结构设计并采用ASM汇编语言编制。监控程序功能是对各串行接口器件进行初始化,然后分别调用模拟量采集模块,数字量采集模块,开关量采集模块和频率量采集模块,如外部有模拟量、开关量、数字量、频率量信号输入时,则调用相应的算法程序将对应变量处理变换后送入SD2001E的 NVRAM中进行数据保存。同时将对应的数值送液晶显示器显示或根据需要打印输出,如外部无任何信号输入时则在液晶屏上显示“欢迎使用”及系统时间、日期。下面给出监控程序流程。如图3所示。
结束语
基于串行接口方式单片机数据采集系统的研制,摒弃了传统单片机的总线扩展方式而采用串行扩展技术来扩展外围功能电路。虽然AT89C52单片机并不直接支持各种串行总线接口,但是这里采用了单片机的通用I/O口线,来模拟I2C总线、SPI总线及二线串行总线,并通过软件编程来实现与各外围器件的通信功能,串行扩展技术简化了系统接口设计的复杂程度,并提高了系统工作的可靠性。但值得注意的是,串行扩展技术简单的硬件接口是以复杂的接口时序为代价的,因而在软件编程时一定要严格遵守器件的操作时序。该系统可广泛应用与以单片机为核心构成的智能仪器仪表系统、数据采集系统和计算机测控系统。同时也为智能仪器仪表系统搭建了一个较好的硬件平台。