89c51单片机io口模拟串行通信的实现方法

89c51单片机io口模拟串行通信的实现方法

ID:32014757

大小:144.00 KB

页数:3页

时间:2019-01-30

89c51单片机io口模拟串行通信的实现方法_第1页
89c51单片机io口模拟串行通信的实现方法_第2页
89c51单片机io口模拟串行通信的实现方法_第3页
资源描述:

《89c51单片机io口模拟串行通信的实现方法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、89C51单片机I/O口模拟串行通信的实现方法·严天峰·目前普遍采用的MCS51和PIC系列单片机通常只有一个(或没有)UART异步串行通信接口,在应用系统中若需要多个串行接口(例如在多机通信系统中,主机既要和从机通信又要和终端通信)的情况下,通常的方法是扩展一片8251或8250通用同步/异步接收发送芯片(USART),需额外占用单片机I/O资源。本文介绍一种用单片机普通I/O口实现串行通信的方法,可在单片机的最小应用系统中实现与两个以上串行接口设备的多机通信。1.串行接口的基本通信方式串行接口的有异步和同步两种基本通信方式。异步通信

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

3、波特率为9600波特,则字节中每一位传送时间为T=1/9600=0.104ms。根据数据传送的波特率即字节中每一位的传送时间,我们便可用普通I/O口来模拟实现串行通信的时序。2.硬件电路89C51单片机通过普通I/O口与PC机RS232串口实现通信的硬件接口电路如图2所示。由于PC系列微机串行口为RS232C标准接口,与输入、输出均采用TTL电平的89C51单片机在接口规范上不一致,因此TTL电平到RS232接口电平的转换采用MAXIM公司的MAX232标准RS232接口芯片,该芯片可以用单电压(+5V)实现RS232接口逻辑“1”(-

4、3V~115V)和逻辑“0”(+3V~15V)的电平转换。图中89C51的P1.0模拟发送端,P1.1模拟接收端。②3.接口程序设计软件设计中,89C51单片机的P1.0和P1.1口分别模拟串行通信的发送和接收,其接口程序主要由INPUT发送子程序和OUTPUT接收子程序组成。通信速率1200bit/s,帧格式为N.8.1。发送时,先发送一个起始位(低电平),接着按低位在先的顺序发送8位数据,最后发送停止位。接收时,先判断P1.1接收端口是否有起始低电平出现,如有则按低位在先的顺序接收8位数,最后判断P1.1口是否有停止高电平出现,如有

5、则完成一个数据接收,否则继续等待。其中软件编写要严格按照异步通信的时序进行,每bit位传送时间间隔按通信速率1200bit/s计算为833μs。其模拟串行通信程序清单见下,系统要求单片机晶振为6M。程序清单如下:TXDEQUP1.0RXDEQUP1.1;定义89C51P1.0为发送端,P1.1为接收端ORG0000HAJMPMAINORG0100HMAIN:MOVA,#30HMOVR5,#NSETBRXD;P1.0置高TX:LCALLINPUT;调用发送子程序,将寄存器A中内容发给PC机;SETBTXD;P1.1置高MOVR0,#40H

6、RX:LCALLOUTPUT;调用接收子程序,将接收的N个数据存放在以40H开始的地址中MOV@R0,AINCR0DJNZR5,RX;N个数据接收结束,则等待,否则转RX继续接收2AJMP$;**************延时833μs子程序*****DEL833:MOVR7,#205MS11:DJNZR7,MS11RET;**********************************;********89C51发送数据给PC机子程序****INPUT:CLRCMOVTXD,C;发送起始位LCALLDEL833;延时MOVR3,#8

7、REP:RRCAMOVTXD,CLCALLDEL833DJNZR3,REP;发送8位数据SETBC;发送停止位MOVTXD,CLCALLDEL833RET;********从PC机接收数据子程序********OUTPUT:JBRXD,$;判断是否有起始位出现LCALLDEL833MOVR3,#8OUT:MOVC,RXDRRCALCALLDEL833DJNZR3,OUT;接收8位数据JNBRXD,$;判断是否有停止位出现RET本文介绍的用89C51单片机I/O口模拟实现串行通信的方法,已成功地应用在某电压数据采集系统中,实践证明能可靠地

8、传送和接收数据。3

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。