PC机与多个单片机之间的串行通信原理及其软硬件结构的实现.docx_第1页
PC机与多个单片机之间的串行通信原理及其软硬件结构的实现.docx_第2页
PC机与多个单片机之间的串行通信原理及其软硬件结构的实现.docx_第3页
PC机与多个单片机之间的串行通信原理及其软硬件结构的实现.docx_第4页
PC机与多个单片机之间的串行通信原理及其软硬件结构的实现.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PC机与多个单片机之间的串行通信原理及其软硬件结构的实现内容摘要:分布式控制为一种常用的控制方式,要实现分布式控制,多采用主从式微机网络形式。本文主要介绍PC机与多个单片机之间的串行通信原理及其软硬件结构的实现。 实现串行通信的方法很多,例如可以根据通信协议的要求,用编写程序的方法完成串行通信中数据字符的接收和发送,但这种方法比较麻烦;为了快速、简便、有效的实现串行通信,PC系列及其兼容机都可以采用一个可编程异步串行通信接口芯片来执行异步串行通信协议。这种异步通信接口芯片的核心是一个大规模集成通信组件,称为通用异步接收/发送器,或简称UART(Universal Asynchronous Receiver/Transmitter)。1 8051实现多机通信原理8051串行通信相关的三个控制寄存器SCON(Serial Controller)、PCON(Power Controller)和IE(Interrupted Enhanced)分别用于设定四种不同的通信方式及定义波特率。它的串行口工作方式3是可变波特率的9位数据异步通信方式,发送或接收一帧数据为1l位:1位起始位,8位数据位、1位附加的校验位和1位停止位。其中附加的第9位数据是可编程的,利用这一可控的第9位数据,可以实现多机通信。2 PC机与8051通信原理PC机的串行通信适配器,其核心为可编程异步收发器UART8250芯片,8250有10个可寻址寄存器供CPU读/写,以实现与外界的通信,并制定通信协议和提供通信状态信息。8051单片机的串行通道是一个全双工的串行通信口,既可以实现双机通信,也可以实现多机通信。当串行口工作在方式2或方式3时,若串行控制寄存器SCON的多机通信控制位SM2由软件设置为“1”,则为多机方式;若SM2为“0”,则为9位异步通信方式。在多机通信时,8051发送的帧格式是11位,其中第9位是SCON中的发送数据位TB8,它是多机通信时发送地址(TB8=1)或发送数据(TB8=0)的标志。串行发送时自动装入串行帧格式的相应位。在接收端,一帧数据的第9位信息被装入SCON的接受数据位RB8中,接收机根据RB8以及SM2的状态确定是否产生串行中断标志,从而可以响应或不响应串行中断,这样就实现了串行中断。PC机的串行通信由接口芯片8250完成。它是一种通用的异步接受/发送器,是专门为了适用于Intel公司的微处理机的数据通信而设计的。它接受来自CPU的并行数据,然后将其转换为连续的串行数据,通过发送器的移位寄存器发送出去。虽然8250不具备多机通信功能也不能产生TB8或RB8,但可以灵活地使用8250,用软件完成上述功能。8250可以发送多种字长,其中一帧最长为11位,与8250发送的帧格式相比,差别仅在第9位,即PC机的8250发送的第9位是奇/偶校验位,而不是相应的地址/数据位标志,可以采用软件编程的方法使8250的奇/偶校验位形成正确的地址/数据标志。3 PC机与8051的多机通信控制虽然8250本身并不具备8051系列单片机的多机通信功能,但通过软件的办法,可使得8250满足8051单片机通信的要求。8250的端口地址范围为3F8H3FEH或2F8H2FEH。其内部寄存器的端口地址见表1。表1 8250内部寄存器的端口地址序号名称端口地址输入/输出形式1数据发送保持寄存器3F8H输出2数据接受寄存器3F8H输入3波特率因子寄存器(低位)3F8H输出4波特率因子寄存器(高位)3F9H输出5中断控制寄存器3F9H输出6中断识别寄存器3FAH输入7通信线路控制寄存器3FBH输出8MODEM控制寄存器3FCH输出9通信线路状态寄存器3FDH输入10MODEM状态寄存器3FEH输入8250可发送11位数据帧,这11位数据帧由1位起始位、8位数据位、1位奇偶校验位和1位停止位组成,其格式如下:起始位D0D1D2D3D4D5D6D7奇偶位停止位而8051单片机通信的典型数据格式为:起始位D0D1D2D3D4D5D6D7TB8停止位其中TB8是可编程位,通过使其为0或1而将数据帧和地址帧区别开来。比较上面两种数据格式可知:它们的数据位长度相同,不同仅在于奇偶校验位和TB8。如果通过软件的方法可以编程8250的奇偶校验位,使得在发送地址时为“1”,发送数据时为“0”,则8250的奇偶校验位完全模拟单片机多机通信的TB8位。方法是把8250的通信线控制寄存器写入特定的控制字。仔细研究串行卡的通信线控制寄存器3FBH的DS位功能可发现,在串行口初始化时设定3FB的D5=1,D3=1,而在发送地址时设置D4=0,在发送数据时设置D4=1,这样实现了8051中TB8的功能,不必每次都进行调整。这种方法不仅节省了软件开支,而且提高了通信速度。通过对8250的线路控制寄存器(LCR)的设置,可使8250具有很大的灵活性。要使8250与8051实现多机通信,关键在于控制它的线路状态,使它的数据传输格式与8051保持一致。根据8250线路控制寄存器的结构特点,可以在编程中作如下选择:若要求8250发送帧的奇偶校验位为1,只需要执行MOV DX,3FBHMOV AL,2BHOUT DX,AL这三条语句,此时帧格式为:起始位D0D1D2D3D4D5D6D71停止位若要求8250的奇偶位为0,只需执行MOV DX,3FBHMOV AL,3BHOUT DX,AL这三条语句,此时帧格式为:起始位D0D1D2D3D4D5D6D70停止位显然,前者可作为多机通信中的地址帧,而后者作为数据帧。4 PC机非标准波特率的设置8051单片机系统时钟绝大多数情况下都采用6MHz的石英晶体振荡器,其串行口的波特率是由其内部定时器TH1(8位)决定的,具体计算公式为:Baud=(fosc2SMOD)/(3212(256-TH1)=(156252SMOD)/(256-TH1)式中SMOD可编程控制,TH1的不同值所确定的波特率不同。如果用BASIC或直接调用ROM BIOS INT14(串行口中断),那么只能设置几种标准的波特率。在这种标准波特率下,8051很难实现,如4800的波特率,对使用6MHz晶振的单片机就无法实现。然而在实际应用中,不大可能只为满足标准波特率要求而选择晶振。另一方面,在保证可靠通信的前提下,总是希望通信速度尽可能的快。所以,可以通过直接对8250的除数锁存器编程,以取得非标准波特率。假设多机通信波特率计算值为2400,由于单片机无法实现,因此可设计为1953,在单片机上令TH1=248且SMOD=0,而在PC机上令除数等于59,这样便可以实现多机通信。5 对8250的编程仅就8250而言,异步串行通信编程步骤如下:step1:设定通信的规程,如波特率、奇偶校验方式、数据格式、数据字节长度等;step2:读取通信线路(或MODEM)的状态,判断是否可以进行通信;step3:送出(或接收)一个字节;step4:重复step2和step3直到通信完毕。当允许中断时,CPU送出(或接收)一个字节后,并不需要不断查询控制器的状态,而可转向执行其他任务。当有中断信号INT4发生并响应后,再按上述step2、step3第三步处理即可。 应用8250进行串行通信时,首先要对其初始化,即设置波特率、通信采用的数据格式、是否使用中断、是否自测试操作等。初始化后,则可采取程序查询方式或中断方式进行通信。 8250的初始化一般分三步:step1:设置波特率(假设为1200)MOV AL,80H MOV DX,3FBH OUT DX,,AL MOV AL,60H MOV DX,3FBH OUT DX,AL MOV AL,00H MOV DX,3F9H OUT DX,AL step2:设置通信数据格式(假设7个数据位,1个停止位,偶校验) MOV AL,1AH MOV DX,3FBH OUT DX,AL step3:设置操作方式 MOV AL,03HMOV DX,3FCHOUT DX,AL;不允许中断输出MOV DX,3FCHMOV AL,OBHOUT DX,AL;允许中断输出MOV AL,13HMOV DX,3FCHOUT DX,AL;自测试工作方式step4:设置中断允许寄存器 MOV AL,00HMOV DX,3F9HOUT DX,AL6 本文的创新点本文的创新点在于:第一,利用可编程异步串行通信接口芯片执行异步串行通信协议以实现通信;第二,通过直接对8250的除数锁存器编程的方法,以取得非标

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论