基于单片机的多路低速数据串行传输

时间:2022-10-06 07:46:46

基于单片机的多路低速数据串行传输

摘 要:在数据采集和传输系统中,常需进行多路数据的传送和处理。以单片机为核心,研究多路低速数据串行传输的一种实现方法,给出硬件连接图,阐述各部分工作原理及软件设计思路。该实现方法硬件简单,所需芯片少,成本低,可实用于以单片机为核心的多路低速数据串行传输系统中。

关键词:数据采集;多路低速数据;中断;数据处理

中图分类号:TP368.1 文献标识码:B 文章编号:1004-373X(2008)02-025-02

Multiplex Low Speed Data Serial Transmission Based on Single Chip

LI Yandong,WANG Yongbin,CHEN Bin

(Navy University of Engineering,Wuhan,430033,China)

[HJ*2]Abstract:The date collection and transmission system usually needs to transmit and process multiplex date.Using single chip as the core,the paper studies a way to realize multiplex low speed data serial transmission,presents hardware connection chart,expounds work principle and software design idea.The method is simple in hardware,needs fewer chips and is low cost,so it could be applied to the multiplex low speed data serial transmission systems which uses single chip as the core.

Keywords:single chip;multiplex low speed data;interrupt;data processingオ

常用的标准51单片机内部仅含有1或2个可编程全双工串行通信接口,其具有UART的全部功能,该接口可同时进行数据的发送和接收。在工程中,往往需要多个串口进行整个系统的通信。在如图1所示的多路数据采集和传输系统中,其要实现的功能为:将3个终端的数据传输给上位机,其传输速率不同,终端1和终端2每0.5 s传1次,数据速率为1 200 b/s,终端3每2 s传1次,数据速率为600 b/s。上位机控制电源使3终端开关机。单片机既要和上位机通信,又要接收来自终端的数据并控制电源,这时就需要扩展串行通道。

1 串口扩展方案比较

单片机串口扩展一般有3种方法,一是选用多串口单片机;二是用串口扩展器如16C554,SP2328等进行扩展,三是用单片机丰富的I/O口模拟多个串口。前2种方法性能稳定,编程简单,第3种方法硬件简单,但编程复杂。此设计中数据传输速率较低,故选用第3种方法。

2 硬件设计

2.1 芯片介绍

8031芯片为典型的MCS-51系列单片机,采用40引脚的双列直插封装(DIP)或方形封装,配置256 B的数据存储器,32条I/O线,1个全双工UART。

2.2 电路图

电路图如图2所示。

图2中,单片机引脚P1.0,P1.1,P1.2分别与3个终端相连,用其接收从终端往上位机传输的数据。P1.3,P1.4,P1.5为3个终端的中断标志,为“1”时表示对应终端有中断请求。P1.6,P1.7,P3.7为中断控制位,当单片机响应中断后由单片机控制将对应终端中断请求屏蔽,以避免中断请求的错误。P3.6为电源控制位。RXD和TXD与上位机相连,实现单片机与上位机之间的数据传输。P0和P2口用作单片机外部数据存储器扩展的地址线。

2.3 工作原理

在上位机控制终端开机后,终端采集数据并向单片机传输。单片机循环等待,若接收到中断请求,单片机查询中断源并响应此中断,对P1口采样开始接收数据并将数据存储在片外存储器中,接收过程中若有其他中断到来,则进行多中断处理。数据传输完毕后单片机结束此次中断,对采样数据进行判断和重组,并将处理后的数据送串口传给上位机。工作完毕,上位机控制终端关机。

2.3.1 数据接收

以终端1为例,无数据传输时,P1.0接收为低电平;当P1.0接收到高电平,即数据传输标志时,表示终端1将向上位机发送数据,此时INT0有效,终端1向单片机请求中断,终端1中断标志P1.3=1。单片机接收到中断请求,对P1.3,P1.4,P1.5进行查询,查询到P1.3=1,确定此中断请求来自终端1,响应此中断,并将P1.6置0,使INT0无效,防止终端1传输数据时反复中断,同时读P1口,最低位比特P1.0即为终端1传送的数据。接收终端1传来的数据直至数据传输结束,所接收数据放外部存储器,期间有其他中断则进行多中断处理。不同工作阶段与终端1相连各引脚状态如表1所示。

由于数据传输速率较小,传输1 b数据时间内单片机可多次读P1口,此时可根据需要编写延时程序,用以控制单片机对P1口的采样次数。每传输1 b数据,对终端3的采样次数是对终端1或终端2采样次数的2倍。例如,若终端1或终端2传输1 b数据被采样3次,则终端3传输1 b数据被采样6次。如图3所示,故接收终端1或2一比特信息需读P1口3次,终端3为6次。

2.3.2 多中断处理

在终端1传输数据时,单片机实时检测终端2或终端3是否有请求中断,若有,则单片机响应中断,接收来自终端2或终端3采集的数据,反之亦然。各终端之间不影响,因为单片机读一次P1口,是同时对P1.0~P1.7八个引脚进行采样,而不管此时某终端是否有向上位机的数据传输;故采样数据中会有许多无用数据,这些将在数据处理程序中处理。单片机接收完终端1的数据后,查询终端2和终端3是否在进行数据传输,若是,继续对P1口采样;若三终端皆无数据传输,则结束中断,转入数据处理程序。

2.3.3 数据处理

从外部存储器中读第1字节数据,查询低3位中任意一位是否为1,若不是,读下一字节;若是,表明对应终端数据由此开始,读3个字节取出对应比特并将原位置清零,对取出比特进行判断;以终端1为例,3个字节最低比特有2个或3个比特为1则此比特判定为1,否则判为0,判断所得数据存入片内指定存储区,继续取三个字节数据并判断直至对应终端本次数据处理完。回上一查询点继续查询。在终端1数据流长度内若查询到某字节低3位为1,重复上述处理,若无,数据处理结束,将处理后数据送串口。

3 软件设计

3.1 系统流程

系统流程如图4所示。

三终端向单片机传送的数据帧由10位数据组成:1位起始位,8位数据位,1位停止位。终端向单片机发送1次数据,即要发送8个字节的数据位,其中第一字节为终端发送数据标志,接收到此字节数据表示终端有数据发送;后7个字节为以约定格式传输的数据,其中包含此次数据来自哪一终端的信息。

编程时,根据终端发送数据的波特率计算出数据位周期,而后根据单片机晶振频率和1 b内采样次数编写延迟程序。单片机接收到中断后即按固定延迟采样P1口。数据传送结束后,对每比特内采样的数据采用3中取2(终端1或2)或6中取4(终端3)的规则判断。

3.3 串口通信

单片机与上位机通过串行口通信,串行口工作于方┦1,数据帧也为10位:1位起始位、8位数据位、1位停止位。串口波特率由编程给定,单片机将处理后数据按约定波特率传给上位机,并随时接收上位机的控制指令以控制电源。

3.4 部分程序

;终端1接收数据

READ:[ZK(]MOV A,P1[JY];读P1口

MOVX @DPTR,A[JY];送外部存储空间

ACALL DELAY[JY];采样延时,控制1 b内采样次数

DJNZ R1,READ[JY];终端1数据传完否,未完继续

SETB P1.6[JY];传完开终端1中断,等待下次接收[ZK)]

;终端1数据处理

DEAL1:[ZK(]MOV R2,#30H[JY];终端1数据存储首址

MOV R3,#8[JY];循环次数,8字节数据[ZK)]

S1:[ZK(]DJNZ R3,S2

AJMP EXIT[ZK)]

S2:MOV R1,#0[JY];移位次数

S3:[ZK(]ACALL DQ[JY];读3个字节最低位置于寄存器B低3位

ACALL SEV1[JY];B低3位判断,3中取2

ACALL LW[JY];移位设定,将8比特数据组成1字节

ADD @R2,A[JY];存储1 b数据

INC R1

CJNE R1,#8,S3[JY];存储1 B数据

INC R2

AJMP S1[ZK)]

EXIT:…

4 结 语

上述实现方法硬件简单,所需芯片少、成本低,可实用于以单片机为核心的多路低速数据串行传输系统中,但此实现占用软件开销较大,适合于波特率较低的情况。

参 考 文 献

[1]曹巧媛.单片机原理及应用[M].北京:电子工业出版社,2002.

[2]李华.MCS-51系列单片机实用接口技术[M].北京:北京航空航天大学出版社,1993.

[3]南建辉,熊鸣,王军茹.MCS-51单片机原理及应用实例[M].北京:清华大学出版社,2004.

[4]黄汉兵.Protel DXP电路设计制版入门与提高[M].北京:人民邮电出版社,2004.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

上一篇:红外焦平面阵列非均匀校正算法的ASIC设计 下一篇:基于FPGA的FFT处理器的设计与实现