51单片机串行口的使用与串行通信

最新更新时间:2022-04-20来源: eefocus关键字:51单片机  串行口  串行通信 手机看文章 扫描二维码
随时随地手机看文章

串行通信:

俩个概念:

1、串行异步通信:

双方按照各自约定好的时钟周期作为各自的时钟周期;原理上来说,双方各用各的时钟周期且约定相等,但是在实际的使用中由于各种因素的影响,会产生时钟偏差。这种方式为串行异步通信。

2、串行同步通信:

只有一方提供时钟周期信号,另一方只做接收,这样的化就只有一个时钟周期为基准。这样就会大大提高通信可靠性,这种方式为串行同步通信。


RS232接口标准:

用于短距离或带调制解调器的串行通信接口协议

在这里插入图片描述

1、RXD:接收数据

2、TXD:发送数据

3、GND:接地


采用负逻辑电平:

-15V~3V:逻辑1

+15V~+3V:逻辑0


串行口的使用:

串行口的结构:

在这里插入图片描述

1、发送 :数据总线将数据传输到发送寄存器SBUF中,通过发送控制器将数据逐位发送给TXD引脚,当一个字节发送完成后,触发TI中断。

2、接收 :RXD引脚实时监测电平变化,并输入到移位寄存器,当移位寄存器满足8位接收后,触发RI中断。


串行口相关寄存器:

PS:详见51单片机之特殊功能寄存器SFR篇

在这里插入图片描述
在这里插入图片描述

串行口的工作方式:

方式0:同步移位寄存器方式

在这里插入图片描述

通常用于外接移位寄存器用作扩展I/O口 ,波特率固定为一个机器周期,串行数据通过RXD输入输出,同步时钟通过TXD输出

发送:

在这里插入图片描述

接收:

在这里插入图片描述

利用方式0扩展并行I/O口:

1、当外接串入并出的移位寄存器时,就可以扩展并行输出口

2、当外接并入串出的移位寄存器时,就可以扩展并行输入口

在这里插入图片描述在这里插入图片描述

方式1:8位异步通信方式

在这里插入图片描述

传输一帧信息为10位:1位起始位(0),8位数据位,一位停止位(1)

发送:

在这里插入图片描述

接收:

在这里插入图片描述

此种方式下波特率是可变的,有关波特率的计算:

在这里插入图片描述

例:

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关键字:51单片机  串行口  串行通信 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic564829.html

上一篇:51单片机并行I/O口工作原理
下一篇:51单片机之特殊功能寄存器SFR

推荐阅读

