2010-10-07 10:19:00 gdut_lisa 阅读数 4533
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4000 人正在学习 去看看 朱有鹏

8051单片机串行口及串行通信

 

一、串行通信的基础知识

CPU与其他外部设备要进行信息交换,一台计算机与其他计算机之间有时也要交换信息,这些信息交换就称为通信。通信有并行通信和串行通信两种。

1、并行通信

并行通信是将数据字节的各位用多条数据线同时进行传送。

 

并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接受存在困难。

2、串行通信

串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。


串行通信传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制要比并行通信复杂。

串行通信又可以分为异步通信与同步通信。

1)异步通信

异步通信是指通信的发送设备与接受设备使用各自的时钟控制数据的发送和接受过程。为使双方的收发协调,要求发送和接受设备的时钟尽可能一致。

 

异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,字符之间是异步的,而同一字符内的各位是同步的。

异步通信的数据格式 :

 

异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。

2)同步通信

同步通信是要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间间不留间隙,及位同步且字符同步。发送方对接收方的同步可以通过两种方法实现。

                     

外同步:是指对同步字符的检测在串行I/O接口芯片外部进行,当外部硬件电路检测到同步信号时,就给串行接口发送一个同步信号SYNC。当串行I/O接口芯片收到同步信号后,立即进行数据传送。

自(内)同步:是指同步字符的检测和同步控制是在串行I/O接口芯片内部进行的。自(内)同步又可分为单同步(只有一个字节的同步字符)和双同步(有两个字节的同步字符)。

 

 

二、8051的串行口

18051串行口的结构

 

有两个物理上独立的接受、发送缓冲器SBUF,它们占用同一个地址99H;接收器是双缓冲结构;因为发送时CPU是主动的,因而不会产生重叠错误。

 

28051串行口的控制寄存器

   SCON是个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志:

   SM0SM1为工作方式选择位,可选择四种工作方式:

 

SM2     多机通信控制位

REN     允许串行接受位    由软件设置REN=1,允许接受;REN=0,禁止接受。

TB8      在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。

RB8      在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则为接受到的停止位。

TI        发送中断标志位

RI        接受中断标志位

     寄存器PCON中只有一位SMOD与串行口工作有关:

 

SMOD     波特率倍增位

 

三、串行口的工作方式

1、方式0

工作在方式0时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由RXDP3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc/12

1)方式0输出

2)方式0的输入

  

方式0发送和接收电路

  

 2、方式1

      方式110位数据的异步通信接口。TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。其中1位起始位,8位数据位,1位停止位。

 

     3、方式2和方式3

     方式2或方式311位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚。


方式2和方式3一帧包括1位起始位,9位数据位,1位停止位。方式2的波特率固定为晶振频率的1/641/32,方式3波特率由定时器T1的溢出率决定。

 

四、波特率的计算

在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,由定时器T1的溢出率决定。

方式0的波特率=fosc/12

方式2的波特率=(2SMOD/64)·fosc

方式1的波特率=(2SMOD/32)·(T1溢出率)

方式3的波特率=(2SMOD/32)·(T1溢出率)

