0 引言
在现代工业控制系统中,多参数实时采集对监控设备正常运行有着十分重要的作用。多参数信号采集是将监控现场的物理量、化学量或生物量通过相应的传感器和调理电路把模拟量转换为易于采集、处理的电压信号,经过单片机的处理,一方面反馈给控制部件对监控对象进行控制调整,另一方面送给显示单元,实时显示采集的信号数据。在航空、汽车、通信、园林等控制领域,多参数实时采集与处理是自动控制系统的核心。但是专用的数据采集设备价格动辄上万,高速数据采集卡的价格也在千元以上,而且这类设备大多有固定的接口,无法适应千差万别的被测对象的需求,不具有通用性。本文从应用角度出发,设计分辨率为8位的实时数据采集系统,在STC_ISP_V394软件环境的支持下,通过PC机实时显示采集的参数。下位机以AT89C52单片机为控制单元,8路A/D转换芯片ADC0809采集两路电压信号:通道0每隔1s采样一次,共采集10次;通道l每隔5s采样一次,共采集20次。采集的数据通过串行通信方式发送到上位机实现实时显示。本系统利用不同的传感器取代两路电压信号的采集,适用于各种控制电路,具有较强的通用性。
1 系统硬件设计
数据采集与处理系统分为单片机主控模块、A/D转换模块、数码管显示模块、键盘控制模块和串行通讯模块等五个单元,系统组成框图如图1所示。
1.1 A/D转换模块
模数转换采用常用芯片ADC0809,其内部有一个8通道多路开关,由于内部进行转换的转换器只有一个,所以只能对8路模拟量信号进行分时转换,根据锁存地址线译码后的信号,某一时刻只选通8路模拟输入信号中的一路,以逐次逼近原理进行模一数转换,转换时间为100μs,转换精度为8位。
ADC0809内部结构如图2所示。启动ADC0809进行A/D转换,首先输入3位地址信号,并使ALE为高电平,将地址存入地址锁存器中,经译码器译码选通8路模拟输入之一到比较器;START上升沿将逐次逼近寄存器复位,下降沿启动A/D转换,EOC输出信号变低,指示转换正在进行。直到EOC变为高电平,表示A/D转换结束,转换结果存入锁存器。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
1.2 键盘及显示模块
参数采集与处理系统的人机交互采用2×8矩阵键盘和静态数码管显示,如图3所示。设计上为节省单片机I/O口线,人机交互采用两条线控制,利用模拟开关CD4052切换,控制键盘和数码管的数据信号。
1.3 串行通信模块
由于单片机和PC机使用不同的逻辑电平,在设计串行接口电路时,必须考虑电平的匹配、驱动能力的匹配、元器件的选择以及其它电气特性。PC机通常有两个标准的RS232串行口,为了提高抗干扰能力,这种接口采用EIA电平逻辑,如表1所示。
为实现单片机与PC机电平兼容,单片机与PC机通讯时,必须经过电平转换。通常使用MCl488租MCl489芯片实现电平转换,但这两种转换芯片组成电路结构复杂,电源需±12V电源供电,工作不稳定,易烧坏芯片。本设计使用MAX232集成电路芯片,仅用+5V供电,其内部有两组电压转换电路,外围电路配上4个升压电容,实现在EIA电平和TTL电平之间互相转换,具有电路结构简单、元器件数量少、电源单一、功耗低等特点,MAX232芯片组成的串行接口电路如图4所示。
AT89C52单片机内有一个可编程、全双工的串行口,串行收发的数据在通讯时,通过特殊功能寄存器SFR的串行数据缓冲器SUBF实现数据交换,故可做多机通讯,特别适合于终端和系统主机间的通讯。
1.4 单片机与A/D接口模块
单片机采用ATMEL公司生产的AT89C52单片机。它采用先进工艺制造,具有高性能的MCS51内核设计,带有非易失性Flash程序存储器,是一种高性能、低功耗的8位CMOS微处理芯片,市场应用广泛,在实现信号采集、数据处理、串行传输、实时控制等有较大优势。
本设计采用查询法采集数据,合理分配单片机的资源,大部分时间单片机用来运行控制程序,只有在采集时间到来时单片机才用来执行采集程序。图5所示为ADC0809与单片机的接口电路,需要采集数据时,单片机首先输出地址信号,指定采集的通道,接着使ALE和START为高电平,启动A/D转换,然后单片机处理其它事务,稍后查询EOC是否为高电平,若为高电平,转换结束,需要读取转换结果时,发送读取命令使OE为高电平读取转换结果,存入指定单元,供数码管显示和上传给PC机。
2 系统软件设计
系统软件主要包括:系统初始化、判键程序、AD转换程序、数码管显示程序和串行通信程序,图6为程序结构框图。
单片机采用11.0592MHz晶振、定时器选择工作方式2、串口工作在方式l,波特率设为9600。上位PC机在STC_ISP_V394开发环境下,使用“串行调试助手”功能,接收串行数据并显示采集结果,图7为STC_ISP_V394数据采集界面,显示出两路电压信号的实时采集结果。
单片机串行通信初始化设置:
MOV TMOD,#20H:T1工作方式2
MOV THl,#0FDH:波特率9600
MOV SCON,#40H:串口工作方式1
SETB TR1:打开定时器1
单片机发送数据:
MOV SBUF,A:将接收的数据传送给PC机
JNBTI,S
CLR TI
3 结束语
本文介绍了一种基于A/D转换芯片ADC0809和AT89C52单片机的数据采集和串行通信接口的实现方法。本设计在自制开发机上完成调试,自制开发机采用STC89C54单片机,具有ISP在线编程功能,在STC_ISP_V394开发环境下完成程序下载以及数据通信。通过实践验证在短距离传输中有很好的效果,传输中未出现数据丢失和错误。数据采集和串行数据传输在工业控制中十分重要,本设计具有一般通用性,读者可根据自己的实际需要进行改进,以满足工程设计需要。