好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

通信原理第七章串行通信.ppt

90页
  • 卖家[上传人]:大米
  • 文档编号:568427488
  • 上传时间:2024-07-24
  • 文档格式:PPT
  • 文档大小:2.80MB
  • / 90 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 7.1 串行通信的基本概念串行通信的基本概念•计算机与外界的信息交换称为通信计算机与外界的信息交换称为通信最基本的通信方法有最基本的通信方法有串串行通信行通信和和并行通信并行通信两种两种 一次同时传送多位数据的通信方法叫做一次同时传送多位数据的通信方法叫做并行通信并行通信特点:传输速度快特点:传输速度快,但在距离远、位数多时,通信线路复杂且但在距离远、位数多时,通信线路复杂且成本高并行通信靠并行接口来实现并行通信靠并行接口来实现数据一位接一位地顺序传送数据一位接一位地顺序传送的通信方法叫做的通信方法叫做串行通信串行通信特点:通信线路简单特点:通信线路简单,只要一对传输线就可实现通信只要一对传输线就可实现通信(如如线线),成本低,成本低,特别适用于远距离通信特别适用于远距离通信缺点缺点是传送速度慢是传送速度慢串行通信可通过串行接口来实现串行通信可通过串行接口来实现一般电脑都有两个外置的一般电脑都有两个外置的COM口,它们是串行接口口,它们是串行接口 通信的两种基本方式(a) 并行通信;                                     (b) 串行通信 串行通信数据传输方式有三种:串行通信数据传输方式有三种:单工单工、、半双工半双工和和全双工全双工。

      ⑴⑴ 单工方式单工方式       信号信号(不包括联络信号不包括联络信号) 在信道中只能沿一个方向传送在信道中只能沿一个方向传送 ⑵⑵ 半双工方式半双工方式        通信的双方均具有发送和接收信息的能力通信的双方均具有发送和接收信息的能力,,信道也具有双信道也具有双向传输性能,向传输性能,但在同一时间,信息只能沿某一个方向传送但在同一时间,信息只能沿某一个方向传送半半双工方式大多双工方式大多采用双线制采用双线制 ⑶⑶ 全双工方式全双工方式    信号在信号在通信双方之间可沿两个方向同时传送,在同一时刻任通信双方之间可沿两个方向同时传送,在同一时刻任何一方既能发送又能接收信息何一方既能发送又能接收信息全双工串行通信需要两根线全双工串行通信需要两根线      51单片机有一个全双工串口,单片机有一个全双工串口,TXD是它的发送端,是它的发送端,RXD是它的接收端是它的接收端         在数据通信中,在数据通信中,要保证发送的信号在接收端能被正确地要保证发送的信号在接收端能被正确地接收,接收,必须解决收发之间的必须解决收发之间的同步问题同步问题        常用的常用的同步技术有两种:同步技术有两种:    同步传输同步传输也称同步字符同步方式也称同步字符同步方式    异步传输异步传输也称起止同步方式也称起止同步方式    它们对应就是它们对应就是同步通信同步通信和和异步通信异步通信方式。

      方式   1) 同步通信方式同步通信方式        将一大批数据分成几个数据块将一大批数据分成几个数据块, 数据块之间用同步字符予以数据块之间用同步字符予以隔开隔开, 而块内传输的而块内传输的各位二进制码之间没有间隔各位二进制码之间没有间隔       由于数据块传递开始要用同步字符来指示,同时要求由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,由时钟来实现发送端与接收端之间的同步,发送与接收发送与接收时钟始终要保持严格同步,时钟始终要保持严格同步,故硬件较复杂故硬件较复杂 基本特征基本特征:    发送与接收时钟始终保持严格同步发送与接收时钟始终保持严格同步         2))异步通信方式异步通信方式        以字符为单位进行数据传输,每个字符都用起始位、停以字符为单位进行数据传输,每个字符都用起始位、停止位包装起来止位包装起来(起始位和停止位作为字符的开始和结束标志)(起始位和停止位作为字符的开始和结束标志),这样的一个字符信息又称一帧信息这样的一个字符信息又称一帧信息在字符间允许有长短在字符间允许有长短不一的间隙不一的间隙基本特征基本特征:以字符(以字符(帧)帧)为单位一个个地发送和接收,为单位一个个地发送和接收,数据在数据路上的传送不连续线路上的传送不连续。

       在单片机中使用的串行通信都是异步方式在单片机中使用的串行通信都是异步方式       一个字符一个字符((帧)由帧)由起始位、数据位、奇偶校验位和停起始位、数据位、奇偶校验位和停止位止位4个部分组成个部分组成         起始位为起始位为0信号信号,占占1位位;紧接着是;紧接着是数据位数据位(可以是可以是5位、位、6位、位、7位或位或8位位),,传送时低位在先、高位在后传送时低位在先、高位在后;再后面为;再后面为1位位奇偶校验位奇偶校验位(可以不要可以不要), ;最后是;最后是停止位停止位,停止位为信号停止位为信号1,可可以是以是1位、位、1位半或位半或2位位        两帧信息间可以无间隔两帧信息间可以无间隔,也可有间隔也可有间隔,间隔用空闲位间隔用空闲位“1”来填充异步通信数据传送格式异步通信数据传送格式 异步传送中,通信双方必须事先约定:异步传送中,通信双方必须事先约定:       (1) 字符格式字符格式包括字符的编码形式、奇偶校验形式及字符的编码形式、奇偶校验形式及起始位和停止位的规定起始位和停止位的规定       (2) 波特率波特率(Baud rate)        波特率波特率是数据的传送速率是数据的传送速率,,即即每秒钟传送的二进制位每秒钟传送的二进制位数数,单位为:位,单位为:位/秒。

      秒字符传送速率字符传送速率单位为:字符单位为:字符/秒        波特率波特率=一个字符的二进制编码位数一个字符的二进制编码位数×字符字符/秒秒异步通信异步通信要求发送端与接收端的波特率必须一致要求发送端与接收端的波特率必须一致        由于异步通信每帧都要加上由于异步通信每帧都要加上起始位、停止位,起始位、停止位,所以通所以通信速度比同步慢信速度比同步慢         串行通信常用的标准波特率在串行通信常用的标准波特率在RS-232C标准中已有标准中已有规定,如波特率规定,如波特率600、、1200、、2400、、4800、、9600、、19200等       一般异步通信波特率为一般异步通信波特率为110~~9600,而同步通信波特,而同步通信波特率在率在56 Kb以上         在选择通信波特率时在选择通信波特率时, 以满足数据传输要求为原以满足数据传输要求为原则,波特率越高,对发送、接收时钟信号频率的一致则,波特率越高,对发送、接收时钟信号频率的一致性要求就越高性要求就越高 每一位数据传送的时间为波特率的倒数每一位数据传送的时间为波特率的倒数串行通信常用波特率衡量通信串行通信常用波特率衡量通信(数据传送数据传送)的快慢的快慢。

      例:采用串行异步通信方式传送字符例:采用串行异步通信方式传送字符‘5’ 的的ASCII码,码,规定为规定为7位数据位,位数据位,1位偶校验位,位偶校验位,1位停止位,无空闲位位停止位,无空闲位传送传送ASCII码字符码字符‘5’的波形图的波形图 起始位起始位校验位校验位001停止位停止位数据位数据位           单片机内部单片机内部配置的串行口主要靠硬件解决通信配置的串行口主要靠硬件解决通信问题,问题,51内部有一个内部有一个采用采用通用异步接收和发送器通用异步接收和发送器((UART )工作方式的)工作方式的全双工的异步串行通信接口全双工的异步串行通信接口,, 可同时发送和接收数据可同时发送和接收数据它有它有4种工作方式种工作方式,可供不可供不同场合使用同场合使用7.2  MCS-51单片机串行口的功能与结构单片机串行口的功能与结构        51单片机单片机串行口的串行口的波特率用软件设置,由片内波特率用软件设置,由片内的定时的定时/计数器产生计数器产生,其,其接收和发送既可采用查询接收和发送既可采用查询方式控制也可采用中断方式方式控制也可采用中断方式,  使用灵活使用灵活。

               51的串行口除用于的串行口除用于数据通信数据通信外外,还可方便地还可方便地构成构成1个或多个并行输入个或多个并行输入/输出口输出口或作或作串并转换串并转换,用来驱动键盘与显示器等用来驱动键盘与显示器等7.2.1   51单片机串行口能实现的功能单片机串行口能实现的功能         51串行口有串行口有4种工作方式,种工作方式,SM0SM1工作方式工作方式功功          能能波波  特特  率率00方式方式0移移位位寄寄存存器器方方式式,,用用于于并并行行I/O扩展扩展fosc /1201方式方式18位通用异步接收器位通用异步接收器/发送器发送器可变可变10方式方式29位通用异步接收器位通用异步接收器/发送器发送器fosc /32或或 fosc /6411方式方式39位通用异步接收器位通用异步接收器/发送器发送器可变可变      方式方式2、方式、方式3的一帧信息由的一帧信息由11位组成,其中位组成,其中9位数位数据位,两方式的不同在于波特率的选择不同据位,两方式的不同在于波特率的选择不同方式方式2、、方式方式3主要用于多机通信,也可用于双机通信主要用于多机通信,也可用于双机通信。

              其中其中,方式,方式0并不用于通信,而是通过外接移并不用于通信,而是通过外接移位寄存器芯片来实现位寄存器芯片来实现I/O口的扩展口的扩展利用这个功能,利用这个功能,可可实现扩展实现扩展2脚的串行脚的串行I/O到到8脚的并行脚的并行I/O口该方式又称作移位寄存器方式该方式又称作移位寄存器方式方式方式1、方式、方式2、方式、方式3都是异步通信方式都是异步通信方式       方式方式1的一帧信息由的一帧信息由10位组成,其中位组成,其中8位数据位位数据位方式方式1主要用于双机串行通信主要用于双机串行通信 MCS-51单片机单片机串行口的工作原理:串行口的工作原理:       发送时发送时,,将将CPU送来的并行数据转换为一定送来的并行数据转换为一定格式的串行数据,然后从引脚格式的串行数据,然后从引脚TXD按规定的波特按规定的波特率一位一位地发送出去率一位一位地发送出去       接收时接收时,监测,监测引脚引脚RXD,一旦出现起始位,一旦出现起始位“0”,则开始接收外设送来的一定格式的串行,则开始接收外设送来的一定格式的串行数据,并将其转换为并行数据,等待数据,并将其转换为并行数据,等待CPU读入。

      读入    串行口主要由串行口主要由发送数据缓冲器发送数据缓冲器、、发送控制器发送控制器、、输出控制门输出控制门、、接收数据缓冲器接收数据缓冲器、、接收控制器接收控制器、、输入移位寄存器输入移位寄存器等组成 7.2.2  51单片机串行口的结构单片机串行口的结构一、串行口结构一、串行口结构波特率发生器用定波特率发生器用定时时/计数器计数器T1或或T2构成SCONCPU写入数据写入数据CPU读出数据读出数据发送发送接收接收接收缓冲器之前的移位接收缓冲器之前的移位寄存器,构成了串行寄存器,构成了串行接接收的双缓冲结构,收的双缓冲结构,可以可以避免在数据接收过程中避免在数据接收过程中出现帧重叠错误,出现帧重叠错误, 二、与串行口有关的特殊功能寄存器二、与串行口有关的特殊功能寄存器         1. 数据缓冲器数据缓冲器SBUF(地址(地址99H))       串串行行口口缓缓冲冲器器SBUF在在物物理理上上对对应应着着两两个个独独立立的的寄寄存存器器::发发送送寄寄存存器器、、接接收收寄寄存存器器发发送送缓缓冲冲器器只只可可写写; 接接收收缓缓冲冲器器只可读,只可读,所以,两者虽共用一个地址,但不会有误操作。

      所以,两者虽共用一个地址,但不会有误操作        51 没有专门的启动发送的指令,没有专门的启动发送的指令,CPU将数据写入将数据写入 SBUF时就开始发送,读取时就开始发送,读取SBUF就可获取串口接收的过程就可获取串口接收的过程         接收缓冲器之前的移位寄存器构成了串行接收缓冲器之前的移位寄存器构成了串行接收的双缓冲接收的双缓冲结构结构,, 可避免在接收下一帧数据之前可避免在接收下一帧数据之前, CPU没能及时响应接没能及时响应接收器的中断把上一帧数据读走而产生两帧数据重叠的问题收器的中断把上一帧数据读走而产生两帧数据重叠的问题          2. 串行口控制寄存器串行口控制寄存器SCON        SCON用用于于设设定定串串行行通通信信的的方方式式、、控控制制接接收收和和指指示示串串行行口的中断状态口的中断状态其各位功能如下其各位功能如下:   SM0、、SM1:      用于定义串行口的工作方式用于定义串行口的工作方式SM2:   多机通信时的接收允许标志位多机通信时的接收允许标志位     在方式在方式2 和和 3 中中, 若若SM2 = 1,则则仅当接收到的第仅当接收到的第9位位((RB8)为)为1时,才将接收到的前时,才将接收到的前8位数据送入位数据送入SBUF中中,,并把并把RI置置1向向CPU申请中断;申请中断;若接收到的第若接收到的第9位数位数据位为据位为0,则把,则把RI置置0,并将接收到的数据丢弃。

      并将接收到的数据丢弃      在方式在方式1中中, 若若SM2=1,,只有接收到有效的停止位,只有接收到有效的停止位,接收中断接收中断RI才置才置1在方式在方式 0 中中, SM2 必须是必须是 0 而而当当SM2==0时,则时,则不论接收到的笫不论接收到的笫9 9位数据位是位数据位是0 0 或或1 1 ,都将接收到的前,都将接收到的前8 8位数据装入位数据装入SBUFSBUF中,并申请中,并申请中断      REN——允许串行接收位允许串行接收位      在通信协议中,常规定在通信协议中,常规定TB8作为奇偶校验位在多机通作为奇偶校验位在多机通信中,信中,TB8=0用来表示数据帧;用来表示数据帧;TB8=1表示是地址帧表示是地址帧用软件置位/清除用软件置位/清除REN==1时时,,允许串行接收允许串行接收;;REN==0时,禁止串行接收时,禁止串行接收用软件置位/清除用软件置位/清除TB8——方式方式2和方式和方式3中要发送的第中要发送的第9位数据位数据RB8——方式方式2和方式和方式3中接收到的第中接收到的第9位数据位数据在方式在方式1中,该位是接收到的停止位方式中,该位是接收到的停止位。

      方式0中不使用这一位中不使用这一位 TI——发送中断标志位发送中断标志位    方式方式 0中,中,TI在发送第在发送第 8位末尾置位;在其它方式时,在位末尾置位;在其它方式时,在发送停止位开始时设置发送停止位开始时设置注意:注意:       TI由硬件置位,用软件清除由硬件置位,用软件清除          3. 电源控制寄存器电源控制寄存器PCON(地址为(地址为 87H,))        特殊功能寄存器特殊功能寄存器PCON中中, 只有一位(最高位)只有一位(最高位)SMOD与串行口的工作有关与串行口的工作有关, 该位是串行口波特率系数的控制位该位是串行口波特率系数的控制位:SMOD=1 时时, 波特率加倍波特率加倍, 否则不加倍否则不加倍注意注意::PCON不可位寻址不可位寻址, 因此初始化时需要字节传送因此初始化时需要字节传送 RI——接收中断标志位接收中断标志位      方式方式 0中,在接收第中,在接收第 8位末尾置位,在其它方式下,在接位末尾置位,在其它方式下,在接收停止位中间设置收停止位中间设置                  注意:注意:RI由硬件置位由硬件置位,用软件清除用软件清除TI、、RI均可共查询均可共查询。

      系统复位后系统复位后,SCON中所有位被清中所有位被清0串口中断控制串口中断控制::中断允许位中断允许位ES中断入口中断入口::0023H 7.3.1   方式方式 0           方式方式0为为同步移位寄存器方式同步移位寄存器方式, 其其波特率固定波特率固定为为fosc/12就是一个机器周期可以通过就是一个机器周期可以通过RXD发送或读入一位数据发送或读入一位数据     方式方式0接收/发送的是接收/发送的是8位数据位数据,,无起始位和停止位无起始位和停止位传输时低位在前帧格式如下:输时低位在前帧格式如下:       …D0D1D2D3D4D5D6D7…·由由RXD((P3..0)输入或输出数据,)输入或输出数据,·由由TXD((P3..1)输出同步移位时钟,每个脉冲对应一个数)输出同步移位时钟,每个脉冲对应一个数据位         ·发送过程:数据写入发送过程:数据写入SBUF,启动发送启动发送,一帧发送结束一帧发送结束,使使TI=1         ·接收过程:当接收过程:当REN=1且且RI=0,启动接收启动接收,一帧接收完毕一帧接收完毕,使使RI=1           方式方式0工作时工作时,必须使必须使SM2位为位为“0”。

           方式方式0应用应用——扩展单片机的并行扩展单片机的并行I/O口口      方式方式0时,串口本身在时,串口本身在发送状态相当于发送状态相当于“并入串出并入串出”的的移位寄存器移位寄存器,,接收状态相当于接收状态相当于“串入并出串入并出” 的移位寄存器的移位寄存器注意注意:   CPU在响应接收中断后要用软件清除在响应接收中断后要用软件清除RI标志标志,否则无否则无法启动下一次接收法启动下一次接收        由于方式由于方式0不能自动插入和检出同步字符不能自动插入和检出同步字符,故故方式方式0不用不用于通信于通信,, 它的它的主要用途是主要用途是和外部同步移位寄存器配合为单和外部同步移位寄存器配合为单片机扩展并行片机扩展并行I/O口 将串行口作为并行输出口使用时,可采用如下图所示的方法将串行口作为并行输出口使用时,可采用如下图所示的方法        若串行口要作为并行口进行输入输出若串行口要作为并行口进行输入输出, 必须设置必须设置“串入并出串入并出“或或”并入串出并入串出”的移位寄存器来配合使用的移位寄存器来配合使用(如如CD4094、、74LS164或或CD4014、、 74LS165等等)。

      1 1、与、与“串入并出串入并出”芯片芯片74LS16474LS164配合,通过串行口配合,通过串行口扩展扩展MCS-51MCS-51的输出口的输出口连线图74LS164的串行数据输入端的串行数据输入端74LS164的移的移位脉冲位脉冲CLK•74LS16474LS164为为8 8位串并转换移位寄存器,能实现将位串并转换移位寄存器,能实现将串行输入数据并行输出的功能串行输入数据并行输出的功能并行数据并行数据输出引脚输出引脚 例例1 1:: 用用74LS164与串口配合扩展的并行输出口接与串口配合扩展的并行输出口接8只只LEDLED,利用它,利用它的串入并出功能,依次点亮的串入并出功能,依次点亮LEDLED,并不断循环之电路设计见下图并不断循环之电路设计见下图 用用P1.0接接74LS164的的CLR 端,端,这样这样可控制可控制74LS164的数据接收和清除的数据接收和清除 设置设置SCON因为因为,方式式方式式0时时, SM2、、RB8、、TB8均不用,故都设为均不用,故都设为0,初始,初始TI、、RI也应为也应为0,,做输出口所以禁止接收,做输出口所以禁止接收,REN=0故故   SCON  设为:设为:00H#includesbit MR=P1^0;void delay(){  unsigned int i;  for (i=0; i<20000; i++) ; }采用查询方式控制传送采用查询方式控制传送 void main(){   unsigned char j;   unsigned char LED;    ES=0 ;                     //禁止响应串行口中断禁止响应串行口中断    SCON = 0;              //初始化串口初始化串口, 方式方式0工作,做输出,禁止接收工作,做输出,禁止接收   while (1){      MR = 1;          // 74LS164的的CLR==1,允许输入数据,允许输入数据                       LED=0xfe;    // 控制控制LED点亮的初始控制码,点亮的初始控制码,                        for (j=0;j < 8; j++)                       {  SBUF=LED;        //控制码写入串口发送数据缓冲器控制码写入串口发送数据缓冲器                        do{     }                         while(!TI);   //通过查询通过查询TI判别数据是否输出结束判别数据是否输出结束                          LED= ((LED<<1) | 1); //修改控制码修改控制码             delay();            //轮显间隔轮显间隔                           TI=0;                           }                     }   } 2 2、与、与“并入串出并入串出”芯片芯片74LS16574LS165配合,通过串行口扩配合,通过串行口扩展展MCS-51MCS-51的输入口的输入口扩展并行输入口连接图扩展并行输入口连接图74LS165串行数据输出端串行数据输出端74LS165的移位脉冲的移位脉冲CLK74LS165并行输入锁并行输入锁存存/串行移位串行移位  控制端控制端74LS165还还可串入串可串入串出出74LS165并行数据输入端并行数据输入端 例例1 1:: 用用74LS164与串口配合扩展的并行输出口接与串口配合扩展的并行输出口接8只只LEDLED,利用它,利用它的串入并出功能,依次点亮的串入并出功能,依次点亮LEDLED,并不断循环之。

      电路设计见下图并不断循环之电路设计见下图 用用P1.0接接74LS164的的CLR 端,端,这样这样可控制可控制74LS164的数据接收和清除的数据接收和清除 设置设置SCON因为因为,方式式方式式0时时, SM2、、RB8、、TB8均不用,故都设为均不用,故都设为0,初始,初始TI、、RI也应为也应为0,,做输出口所以禁止接收,做输出口所以禁止接收,REN=0故故   SCON  设为:设为:00H#includesbit MR=P1^0;void delay(){  unsigned int i;  for (i=0; i<20000; i++) ; }采用查询方式控制传送采用查询方式控制传送 void main(){   unsigned char j;   unsigned char LED;    ES=0 ;                     //禁止响应串行口中断禁止响应串行口中断    SCON = 0;              //初始化串口初始化串口, 方式方式0工作,做输出,禁止接收工作,做输出,禁止接收   while (1){      MR = 1;          // 74LS164的的CLR==1,允许输入数据,允许输入数据                       LED=0xfe;    // 控制控制LED点亮的初始控制码,点亮的初始控制码,                        for (j=0;j < 8; j++)                       {  SBUF=LED;        //控制码写入串口发送数据缓冲器控制码写入串口发送数据缓冲器                        do{     }                         while(!TI);   //通过查询通过查询TI判别数据是否输出结束判别数据是否输出结束                          LED= ((LED<<1) | 1); //修改控制码修改控制码             delay();            //轮显间隔轮显间隔                           TI=0;                           }                     }   } 2 2、与、与“并入串出并入串出”芯片芯片74LS16574LS165配合,通过串行口扩配合,通过串行口扩展展MCS-51MCS-51的输入口的输入口扩展并行输入口连接图扩展并行输入口连接图74LS165串行数据输出端串行数据输出端74LS165的移位脉冲的移位脉冲CLK74LS165并行输入锁并行输入锁存存/串行移位串行移位  控制端控制端74LS165还还可串入串可串入串出出74LS165并行数据输入端并行数据输入端 7.3.3 7.3.3 方式方式2 2和方式和方式3 3——9 9位数据异步通信方式位数据异步通信方式1 1. .一帧为一帧为1111位:位: 9 9位数据,位数据,1 1位起始位位起始位(0)(0),,1 1位停止位位停止位(1)(1)。

      第第9 9位数据位在位数据位在TB8/RB8TB8/RB8中,常用作校验位和多机通信标识位中,常用作校验位和多机通信标识位2 2.RXD.RXD:接收数据端,:接收数据端,TXDTXD:发送数据端发送数据端3 3. .波特率:波特率: 方式方式2 2:波特率:波特率=(2=(2SMODSMOD/64)/64)××fosc fosc 可选可选方式方式3 3:波特率:波特率=(2=(2SMODSMOD/32)/32)××T1T1溢出率溢出率 可变可变  起 始D0D1D2D3D4D5D6D7D8 停 止 方式方式2 2与方式与方式3 3 的不同仅在于:的不同仅在于:方式方式2 2的波特率是两个固定的波特率是两个固定值,而方式值,而方式3 3的波特率是可变的的波特率是可变的4 4. .发送:发送:由软件先装入由软件先装入TB8TB8,再将待发送数据写入,再将待发送数据写入SBUFSBUF,即,即启动发送,发送结束,启动发送,发送结束,TI=1TI=1 接收接收:与方式:与方式1 1的接收类似的接收类似接收完一帧,若接收完一帧,若RI=0RI=0且第且第9 9位位为为1 (1 (或或SM2=0)SM2=0),才将接收数据装入接收,才将接收数据装入接收SBUFSBUF,第,第9 9位装入位装入RB8RB8,并使,并使RI=1RI=1;否则丢弃接收数据,不置位;否则丢弃接收数据,不置位RIRI。

      方式方式0 0为固定波特率为固定波特率:: 波特率波特率=fosc/12=fosc/12方式方式2 2可选两种波特率可选两种波特率:: 波特率波特率=(2=(2SMOD SMOD /64)/64)××fosc fosc 7.3.4   串行口的波特率发生器及波特率设置串行口的波特率发生器及波特率设置 方式方式1 1、、3 3为可变波特率为可变波特率, ,用用T1T1或或T2T2作波特率发生器作波特率发生器, ,波波特率由定时器特率由定时器T1(或(或T2))的溢出率和的溢出率和SMOD确定用用T1定时定时工作工作做波特率做波特率发生器发生器时时: :波特率波特率=(2=(2SMODSMOD/32)/32)××T1T1溢出率溢出率SMOD=0时时, 波特率为波特率为(1/64) fOSC; SMOD=1, 波特率为(波特率为(1/32))fOSC  T1的溢出率与它的工作方式有关:的溢出率与它的工作方式有关:T1方式方式0、方式、方式1时时::L       要要保证定时器产生频率固定的脉冲,需在定时中断后重新保证定时器产生频率固定的脉冲,需在定时中断后重新对定时器置初值,所以,要考虑这些工作附加的时间,上式中对定时器置初值,所以,要考虑这些工作附加的时间,上式中的的X是中断服务程序的机器周期数。

      是中断服务程序的机器周期数T1方式方式2工作时工作时::    方式方式2是是8位可重装的方式位可重装的方式,无需对定时器置数,没有中断引,无需对定时器置数,没有中断引起的误差,起的误差,此时,此时,应禁止定时器应禁止定时器T1T1中断中断溢出率溢出率= =fosc                            112            28- (TH1)X 表表     定时器定时器T1产生的常用波特率产生的常用波特率         一、一、 串行口的编程串行口的编程       串串行行口口需需初初始始化化后后, 才才能能按按要要求求完完成成数数据据的的输输入入、、输输出出其其初初始化过程如下始化过程如下:        (1) 按要求的串口的工作方式设定按要求的串口的工作方式设定SCON的的SM0、、SM1两位两位       (2) 对对于于方方式式 2 或或 3, 应应根根据据需需要要在在  TB8 中中写写入入待待发发送送的的第第 9 位数据       (3) 若选定的方式不是方式若选定的方式不是方式 0, 还需设定接收还需设定接收/发送的波特率。

      发送的波特率       设定设定SMOD的状态的状态, 以控制波特率是否加倍以控制波特率是否加倍       若选定方式若选定方式1或或3, 则应对则应对T1进行初始化以设定其溢出率进行初始化以设定其溢出率 7.4 MCS-51单片机串行口应用单片机串行口应用 7.4.1     利用方式利用方式0实现串行扩展实现串行扩展        利用串口的工作方式利用串口的工作方式0加上串入并出移位寄存加上串入并出移位寄存器器74LS164 、并入串出移位寄存器、并入串出移位寄存器74LS165等外围等外围芯片,可以实现芯片,可以实现I/O口的串行扩充口的串行扩充         利用外围芯片的特性及串行口方式利用外围芯片的特性及串行口方式0本身的特本身的特点,用点,用74LS164可以方便的将两位的串口扩展成多可以方便的将两位的串口扩展成多个个8位的并行输出口位的并行输出口         而用而用74LS165可以方便的接收多个可以方便的接收多个8路的并行路的并行信号,然后转化为串行信号,送入单片机处理信号,然后转化为串行信号,送入单片机处理 7.4.2 方式方式1应用举例应用举例       将单片机的将单片机的TXDTXD接接RXDRXD,实现串口数据自发自收,接收的数据,实现串口数据自发自收,接收的数据通过通过P1P1口输出到发光二极管口输出到发光二极管, ,控制控制8 8个发光二极管奇、偶位交替个发光二极管奇、偶位交替点亮。

      若点亮若fosc为为11.0592MHz,11.0592MHz,要求:自发自收的波特率为要求:自发自收的波特率为24002400波波特特, ,串行口工作在方式串行口工作在方式1 1              电路设计电路设计 要求串口方式要求串口方式1:编程分析:编程分析:   1)先初始化串行通信控制寄存器)先初始化串行通信控制寄存器SCON和和T1按照题目要求:设定串口工作在方式按照题目要求:设定串口工作在方式1,, 允许接收允许接收     由于方式由于方式1的波特率要通过的波特率要通过T1来设定实现,因此,将来设定实现,因此,将T1设置设置为方式为方式2、定时,、定时,根据需要的波特率要求,计算根据需要的波特率要求,计算T1的定时初值的定时初值50HSCON20H= 2400写入写入T1的计数初值为的计数初值为 ::           F4H ((244))将将SMOD设为设为 0 ,不倍增即可满足波特率要求不倍增即可满足波特率要求  #include#define  uchar  unsigned char#define  uint     unsigned int   main()    {               ES=0 ;  ET1=0 ;            //禁止响应串口中断、定时器禁止响应串口中断、定时器T1中断中断        uchar  i=0x55;              //  奇数位亮控制码送奇数位亮控制码送        uint  j=0;                      //延时循环控制变量延时循环控制变量        TMOD=0x20;               //设置定时器设置定时器1工作在模式工作在模式2        TL1=0xF4;    TH1=0xF4; //根据波特率要求设置定时器根据波特率要求设置定时器1初值初值        PCON=0x00;                //波特率不倍增波特率不倍增        SCON=0x50;              //串口工作方式串口工作方式1,允许接收,允许接收        TR1=1;                   //启动定时器启动定时器1按查询方式编程 RI=0;            //清除接收中断标志位清除接收中断标志位RI        TI=0;            //清除发送中断标志位清除发送中断标志位TI         i=SBUF;         //读取接收数据读取接收数据        P1=i;            //送入送入P1口显示口显示        i=~i;            //将发送数取反将发送数取反        for(j=0;j<12500;j++);   //点亮间隔时间点亮间隔时间          }   }         while(1)           {            SBUF=i;         //发送数据发送数据            do{  }            while(! RI);   //等待发送数据被接收完毕产生接收中断标志等待发送数据被接收完毕产生接收中断标志 利用串口方式利用串口方式2 2工作,发送一个字符串,采用偶校验工作,发送一个字符串,采用偶校验#include#includesbit p=PSW^0;char s[ ]="MSC-51 Serial Communication Bus";void main (viod){       char a, i=0;        ES=0 ;       SCON=0x90;//串行口方式串行口方式2,允许接收,允许接收       PCON=0x80;                           //波特率倍频波特率倍频       a=strlen(s);                              //求出字符串长度求出字符串长度       for(   ;i

      设晶振为片内数据存储器设晶振为11.059MHz11.059MHz,波特率为,波特率为2400b/s2400b/s编程分析编程分析Ø方式方式3 3为为9 9位数据的异步通信方式,波特率取决于位数据的异步通信方式,波特率取决于T1T1的溢出率,设的溢出率,设T1T1工作在可自动重装载的方式工作在可自动重装载的方式2 2晶振为为11.059MHz11.059MHz,波特率要求,波特率要求2400b/s2400b/s时,波特率倍增,时,波特率倍增,故故 SMOD=1SMOD=1,由此计算出,由此计算出 TL0=TH0=F4TL0=TH0=F4禁止T1T1中断中断7.4.4  方式方式3应用举例应用举例Ø接收数据时,发送的接收数据时,发送的8 8位数据从接收位数据从接收SBUFSBUF获得,获得,而发送的校验位从而发送的校验位从RB8RB8读取 SCON   :    D0HTMOD:    20H #include#includesbit p=PSW^0;char s[15];void      main     (viod)   {        char t,i;             SCON=0xD0;             TMOD=0x20;             TL1=0xF4;                 TH1=0xF4;             PCON=0x80;             ES=0 ;             ET1=0 ;             TR1=1; for(i=0;i<16;i++)       {           while(RI==0)  ;//等待接收完一个字符帧等待接收完一个字符帧RI=0;            //清除清除RI,以便能接收下一帧,以便能接收下一帧 t=SBUF;      //读接收到的数据读接收到的数据ACC=t;        //数据送数据送A,以便获得,以便获得P标志位信息标志位信息  if(p!=RB8) //与接收到的第与接收到的第9位(校验位)比较,不等则退出位(校验位)比较,不等则退出     break;    else     s[i]=ACC; //接收数据正确,存入内存接收数据正确,存入内存     }} 7.5 串行通信总线标准和多机通信技术串行通信总线标准和多机通信技术         利用串口与其它计算机或设备进行串行通信利用串口与其它计算机或设备进行串行通信,除了要对波特率、工作方式等进行设定外,除了要对波特率、工作方式等进行设定外,串行串行通信双方还必须采用相同的接口标准,通信双方还必须采用相同的接口标准,才能进行才能进行正常的通信。

      正常的通信一、串行通信总线标准一、串行通信总线标准      常用的串行通信总线标准有三类:常用的串行通信总线标准有三类:         由于不同设备的串行接口的信号线定义、电气规格等由于不同设备的串行接口的信号线定义、电气规格等特性都不相同,因此,要使这些设备能相互连接,需要统特性都不相同,因此,要使这些设备能相互连接,需要统一的串行通信接口一的串行通信接口第一类是第一类是RS-232C((RS-232A、、RS-232B)其适合于短距)其适合于短距离的通信离的通信 第二类是第二类是RS-449,,RS-422,,RS-423和和RS-485,其通信距离比,其通信距离比RS-232C大,数据传输速率也快得多,但是设备成本较高大,数据传输速率也快得多,但是设备成本较高第三类是第三类是20mA电流环,这是一类非标准的串行接口电路,它电流环,这是一类非标准的串行接口电路,它结构简单,对电气噪声不敏感,抗干扰能力强结构简单,对电气噪声不敏感,抗干扰能力强 RS-232C简介简介 RS232RS232除了规定接口的物理尺寸、引脚排列外除了规定接口的物理尺寸、引脚排列外, ,还还采用负逻辑采用负逻辑, ,提高高、低逻辑电平的范围提高高、低逻辑电平的范围, ,适合于短适合于短距离的通信。

      其最大通信距离距离的通信其最大通信距离1515米,最大的传输速米,最大的传输速率率19.2KB/19.2KB/秒 RS232主要标准如下主要标准如下:  输出端输出端          逻辑逻辑”0”电平电平: +5V~+15V逻辑逻辑”1”电平电平: -5V~-15V输入端输入端逻辑逻辑”0”电平电平: >+3V逻辑逻辑”1”电平电平: <-3V计算机中常用的计算机中常用的9针针RS232C接口引脚排列规定如右表接口引脚排列规定如右表引脚号引脚号符号符号I/O方方向向 功能描述功能描述1DCD I数据载波检测数据载波检测2RXD I接收数据接收数据3TXD 0发送数据发送数据4DTR 0数据终端就绪数据终端就绪5GND_信号地信号地6DSR I数据设备就绪数据设备就绪7RTS 0请求发送请求发送8CTS I允许发送允许发送9RI I振铃指示振铃指示   25芯芯D型插座型插座RS-232C接口信号名称及主要信号流向;接口信号名称及主要信号流向; 二、二、 串行通信的硬件连接串行通信的硬件连接       最简单的双机通信实现:将一方的发送最简单的双机通信实现:将一方的发送TXD引脚引脚接另一方的接收接另一方的接收RXD引脚,同时,还需要将两个单片引脚,同时,还需要将两个单片机系统的地线相连,保证两个系统共地(最简单的机系统的地线相连,保证两个系统共地(最简单的“三线制三线制”的连接)。

      的连接)上图连接方法只适用于两机距离很近、干扰小的上图连接方法只适用于两机距离很近、干扰小的情况GNDTXDRXDGNDRXDTXDGND 通信距离较远时,可以利用通信距离较远时,可以利用RS-232CRS-232C接口芯片延长通信距离接口芯片延长通信距离 由于单片机引脚的逻辑是接近于由于单片机引脚的逻辑是接近于TTLTTL的电平的电平, ,若要转若要转换为换为RS232RS232的电平的电平, ,需要专用的电路需要专用的电路, ,目前,串口电平转目前,串口电平转换最常用的芯片有换最常用的芯片有Maxim公司的公司的 MAX232MAX232MAX232MAX232是一款可实现是一款可实现EIA-EIA-232232接口的低功耗电平转换接口的低功耗电平转换芯片,是低功耗、单电源双芯片,是低功耗、单电源双路路RS-232RS-232发送发送/ /接收器,接收器,可可完成完成TTLTTL和和RS-232RS-232串行双向串行双向电平的转换电平的转换2、、通过通过RS232接口连接接口连接 MAX232集成了两组电平集成了两组电平转换器,可完成转换器,可完成TTL和和RS-232串行双向电平的转串行双向电平的转换换。

            其内的电压转换器可把输入的其内的电压转换器可把输入的+5V电压转换为电压转换为RS232端端口所需的口所需的±10V电压电压尤其适合没有尤其适合没有±12V的单电源系统,所的单电源系统,所以,在单片机应用系统中使用广泛以,在单片机应用系统中使用广泛入入电平输出电平输出TTLTTL 通过通过MAX232MAX232的的TTLTTL和和RS-232RS-232输入输入/ /输出口,可自输出口,可自动调节动调节TTLTTL和和RS232RS232串行通信信号的电平匹配,数据传串行通信信号的电平匹配,数据传输速率可达到输速率可达到250kbps250kbps其引脚功能如:其引脚功能如:     MAX232引脚引脚 ((1)计算机与单片机串行口的连接)计算机与单片机串行口的连接 例:单片机从例:单片机从P0P0口输出从计算机串口发送口输出从计算机串口发送来的数据,点亮对应的发光二极管电路来的数据,点亮对应的发光二极管电路设计如下:设计如下: ((2 2)单片机之间远距离串行通信的接口电路设计)单片机之间远距离串行通信的接口电路设计 经过经过MAX232MAX232实现单片机之间远距离通信时,其中一实现单片机之间远距离通信时,其中一端的接口电路图如下所示,另一端接口电路与此相同。

      端的接口电路图如下所示,另一端接口电路与此相同图图 MAX232MAX232接口电路接口电路R1OUT和和T1IN分别与分别与单片机的单片机的RXD(P3.0和和TXD(P3.1) 相连相连T1OUT和和R1IN通过通过DB9专用串行通信接插件和另外专用串行通信接插件和另外一个单片机相连正常情况下,一个单片机相连正常情况下,DB9使用使用2、、3脚进行脚进行串行通信串行通信注意:通信双方连接时是一方的注意:通信双方连接时是一方的T1OUT与另一方的与另一方的R1IN相连,相连,即双方即双方DB9插插件的件的2、、3脚脚交叉连接交叉连接 例:设计实现两个单片机点对点的数据通信例:设计实现两个单片机点对点的数据通信 甲机发送,乙机接收,数据传输的波特率为甲机发送,乙机接收,数据传输的波特率为24002400波特,,两个单片机的振荡频率均为波特,,两个单片机的振荡频率均为11.0592MHz11.0592MHz,甲,甲乙双方均工作在方式乙双方均工作在方式3 3的通信方式下的通信方式下 通信开始时,甲机发送呼叫字符通信开始时,甲机发送呼叫字符55h55h,乙机在接,乙机在接收到后向甲机发送收到后向甲机发送“AAHAAH”,表示同意接收。

      表示同意接收 甲机收到甲机收到“AAHAAH”后,开始将数据区后,开始将数据区BUFBUF中控制中控制数码管显示数码管显示0-90-9数字的数据进行发送,每发送一个数字的数据进行发送,每发送一个数据,即求校验和,数据发送完,将校验和也发送数据,即求校验和,数据发送完,将校验和也发送到接收机到接收机 乙机收到数据则将其存入地址为乙机收到数据则将其存入地址为REVREV的缓冲区,的缓冲区,每收到一个数据便计算一次校验和每收到一个数据便计算一次校验和 当数据接收完后,将校验和与甲机送来的校验当数据接收完后,将校验和与甲机送来的校验和比较,若二者相等,则接收正确,乙机回复和比较,若二者相等,则接收正确,乙机回复DDDD,,并在本机的并在本机的P2P2口输出显示字符否则发送口输出显示字符否则发送EEEE,请求,请求重发甲机收到甲机收到“DDDD”回答后,发送结束,在本机的回答后,发送结束,在本机的P1P1口将口将0-90-9十个数字轮回显示,若收到其他数据,则十个数字轮回显示,若收到其他数据,则将数据再重新发送一次将数据再重新发送一次 两个单片机点对点的数据通信原理图两个单片机点对点的数据通信原理图 若两个单片机距离较远,则采用前面介绍的利用若两个单片机距离较远,则采用前面介绍的利用MAX232MAX232来实现两机的通信。

      来实现两机的通信 /*甲机发送程序甲机发送程序*/#include#define uchar unsigned charuchar idata buf[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char pf; //定义存校验和变量定义存校验和变量 unsigned char i;void delay(void) //延时函数延时函数 { unsigned char k,j; for(k=200;k>0;k--) for(j=500;j>0;j--); } void init(void)      //串行口、串行口、T1初始化函数初始化函数{  ES=0;; ET1=0;;   P1=0x00;                                        //关数码管关数码管 TMOD=0x20;//设设T1工作于模式工作于模式2   TH1=0xf4;                                 // 置置T1初值初值   TL1=0xf4;   PCON=0x00;                         //波特率不倍增波特率不倍增   TR1=1;                    //启动定时器启动定时器   SCON=0xd0;    //串行口工作在方式串行口工作在方式3 ,允许接收,允许接收} void main(void){ init(); //初始化初始化 do { SBUF=0x55; //发送联络信号发送联络信号 while(TI==0) ; //等待联络信号帧发送完毕等待联络信号帧发送完毕 TI=0; // 清除发送中断标志清除发送中断标志 while(RI==0);//等待接收乙机回答信息等待接收乙机回答信息 RI=0; } // 清接收中断标志清接收中断标志 while((SBUF^0xaa)!=0); //接收到的不是接收到的不是AAH,乙机未,乙机未准准 //备好,继续联络备好,继续联络 do //接收到的是接收到的是AAH ,开始发送,开始发送数据数据 { pf=0;//清校验和变量清校验和变量 for(i=0;i<10;i++) { SBUF=buf[i];//发送一个数据发送一个数据 pf+=buf[i];//求校验和求校验和 while(TI==0) ; // 等待发送完毕等待发送完毕 TI=0; // 清发送中断标志清发送中断标志 }             SBUF=pf;               //发送校验和发送校验和            while(TI==0)  ;                        //等待发送完毕等待发送完毕             TI=0;                                     //清发送中断标志清发送中断标志              while(RI==0);                    //等待接收乙机应答等待接收乙机应答              RI=0;                                 //清接收中断标志清接收中断标志              }      while(SBUF!=0xdd);   //收到回答不是收到回答不是DDH,出错,则重发,出错,则重发            for(i=0;i<10;i++)   //将发送的字符在本机轮显一遍将发送的字符在本机轮显一遍                   {                           P1=buf[i];                        delay();}                   }                   } /*乙机接收程序乙机接收程序*/#include#define uchar unsigned charunsigned char pf; //定义存校验和变量定义存校验和变量 unsigned char idata *d; //定义访问片内间接寻址定义访问片内间接寻址RAM区的指针区的指针dunsigned char idata a[10];unsigned char i;void delay(void) { unsigned char k, j; for(k=200; k>0; k--) for(j=500;j>0;j--); } void init(void) //串行口初始化函数串行口初始化函数         {                           ES=0;;                          ET1=0;;                          P2=0x00;                  //关数码管关数码管                        TMOD=0x20;//设设T1工作于模式工作于模式2                           TH1=0xf4;           // 置置T1初值初值                           TL1=0xf4;                           PCON=0x00;      //波特率不倍增波特率不倍增                            TR1=1;                        //启动定时器启动定时器                          SCON=0xd0;;   //串行口工作在方式串行口工作在方式3          } void main(void) { init( ); while(1){ do { while(RI==0); //等待接收主机发送来的信息等待接收主机发送来的信息 RI=0; //清接收中断标志清接收中断标志 } while((SBUF^0x55)!=0);;//不是呼叫信号不是呼叫信号55H,则继续等待接,则继续等待接收收 SBUF=0xaa;//收到收到55H则发应答信号则发应答信号 while(TI==0) ; //等待发送完毕等待发送完毕 TI=0; //清发送中断标志清发送中断标志 while(1){ d=a; pf=0;//指针指向接收区,清校验和指针指向接收区,清校验和 for(i=0;i<10;i++) //控制接收控制接收10个数个数 { while(RI==0) ; //等待等待1帧数据接收完帧数据接收完 RI=0; //清接收中断标志清接收中断标志 *d=SBUF; //接收到的一个数据送存接收到的一个数据送存 pf+=*d++;//求校验和求校验和 }            while(RI==0);      //等待接收完甲机校验和等待接收完甲机校验和           RI=0;  //清接收中断标志清接收中断标志            if((SBUF^pf)==0)     //比较校验和,若两校验和相等比较校验和,若两校验和相等                     {                    SBUF=0xdd;    // 则向甲机发接收正确应答信号则向甲机发接收正确应答信号DDH                    d=a;                     for(i=0;i<10;i++)    //并将接收到的数据逐个送显一遍并将接收到的数据逐个送显一遍     {  P2=*d++;       delay();                    }                        break;                //结束本次接收结束本次接收                       }               else {                       //否则向甲机发接收出错应答信号否则向甲机发接收出错应答信号EEH                      SBUF=0xee;//出错发出错发“ee”,重新接收重新接收                     while(TI==0); //等待出错信号发送完等待出错信号发送完                      TI=0;            //清发送中断标志清发送中断标志                      }            }      }} 三、三、  单片机多机通信技术单片机多机通信技术       某些应用系统中,需要对多个对象进行控制,例如某些应用系统中,需要对多个对象进行控制,例如, ,分布式集散控制系统分布式集散控制系统. .这时可采用多处理机通信方式这时可采用多处理机通信方式, ,由一个由一个单片机做主机单片机做主机, , 控制整个系统的运行控制整个系统的运行, ,多个单片机做从机多个单片机做从机, ,采采集信号、实行现场控制。

      集信号、实行现场控制1、、   为了保证通信的可靠性,多机通信采用为了保证通信的可靠性,多机通信采用寻址技术寻址技术 即即主机要与某机通信时主机要与某机通信时, , 先发送一个地址信息给各个从先发送一个地址信息给各个从机,各从机接收到地址信息后,便与自己的地址相比较,若机,各从机接收到地址信息后,便与自己的地址相比较,若相同,则开始与主机的通信;若不同,则不理会主机发送的相同,则开始与主机的通信;若不同,则不理会主机发送的数据信息(注意:是数据信息),也不向总线发送信息数据信息(注意:是数据信息),也不向总线发送信息多机通信实现方法:多机通信实现方法: 多机通信电路连接多机通信电路连接2、多机通信必须使用方式、多机通信必须使用方式2或方式或方式3        在串行口控制寄存器在串行口控制寄存器SCON中,设有多处理机中,设有多处理机通信位通信位SM2((SCON..5),还有发送数据第),还有发送数据第9位位TB8,,主机利用主机利用TB8来标识所发出的数据是地址帧来标识所发出的数据是地址帧还是数据帧,从机利用还是数据帧,从机利用SM2来控制是否允许接收数来控制是否允许接收数据帧,从而实现多机通信。

      据帧,从而实现多机通信 多机通信的具体实现多机通信的具体实现  1、、   所有所有从机初始设自己的从机初始设自己的 SM2= 1,,此时,从机仅接收此时,从机仅接收TB8=1的信息帧(即地址帧)的信息帧(即地址帧)2、主机、主机用用TB8位向从机明示所发信息帧类型位向从机明示所发信息帧类型与某机通信前,与某机通信前,主机先发主机先发地址信息,其第地址信息,其第9位位TB8必须是必须是1建立了与所叫从机建立了与所叫从机间的通信后,主机才发送数据信息,所发送的间的通信后,主机才发送数据信息,所发送的数据或控制信息数据或控制信息的第的第9位位TB8必须是必须是03、各从机收到地址信息后,将地址信息与本机地址比较,若、各从机收到地址信息后,将地址信息与本机地址比较,若相同,则使自己的相同,则使自己的SM2=0,,并清并清RI,等待接收主机后续发送,等待接收主机后续发送的信;,的信;,否则否则,,SM2不变,但清不变,但清RI 5、主机若想与其他用从机通信,则再次发送地址帧、主机若想与其他用从机通信,则再次发送地址帧4、建立与主机的通信后,从、建立与主机的通信后,从机机仍须判别接收的信息类型,仍须判别接收的信息类型,若再次收到地址帧且不是本机地址,则立即使若再次收到地址帧且不是本机地址,则立即使SM2=1  #include     #define COUNT 10            //* 定义发送缓冲区大小定义发送缓冲区大小 */    #define NODE_ADDR 64           //* 定义目的节点地址定义目的节点地址 */    unsigned char buffer[COUNT];  //* 定义发送缓冲区定义发送缓冲区 */    int pointer;                            //* 定义当前位置指针定义当前位置指针 */    main() {         pointer=0;;           while(pointer=COUNT) return;           else {        TB8=0;                             /* 设置数据帧标志设置数据帧标志 */        SBUF=buffer[pointer];              /* 启动发送启动发送 */                   }     }注意:这是简化的主要用来说明多机通信基本方注意:这是简化的主要用来说明多机通信基本方法的程序,实际通信中还应考虑通信协议法的程序,实际通信中还应考虑通信协议  #include     #define COUNT 10             / /* 定义接收缓冲区大小定义接收缓冲区大小 */    #define NODE_ADDR     64   / /* 定义本节点地址定义本节点地址 */unsigned char buffer[COUNT]; / /* 定义接收缓冲区定义接收缓冲区    int pointer;                      / /*指示位置变量指示位置变量 */    main() {                   //* 初始化串口和初始化串口和T1, 允许接收地址帧允许接收地址帧 */       SCON=0xf0;               //* 方式方式3, REN=1, SM2=1 */       TMOD=0x20;       TH1=0xfd;       TR1=1;                   //* 启动波特率发生器启动波特率发生器T1       ET1=0;                  //* 初始化中断初始化中断       ES=1;       EA=1;                                       pointer=0;             //* 等待接收地址帧和全部数据帧等待接收地址帧和全部数据帧 */       while(pointer=COUNT) SM2=1;}     1、汉字广告牌、汉字广告牌四、串行口综合应用举例四、串行口综合应用举例AT89C205124C01((1KB))ULN2804达林顿反向驱动器达林顿反向驱动器ULN2804达林顿反向驱动器达林顿反向驱动器4个串入并出个串入并出74LS164P1.7控制列驱控制列驱动动PNP管供电管供电RXDTXD输出一行汉字输出一行汉字点阵点阵(16位位)列输出选通码列输出选通码 显示方法:显示方法:1.先将显示点阵信息按行排列放先将显示点阵信息按行排列放在显示缓冲区,每个汉字用在显示缓冲区,每个汉字用32个字节存放。

      个字节存放2.用动态扫描方式逐行显示,每用动态扫描方式逐行显示,每行显示行显示1MS,每帧每帧16行,用时行,用时16MS,每秒重复显示每秒重复显示1000/16=62.5次,确保无闪烁次,确保无闪烁3.行驱动用行驱动用ULN2804(( 8重达林重达林顿反向驱动器顿反向驱动器),列驱动用,列驱动用PNP三极管,为保证显示清晰,三极管,为保证显示清晰,显示电路加显示电路加“消隐消隐”控制,控制,在在数据送串行口期间,通过数据送串行口期间,通过P1.7口关断三极管的电源来关闭显口关断三极管的电源来关闭显示4.程序上可以利用修改显示数据程序上可以利用修改显示数据区首地址办法,使显示内容的移区首地址办法,使显示内容的移动,实现多汉字的循环显示显动,实现多汉字的循环显示显示移动的速度取决于首地址的修示移动的速度取决于首地址的修改速度移动汉字显示牌        AT89C2051是是ATMEL公司生产的一个低电压、高性能公司生产的一个低电压、高性能CMOS 8位单片机,位单片机,片内含片内含2k Flash程序存储器和程序存储器和128 B的的RAM,器件采用高密度、非易失性存储技术生产,,器件采用高密度、非易失性存储技术生产,兼容标准兼容标准MCS-51指令系统。

      指令系统 利用利用AT89C2051做单片机系统的最大优做单片机系统的最大优势是势是体积小、结构简单、价格低体积小、结构简单、价格低        AT89C2051功能强大,但它只有功能强大,但它只有20个引脚个引脚,,15个双向输入个双向输入/输出(输出(I/O)端口,其中)端口,其中P1是一个完整的是一个完整的8位双向位双向I/O口,两个外口,两个外中断口,两个中断口,两个16位可编程定时计数器位可编程定时计数器,两个全双工串行通信口,两个全双工串行通信口,一个模拟比较放大器一个模拟比较放大器        P1.0和和P1.1在内部结构上无上拉电阻在内部结构上无上拉电阻,所以所以,做做I/O用时要接用时要接上拉电阻上拉电阻,参考值在参考值在1K~10K        AT89C2051接口的驱动能力大于接口的驱动能力大于AT89C51,灌电流达灌电流达20mA,  可以直接驱动可以直接驱动LED数码管数码管.        AT89C2051的片内的片内RAM只有只有128个字节单元个字节单元,地址范围为地址范围为:00~7FH,  ROM为为Flash存储器存储器,容量为容量为2KB, 地址范围为地址范围为000~7FFH,AT89C51,灌电流达灌电流达20mA,  可以直接驱动可以直接驱动LED数码数码管管.      AT89C2051没有标准型没有标准型51单片机的单片机的P2、、P0口,因而没口,因而没有并行扩展的功能(故有并行扩展的功能(故MOVX指令已经失效)只能用串指令已经失效)只能用串行扩展方法扩展并行行扩展方法扩展并行I/O口口!!。

              AT89C2051的时钟频率可为零,即的时钟频率可为零,即具备用软件设置的睡具备用软件设置的睡眠省电功能,眠省电功能,系统的唤醒方式有系统的唤醒方式有RAM、定时、定时/计数器、串行计数器、串行口和外中断口,系统唤醒后即进入继续工作状态口和外中断口,系统唤醒后即进入继续工作状态      省电模式中,片内省电模式中,片内RAM将被冻结,时钟停止振荡,所有将被冻结,时钟停止振荡,所有功能部分停止工作,直至系统被硬件复位方可继续运行功能部分停止工作,直至系统被硬件复位方可继续运行     AT89C2051具有程序保密功能具有程序保密功能       有有2个程序保密位,保密位个程序保密位,保密位1被编程后,程序存储器不能再被编程后,程序存储器不能再被编程被编程,除非做除非做1次擦除,保密位次擦除,保密位2被编程后,程序被编程后,程序不能被读出能被读出 主要功能特性:主要功能特性: · 2k可反复擦写可反复擦写(>1000次)次)Flash ROM  · 15个双向个双向I/O口口· 6个中断源个中断源  · 两个两个16位可编程定时位可编程定时/计数器计数器· 2.7-6.V的宽工作电压范围的宽工作电压范围  · 时钟频率时钟频率0-24MHz· 128x 8bit内部内部RAM  · 两个外部中断源两个外部中断源· 两个串行中断两个串行中断  · 可直接驱动可直接驱动LED· 两级加密位两级加密位  · 低功耗睡眠功能低功耗睡眠功能· 内置一个模拟比较放大器内置一个模拟比较放大器  · 可编程可编程UARL通道通道· 软件设置睡眠和唤醒功能软件设置睡眠和唤醒功能 AT89C2051单片机的单片机的I/O口特点:口特点:       P1口:口:P1口是一个完整的口是一个完整的8位双向位双向I/O端口,端口,其中其中P1.2~~P1.7引脚带有内部上拉电阻,引脚带有内部上拉电阻,P1.0和和P1.1要求外部上拉电阻要求外部上拉电阻。

      P1.0和和P1.1还分别作为片内精密模拟比较器的同相输入还分别作为片内精密模拟比较器的同相输入(AIN0)和反相输入和反相输入(AIN1)       P1_0、、P1_1如果外部加上拉则与其它口线完全一样如果外部加上拉则与其它口线完全一样不用外部上拉则可以作模拟比较器输入用不用外部上拉则可以作模拟比较器输入用      P1口输出缓冲器可吸收口输出缓冲器可吸收20mA电流,并能直接驱动电流,并能直接驱动LED显显示        对端口写对端口写1时,通过内部的上拉电阻把端口拉到高电位,时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口这时可作输入口        P1口口作输入口使用时,因为内部有上拉电阻,那些被外作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(部信号拉低的引脚会输出一个电流(Iil)          P3口:口:P3.0~~P3.5、、P3.7是带有内部上拉电阻的是带有内部上拉电阻的7个双个双向向I/O端口P3.6用于固定输入片内比较器的输出信号,并用于固定输入片内比较器的输出信号,并且它作为一通用且它作为一通用I/O口引脚而只读。

      口引脚而只读P3口输出缓冲器可吸收口输出缓冲器可吸收20mA电流对端口写电流对端口写1时,通过内部的上拉电阻把端口拉到时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口高电位,这时可作输入口          P3口作输入口使用时,因为内部有上拉电阻,那些被口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(外部信号拉低的引脚会输出一个电流(Iil)P3_6是内部联接到模拟比较器输出的,如果没有用模拟是内部联接到模拟比较器输出的,如果没有用模拟比较器则没有用,也不能改作它用比较器则没有用,也不能改作它用        AT89C2051是是ATMEL公司生产的一个低电压、高性能公司生产的一个低电压、高性能CMOS 8位单片机,位单片机,片内含片内含2k Flash程序存储器和程序存储器和128 B的的RAM,器件采用,器件采用ATMEL公司的高密度、非易失性存储技术公司的高密度、非易失性存储技术生产,生产,兼容标准兼容标准MCS-51指令系统指令系统         AT89C2051是一个功能强大的单片机,但它只有是一个功能强大的单片机,但它只有20个个引脚引脚,,15个双向输入个双向输入/输出(输出(I/O)端口,其中)端口,其中P1是一个完整是一个完整的的8位双向位双向I/O口,两个外中断口,两个口,两个外中断口,两个16位可编程定时计数位可编程定时计数器器,两个全双向串行通信口,一个模拟比较放大器。

      两个全双向串行通信口,一个模拟比较放大器        AT89C2051的时钟频率可为零,即的时钟频率可为零,即具备用软件设置的睡具备用软件设置的睡眠省电功能,眠省电功能,系统的唤醒方式有系统的唤醒方式有RAM、定时、定时/计数器、串行计数器、串行口和外中断口,系统唤醒后即进入继续工作状态省电模式口和外中断口,系统唤醒后即进入继续工作状态省电模式中,片内中,片内RAM将被冻结,时钟停止振荡,所有功能部分停将被冻结,时钟停止振荡,所有功能部分停止工作,直至系统被硬件复位方可继续运行止工作,直至系统被硬件复位方可继续运行 主要功能特性:主要功能特性: · 2k可反复擦写可反复擦写(>1000次)次)Flash ROM  · 15个双向个双向I/O口口· 6个中断源个中断源  · 两个两个16位可编程定时位可编程定时/计数器计数器· 2.7-6.V的宽工作电压范围的宽工作电压范围  · 时钟频率时钟频率0-24MHz· 128x8bit内部内部RAM  · 两个外部中断源两个外部中断源· 两个串行中断两个串行中断  · 可直接驱动可直接驱动LED· 两级加密位两级加密位  · 低功耗睡眠功能低功耗睡眠功能· 内置一个模拟比较放大器内置一个模拟比较放大器  · 可编程可编程UARL通道通道· 软件设置睡眠和唤醒功能软件设置睡眠和唤醒功能 AT89C2051单片机的单片机的I/O口特点:口特点:       P1口:口:P1口是一个完整的口是一个完整的8位双向位双向I/O端口,端口,其中其中P1.2~~P1.7引脚带有内部上拉电阻,引脚带有内部上拉电阻,P1.0和和P1.1要求外部上拉电阻要求外部上拉电阻。

      P1.0和和P1.1还分别作为片内精密模拟比较器的同相输入还分别作为片内精密模拟比较器的同相输入(AIN0)和反相输入和反相输入(AIN1)P1口输出缓冲器可吸收口输出缓冲器可吸收20mA电流,并能电流,并能直接驱动直接驱动LED显示        对端口写对端口写1时,通过内部的上拉电阻把端口拉到高电位,时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口这时可作输入口         P1口作输入口使用时,因为内部有上拉电阻,那些被外口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(部信号拉低的引脚会输出一个电流(Iil)      具有程序保密功能具有程序保密功能  89C2051有有2个程序保密位,保密位个程序保密位,保密位1被编程后,程序存储器不能被编程后,程序存储器不能再被编程再被编程,除非做除非做1次擦除,保密位次擦除,保密位2被编程后,程序被编程后,程序不能被读出能被读出            P3口:口:P3.0~~P3.5、、P3.7是带有内部上拉电阻的是带有内部上拉电阻的7个双个双向向I/O端口P3.6用于固定输入片内比较器的输出信号,并用于固定输入片内比较器的输出信号,并且它作为一通用且它作为一通用I/O口引脚而只读。

      口引脚而只读P3口输出缓冲器可吸收口输出缓冲器可吸收20mA电流对端口写电流对端口写1时,通过内部的上拉电阻把端口拉到时,通过内部的上拉电阻把端口拉到高电位,这时可作输入口高电位,这时可作输入口          P3口作输入口使用时,因为内部有上拉电阻,那些被口作输入口使用时,因为内部有上拉电阻,那些被外部信号拉低的引脚会输出一个电流(外部信号拉低的引脚会输出一个电流(Iil)。

      点击阅读更多内容
      相关文档
      2025国开山东开大《土质学与土力学》形成性考核123答案+终结性考核答案.docx 中学综合素质知识点梳理【中学教师资格证】.docx 2025国开山东开大《特许经营概论》形成性考核123答案+终结性考核答案.doc 2025年高考英语全国一卷真题(含答案).docx 2025国开山东《农民专业合作社创建与管理》形成性考核123答案+终结性考核答案.docx 2025国开山东开大《自然现象探秘》形成性考核123答案+终结性考核答案.docx 2025国开山东《消费心理学》形成性考核123答案+终结性考核答案.doc 2025国开山东《小微企业管理》形成性考核123答案+终结性考核答案.doc 2025国开山东开大《资本经营》形成性考核123答案+终结性考试答案.docx 2025国开山东《小学生心理健康教育》形考123答案+终结性考试答案.docx 2025国开《视频策划与制作》形考任务1-4答案.docx 2025国开《亲子关系与亲子沟通》形考任务234答案+期末大作业答案.docx 2025国开电大《煤矿地质》形成性考核123答案.docx 2025国开电大《冶金原理》形考任务1234答案.docx 2025国开《在线学习项目运营与管理》形考任务1234答案.doc 2025国开电大《在线教育的理论与实践》阶段测验1-4答案.docx 2024 年注册环保工程师《专业基础考试》真题及答案解析【完整版】.docx 环保工程师---2023 年注册环保工程师《专业基础考试》真题及答案解析【完整版】.docx 2025国开《液压与气压传动》形考任务一参考答案.docx 2025年春江苏开放大学教育研究方法060616计分:形成性作业2、3答案.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.