T1作为波特率发生器时,常用是使T1工作在自动再装入的8位定时方式(方式2

T1溢出率=fosc/(12*(256-TH1))

常用波特率表

 

五、原理图

其中U2为发送设备,U1为接受设备

 

六、程序设计

本程序的功能是实现U2每隔50MSU1发送数据,U1一直处于接受状态,当U2有数据接受时,则接数据传到P2口,形成流水灯。

发送设备程序:

#include<reg52.h>

 

void Delay(int n)                  //延时1ms子程序

{

   int x,y;

   for(x=0;x<110;x++)

      for(y=0;y<n;y++);

}

void main ()

{   

    int i;

    TMOD=0x20;                         //设置定时器1工作在方式2

       TH1=250;                      //设置波特率为9600kps=(2*/32)*12M/(12(256-250))

       TL1=250;

       TR1=1;                        //启动定时器1

       SCON=0x50;                         //串行口工作在方式1

       PCON=0x80;                //SMOD=1

    while(1)

       for(i=0;i<8;i++)

       {

          SBUF=~(1<<i);          //发送数

          Delay(50);

       }

}

 

接收设备程序:

#include<reg52.h>

 

void main ()

{   

    TMOD=0x20;                         //设置定时器1工作在方式2

       TH1=250;                      //设置波特率为9600kps=(2*/32)*12M/(12(256-250))

       TL1=250;

       TR1=1;                        //启动定时器1  

       SCON=0x50;                         //串行口工作在方式1  

       PCON=0x80;                         //SMOD=1

       REN=1;                                 //允许接受

    EA=1;                       //开总中断

       ES=1;                          //开串行接收中断

                    

       while(1);

}

 

void Serial() interrupt 4         //溢出中断服务子程序

{                                                  //软件清零

   RI=0;

   P2=SBUF;

}

 

 

 

 

2019-01-17 09:16:29 weixin_44367275 阅读数 59
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4000 人正在学习 去看看 朱有鹏

在这里插入图片描述
串行口是单片机与外界进行信息交换的工具。
■ 8051单片机的通信方式有两种:
并行通信:数据的各位同时发送或接收。
串行通信:数据一位一位次序发送或接收。
参看下图:
在这里插入图片描述

串行通信的方式包括异步通信和同步通信。
异步通信
它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如下:
在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(能省略),最后是停止位1。用这种格式表示字符,则字符能一个接一个地传送。
在异步通信中,CPU与外设之间必须有两项规定,即字符格式和波特率。字符格式的规定是双方能够在对同一种0和1的串理解成同一种意义。原则上字符格式能由通信的双方自由制定,但从通用、方便的角度出发,一般还是使用一些标准为好,如采用ASCII标准。
波特率即数据传送的速率,其定义是每秒钟传送的二进制数的位数。例如,数据传送的速率是120字符/s,而每个字符如上述规定包含10数位,则传送波特率为1200波特。
同步通信
在同步通信中,每个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间;所以在数据块传递时,为了提高速度,常去掉这些标志,采用同步传送。由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。
通信方向
在串行通信中,把通信接口只能发送或接收的单向传送办法叫单工传送;而把数据在甲乙两机之间的双向传递,称之为双工传送。在双工传送方式中又分为半双工传送和全双工传送。半双工传送是两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。

8051单片机的串行接口结构
8051单片机串行接口是一个可编程的全双工串行通信接口。它可用作异步通信方式(UART),与串行传送信息的外部设备相连接,或用于通过标准异步通信协议进行全双工的8051多机系统也能通过同步方式,使用TTL或CMOS移位寄存器来扩充I/O口。
8051单片机通过管脚RXD(P3.0,串行数据接收端)和管脚TXD(P3.1,串行数据发送端)与外界通信。SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据。
▲串行口的控制与状态寄存器
串行口控制寄存器SCON
它用于定义串行口的工作方式及实施接收和发送控制。字节地址为98H,其各位定义如下表:
在这里插入图片描述

SM0、SM1:串行口工作方式选择位,其定义如下:

在这里插入图片描述
(注:其中fosc为晶体震荡器频率)
SM2:多机通信控制位。在方式0时,SM2一定要等于0。在方式1中,当(SM2)=1则只有接收到有效停止位时,RI才置1。在方式2或方式3当(SM2)=1且接收到的第九位数据RB8=0时,RI才置1。
REN:接收允许控制位。由软件置位以允许接收,又由软件清0来禁止接收。
TB8: 是要发送数据的第9位。在方式2或方式3中,要发送的第9位数据,根据需要由软件置1或清0。例如,可约定作为奇偶校验位,或在多机通信中作为区别地址帧或数据帧的标志位。
RB8:接收到的数据的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=0,RB8为接收到的停止位。在方式2或方式3中,RB8为接收到的第9位数据。
TI:发送中断标志。在方式0中,第8位发送结束时,由硬件置位。在其它方式的发送停止位前,由硬件置位。TI置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的办法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据。TI必须用软件清0。
RI:接收中断标志位。在方式0,当接收完第8位数据后,由硬件置位。在其它方式中,在接收到停止位的中间时刻由硬件置位(例外情况见于SM2的说明)。RI置位表示一帧数据接收完毕,可用查询的办法获知或者用中断的办法获知。RI也必须用软件清0。
▲特殊功能寄存器PCON
PCON是为了在CHMOS的80C51单片机上实现电源控制而附加的。其中最高位是SMOD。

串行口的工作方式
8051单片机的全双工串行口可编程为4种工作方式,现分述如下:
方式0 移位寄存器输入/输出方式。
可外接移位寄存器以扩展I/O口,也能外接同步输入/输出设备。8位串行数据者是从RXD输入或输出,TXD用来输出同步脉冲。
输出 串行数据从RXD管脚输出,TXD管脚输出移位脉冲。CPU将数据写入发送寄存器时,立即启动发送,将8位数据以fos/12的固定波特率从RXD输出,低位在前,高位在后。发送完一帧数据后,发送中断标志TI由硬件置位。
输入 当串行口以方式0接收时,先置位允许接收控制位REN。此时,RXD为串行数据输入端,TXD仍为同步脉冲移位输出端。当(RI)=0和(REN)=1同时满足时,开始接收。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI。
下面两图分别是方式0扩展输出和输入的接线图。

在这里插入图片描述
<单片机串行口接线图>
方式1 波特率可变的10位异步通信接口方式。
发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。
输出 当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。串行数据从TXD管脚输出,发送完一帧数据后,就由硬件置位TI。
输入 在(REN)=1时,串行口采样RXD管脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。只有当(RI)=0且停止位为1或者(SM2)=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;不然信息丢失。所以在方式1接收时,应先用软件清零RI和SM2标志。
方式2 固定波特率的11位UART方式。
它比方式1增加了一位可程控为1或0的第9位数据。
输出: 发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。它可作为多机通信中地址/数据信息的标志位,也能作为数据的奇偶校验位。当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。发送一帧信息后,置位中断标志TI。
输入: 在(REN)=1时,串行口采样RXD管脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。在接收到附加的第9位数据后,当(RI)=0或者(SM2)=0时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;不然信息丢失。且不置位RI。再过一位时间后,不管上述条件时否满足,接收电路即行复位,并重新检测RXD上从1到0的跳变。
方式3 波特率可变的11位UART方式。
除波特率外,其余与方式2相同。
关于波特率选择
如前所述,在串行通信中,收发双方的数据传送率(波特率)要有一定的约定。在8051串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。
▲ 方式0
方式0的波特率固定为主振频率的1/12。
▲ 方式2
方式2的波特率由PCON中的选择位SMOD来决定,可由下式表示:
波特率=2的SMOD次方除以64再乘一个fosc,也就是当SMOD=1时,波特率为1/32fosc,当SMOD=0时,波特率为1/64fosc
▲ 方式1和方式3
定时器T1作为波特率发生器,其公式如下:
在这里插入图片描述

式中T1计数率取决于它工作在定时器状态还是计数器状态。当工作于定时器状态时,T1计数率为fosc/12;当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于fosc/24。产生溢出所需周期与定时器T1的工作方式、T1的预置值有关。
定时器T1工作于方式0:溢出所需周期数=8192-x;
定时器T1工作于方式1:溢出所需周期数=65536-x;
定时器T1工作于方式2:溢出所需周期数=256-x。
因为方式2为自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当。
当时钟频率选用11.0592MHZ时,取易获得标准的波特率,所以很多单片机系统选用这个看起来“怪”的晶体震荡器就是这个道理。
下表列出了定时器T1工作于方式2常用波特率及初值。
以上所有信息仅作为学习交流使用,不作为任何学习和商业标准。若您对文中任何信息有异议,欢迎随时提出,谢谢!
关于云创硬见
云创硬见是国内最具特色的电子工程师社区,融合了行业资讯、社群互动、培训学习、活动交流、设计与制造分包等服务,以开放式硬件创新技术交流和培训服务为核心,连接了超过30万工程师和产业链上下游企业,聚焦电子行业的科技创新,聚合最值得关注的产业链资源, 致力于为百万工程师和创新创业型企业打造一站式公共设计与制造服务平台。

2019-06-19 21:48:58 WalterBrien 阅读数 1357
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4000 人正在学习 去看看 朱有鹏

 

1.工作方式介绍:

 

方式 0 这种工作方式比较特殊,与常见的微型计算机的串行口不同,它又叫同步移位寄存器输出方式。在这种方式下,数据从 RXD 端串行输出或输入,同步信号从 TXD 端输出,波特率固定不变,为振荡率的 1/12 。该方式是以 8 位数据为一帧,没有起始位和停止位,先发送或接收最低位。 

常用于串行口外接移位寄存器,以扩展并行I/O口,这种方式不适用与两个MCS-51之间的串行通信。
 

方式1真正用于数据的串行发送和接收。TXD引脚和RXD引脚分别用于发送和接收数据。

方式1收发1帧数据为10位,1个起始位(0),8个数据位,1个停止位(1),先发送或接收最低位。


方式 2 串行口工作于方式2和方式3时,被定义为9位异步通信接口。每帧数据均为11位,1位起始位0,8位数据位(先低位),1位可程控为10的第九位数据和1位停止位1。采用这种方式可接收或发送 11 位数据,以 11 位为一帧,比方式 1 增加了一个数据位,其余相同。第 9 个数据即 D8 位具有特别的用途,可以通过软件控制它,再加特殊功能寄存器 SCON 中的 SM2 位的配合,可使 MCS-51 单片机串行口适用于多机通信。方式 2 的波特率固定,只有两种选择,为振荡率的 1/64 1/32 ,可由 PCON 的最高位选择。 

方式 3 方式 3 与方式 2 完全类似,唯一的区别是方式 3 的波特率是可变的。而帧格式与方式 2- 样为 11 位一帧。所以方式 3 也适合于多机通信。

 

SM0  SM1   方式   

 0      0        0   同步移位寄存器方式(用于扩展I/O口)

 0      1        1   8位异步收发,波特率可变(由定时器控制)

 1      0        2   9位异步收发,波特率为fosc/64fosc/32

 1      1        3   9位异步收发,波特率可变(由定时器控制)

 

2.计算公式总结:

 

方式0波特率固定为:fosc / 12

 

方式1波特率的计算公式为:(串行口为波特率可变的8位异步通信接口,SMOD为PCON寄存器的最高位值(0或1))

         方式1波特率 =(2^SMOD / 32) * 定时器T1的溢出率

注:当SMOD=1时,要比SMOD=0时的波特率加倍,所以也称SMOD位为波特率倍增位

 

方式2的波特率由下式确定:

         方式2波特率=( 2^SMOD / 64) * fosc

方式3的波特率由下式确定:

         方式3波特率 = (2^SMOD / 32) * 定时器T1的溢出率

 

溢出速率 = 1 / 溢出时间

溢出时间(相当于定时时间)= (2^8 – TH1初值)* Tcy

机器周期Tcy = 12时钟周期 = 12*(1/fosc)

故:溢出速率 = 1 / 溢出时间 = 1 / [(256 - TH1初值)* (12 / fosc)] = fosc / [12 *(256-TH1初值)]

计数速率 = 1 / 计数时间 = 1 / (12 / fosc) = fosc / 12

故也可写成:溢出速率 = 计数速率 / (256-TH1初值) = fosc / [12 *(256-TH1初值)]   

注:一般来说,定时器方式2用来确定波特率是比较理想的,它不需要中断服务程序设置初值,且算出的波特率比较准确。在用户使用的波特率不是很低的情况下,建议使用定时器T1的方式2来确定波特率。定时器方式1或方式3定时,常用T1作为波特率发生器。

而对于定时器方式0和方式1的最大特点是计数溢出后,计数器为全0。因而在循环定时或循环计数应用时就存在反复装入计数初值的问题。这不仅影响定时精度,而且也给程序设计带来麻烦。方式2就是针对此问题而设置的。定时器/计数器的方式2位自动恢复初值的(初值自动装入)8位定时器/计数器,TLX作为常数缓冲器,当TLX计数器溢出时,在置1溢出标志位TFX的同时,还自动的将THX中的初值送入至TLX,使TLX从处置开始重新计数。这种方式可以省去用户软件中重装处置的程序,简化定时器初值的计算方法,可以相当精确的确定定时时间。

而定时器方式3是为了增加1个附加的8位定时器/计数器而提供的,从而使MCS-51具有3个定时器/计数器。方式3只适用于定时器/计数器T0,定时器/计数器T1不能工作在方式3。T1处于方式3时相当于TR0=0,停止计数(此时T1可以用来做串口波特率发生器。)

2016-11-02 12:35:27 u013451157 阅读数 1509
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4000 人正在学习 去看看 朱有鹏

       单片机之间、单片机与计算机之间交换信息有串行通信和并行通信两种方式。并行通信的特点是传送控制简单、速度快、但随着通信距离的增加,并行通信的线路成本远远高于串行通信,串行通信已成为集散控制、多机系统和现代测控系统中常用的通信方式,串行接口在进行通信时,需要解决的一个重要的问题就是同步的问题。

       串行通信有异步通信和同步通信两种方式。异步通信是按字符传输的,每传送一个字符,就用起始位来进行收发双方的同步,各帧之间还有间隔,因此传输效率不高;同步串行通信进行数据传送时,发送和接收双方要保持完全的同步,因此要求接收和发送设备必须使用同一时钟。同步通信传送速度较快,但硬件结构比较复杂;异步通信的特点是硬件结构较简单,但传送速度较慢。

       异步通信是以字符帧为单位进行传输,每帧数据由4部分组成:起始位(占1位)、数据位(占5~8位)、奇偶校验位(占1位,也可以没有校验位)、停止位(占1或2位)。其中奇偶校验位的数据位为D8,此位也可用于确定该帧字符所代表的信息类型,“1”表明传送的是地址帧,“0”表明传送的是数据帧。

       MCS-51有一个可编程的全双工串行通信接口,可作为通用异步接收/发送器UART,也可作为同步移位寄存器。80C51单片机串行口有4种工作方式:同步移位寄存器输入/输出方式、8位异步通信方式及波特率不同的两种9位的异步通信方式。

       串行接口内部有两个缓冲器SBUF,一个是发送缓冲器,一个是接收缓冲器。它们在物理上相互独立,在逻辑上却占用同一个字节地址99H。对于发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误。而接收缓冲器是双缓冲结构,以避免在接收下一帧数据之前,CPU未能及时响应接收器的中断,没有把上一帧数据读走,就会丢失前一个字节的内容。

       单片机串行接口工作方式是通过初始化设置,将两个相应控制字分别写入串行控制寄存器SCON(98H)和电源控制寄存器PCON(97H)即可。

       SCON工作方式中,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。

       当串行口接收数据时,外界的串行信号通过单片机的引脚RXD(P3.0串行数据接收端),进入串行口的接收数据缓冲器。当串行口发送数据时,CPU将数据写入发送数据缓冲器,由发送数据缓冲器将通过引脚TXD(P3.1串行数据发送端),发送至外部的通信设备。特殊功能寄存器PCON控制串行口的波特率,电源控制寄存器PCON中只有一位SMOD与串行口工作有关,SMOD:波特率倍增位。串行口工作在方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍;复位时,SMOD=0。

       接收/发送数据,无论是否采用中断方式工作,每接收/发送一个数据都必须用指令对串行中断标志RI/TI清0,以备下一次接收/发送数据。

       串行口工作在方式0时,为同步移位寄存器的输入或输出方式,主要用于扩散并行输入或输出口。

       串行接口工作在方式0时为同步移位寄存器的输入/输出方式,用于扩展并行I/O接口。74LS164为一个1位串行输入8位并行输出的移位寄存器,TXD引脚输出的移位脉冲将RXD引脚输出的数据(低位在先)逐位移入74LS164,扩展8个LED指示灯。74LS165为一个8位并行输入1位串行输出的移位寄存器,TXD引脚输出的移位脉冲将74LS165的8位并行输入的数据(低位在先)逐位移入RXD引脚,扩展8个按键,S/L=1时,允许串行移位,S/L=0时,允许并行读入按键。通过级连多片移位寄存器,可扩展更多的并行I/O接口,而不必增加与单片机之间的连线,但扩展越多,接口的操作速度也就越慢。

       74LS164的CR引脚用于使其数据清0,不使用清0功能时,可以将该引脚上拉成高电平。74LS164的A引脚和B引脚互为选通控制,A为选通控制时,B为输入;B为选通控制时,A为输入,此处将A和B短接作为74LS164的串行数据输入端。

       74LS165的S/L引脚的负脉冲用于将并行数据装入,该引脚为高电平时就可以启动单片机进行数据输入。INH是时钟输入禁止控制引脚,通常将其接地。

       TTL电平通信接口:两个通信系统之间的距离在1m范围之内;

       RS-232C通信接口:两个通信系统之间的距离在30m范围之内;

       RS-485通信接口:两个通信系统之间的距离在1200m范围之内。

       设定时器初值为X,则每过“256-X”个机器周期,定时器T1产生一次溢出。用公式表示为

              T1的溢出速率=(fosc/12)/(256-X)

       当给出波特率后,可用下式计算出定时器T1工作在方式2的初始值为

              X = 256-(foscX(SMOD+1))/(384X波特率)


            80C51串行口的方式1在其串行通信中应用的最多,也是双击通信的主要方式。在通信中有主从式和对等式,主从式在多机通信中比较常用,双机通信一般采用对等式。

       80C51串行口的方式2和方式3有一个专门的应用领域,即多机通信。这一功能通常采用主从式多机通信方式,在这种方式中,用一台主机和多台从机。主机发送的信息可以传送到各个从机或指定的从机,各从机发送的信息只能被主机接收,从机与从机之间不能进行通信。

       在单片机串行口以方式2或方式3接收时,一方面,若SM2=1,表示置多机通信功能位,这时有两种情况:①接收到第9位数据为1,此时数据装入SBUF,并置RI=1,向CPU发中断请求;②接收到第9位数据为0,此时不产生中断,信息将被丢失,不能接收。

       另一方面,若SM2=0,则接收到的第9位信息无论是1还是0,都产生RI=1的中断标志,接收的数据装入SBUF。根据这个功能,就可以实现多机通信。

       在编程前,首先要给各从机定义地址编号。在主机想发送一个数据块给某个从机时,它必须先送出一个地址字节,以辨认从机。


       在系统中,单片机一般称为下位机,通常用来完成数据的采集和上传,因为51子系列单片机价格低、功能强、抗干扰能力强、适应温度范围宽和丰富的控制端口等优点。由PC、网络设备、数据库服务器组成的后台应用部分则统称为上位机,对下位机的上传数据进行分析并处理。分布式控制系统能充分发挥了单片机在实时数据采集和PC对图形数据、显示以及数据库管理上的优势。使得单片机的应用不局限于自动检测或控制。形成了向以PC网络为核心的分布式多点工控系统发展。

2019-12-18 21:51:06 qq_41838541 阅读数 27
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4000 人正在学习 去看看 朱有鹏

单片机的串行口及应用

通信方式:

​ 1.并行通信:数据的各位同时进行传送。速度快、效率高、成本高

​ 2.串行通信:数据一位一位地按顺序进行传送。减少传输线、降低通信成本

按照数据传送方向: 单工、半双工、全双工。一般情况下多数串行口工作在半双工,原因:用法简单。

波特率: 每秒传送二进制属马的位数,单位pbs (位/秒),衡量的是数据的传输速率,常用的波特率有2400bps、4800bps、9600bps…等。接收端和发送端的比特率分别设置时,必须保证两者相同。

串行通信的两种基本通信方式:

1.异步通信;

​ 以字符(或字节)为单位组成的数据帧进行传送。一帧数据由 起始位、数据位、可编程校验位和停止位组成。
在这里插入图片描述
组成:起始位、数据位、可编程位、停止位。

同步通信

数据以块为单位连续进行的传送,在传送数据前首先通过同步信号保证发送和接收端同步(该同步信号一般由硬件实现)。然后连续传送整块数据。特点有同步时钟线。

7.2 MCS-51 的串行口控制器

串行口的内部结构

MSC-51 内部有一个可编程的全算公共串行通信接口,可以作为通用异步就收/发送器(UART),也可作为同步移位寄存器,他的数据帧格式可分为 8位、10位、11位3 种。可设置多种不同的波特率。通过引脚RXD(P3.0)、TXD(P3.1)与外界进行通信。结构如图;
在这里插入图片描述
虚线框内部是串行口结构,包括 两个数据缓存器 SBUF 串行控制寄存器 SCON 发送和接受引脚。两个SBUF(发送/接收)在物理上是相互独立的,但是公用一个地址(99H),通过读写指令来区分到底是对那个SBUF进行操作。

发送控制器的作用是在 门电路 和 定时器T1 的配合下将SBUF(发)的并行数据转换为串行数据并自动添加起始位、可编程位、停止位。这一过程结束可是发送中断请求标志位TI 自动置1,用于通知CPU已将数据发送到TXD引脚。

接收控制器的作用是在 接收移位寄存器 和 定时器T1 的配合下将来自 RXD引脚 的串行数据转换为并行数据并自动过滤掉 起始位、可编程位、停止位。这一过程结束可是接收中断请求标志位RI 自动置1,用于通知CPU已将数据存入SBUF(收)。

整体来看:发送的数据从SBUF(发)直接发出。接收的数据要先经过接收移位寄存器后才到达SBUF(收),接收完数据到SBUF(收)后接收端可通过接收移位寄存器立即接收下一帧数据。因此发送端为单缓冲结构,发送端为算换从结构,好处是避免在第二帧接受的数据到来时,CPU 未来得及接受地一帧数据而引起两针数据重叠错误。

定时器T1的作用是产生用以接受过程中节拍控制的时钟信号(方波脉冲)。

串行口控制寄存器

两个:串行口控制寄存器SCON、电源控制俱存其PCON

SCON串行口寄存器(98H)
在这里插入图片描述
SM2、TB8、RB8 主要用于多机通信.

SM0 SM1 方式 功能说明
0 0 0 8位同步移位寄存器方式
0 1 1 10位数据异步通信方式
1 0 2 11位数据异步通信方式
1 1 3 11位数据异步通信方式

PCON电源控制寄存器(不可位寻址)
在这里插入图片描述
通信波特率的计算

51单片机以定时器1作为波特率信号发生器,其溢出脉冲经过分频单元后送到手法控制器中,分频单元如图:

波特率的计算公式:通讯时钟波特率 = fosc/(12*(2^n - a)) * 2^SMOD/32

晶振频率 fosc 一定后波特率大小取决于 T1 的工作方式 你和计数初值 a,也取决于波特率选择为SMOD。

7.3串行口工作方式0及其应用(8位同步移位寄存器方式)

SM0 SM1 = 00 时为串口工作方式0状态,
在这里插入图片描述
​ 串口方式0逻辑示意图

数据帧8位为一帧,先传输低位,后传输高位。无起始位和停止位,都有P3.0引脚出入。通信固定频率为12分频晶振,出供给内部收发逻辑外还通过引脚P3.1输出,作为芯片接口的移位时钟信号。

工作方式 0 并不用于串行通信,而是通过串并转换用于扩展单片机I/O口。方式0通常与移位寄存器芯片配合使用。

实例1 二级管循环显示

/*

*/

7.4串行工作方式1及其应用(10位数据异步通信方式 )

SM0 SM1 = 10 时为串行口工作方式1状态,与方式0相比方式1发生了如下变化

1.通信时钟波特率是可变的,由软件设定为不同速率,其值为:

​ fosc/(12*(2^n - a)) * 2^SMOD/32

因此,串行口工作方式一 初始化时要设置 TMOD(CATE、C/T、M1、M0)、PCON(SMOD),并确定计数器初值a。
在这里插入图片描述
2.发送数据由TXD(P3.1)接收数据RXD(P3.2).需经过接收移位寄存器换从输入,初始化时需设置SCON(RI,TI、REN、SM1,SM0).

数据帧由十位组成,1位起始位 1位终止位 八位数据位。主要用于点对点串行通信

7.5串行工作方式2及其应用(11位数据异步通信方式 )

SM0 SM1 = 10 时为串行口工作方式2;

1.与方式1相比,数据帧有11为组成,1位起始位、8位数据位、1位可编程位、1位停止位。在发送时 TB8 的值可以自动被添加到数据真的第 9 位并随数据帧一起发送。接收时 数据帧的第 9 位可自动被送入 RB8 中第九位数据可有用户安排,可以做为奇偶校验位也可做其他控制位。

2.通信时钟频率是固定的,可由 SMOD 设置为 1/32或1/64晶振频率。即 2^SMOD/64 * fosc 。初始化时仅需要设置PCON。

3.发送完成后(SBUF发 为空),TI自动置1 ;但接收完成后(SBUF收 为空),RI的状态要由 SM2 和 RB8 共同决定。若SM2 = 1,仅当 RB8 = 1 时接受逻辑单元才能使 RI置 1。 若此时RB8 = 0 则接收逻辑单元也无法使RI 置1.。 反之若 SM2 = 0 无论 RB8 为何值,接收逻辑单元都能使 RI 置 1.

7.6 串行工作方式3及其应用(11位数据异步通信方式)

SM0、SM1 = 11 时串行口工作在方式 3。与方式2相比 方式 3 的波特率是可变的。(其余都与方式 2 相同)

fosc/(12 * (2^n - a)) * 2^ SMOD /64

方式3 主要用于要求进行错误校验或者 主从式 系统通信的场合。 每个从机都有各自独立的地址00H、11H等,从机初始化都设置为串口方式 2 或 3,并使 SM2 = REN = 1(多机通信、允许接收),开放串口中断。主机向某从机发送命令时先发送目标从机的地址给所有从机,之后再发送数据或命令信息。主机发送的地址信息的第 9 位为 1 。数据或命令信息的第九位 为 0 .

从机接受到地址信息后。从机接收到的第九位都为 1 ,都能激活中断。在中断函数里比对 本机地址与发来的地址对比相符使本机 SM2 为0 . 不相等继续保持为1。

没有更多推荐了,返回首页