第6章80C51的串行口.ppt

上传人:sccc 文档编号:4999969 上传时间:2023-05-28 格式:PPT 页数:54 大小:1.23MB
返回 下载 相关 举报
第6章80C51的串行口.ppt_第1页
第1页 / 共54页
第6章80C51的串行口.ppt_第2页
第2页 / 共54页
第6章80C51的串行口.ppt_第3页
第3页 / 共54页
第6章80C51的串行口.ppt_第4页
第4页 / 共54页
第6章80C51的串行口.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《第6章80C51的串行口.ppt》由会员分享,可在线阅读,更多相关《第6章80C51的串行口.ppt(54页珍藏版)》请在三一办公上搜索。

1、单片机原理及应用,第6章 80C51的串行口,第6章 80C51的串行口,6.1 计算机串行通信基础6.2 80C51的串行口6.3 单片机串行口应用举例,6.1 计算机串行通信基础,计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。通信有并行通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。并行通信是将数据字节的各位用多条数据线同时进行传送。,并行通信控制简单、传输速度快,但不宜远距离传输。,6.1 计算机串行通信基础,串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。,串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话网

2、等现成的设备,但数据的传送控制比并行通信复杂。,6.1.1 串行通信的基本原理,1、异步(串行)通信与同步(串行)通信异步通信 是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求各自的时钟尽可能一致。,异步通信是以字符(构成的帧)为单位进行传输;字符与字符之间的时间间隔任意(字符之间异步);每个字符中的各位以固定的时间传送的(同一字符内的各位是同步的);,6.1.1 串行通信的基本原理,异步通信的数据格式:,异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要加23位附加位,各帧之间还有间隔,因此传输效率不高。,6.1.1 串

3、行通信的基本原理,同步通信同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步;传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系;发送方对接收方的同步可以通过两种方法实现:,外同步 自同步,同步通信的特点 传输效率较高,但实现的硬件设备比较复杂。,6.1.1 串行通信的基本原理,2、串行通信的传输方向单工 是指数据传输仅能沿一个方向,不能实现反向传输。半双工 是指数据传输可以沿两个方向,但需要分时进行。全双工 是指数据可以同时进行双向传输。,单工 半双工 全双工,6.1.1 串行通信的基本原理,3、信号的调制与解调 数

4、字信号不能直接在电话网上传输,必须将其转换成适合在电话网上传输的模拟信号;用调制器把数字信号转换成模拟信号后送到通信线路上去,再由解调器把从通信线路上收到的模拟信号转换成数字信号;将调制器和解调器合并在一个装置中,这就是调制解调器(MODEM)。,6.1.1 串行通信的基本原理,4、串行通信的错误校验 奇偶校验在发送数据时,在数据位末尾增加1位奇偶校验位;奇校验 数据位和校验位中“1”的个数之和应为奇数;偶校验 数据位和校验位中“1”的个数之和应为奇数;接收字符时,对“1”的个数进行校验,若发现不一致,则说明传输数据过程中出现了差错。只能发现错误,不能校正错误。,6.1.1 串行通信的基本原理

5、,代码和校验发送方将所发数据块求和,产生一个字节的校验和附加到数据块末尾,供接收方校验接收是否出错。只能发现错误,不能校正错误。循环冗余校验通过某种数学运算实现有效信息与校验位之间的循环校验,常用于对磁盘信息的传输、存储区的完整性校验。这种校验方法有较强的纠错能力。,6.1.1 串行通信的基本原理,5、传输速率与传输距离传输速率比特率 是每秒钟传输二进制代码的位数,单位是:位/秒(bps)。如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这时的比特率为:10位240个/秒=2400 bps波特率 表示每秒钟调制信号变化的次数,单位是:波特(Baud)。

6、波特率和比特率不总是相同的,对于将数字信号1或0直接用两种不同电压表示的所谓基带传输,比特率和波特率是相同的。,6.1.1 串行通信的基本原理,传输距离与传输速率的关系串行接口或终端直接传送串行信息位流的最大距离与传输速率及传输线的电气特性有关。提高传输速率的措施缩短传输距离采用平衡传输(RS-422、RS-485),6.1.2 串行通信接口标准,1、RS-232C接口 是EIA(美国电子工业协会)1969年修订RS-232C标准。RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。机械特性25针及9针连接器(阳头),6.1.2 串行通信接口标准,功能特性,6

