通用串口通信.docx

上传人:b****4 文档编号:4379638 上传时间:2023-05-07 格式:DOCX 页数:57 大小:178.81KB
下载 相关 举报
通用串口通信.docx_第1页
第1页 / 共57页
通用串口通信.docx_第2页
第2页 / 共57页
通用串口通信.docx_第3页
第3页 / 共57页
通用串口通信.docx_第4页
第4页 / 共57页
通用串口通信.docx_第5页
第5页 / 共57页
通用串口通信.docx_第6页
第6页 / 共57页
通用串口通信.docx_第7页
第7页 / 共57页
通用串口通信.docx_第8页
第8页 / 共57页
通用串口通信.docx_第9页
第9页 / 共57页
通用串口通信.docx_第10页
第10页 / 共57页
通用串口通信.docx_第11页
第11页 / 共57页
通用串口通信.docx_第12页
第12页 / 共57页
通用串口通信.docx_第13页
第13页 / 共57页
通用串口通信.docx_第14页
第14页 / 共57页
通用串口通信.docx_第15页
第15页 / 共57页
通用串口通信.docx_第16页
第16页 / 共57页
通用串口通信.docx_第17页
第17页 / 共57页
通用串口通信.docx_第18页
第18页 / 共57页
通用串口通信.docx_第19页
第19页 / 共57页
通用串口通信.docx_第20页
第20页 / 共57页
亲,该文档总共57页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

通用串口通信.docx

《通用串口通信.docx》由会员分享,可在线阅读,更多相关《通用串口通信.docx(57页珍藏版)》请在冰点文库上搜索。

通用串口通信.docx

通用串口通信

两片51单片机互相通信的串行通信程序(一个发送程序,一个接收程序)

作者:

佚名 来源:

不详 录入:

Admin 更新时间:

2008-7-2620:

01:

31 点击数:

2

【字体:

系统晶振是11.0592MHz

;51单片机发送单片机程序

;此程序用Proteus仿真通过

;此程序在硬件上测试通过

;2007-05-27

;附有简化电路图

;为了使初学者能看懂,程序与图尽可能的简单扼要

;实验现象为,发送端的P1口的哪个键被接下,接收端的哪个灯对应着亮

;如果把两个单片机的T和R通过无线模块(如基于MCP2120芯片的模块)来扩充,便可做成无线通信

                   ORG                0000H

                   AJMP               START

                   ORG                0040H

START:

                   MOV                SP,#60H       

                   MOV                SCON,#50H                  ;串口方式1

                   MOV                TMOD,#20H                  ;T1方式2

                   MOV                TL1,#0FDH                  ;波特率9600的常数

                   MOV                TH1,#0FDH

                   SETB               TR1  

                   MOV                r5,#00h                   

WAIT:

                   MOV              p1,#0ffh

                   MOV              a,p1

                   MOV              r5,a

                   lcalldelay                     ;读键盘,这里去抖动,还要加几句话

                   MOV              a,p1

                    nop

                   CJNE               A,5,WAIT               ;是否有键输入

                   MOV                SBUF,a                     ;串口输出键盘输入的值

                   NOP

SS:

                JBC                TI,WAIT                    ;是否发送完毕

                   SJMP               SS

DELAY:

                                     ;延时子程序

                   PUSH               0                          ;保存现场

                   PUSH               1

                   MOV                0,#06H

DELAY1:

MOV                1,#0H

                   DJNZ               1,$

                   DJNZ               0,DELAY1

                   POP                1                          ;恢复现场

                   POP                0

                   RET

                   END

;系统晶振是11.0592MHz

;51单片机接收单片机程序

;此程序用Proteus仿真通过

;此程序在硬件上测试通过

;2007-05-27

;附有简化电路图

;为了使初学者能看懂,程序与图尽可能的简单扼要

;实验现象为,发送端的P1口的哪个键被接下,接收端的哪个灯对应着亮

;如果把两个单片机的T和R通过无线模块(如基于MCP2120芯片的模块)来扩充,便可做成无线通信

                   ORG                0000H

                   AJMP               START

                   ORG                0040H

START:

       

                   MOV                SCON,#50H                  ;串口方式1

                   MOV                TMOD,#20H                  ;T1方式2

                   MOV                TL1,#0FDH                  ;波特率9600的常数

                   MOV                TH1,#0FDH

                   SETB               TR1          

                  WAIT:

                   JBC                RI,DIS_REC                 ;是否接收到数据       

                   sjmp               wait

DIS_REC:

                   MOV                A,SBUF                     ;读串口接收到的数据        

                   MOV                p1,a

                   SJMP               wait

                   end

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

 

作者:

北京工业大学 许丽佳 陈阳舟   来源:

电子工程师    点击数:

1023   更新时间:

2006-5-30

您可以添加到网摘让更多人关注此文章:

    摘 要:

主要讲解了IBM-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机的正常通信,必须正确设定它们两者之间的通信方式,保证双方都用相同的波特率、起始位、停止位、奇偶校验位,并且要建立双方通信的应答信号。

  单片机既可工作在同步移位寄存器方式下也可工作在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,其相应的初始化程序如下:

  MOVR0,#0F0H

  

  

  

  

  4 结束语

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

  参考文献

  1 何立民.单片机应用文集

(2).北京:

北京航空航天大学出版社,1993

  2 何立民.单片机高级教程.北京:

北京航空航天大学出版社,2000

  3 胡汉才.单片机原理及其接口技术.北京:

清华大学出版社,1996

  4 陈荣保,肖本贤,李钢.基于MODEM和单片机的远程通讯系统设计与实现.微电子学与计算机,1999

(1)5 何飞跃。

基于MCS-51单片机的LCU与上位机的通信.微计算机信息,1999

(1)

单片机C51串口中断接收和发送测试例程(含通信协议的实现)

  通信协议:

第1字节,MSB为1,为第1字节标志,第2字节,MSB为0,为非第一字节标志,其余类推……,最后一个字节为前几个字节后7位的异或校验和。

  测试方法:

可以将串口调试助手的发送框写上95102025,并选上16进制发送,接收框选上16进制显示,如果每发送一次就接收到95102025,说明测试成功。

//这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收

//和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的

#include

#include

#defineINBUF_LEN4//数据长度

unsignedcharinbuf1[INBUF_LEN];

unsignedcharchecksum,count3;

bitread_flag=0;

voidinit_serialcomm(void)

{

SCON=0x50;//SCON:

serailmode1,8-bitUART,enableucvr

TMOD|=0x20;//TMOD:

timer1,mode2,8-bitreload

PCON|=0x80;//SMOD=1;

TH1=0xF4;//Baud:

4800fosc=11.0592MHz

IE|=0x90;//EnableSerialInterrupt

TR1=1;//timer1run

//TI=1;

}

//向串口发送一个字符

voidsend_char_com(unsignedcharch)

{

SBUF=ch;

while(TI==0);

TI=0;

}

//向串口发送一个字符串,strlen为该字符串长度

voidsend_string_com(unsignedchar*str,unsignedintstrlen)

{

unsignedintk=0;

do

{

send_char_com(*(str+k));

k++;

}while(k

}

//串口接收中断函数

voidserial()interrupt4using3

{

if(RI)

{

unsignedcharch;

RI=0;

ch=SBUF;

if(ch>127)

{

count3=0;

inbuf1[count3]=ch;

checksum=ch-128;

}

else

{

count3++;

inbuf1[count3]=ch;

checksum^=ch;

if((count3==(INBUF_LEN-1))&&(!

checksum))

{

read_flag=1;//如果串口接收的数据达到INBUF_LEN个,且校验没错,

//就置位取数标志

}

}

}

}

main()

{

init_serialcomm();//初始化串口

while

(1)

{

if(read_flag)//如果取数标志已置位,就将读到的数从串口发出

{

read_flag=0;//取数标志清0

send_string_com(inbuf1,INBUF_LEN);

}

}

}

RS-232、RS-422与RS-485标准及应用

  一、RS-232、RS-422与RS-485的由来

  RS-232、RS-422与RS-485都是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。

RS-422由RS-232发展而来,它是为弥补RS-232之不足而提出的。

为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。

RS-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标准。

为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。

由于EIA提出的建议标准都是以“RS”作为前缀,所以在通讯工业领域,仍然习惯将上述标准以RS作前缀称谓。

  RS-232、RS-422与RS-485标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。

因此在视频界的应用,许多厂家都建立了一套高层通信协议,或公开或厂家独家使用。

如录像机厂家中的Sony与松下对录像机的RS-422控制协议是有差异的,视频服务器上的控制协议则更多了,如Louth、Odetis协议是公开的,而ProLINK则是基于Profile上的。

二、RS-232串行接口标准

  目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。

RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。

RS-232采取不平衡传输方式,即所谓单端通讯。

  收、发端的数据信号是相对于信号地,如从DTE设备发出的数据在使用DB25连接器时是2脚相对7脚(信号地)的电平,DB25各引脚定义参见图1。

典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5~+15V,负电平在-5~-15V电平。

当无数据传输时,线上为TTL,从开始传送数据到结束,线上电平从TTL电平到RS-232电平再返回TTL电平。

接收器典型的工作电平在+3~+12V与-3~-12V。

由于发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。

RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为3~7kΩ。

所以RS-232适合本地设备之间的通信。

其有关电气参数参见表1。

规定

RS232

RS422

R485

工作方式

单端

差分

差分

节点数

1收、1发

1发10收

1发32收

最大传输电缆长度

50英尺

400英尺

400英尺

最大传输速率

20Kb/S

10Mb/s

10Mb/s

最大驱动输出电压

+/-25V

-0.25V~+6V

-7V~+12V

驱动器输出信号电平

(负载最小值)

负载

+/-5V~+/-15V

+/-2.0V

+/-1.5V

驱动器输出信号电平

(空载最大值)

空载

+/-25V

+/-6V

+/-6V

驱动器负载阻抗(Ω)

3K~7K

100

54

摆率(最大值)

30V/μs

N/A

N/A

接收器输入电压范围

+/-15V

-10V~+10V

-7V~+12V

接收器输入门限

+/-3V

+/-200mV

+/-200mV

接收器输入电阻(Ω)

3K~7K

4K(最小)

≥12K

驱动器共模电压

-3V~+3V

-1V~+3V

接收器共模电压

-7V~+7V

-7V~+12V

表1

三、RS-422与RS-485串行接口标准

1.平衡传输

  RS-422、RS-485与RS-232不一样,数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B,如图2。

  通常情况下,发送驱动器A、B之间的正电平在+2~+6V,是一个逻辑

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2