教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

单片机与PC机的串口通信 - 毕业论文(6)

来源:网络收集 时间:2026-09-11
导读: PC机与MCS-51单片机的串口通信 接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为99H。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。如果在串行

PC机与MCS-51单片机的串口通信

接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为99H。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。如果在串行口的输入输出引脚上加上电平转换器,就可方便地构成标准的RS-232接口。

MCS-51单片机串行口寄存器结构如图5-3所示。SBUF为串行口的收发缓冲器,它是一个可寻址的专用寄存器,其中包含了接收器和发送器寄存器,可以实现全双工通信。但这两个寄存器具有同一地址(99H)。MCS-51的串行数据传输很简单,只要向发送缓冲器写入数据即可发送数据。而从接收缓冲器读出数据即可接收数据。

此外,从图5-3中可看出,接收缓冲器前还加上一级输入移位寄存器,MCS-51这种结构目的在于接收数据时避免发生数据帧重叠现象,以免出错,部分文献称这种结构为双缓冲器结构。而发送数据时就不需要这样设置,因为发送时,CPU是主动的,不可能出现这种现象。

图5-3 MCS-51串行口寄存器结构

1、波特率的设置

要实现单片机与PC机的串行通信,双方的波特率必须一致.PC机串行通信的波特率参数通常为一些标准的参数,可直接使用.因此实现MCS--51单片机和PC机的串行通信时,选择MCS—51单片机串行通信的波特率至关重要.

波特率根据串行口的工作方式不同而不同: (1) 方式0波特率

串行口方式0的波特率由振荡器的频率所确定:

方式0波特率=振荡器频率/12 (2) 方式2波特率

串行口方式2的波特率由振荡器的频率和SMOD(PCON.7)所确定:

SMOD为0时,波特率等于振荡器频率的六十四分之一;SMOD为1时,波特率

第 26 页 (共 43 页)

串行口通信技术

等于振荡器的三十二分之一。

(3) 方式1和方式3的波特率

串行口方式1和方式3的波特率由定时器T1或T2(8051等单片机)的溢出率和SMOD所确定。T1和T2是可编程的,可以选的波特率范围比较大,因此串串行口方式1和方式3是最常用的方式。

当定时器T1作为串行口的波特率发生器时,串行口方式1和方式3的波特率由下式确定:

方式1和方式3波特率=2SMOD*(T1溢出率)/32

SMOD为0时,波特率竽T1溢出三十分之一;SMOD为1时,波特率等于T1的六十四分之一。

定时器T1作为时,应禁止T1中断。通常T1工作于定时方式(C/T=0),计数脉冲为振荡器的十二分频信号。也可以选择外部T1(P3.5)上输入脉冲作为T1计数信号(C/T=1)。T1的溢出率又和它的工作方式有关,一般选方式2定时,此时波特率的计算公式为:

方式1和方式3波特率=2SMOD*Fosc/[32*12(256-(TH1))]

表4-1 常用波特率 波特率(b/s) 19.2K 9600 4800 2400 1200 Fosc(mhz) 11.0592 11.0592 11.0592 11.0592 11.0592 SMOD 1 0 0 0 0

注:定时器T1作波特率发生器,所以在程序设计时要注意到禁止T1中断 2、串行通信控制寄存器SCON

C/T 0 0 0 0 0 模式 2 2 2 2 2 初值 FDH FDH FAH F4H E8H SCON控制寄存器,它是一个可寻址的专用寄存器,用于串行数据的通信控制,单元地址是98H,其结构格式如下:

第 27 页 (共 43 页)

PC机与MCS-51单片机的串口通信

表4-2 SCON寄存器结构 SCON D7 SM0 位地址

3、电源管理寄存器PCON

9FH D6 SM1 9EH D5 SM2 8DH D4 REN 9CH D3 TB8 9BH D2 RB8 9AH D1 TI 99H D0 RI 98H PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,单元地址是87H,其结构格式如下:

表4-3 PCON电源管理寄存器结构 PCON 位符号

