PC机与多MCS-51单片机间的串行通信硬件设计

发布者:花开堂前最新更新时间:2012-09-11 来源: 21ic 关键字:PC机  MCS-51  串行通信 手机看文章 扫描二维码
随时随地手机看文章
1 引 言
  在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。它们大多由IBM-PC微机和MCS-51单片机组成。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,IBM-PC机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机,PC机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。
  故IBM-PC机(上位机)与各MCS-51单片机(下位机)之间的通信显得尤其重要。本文主要探讨它们之间的远距离串行通信接口和软件程序设计。
2 硬件设计接口
  RS-232-C串行通信接口是美国电气工业协会(EIA)与BELL公司等一起开发的一种标准通信协议,现在它在终端、外设与计算机中被广泛采用。该标准规定了21个信号和25个引脚,但在智能仪器与计算机之间的通信中常用2个信号及3个引脚(2脚数据输入,3脚数据输出,7脚信号地)。它采用双极性的负逻辑信号,0逻辑信号为+3V至12V,1逻辑信号为-3V至-12V,它的传输速率最大为20kbit/s,传输距离仅为15m。由于RS-232主要是完成电平移位、转换和信号反相等,所以它有自己的电平转换与驱动芯片,如MC1488(发送)与MC1489(接受)。IBM-PC机有两个标准的RS-232串行口,其电平采用的是EIA电平,而MCS-51单片机的串行通信是由TXD(发送数据)和RXD(接收数据)来进行全双工通信的,它们的电平是TTL电平,为了PC机与MCS-51机之间能可靠地进行串行通信,需要用电平转换芯片。由于MC1488和MC1489需要±12V、+5V电源供电,故采用MAXIM公司生产的低功耗、单电源的MAX232芯片,因为它自身带有电源电压变换器,可以把+5V电源变换成RS-232输出电平所需的±10V电压,能实现RS-232的技术指标,并只需要+5V的电源,为串行通信带来了较好的性能和低廉的价格。MAX232的接口电路图如图2所示。

  PC机采用可编程串行异步通信控制器8251A来实现,通过对INS8251A初始化可以控制串行数据传送格式和速度及其工作方式,使得它与单片机的通信方式一致,从而实现PC机与单片机之间的通信。MCS-51和8251A的连接图见图3。

  由于远距离数据传输,在系统中用了两片MAX485芯片进行数据传送,还采用了两级光电隔离来提高系统的抗干扰能力。单片机和PC机之间的RS-232通信硬件接口电路框图如图4所示。
3 串行通信的软件程序设计
3.1 主从式多机通信原理
  MCS-51用于多机通信时必须工作在方式2或方式3。以方式3为例,每发送一帧数据为11位:1位起始位(0),8位数据位和1位停止位(1),附加的第9位数据在非多机系统中为奇偶校验位,在发送端有SCON的TB8产生,在接收端传送到SCON的RB8。它还可设定为“0”或“1”作为在多机通信中区分数据帧(0标志)还是地址帧(1标志)的标志。在MCS-51多机系统中有以下协议:所有的各从机均处于听命状态,即SM2=1,以便接收主机发来的地址,当接收到一帧信息的RB8为“1”时,表示主机发送来的是地址信息,所有的从机均发生接收中断,否则中断屏蔽。当一从机进入相应的中断服务程序,把接收到的地址和本机的地址比较,如果相符合就令其SM2=0,并向主机发回本机地址以作应答,该从机就与主机联通,准备接收主机发来的命令或数据信息,而其他的未被寻址从机保持SM2=1并退出各自的中断服务程序。这样,只有SM2=0的从机才能接收到主机发送来的数据信息,顺利实现地址帧和数据帧的分离。被寻址从机在通信完成后重新使SM2=1,并退出中断服务程序,等待下次通信。


 

3.2 多机通信协议
  要实现单片机和PC机的正常通信,必须正确设定它们两者之间的通信方式,保证双方都用相同的波特率、起始位、停止位、奇偶校验位,并且要建立双方通信的应答信号。[page]
  单片机既可工作在同步移位寄存器方式下也可工作在UART(通用异步收发器)下。串行口的通信方式是由特殊功能寄存器SCON来控制的。其各控制定义如下:

SM0,SM1:工作模式设定位;SM2:允许使用方法2、3多机通信控制位;RB8:接收数据第9位;TB8:发送数据第9位;TI:发送中断标志;RI:接收中断标志。本文中工作方式为3,即9位UART定时器T1作为波特率发生器,工作在方式2,若选定波特率为1200bps,则计数初值为0E8H(SMOD=0,时钟频率Fosc为11.059MHz)。
  PC机的异步通信接口为INTEL8251A,它可设定1位、1.5位或2位停止位,数据可在5~8位之间选择,通信频率为0~9.6Kbps,有奇偶校验、帧校验、溢出校验三种方式。可通过对它写入一定的方式控制字、命令控制字从而进行初始化。它与MCS-51的连接如前面所示,则它的数据口地址为0F0H,控制口地址为0F1H。它的工作状态寄存于其状态字寄存器中,可由MCS-51的CPU读取。通信协议如下:(1)串行通信波特率为1200bps;(2)帧格式为8位数据位,一位起始位,一位可编程的第9位(即发送和接收的地址/数据位的标志位),一位停止位;(3)主机和从机遵循主从原则,主机用呼叫方式选择从机,数据在主机和从机之间双向传递,各从机之间的相互通信需通过主机作为中介;(4)主从机之间还应传送一些供它们识别的命令和状态字,如以00H表示主机发送从机接收命令,以01H表示从机发送主机接收命令等。
3.3 通信程序设计思路及其实现
  程序主要包括主机程序(由主机主程序和通信子程序组成)、从机主程序和其中断服务程序组成。主机程序主要完成对8251A的初始化以及主机与从机之间的通信,主机程序框图见图5。而从机主程序主要完成对串行口的初始化、波特率的设置(应与8251A的波特率一致),它的中断程序主要用来完成MCS-51单片机与PC机的数据通信。从机中断服务程序框图见图6。

  这里简单介绍8251A的初始化程序,设8251A工作于异步通信方式,波特率系数×1,字符长度为8位,偶校验,所以方式字为7DH,又设8251A为全双工方式,出错标志复位,故其命令控制字为27H,其相应的初始化程序如下:
MOV R0,#0F0H


  

4 结束语
  本系统软硬件在IBM PC/XT机和DICE系列的MCS-51单片机上进行过调试,运行良好,验证了其在 仿真平台的控制,现已用于实际系统,且特别适用于从机实时性要求较高的中小型工控系统。

关键字:PC机  MCS-51  串行通信 引用地址:PC机与多MCS-51单片机间的串行通信硬件设计

上一篇:单片机制作的数字电压表及源代码
下一篇:单片机并行扩展口在小型汉字显示屏中的应用分析

推荐阅读最新更新时间:2024-03-16 13:08