7、.1.2 串行通信接口标准,电气特性采用负逻辑逻辑1 DC-3V-15V逻辑0 DC+3V+15VRS-232C电平与TTL及CMOS电平不兼容MC1488 TTL RS-232C电平转换MC1489 RS-232C TTL电平转换MAX232 RS-232CTTL电平转换芯片,6.1.2 串行通信接口标准,过程特性 过程特性规定了信号之间的时序关系,以便正确地接收和发送数据。远程通信RS-232C总线连接方法:,6.1.2 串行通信接口标准,远程通信RS-232C总线连接方式:,6.1.2 串行通信接口标准,近程通信RS-232C总线连接方式:,方式一 方式二,6.1.2 串行通信接口标准,

8、RS-232C电平与TTL电平转换驱动电路 MC1488 需12V电源 MAX232 只需5V电源,内置电子泵,将5V转换成12V,片内含两套发送/接收器。,6.1.2 串行通信接口标准,采用RS-232C接口存在的问题传输距离短,速率低 小于100m,低于20kbps。有电平偏移 会在传输线上产生较大的电压降抗干扰能力差,6.1.2 串行通信接口标准,2、RS-422A接口平衡型电压数字接口,因采用差分方式可使干扰和噪声相互抵消,因此,RS-422接口的传输距离远,传输速率高。,6.1.2 串行通信接口标准,3、RS-485接口 RS-485是RS-422A的变型:RS-422A用于全双工R

9、S-485 用于半双工RS-485是一种多发送器标准,在通信线路上最多可以使用32 对差分驱动器/接收器。如果在一个网络中连接的设备超过32个,还可以使用中继器;RS-485的信号传输采用两线间的电压来表示逻辑1和逻辑0。传输线采用差动信道,干扰抑制性极好;阻抗低,无接地问题,传输距离可达1200米,传输速率可达1Mbps。,6.1.2 串行通信接口标准,RS-485是一点对多点的通信接口(总线结构),一般采用双绞线的结构。普通的PC机一般不带RS485接口,因此要使用RS-232C/RS-485转换器。单片机可通过芯片MAX485完成TTL/RS-485的电平转换。在计算机和单片机组成的RS

10、-485通信系统中,下位机由单片机系统组成,上位机为PC机,负责监视下位机的运行状态,并对其状态信息进行集中处理,以图文方式显示下位机的工作状态以及工业现场被控设备的工作状况。系统中各节点(包括上位机)的识别是通过设置不同的地址来实现的。,6.2 80C51的串行口,6.2.1 80C51串行口的结构,有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H;接收器是双缓冲结构;发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误。,6.2.2 80C51串行口的控制寄存器,SCON 是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志:SM0和SM1为工

11、作方式选择位,可选择四种工作方式:,6.2.2 80C51串行口的控制寄存器,SM2 多机通信控制位,主要用于方式2和方式3。在方式0时,SM2必须是0在方式1时,若SM2=1,则只有接收到有效停止位时,RI才置1REN 允许串行接收位REN=1,启动串行口接收数据REN=0,禁止接收TB8 在方式2或方式3中,是发送数据的第九位可以用软件规定其作用:可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。在方式0和方式1中,该位未用。,6.2.2 80C51串行口的控制寄存器,TI 发送中断标志位。当发送完一字节数据时,由内部硬件使TI置1,向CPU发中断申请;在发送中断服务程

12、序中,必须用软件将其清0;查询发送时,必须等待TI=1后,将其清0,再向SBUF写入新数据。RI 接收中断标志位。当接收到一字节数据时,由内部硬件将RI置1,向CPU发中断申请。在中断或查询方式接收程序中,从SBUF中读取数据后,必须用软件将其清0。,6.2.2 80C51串行口的控制寄存器,PCON中只有一位SMOD与串行口工作有关:,SMOD 波特率倍增位。在串行口方式1、2、3时,波特率与SMOD有关:SMOD=1,波特率提高一倍。,6.2.3 80C51串行口的工作方式,方式0 同步移位寄存器的输入输出方式同步移位脉冲由TXD(P3.1)脚输出数据由RXD(P3.0)脚输入或输出均为8

13、位数据,低位在先,高位在后波特率固定为fosc/12,与SMOD位无关方式0接收和发送电路,6.2.3 80C51串行口的工作方式,方式1 10位数据的异步串行通信方式TXD为数据发送引脚RXD为数据接收引脚1位起始位,8位数据位,低位在先,高位在后,6.2.3 80C51串行口的工作方式,方式1输出:用指令将 TI 清 0将数据写入SBUF,启动发送过程一帧数据发送完毕,中断标志 IT 被置 1方式 1 的波特率由定时器T1的溢出率决定void send(unsigned char c)/发送一字节数据SBUF=c;while(TI=0);/等待发送完毕TI=0;,6.2.3 80C51串行