D7 SMOD D6 - D5 - D4 - D3 GF1 D2 GF0 D1 PD D0 IDL 在CHMOS型单片机中,除SMOD位外,其他位均为虚设的,SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍。系统复位默认为SMOD=0。

4、中断允许寄存器IE

中断允许寄存器在前一节中已阐述,这里重述一下对串行口有影响的位ES。ES为串行中断允许控制位,ES=1允许串行中断,ES=0,禁止串行中断。

表4-4 IE中断允许控制寄存器结构 位符号 位地址 EA AFH - AEH - ADH ES ACH ET1 ABH EX1 AAH ET0 A9H EX0 A8H 5.2 PC机串口通信技术

PC机串行通信接口设计是整个PC机部分的重点,在本章节中将详细分析串口的设计问题。

1. 通信芯片的选择

由于RS-232C的逻辑电平兼容,因此为了TTL器件连接,必须进行电平转换。MC1488和MC1489是RC-232C通信接口常用的集成电路转换芯片,但他们是两个独立的驱动器和发送芯片,而且MC1488驱动器还需要外接正负电源,很不方便。目

第 28 页 (共 43 页)

串行口通信技术

前市场上出现了一些新型的RS-232C电平转换芯片MAXIM系列的产品,AXIM公司生产的MAX系列RS-232C收发器芯片。

2. 波特率设置

PC机的波特率必须和单片机相匹配,所以只要单片机的波特率定了,PC机只要设置一下即可。

3、串行口工作方式的选择

为了确保数据传输无误,采用软件握手的方式。即发送方给接收方传送的一个数据,接收方收到后再将这个数据发送回来,发送方将两个数据比较,若二者相同则表示传输无误,接着传送下一个数据。所以不需要奇偶校验,因此选择串行口方式一工作即传输数据的格式为1位起始位,8位数据位,1位停止位。

4、VB串口Mscomm控件

VB提供了串行端口控制Mscomm来为应用程序提供串行通讯。该控件屏蔽了通信过程中的底层操作,程序员可以设置、监视Mscomm控件的属性和事件,结合Timer控件即可完成对串行口的初始化和数据的输入输出工作。Mscomm控件的主要属性如下:

(1)Commport 设置并返回通讯端口号。端口号可以设置为1~16的任何数,如Mscomm.Commport=2表示设置当前通讯端口为COM2。

(2)Setting 设置并返回波特率、奇偶校验、数据位、停止位。格式为Mscomm.Setting=String。String是一个包含四部分的字符串:第一部分为波特率;第二部分为奇偶校验,N表示不校验,M表示符号校验,E表示偶校验,O表示奇校验,S表示空格校验;第三部分为数据位数,其可选值为4,5,6,7,8;第四部分为停止位位数,其可选值为1,1.5,2。Setting属性的缺省值为2400,N,8,1”。

(3)Portopen 设置并返回通讯端口的状态,也可以打开和关闭端口。 (4)Input 从接收缓冲区返回和删除字符。该属性在运行时为只读。

(5)InputLen 设置并返回每次Input属性从接收缓冲区中读取的字符数。InputLen属性的缺省值为0。设置InputLen为0时,Input将读取接收缓冲区的全部字符。

(6)Output 向传送缓冲区写数据。要传送的数据可是文本数据或二进制数据。 (7)CommEvent 返回最近的通讯事件或错误。只要有通讯错误或事件发生错误时就会产生Oncomm事件。CommEvent属性中存有该错误或事件的数值代码。

6 软件设计

第 29 页 (共 43 页)

PC机与MCS-51单片机的串口通信

PC机与单片机间的通信,特别是PC机和多台单片机构成小型分布系统实现

分级分布式控制得到了广泛的应用。本章阐述PC机与AT89C51间的双机通信的汇编语言和Visual Basic 语言通信程序设计技术。

软件需要解决的是设定PC机串口和单片机串行口的工作方式,包括串行口的通讯速率、奇偶校验位、停止位等。本次设计,以PC机为主机,单片机AT89C51作 …… 此处隐藏:2069字,全部文档内容请下载后查看。喜欢就下载吧 ……

单片机与PC机的串口通信 - 毕业论文(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/445479.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)