简单MCS-51单片机程序指令、寻址方式及结果分析
在MCS-51单片机的片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。请说明下面各是什么指令和寻址方式,以及每条指令执行后目的操作数的结果。 MOV A,40H ;数据传送,直接寻址,(A)=48H MOV R0,A ;数据传送,寄存器寻址,(R0)=48H MOV P1,#0FH ;数据传送,立即数寻址,(P1)=0FH MOV @R0,30H ;数据传送,直接寻址,(48H)=38H MOV DPTR,#1234H ;数据传送,立即数寻址,(DPTR)=1234H MOV 40H,30H ;数据传送,直接寻址,(40H)=38H MOV R0,38H ;数据传送,
[单片机]
ARM 开发板 与 PC机ubuntu系统 nfs 挂载
ARM开发板与PC通过NFS 网络文件系统挂接,很方便文件的移动,也为我们的开发带来了方便。接下来,我就详细的介绍下如何建立ARM与PC机的挂接。 我是用的UBuntu系统。 首先,我们需要在主机上安装nfs服务器,安装过的过程中一并把一些需要的组件也给安装了。 1. 安装 NFS 相关组件 sudo apt-get install nfs-kernel-server 安装完nfs服务器之后,我们需要建立一个与下位机挂接的共享文件夹。 2. 建立NFS共享文件夹 sudo mkdir -R /mnt/nfs 3.设置共享目录 修改主机 /etc/exports 文件,添加如下代码 /mnt/nfs *(
[单片机]
[汇编学习笔记]MCS-51指令符号说明
符号说明 #da ta:表示指令中的8位立即数(da ta), # 表示后面的数据是立即数。 #da ta16:表示指令中的16位立即数。 direct:表示8位内部数据存储单元的地址。它可以是内部RAM的单元地址0~127,或特殊功能寄存器的地址,如I/O端口、控制寄存器、状态寄存器等(128~255)。 Rn:n=0~7,表示当前选中的寄存器区的8个工作寄存器R0~R7. Ri:i=0或1,表示当前选中的寄存器区中的2个寄存器R0、R1,可作地址指针即间址寄存器。 Addr11:表示11位的目的地址。用于ACALL和AJMP的指令中,目的地址必须存放在与下一条指令第一个字节同一个2KB程序存储地址空间之中。 Addr
[单片机]
MCS-51单片机内部时钟电路详解
在MCS-51单片机芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2 。而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,这就是单片机的时钟电路。 1.振荡周期:为单片机提供时钟信号的振荡源的周期。 2.时钟周期:是振荡源信号经二分频后形成的时钟脉冲信号。 3.机器周期:通常将完成一个基本操作所需的时间称为机器周期。 4.指令周期:是指CPU执行一条指令所需要的时间。一个指令周期通常含有1~4个机器周期。
[单片机]
<font color='red'>MCS-51</font>单片机内部时钟电路详解
MCS-51单片机定时器/c见习题解答
1、根据定时器/计数器0方式1逻辑结构图,分析门控位GATE取不同值时,启动定时器的工作过程。 答:当GATE=0:软件启动定时器,即用指令使TCON中的TR0置1即可启动定时器0。 GATE=1:软件和硬件共同启动定时器,即用指令使TCON中的TR0置1时,只有外部中断INT0引脚输入高电平时才能启动定时器0。 2、当定时器/计数器的加1计数器计满溢出时, 溢出标志位TF1由硬件自动置1,简述对该标志位的两种处理方法。 答:一种是以中断方式工作,即TF1置1并申请中断,响应中断后,执行中断服务程序,并由硬件自动使TF1清0;另一种以查询方式工作,即通过查询该位是否为1来判断是否溢出,TF1置1后必须用软件使TF1清0
[单片机]
MCS-51】总线技术概述
51单片机是一种广泛使用的嵌入式系统芯片,具有很高的性价比和通用性。在实际应用场景中,51单片机常常需要与其他外设或器件进行数据交换,此时总线技术就显得非常重要了。本文将从总线的概念、分类、架构和应用等方面对51单片机总线技术进行概述。 1. 总线的概念 总线是指计算机内部的一组传输数据的线路,它连接了不同的硬件设备,包括CPU、存储器、输入输出设备等。通过总线,这些设备之间可以进行信息交换和协调工作,使得整个系统变得更加高效和灵活。 2. 总线的分类 根据总线传输数据的方式,总线可以分为以下两类: (1)并行总线:并行总线采用多根数据线同时传输多个二进制位,数据传输速度快,但需要占用较多的信号线。 (2)串行总线:串行总
[单片机]
【<font color='red'>MCS-51</font>】总线技术概述
TMS320VC5402串行通信接口设计
  近年来,DSP在电子、通信和控制领域得到了非常广泛的应用,在DSP应用系统设计中与上、下位机的通信必不可少。目前几乎所有的DSP都提供一个或多个串口,然而,多数DSP芯片提供的是同步串口,在实际的应用中,DSP要能够与外设进行异步串行通信,如与PC机进行串行数据传输就要求DSP系统具UART串行接口。另外,由于单片机控制灵活方便、便于键盘及显示的扩展,使得其与DSP结合的更加紧密。针对这种情况,本文研究并实现了DSP与PC机及单片机通信接口的扩展。   1 SPI接口协议   串行外围设备接口(SPI)是MOTOROLA公司提出的一个同步串行外设接口,以主从方式工作,允许CPU 与各种外围接口器件以串行方式进行通信、交
[嵌入式]
USB接口在串行通信中的应用
    摘要: 介绍USB接口在串行通信中的应用,讨论USB接口同RS-232接口的转换以及USB接口modem的简化设计,并给出了实际中的产品样图。     关键词: USB RS-232 通讯类 UniModem 1 USB接口简介 USB即通用串行总线,可以实现热插拔,采用菊花链结构,最多可以同时连接127台设备,由总线提供电源,并有检错、纠错功能以保证数据正确传输。     USB在PC机上应用时,PC机的操作系统需要支持USB协议,此时PC机上的软件包括两部分:USB初始化软件和运行部分。
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved