51单片机内部串行口如何发送和接收数据

今日头条

1151人已加入

描述

单片机比专用处理器适合应用于嵌入式系统

单片机比专用处理器适合应用于嵌入式系统,因此它得到了多的应用。事实上单片机是世界上数量比较多的小型计算机,现代人类生活中几乎每件电子和机械产品中都会集成有单片机。包括电话、电子玩具、计算器、手机、家用电器、电脑鼠标等等电器配件中都配含有单片机。

51单片机内部串行口的结构以及它是如何发送数据和接收数据的实际上并不是特别难,如果还是没有特别理解的话可以去找一本单片机的教材,一般在教材当中也会对电路做一个具体详细的描述,先理解串行口的工作机制,然后才能够去做典型的应用,否则的话一旦在做串行通信的时候出现问题的时候就不容易解决,而且很多朋友在网上找的程序,有的是使用的查询方式,有的是使用的中断方式,有的是查询和中断混合再用,就解决不了,因为有的地方,有的程序写的不好的时候,它既有查询也有中断,有朋友就很困惑,特别是发送和接收,如果是同时使用中断和查询,这个时候数据一定会出错,有的时候可能会发送两次,有的时候可能会接收出错就解决不了,所以一定要先理解他内部的结构。

数据

要想发送数据,就是把数据写到SBUF当中,靠发送器首先就把这个数据转成串行的,当然也是靠移位寄存器,转成串行的数据,一位一位的转成这个串行,然后会给它自动的加一个起始位,在末尾会再加一个停止位,然后出现在这根线上变成高低电平,当这一帧数据一旦发送到停止位的时候,也都发送完的时候,会使这个T硬件自动置一,就可以查询这个标志位代表发送完了,如果这个没有变成一,就代表还没有发送完,一定要等他发送完才能够再发送下一帧数据,所以大家写程序的时候也会这样子来查询标志位,来等待发送完再去发送下一数据,在接收的时候也是一样的,一位一位地过来它会进入这个移位寄存器,靠接收控制器会把这个数据一位一位地给他移到SBUF当中,他会把这个起始位和停止位都会去掉,只保留数据位放到这个里面供用户去读取。

数据

接收到停止位的时候会使自动至一,方便用户使用,这里面还有一个时序的时钟控制电路,来控制这个通信的波特率,51单片机它的这个串行通信它有四种工作模式,有工作模式0,工作模式1,工作模式2和工作模式3,后续主要给大家讲模式1,其他感兴趣的朋友可以自学,或者以后需要用到的时候再去学一下,我这么多年的工作经验中也没有用到这个模式0和模式2,模式3,经常做串行通信的时候都是在用模式一,模式0实际上它主要适用于扩展并行口的,可以用串口扩展出来一个并口,比如很多时候大家可能有朋友会做静态显示,用这个选了一个串行的器件,也是移位寄存器的一个器件,可以和单片机的串行口做接口,就是两根线就可以做接口,然后靠这个器件就可以去做数码管的静态驱动,而不是做动态驱动,感兴趣的话可以去了解一下,这个使用起来也比较简单,实际上它就是一个同步的移位寄存器。

数据

模式一它就是重点要讲的串口通信,这个十位的异步串口是指的这一帧数据当中包含一个起始位,八个数据位和一位停止位,正好构成的是一帧数据,叫做十位的异步串口通信,通信双方首先要约定的一个基本的约定,或者说一个基本的协议,要约定好这个才能建立通信,模式一它的波特率是可变的波特率,也就是说它的波特率主要是由定时计数器的溢出率来决定的,但是至于这个波特率怎么样来算,后面会给大家来讲,实际上也可以借助工具来配置,主要需要了解就是这个波特率它只能由定时计数器T1来产生,而不能由T0来产生,这个也是很多朋友困惑的地方,为什么不能用T0?是因为它的硬件上就是和T1关联的,有些单片机再做增强的时候也可以和T2关联到一起,有的单片机有多个串口的时候,他还有独立的信号发生器,这个要看具体的这个单片机的手册,普通的51单片机它的模式一的串行口的通信波特率是由定时计算器T1来决定的,所以要想产生波特率,一定要用到定时器的T1,模式二和模式三实际上和模式一没有太大的区别,只是增加了一个奇偶校验位,所以实际上就是在这个八位数据位后面添加了一位奇偶校验位,构成了一个11位的异步串口。

对单片机感兴趣的可以查看往期分享内容,希望能帮助大家在学习单片机的路上少走一些弯路,想要入门单片机可以持续关注创为单片机编程,回复“带我学习”查看更多内容分享。

  审核编辑:汤梓红

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分