C8051F020单片机性能特点
CYGNAL的C8051F020是集成模拟、数字信号的混合信号系统级SOC(System On Chip)单片机,与目前常用的51系列单片机指令集完全兼容。采用100脚TQFP封装,体积小,运算速度快。它采用CYGNAL公司的专利CIP- 5l微处理器内核。CIP-5l在提升805l速度上采取了新的途径,即设法在保持CISC结构及指令系统不变的情况下,对指令运行实行流水作业。在这种模式中,废除了机器周期的概念,指令以时钟周期为运行单位。平均每个时钟可以执行完l条单周期指令,从而大大提高了指令运行速度。
与805l相比,C8051F020在相同时钟下单周期指令运行速度为原来的12倍,整个指令集平均运行速度为原来805l的9.5倍,使CYGNAL 单片机系列进入了8位高速单片机行列。同时,C805lF020单片机延续了C805lF系列特有的优先权数字交叉开关配置技术。这项技术的核心就是以硬件方式为内部的数字资源配置端口I/O引脚。与标准复用数字I/O不同,这种结构可支持更多的功能组合。PCA、比较器、定时器等按优先级别分配到所选择端口上。使用者也可以只为所用到的数字资源分配I/O引脚。任何未配置使用的端口I/O被组合在一起,作为GPIO。
MXA2500GL加速度传感器的性能特点
MXA2500GL是MEMSIC公司专利技术生产的双轴式绝对模拟输出加速度传感器。它根据热对流原理在两个轴线都可以进行动态加速度(例如振动)和静态加速度(例如重力加速度)的测量,因此广泛应用于汽车稳定性控制、安全性控制、接近角控制、血压监视器、电子罗盘倾斜校正、数码相机、电梯等领域。与普通压电式加速度传感器不同的是,MXA2500GL实际是按照标准CMOS工艺制造的单片集成电路,它的输出是0.1~4.9V(5V电源的情况)的电压信号,无需电荷放大器就可以直接与A/D卡相连,因此会使整个测试系统不仅结构紧凑,而且抗干扰性非常强。
基本工作原理是:在硅片中心的空腔中悬挂一个气体热源,同时在热源的4个对角(即2个轴线方向)处,均匀放置铝/多晶硅温差电堆(热电偶)。当加速度为零时,热源的温度梯度是对称的,所以4个温差电堆的温度相同,因此这2个轴线方向输出相同的电压。而任何方向的加速度都会扰乱这种平衡的温度形式,使热源的温度梯度不对称。根据热传导的自由对流原理,4个温差电堆的温度及其输出信号—电压都是不同的。但是这些电压信号与加速度是成比例变化的。这样通过测量电压就可以确定加速度的值。在传感器上有两个相同加速度信号通道,一个测量X方向,另一个测量Y方向。
图1给出了它的基本结构。
图1MXA2500GL加速度传感器的结构图
分布式检测系统的硬件架构
系统以C8051F020单片机为从机,PC为主机。由于单片机体积小、功能强、价格低廉,因此性价比非常高。目前主流的PC有2个标准的RS-232 串行口,采用的是EIA电平,而C8051F020单片机的TX引脚(发送数据)、RX引脚(接收数据)使用的是TTL电平,两者之间进行可靠通信必须要用电平转换芯片,系统采用MAX232/MAX485芯片。为了实现资源共享,任务分担的目标,在分布式计算机系统中关键就是确保主机和各从机之间数据通信的准确可靠。
由于PC机本身并不具备多机通信功能,所以目前普遍采用的通信方式有两种:一种是利用“桥梁”硬件—多机通信卡。通信卡一般有两种形式,应用最广的是以51单片机为核心,结合8255、6116、2716等芯片构成的通信卡。该卡可以插在PC的扩展槽中,各从机与通信卡中单片机进行串行通信,而PC通过8255芯片与卡上的单片机进行并行通信。另外一种通信卡仅仅由单片机构成(也就是牺牲一个单片机做通信中转),从机与通信卡及PC与通信卡之间都是串行通信;另一种方式是在PC的串口上软件模拟51系列单片机串口可编程第9位数据功能实现多机通信,系统采用的是后一种方式。另外由于远距离传输,系统中使用了MAX485芯片,同时还使用了光电隔离来提高系统的抗干扰能力。
图2给出了整体硬件架构。
图2分布式检测系统的硬件架构
多机通信协议
C8051F020单片机具有适于多机通信的特殊功能,即方式2(3)。在这2个方式里,接收的第9位进入RB8,然后为停止位。串行口可程控为:当接收到停止位,只有当RB8=1时才产生串行口中断。这个特性可由置位SCON中的SM2控制。多机通信中使用这种特性的方法是:当主机要发送一个数据块给几个从机之一时,它先发送一个目标从机的地址字节,地址字节第9位为1而数据字节第9位为0。当SM2=1时,数据字节不会中断任何从机,然而,地址字节会中断所有从机,这样每一个从机可检查接收到的地址,看是否为寻址自己。被寻址的从机将SM2位清0,准备接收传送过来的数据字节,没被寻址的从机保持 SM2为置位状态,继续处理其它工作。C8051F020单片机方式3下的信息桢格式见图3。
图3C8051F020单片机在方式3下的信息桢格式
PC机的异步串行通信口是采用通用异步接收发送器(简称UART)为核心构成的。UART的产品型号很多,大多采用Ins8250芯片。对UART的编程实际上是对其内部寄存器的操作。UART内部寄存器共有10个。编程时首先要确定串行通信的数据格式,这是通过将选定的数据格式参数写入到线路控制寄存器LCR来完成的,接下来需要将波特率因子写入到波特率因子寄存器来确定双方传输波特率,再通过读线路状态寄存器LSR来判断芯片是否就绪或有错等。通信线路控制寄存器LCR的格式如图4所示。
图4通信线路控制寄存器LCR
通过将参数字节写入到线路控制寄存器,可以将UART编程为这样的串行通信数据格式:1位起始位,8位数据位,1位奇偶校验位,1位停止位,1帧共 11位。既然能够在PC机上实现1帧11位的数据格式,并且改变线路控制寄存器的D5、D4、D3位的值能将奇偶位设定为“恒1”或“恒0”,则若在发送地址帧时将奇偶位设定为“恒1”,在发送数据位时将奇偶位设定为“恒0”,便可以在PC机上模拟51系列单片机的多机通信持点,从而直接利用这种特点实现它们之间的主从分布式多机通信。
主机和从机遵循主从原则,主机用呼叫方式选择从机,数据在主机和从机之间双向传递,各从机之间的相互通信需通过主机作为中介。主从机之间还应传送一些供它们识别的命令和状态字,如以00H表示主机发送从机接收命令,以01H表示从机发送主机接收命令等。
PC主机通信程序的实现方法
对PC机UART的编程是主机通信程序的核心。一般可以通过两种方式实现对UART的操作。一种是直接访问底层地址实现对LCR、LSR、波特率因子寄存器的操作,这种方法只适用于Windows9X.在WindowsNT环境下系统禁止用户程序直接访问硬件和物理地址,因此该方法不可取。具体过程是通过调用标准通信函数inp()、outp()实现的。另一种方式是通过通信控件或WindowsAPI函数间接对LCR、LSR、波特率因子寄存器进行相关操作。因此本系统也使用MSComm控件,而WindowsAPI函数更适合在多现程领域应用。