14、口的工作方式,方式1输入用软件置REN为1,允许接收器接收数据;接收到的数据自动装入接收SBUF,并置RI=1,向CPU请求中断;软件从SBUF中读取数据后,必须将RI清0。if(RI=1)/查询方式输入 c=SBUF;RI=0;方式2、方式3(略),6.2.3 80C51串行口的工作方式,波特率的计算在串行通信中,收发双方对通信的波特率要有约定方式0的波特率固定为 fosc/12方式2的波特率有两种 fosc/64(SMOD=0)或 fosc/32(SMOD=1)方式1和方式3的波特率是可变的,由定时器T1的溢出率和SMOD共同决定:SMOD=0时 波特率=T1溢出率/32SMOD=1时 波

15、特率=T1溢出率/16,6.2.3 80C51串行口的工作方式,当T1作为波特率发生器时,应使T1工作在自动再装入的8位定时器方式(即方式2,且TR1=1,以启动定时器)。此时溢出率取决于TH1中的计数值。T1溢出率=fosc/12(256TH1)比如,若单片机的晶振频率为11.0592MHz,TH1=0 xFD,SMOD=0,此时T1溢出率=11.0592106/12(256253)=307200 Hz 波特率=T1溢出率/32=307200/32=9600 bps,6.2.3 80C51串行口的工作方式,串行口工作之前,应对其进行初始化,具体步骤如下:确定T1的工作方式(编程TMOD寄存器

16、);计算T1的初值,同时装入TH1和TL1;启动T1(将TCON中的TR1位置1);确定串行口控制(编程SCON寄存器);若采用中断方式工作,还要进行中断设置(编程中断允许寄存器 IE、中断优先级寄存器 IP)。,6.2.3 80C51串行口的工作方式,void main(void)TMOD=0 x21;/T0方式1,T1方式2(作波特率发生器用)PCON=0;/波特率不倍增SCON=0 x50;/串口工作方式1,REN=1(允许接收)TH1=0 xFD;/(11.0592MHz晶振,9600B/S)TL1=0 xFD;TR1=1;/启动 T1 ET1=0;/禁止定时器1中断,6.3 单片机串

17、行口应用举例,在计算机分布式测控系统中,经常要利用串行通信方式进行数据传输。80C51单片机的串行口为计算机间的通信提供了极为便利的条件。利用单片机的串行口还可以方便地扩展键盘和显示器,对于简单的应用非常便利。,6.3.1 单片机与单片机的通信,一、点对点的通信 1、硬件连接近距离(几米以内)中距离(百米以内),6.3.2 单片机与PC机的通信,在工控系统(尤其是多点现场工控系统)设计实践中,单片机与PC机组合构成分布式控制系统是一个重要的发展方向。分布式系统主从管理,层层控制。主控计算机监督管理各子系统分机的运行状况。子系统与子系统可以平等信息交换,也可以有主从关系。分布式系统最明显的特点是

18、可靠性高,某个子系统的故障不会影响其它子系统的正常工作。,6.3.2 单片机与PC机的通信,PC机与单个80C51单片机的串行通信硬件连接,6.3.2 单片机与PC机的通信,PC 端的程序设计(VB)MSComm 控件有许多属性,主要的几个如下:CommPort:设置并返回通信端口号;Settings:以字符串的方式设置并返回波特率、奇偶校验、数据位、停止位;PortOpen:设置并返回端口的状态,也可以打开和关闭端口;Input:从缓冲区读取字符(接收);Output:向缓冲区写入字符(发送)。,PC 端的程序设计(VB程序1),Private Sub CmdOpen_Click()初始化及

19、打开串口 MSComm1.Settings=“9600,n,8,1 MSComm1.CommPort=1 串口1 MSComm1.InputMode=0 以文本方式读取数据 MSComm1.RThreshold=1 每收到一个字符都产生 OnComm 事件。MSComm1.PortOpen=True 打开串口1End SubPrivate Sub CmdSend_Click()发送文本框Text2中的数据 MSComm1.Output=Text2.TextEnd SubPrivate Sub MSComm1_OnComm()接收数据并在文本框1中显示 Text1.Text=Text1.Text

20、&MSComm1.InputEnd Sub,PC 端的程序设计(课本上的VB程序),Sub Form_Load()MSComm1.CommPort=2 MSComm1.PortOpen=TURE MSComm1.Settings=“9600,N,8,1”End SubSub command1_Click()Instring as string MSComm1.InBufferCount=0 MSComm1.Output=A Do Dummy=DoEvents()Loop Until(MSComm1.InBufferCount2)Instring=MSComm1.Input End Sub Su

21、b command2_Click()MSComm1.PortOpen=FALSE 关闭串口 UnLoad Me 关闭窗口 End Sub,单片机端程序设计(查询方式接收),#include void send(unsigned char c)/发送一字节数据SBUF=c;while(TI=0);/等待发送完毕TI=0;void main(void)unsigned char c;EA=1;/允许中断TMOD=0 x20;/定时器1方式2(作波特率发生器用)PCON=0;/波特率不倍增SCON=0 x50;/串口工作方式1,REN=1(允许接收)TH1=0 xFD;/(11.0592MHz晶振,

22、9600bps)TL1=0 xFD;TR1=1;ET1=0;/禁止定时器1中断while(1)if(RI=1)c=SBUF;RI=0;send(c+1);,单片机端程序设计(中断方式接收),#include unsigned char buff16;unsigned char f_point,e_point;void send(unsigned char c)SBUF=c;while(TI=0);/等待发送完毕TI=0;void main(void)EA=1;/允许中断TMOD=0 x20;/定时器1方式2 PCON=0;/波特率不倍增SCON=0 x50;TH1=0 xFD;/9600bps

23、TL1=0 xFD;TR1=1;ES=1;/允许串口中断ET1=0;/禁止定时器1中断,f_point=0;e_point=0;while(1)if(e_point!=f_point)send(bufff_point+1);f_point+;if(f_point15)f_point=0;void Comm(void)interrupt 4if(RI=1)buffe_point=SBUF;RI=0;e_point+;if(e_point15)e_point=0;,6.3.2 单片机与PC机的通信,PC机与多个80C51单片机的通信(分布式系统)采用RS485总线多用主从方式,每个单片机有唯一的地

24、址(编号)PC机要和某个单片机通信,先向总线发送该单片机的地址和命令,然后再进行通信单片机与单片机之间不直接通信,实验七 单片机与PC机的串行通信,与实验有关的硬件,实验七 单片机与PC机的串行通信,#include#define U8 unsigned char#define key_port P1code U8 tab=0 xa0,0 xbb,0 x62,0 x2a,0 x39,0 x2c,0 x24,0 xba,0 x20,0 x28,0 xff;U8 buf4=10,10,10,0;/显示缓冲区,开机先显示 0 U8 cnt=0;/扫描计数U8 scn=0 x7F;/送P2口控制LED

25、显示位,最左边LED先亮U8 rc;void delay_ms(U8 ms)U8 i,j;for(i=0;i100;i+)for(j=0;jms;j+);,实验七 单片机与PC机的串行通信,code U8 kcode=0 xb7,0 xbe,0 xde,0 xee,0 xbd,0 xdd,0 xed,0 xbb,0 xdb,0 xeb,0 xd7,0 xe7;/反转码对应键值 0 1 2 3 4 5 6 7 8 9 A BU8 key(void)U8 a,r;delay_ms(20);/延时20毫秒,消除按键抖动if(key_port=0 xf0)goto rn;a=key_port;key_

26、port=a|0 x0f;delay_ms(20);a=key_port;for(r=0;r 11)r=0 xff;/0 xff表示无效rn:key_port=0 xf0;return r;,实验七 单片机与PC机的串行通信,void send(unsigned char c)/发送一字节数据SBUF=c;while(TI=0);/等待发送完毕TI=0;void main(void)EA=1;/允许中断TMOD=0 x21;/定时器0方式1,定时器1方式2(作波特率发生器用)ET0=1;/允许定时器0中断 TH0=0 xEE;/晶振11.0592MHz,5mS TL0=0;PCON=0;/波特

27、率不倍增SCON=0 x50;/串口工作方式1,REN=1(允许接收)TH1=0 xFD;/(11.0592MHz晶振,9600B/S)TL1=0 xFD;TR0=1;/开始计数 TR1=1;ET1=0;/禁止定时器1中断key_port=0 xf0;,实验七 单片机与PC机的串行通信,while(1)if(RI=1)rc=SBUF;RI=0;if(rc=0)buf3=rc-0;if(key_port!=0 xf0)send(key()%10+0);while(key_port!=0 xf0);delay_ms(20);while(key_port!=0 xf0);,实验七 单片机与PC机的串

28、行通信,void timeint(void)interrupt 1/定时器0中断服务程序unsigned char i,s;TH0=0 xEE;/设置定时器时间常数 TL0=0;i=cnt,思考题及习题,1、80C51单片机串行口有几种工作方式?如何选择?简述其特点?2、串行通信的接口标准由那几种?3、在串行通信中通信速率与传输距离之间的关系如何?4、在利用RS-422/RS-485通信的过程如果通信距离(波特率固定)过长,应如何处理?5、利用单片机串行口扩展24个发光二极管和8个按键,要求画出电路图并编写程序使24个发光二极管按照不同的顺序发光(发光的时间间隔为1S)。6、编制图6-30的中断方式的数据接收程序。7、简述80C51单片机多机通信的特点。8、在微机与单片机构成的测控网络中,要提高通信的可靠性要注意哪些问题?,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号