51单片机外接ADC0808制作简易电压表
main.c#include<reg52.h>#define uchar unsigned char#define uint unsigned int sbit Start = P3^0;sbit EOC=P3^1; //sbit OE=P3^2 ; //uchar code table [] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//段选uchar code table_SMG [] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};//位选 //------------------------变量区-
发表于 2022-08-11
<font color='red'>51单片机</font>外接ADC0808制作简易电压表
关于51单片机的地址空间溢出以及解决方法的个人看法(proteus无法仿真)
在51单片机程序编写中,当变量过多而且数据类型过大的话,容易在编译的时候出现以下的问题,具体表现为: *** ERROR L107: ADDRESS SPACE OVERFLOWSPACE: DATA SEGMENT: _DATA_GROUP_LENGTH: 0019HProgram Size: data=130.0 xdata=7 code=3267Target not created.这样子也就是所谓的编译失败,不能生成HEX文件,更加无法烧写到程序中去,那么如何解决这个问题呢,我在网上找到了解法,网上的具体步骤如下:1.先点击这个图标2.在其中的memory model 将small改成compact选项,那么即可编译通过。3
发表于 2022-08-10
关于<font color='red'>51单片机</font>的地址空间溢出以及解决方法的个人看法(proteus无法仿真)
51单片机脉冲信号的计数和LCD显示
设计目标和思路在个人剂量仪开发的过程中,从探头输出的核脉冲信号经过后期放大,成形,滤波以及甄别之后,成为一系列脉冲信号输出,这种脉冲信号由于衰变的随机性,并不是固定频率的脉冲信号。我们本次设计就是针对这种脉冲进形脉冲信号的计数以及在LCD1602显示屏上面的显示。这是C语言的代码部分#include"reg51.h" #include <stdio.h>#include <math.h>#include <string.h>#include <intrins.h>#define uint8_t unsigned char //0-255#define uint16
发表于 2022-08-10
<font color='red'>51单片机</font>脉冲信号的计数和LCD显示
51单片机之74HC138译码器控制数码管进行100s计数
/** I use a timer in my code to control the time I use 138decoder int the hardware**/#include<reg51.h>#define uint unsigned int#define uchar unsigned charsbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;uchar code tab_1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uchar tab_2[2];uchar counter=0,time=0,counter_T
发表于 2022-08-10
51单片机制作脉冲发生器
要求1.在Keil IDE(u Vision2)中完成应用程序设计,并编译2.在ISIS 7 Professional 中完成电路设计、调试与仿真/** I use a timer in my code to control the time**/#include<reg51.h>#define uint unsigned int#define uchar unsigned charuchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchar second=0,counter=0,second_1=0,second_0=0,time=
发表于 2022-08-10
<font color='red'>51单片机</font>制作脉冲发生器
51单片机定时器2捕获模式测脉冲频率
常规方法测量脉冲的频率,利用51单片机的两个定时器来测量,一个定时器来定时,一个定时器作为计数方式;能不能有一个更好的方法,不使用这么多硬件,只使用一个定时器就可以满足需求? 当然可以的,定时器2有输入捕获功能,P1.1接外部脉冲,当来一个脉冲,定时2就进入中断服务程序中断一次,同时也有定时功能。下面是主要的程序:#include<reg52.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned longuint timer2_count;uint cap_count;uchar code dispbit[]={0x01,
发表于 2022-08-10

推荐帖子

晶体振荡器的原理与操作:第3部分——晶体振荡器–技术规范解读(1)
本帖最后由dontium于2015-1-2311:34编辑在本系列文章的上一部分里,我们具体探讨了晶体振荡器的工作情况。现在我们将讨论内容延伸到与晶体振荡器有关的各种参数及其对最终系统设计的影响。 晶体牵引范围:串联共振频率和抗共振频率由非常小的值分开,通常是Fs的3000ppm。频率分离可通过方程式1得到(参考上一部分的方程式9)。这个频率分离也被称为晶体的牵引范围。在上面的方程式中,C1/C0作为识别可牵引晶体的指示项。当为VCXO(电压控制晶体振荡器)应用选择合适的晶体时
sharley 模拟与混合信号
eZ430-RF2500无线通信模块试用申请
eZ430-RF2500无线通信模块试用申请eZ430-RF2500无线通信模块试用申请
xinzhi1986 微控制器 MCU
Static Text 控件 背景透明后 文字重影 不能刷新文字的问题?(vs2005下的wince prj)
我现在用vs2005做一个wince5.0UIprj,遇到了跟您差不多的问题:我的mainDlg界面上有一个bmp的位图背景,mainDlg上还有8个button和8个对应的StaticText,当我在OnCtlColor()消息函数中添加 if(nCtlColor==CTLCOLOR_STATIC) { pDC->SetBkMode(TRANSPARENT); return(HBRUSH)GetStockObject(NULL_BRUSH); } 可以
yunalps WindowsCE
简单明了的C2000开发工具指南
简单明了的C2000开发工具指南
dontium 微控制器 MCU
跪求大神解析
小弟看资料写的USART1的程序,想与上位机通信,但是无法接受数据……求大神教育 /*Includes------------------------------------------------------------------*/ #include"stm32f10x.h" #include"platform_config.h" GPIO_InitTypeDefGPIO_InitStructure; USART_InitType
stm32菜鸟 stm32/stm8
直流电机的单片机控制
要求是能通过按键控制电机的正反转,能够检测电机速度,在数码管上显示,控制速度。我刚学单片机不久,是自学的,所以水平很菜,只能单独做证反转,或者检测速度,至于控制速度,还有速度的显示做不了,哪位高手能够指点,或者有一些资料参考一下,谢谢了!直流电机的单片机控制
suzhu 单片机
小广播
实战 培训 开发板 精华推荐

何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved