如何模拟实现应用在数据采集系统中的89C51单片机I/O口串行通信?

发布时间:2023-03-14  

目前普遍采用的MCS51 和PIC 系列单片机通常只有一个(或没有)UART异步串行通信接口,在应用系统中若需要多个串行接口(例如在多机通信系统中,主机既要和从机通信又要和终端通信)的情况下,通常的方法是扩展一片8251 或 8250 通用同步/异步接收发送芯片(USART),需额外占用单片机I/O 资源。


MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。


1.串行接口的基本通信方式

串行接口的有异步和同步两种基本通信方式。异步通信采用用异步传送格式,如图1 所示。数据发送和接收均将起始位和停止位作为开始和结束的标志。在异步通信中,起始位占用一位(低电平)。

如何模拟实现应用在数据采集系统中的89C51单片机I/O口串行通信

异步通信采用用异步传送格式

用来表示字符开始。其后为7 或8 位的数据编码,第8 位通常做为奇偶校验位。最后为停止位(高电平)用来表示字符传送结束。上述字符格式通常作为一个串行帧,如无奇偶校验位,即为常见的N.8.1帧格式。串行通信中,每秒传送的数据位称为波特率。如数据传送的波特率为1200 波特,采用N.8.1 帧格式(10 位),则每秒传送字节为120 个,而字节中每一位传送时间即为波特率的倒数:T=I/1200=0.833ms。同样,如数据传送的波特率为9600 波特,则字节中每一位传送时间为T=1/9600=0.104 ms。


2.硬件电路

89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。


89C51 单片机通过普通I/O 口与PC 机RS232 串口实现通信的硬件接口电路如图2 所示。由于PC 系列微机串行口为RS232C 标准接口,与输入、输出均采用TTL 电平的89C51 单片机在接口规范上不一致,因此TTL电平到RS232 接口电平的转换采用MAXIM 公司的MAX232 标准RS232接口芯片,该芯片可以用单电压(+5V)实现RS232接口逻辑“1”(-3V~215V)和逻辑“0”(+3V~15V)的电平转换。图中89C51 的P1.0 模拟发送端,P1.1 模拟接收端。

如何模拟实现应用在数据采集系统中的89C51单片机I/O口串行通信

3.接口程序设计

软件设计中,89C51 单片机的P1.0 和P1.1 口分别模拟串行通信的发送和接收,其接口程序主要由INPUT 发送子程序和OUTPUT接收子程序组成。通信速率1200 bit /s,帧格式为N.8.1。发送时,先发送一个起始位(低电平),接着按低位在先的顺序发送8 位数据,最后发送停止位。接收时,先判断P1.1 接收端口是否有起始低电平出现,其中软件编写要严格按照异步通信的时序进行,每bit 位传送时间间隔按通信速率1200 bit /s计算为833μs。


其模拟串行通信程序清单见下,系统要求单片机晶振为6M。程序清单如下:

TXD EQU P1.0

RXD EQU P1.1 ;定义89C51 P1.0 为发送端,P1.1 为接收端

ORG 0000H

AJMP MAIN

ORG 0100H

MAIN: MOV A, #30H

MOV R5,#N

SETB RXD ;P1.0 置高

TX: LCALL INPUT ;调用发送子程序,将寄存器A 中内容发给PC 机

SETB TXD ;P1.1 置高

MOV R0,#40H

RX: LCALL OUTPUT ;调用接收子程序,将接收的N 个数据存放在以40H开始的地址中

MOV @R0,A

INC R0

DJNZ R5, RX ;N 个数据接收结束,则等待,否则转RX 继续接收

3

AJMP $

;**************延时833μs 子程序*****

DEL833: MOV R7 ,#205

MS11: DJNZ R7,MS11

RET

; **********************************

;******** 89C51发送数据给PC 机子程序****

INPUT: CLR C

MOV TXD,C ;发送起始位

LCALL DEL833 ;延时

MOV R3,#8

REP: RRC A

MOV TXD ,C

LCALL DEL833

DJNZ R3,REP ;发送8 位数据

SETB C ;发送停止位

MOV TXD,C

LCALL DEL833

RET

;********从PC 机接收数据子程序********

OUTPUT: JB RXD, $ ; 判断是否有起始位出现

LCALL DEL833

MOV R3,#8

OUT: MOV C ,RXD

RRC A

LCALL DEL833

DJNZ R3,OUT ; 接收8 位数据

JNB RXD ,$ ; 判断是否有停止位出现

RET


本文介绍的用 89C51 单片机I/O 口模拟实现串行通信的方法,已成功地应用在某电压数据采集系统中,这样的进步,让这项技术有了更加高的期待性,在社会上也有了很好的反应,这样就让这个研究成果有了很好的作用。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>