51单片机与MXA2500GL的振动信号分布式检测
来的数据字节,没被寻址的从机保持 SM2为置位状态,继续处理其它工作。C8051F020单片机方式3下的信息桢格式见图3。
图3 C8051F020单片机在方式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函数更适合在多现程领域应用。
结束语
实践证明基于C8051F020单片机与MXA2500GL传感器的振动信号分布式检测系统性能可靠,大大的节约了成本,因此该系统在汽车整车及零部件的测试与诊断过程极具推广价值。
- 基于实时时钟芯片X1228的电源控制器设计(03-14)
- 以89C51单片机为控制核心的开关电源优化设计(07-25)
- 一种单片机控制的多功能交流稳压电源(07-30)
- 单片机AT89S51与ADC0809设计一个数字电压表(08-06)
- 多路可编程PWM芯片设计(08-09)
- 直流数控可调稳压电源设计简介(11-10)