精华内容
下载资源
问答
  • UART串行口工作原理

    千次阅读 2018-12-17 10:23:12
    通过异步收发器(UART)用来传输串行数据。UART之间以全双工方式传输数据,最精简连接方法只有三条连线:TXD用于发送数据,RXD用于接收数据,Gnd给双方提供参考电平。 UART使用标准CMOS逻辑电平(0—5V、0—3.3...

    通过异步收发器(UART)用来传输串行数据。UART之间以全双工方式传输数据,最精简的连接方法只有三条连线:TXD用于发送数据,RXD用于接收数据,Gnd给双方提供参考电平。
    UART使用标准的CMOS逻辑电平(0—5V、0—3.3V、0—2.5V或0—1.8V四种)来表示数据,高电平为1,低电平为0。为了增强干扰能力,提到传输长度,通常将CMOS逻辑电平转换为RS-232逻辑电平(3—15V以0表示,-3 — -15V以1表示)。TXD、RXD数据线以“位”位最小传输单位,传输数据包括1位起始位、5—8位数据位、1位奇偶校验位(需要的话)和1—2位停止位。
    传输数据之前,UART之间要约定数据的传输速率(即每位所占时间,其倒数成为波特率)、数据的帧格式(即有多少个数据位、是否使用校验位、是奇校验还是偶校验、有几位停止位)。
    其数据传输流程如下:
    1、平时数据线处于“空闭”状态(1状态)。
    2、当要发送数据时,UART改变TXD数据线的状态(变为0状态)并维持1位的时间,这样,接收方检测到开始位后,在等待1.5位的时间就开始一位一位地检测数据线的状态,得到所传输的数据。
    3、UART一帧中可以有5、6、7或8位数据,发送方一位一位地改变数据线的状态,将它们发送出去,首先发送最低位。
    4、如果使用奇偶校验功能,UART在发送完数据位后,还要发送1个校验位。有两种校验方法,即奇校验和偶校验(数据位连同校验位中“1”的数目分别等于奇数或偶数)。
    5、发送停止位,数据线恢复到“空闭”状态(1状态)。停止位的长度有三种:1位、1.5位、2位。

    展开全文
  • AT89S51单片机串行口的内部结构如下图所示。它有两个物理上独立的接收、发送缓冲器SBUF(属于特殊功能寄存器),可同时发送、接收数据。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,两个缓冲器共用一...
  • //串口中断初始化 void uart_init() { SCON = 0x50; //设置uart工作方式 “8N1” TMOD = 0x20; //设置定时器工作方式为8位,用作串口波特率 TH1 = 0xfd; //填初值 TR1 = 1; //打开定时器 } /
    #include<reg52.h>
    #include "./delay/delay.h"
    #include<stdio.h>
    
    //串口中断的初始化
    void uart_init()
    {
    		SCON = 0x50;  //设置uart工作方式  “8N1”
    		TMOD = 0x20;  //设置定时器工作方式为8位,用作串口波特率
    		TH1 = 0xfd;   //填初值
    		TR1 = 1;      //打开定时器
    }
    //发送一个字节
    void uart_send_byte(unsigned char byte)
    {
    		SBUF = byte;
    		while(!TI);     //自动置1,手动置0,发送标志位
    		TI = 0;
    }
    //发送字符串
    void uart_send_str(unsigned char *s)
    {
    		while(*s != '\0')
    		{
    				uart_send_byte(*s);
    				s++;
    		}
    		
    }
    
    
    void main()
    {		
    		
    		//unsigned char temp;
    		uart_init();
    		while(1)
    		{
    			
    			if(RI)
    			{
    			uart_send_str("hengzhe shi wo er");
    			uart_send_byte(SBUF);
    			delay_ms(200);
    			RI = 0;
    			}
    			
    			TI = 1;
    			printf("hengzheshiwo erzi\n");
    			printf("line is %d\n",(unsigned int)__LINE__);
    // 				if(RI)
    // 				{			
    // 						temp = SBUF;
    // 					  P0 = temp;
    // 						delay_ms(50);
    // 					  RI = 0;
    // 				}
    			//	uart_send_byte(0x55);
    			//delay_ms(50);
    		}
    }
    串口每次发送最低位
    //后续截图次日补上

    展开全文
  • 一、实验内容 甲乙两个单片机进行串行通信。...理解单片机串行口实现通信各种工作方式 掌握单片机串行通信程序设计、调试方法 三、实验设备 DELL台式机 、keilC51版本7、proteus版本6 四、实验电路图

    一、实验内容

    甲乙两个单片机进行串行通信。采用12MHZ时钟频率晶振频率和方式1进行通信。甲机上有4*4键盘、一个七段数码管,乙机上有两个七段数码管;甲机发出按键显示内容,乙机接收后在数码管上交替显示。

    二、实验目的

    理解单片机串行口实现通信的各种工作方式

    掌握单片机串行通信程序设计、调试方法

    三、实验设备

    DELL台式机 、keilC51版本7、proteus版本6

    四、实验电路图


    五、程序流程图 

    查询方式接收流程图


    查询方式发送流程图


    六、程序源码  

    //接收程序
    #include<reg51.h>
    #define uchar unsigned char
    #define uint unsigned int 
    uchar old=16;
    uchar code DSY_CODE[]=
    { 0x3f,0x06,0x5b,0x4f,
      0x66,0x6d,0x7d,0x07,
      0x7f,0x6f,0x77,0x7c,
      0x39,0x5e,0x79,0x71,0x00 };
    //延迟子程序
    void DelayMS(uint ms){
    uchar t;
    while(ms--)
    for(t=0;t<120;t++);
    }
    void main(){
    P0=0x00;P2=0x00;
    SCON=0x50;//串口模式1,8位异步,允许接受
    TMOD=0x20;//T1工作在模式2,8位自动装载
    PCON=0x00;//波特率不倍增
    TH1=0xfd;//波特率9600
    TL1=0xfd;
    RI=0;
     TR1=1;//启动定时器T1
    while(1){
         if(RI){
    RI=0;
    P0=DSY_CODE[old];//显示旧值
    P2=DSY_CODE[SBUF];//显示新值
    old=SBUF;
    }
    DelayMS(100);
    }	  
    }
    //发送程序
    #include<reg51.h>
    #define uchar unsigned char
    #define uint unsigned int 
    uchar code DSY_CODE[]=
    { 0x3f,0x06,0x5b,0x4f,
      0x66,0x6d,0x7d,0x07,
      0x7f,0x6f,0x77,0x7c,
      0x39,0x5e,0x79,0x71 };
    uchar pre_key=16,key=16;
    //延迟子程序
    void DelayMS(uint ms){
    uchar t;
    while(ms--)
    for(t=0;t<120;t++);
    }
    //键盘扫描子程序
    void keys_scan(){
    uchar temp;
    P0=0x0f;
    DelayMS(1);
    temp=P0^0x0f;
    switch(temp){
    case 1:key=0;break;
    case 2:key=1;break;
    case 4:key=2;break;
    case 8:key=3;break;
    }
    P0=0xf0;
    DelayMS(1);
    temp=P0>>4^0x0f;
    switch(temp){
    case 1:key+=0;break;
    case 2:key+=4;break;
    case 4:key+=8;break;
    case 8:key+=12;break;
    }
    }
    //发送子程序
    void putc_to_SerialPort(uchar c){
    SBUF=c;
    while(TI==0);
    TI=0;
    }
    void main(){
    P1=0x00;
    SCON=0x40;//串口工作在方式1(01000000)
    TMOD=0x20;//T1工作在模式2,8位自动装载
    PCON=0x00;//波特率不倍增
    TH1=0xfd;//波特率9600
    TL1=0xfd;
    TI=0;
    TR1=1;//启动定时器T1
    while(1){
    P0=0xf0;
    if(P0!=0xf0)
    keys_scan();
    if(pre_key!=key){
    P1=DSY_CODE[key];
    putc_to_SerialPort(key);
    pre_key=key;
    }
    DelayMS(100);
    }	  
    }
    



    展开全文
  • 51单片机串行口的使用与串行通信串行通信:俩个概念:RS232接口标准:串行口的使用:串行口的结构:串行口相关寄存器:串行口的工作方式:方式0:同步移位寄存器方式利用方式0扩展并行I/O口:方式1:8位异步通信方式...

    串行通信:

    俩个概念:

    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单片机内部有一个全双工串行接口...表2 串行口工作方式控制位其中,fOSC 为单片机时钟频率;波特率指串行口每秒钟发送(或接收)位数。SM2 :多机通信控制位。 该仅用于方式2 和方式3 多机通信。其
  • 本文在分析MCS-51单片机串行口工作原理的基础上,提出基于12MHz晶振单片机系统,通过编程实现所需波特率插值调整设计方法。 引言单片机在当今仪表及工业测控设备上应用相当广泛,在构成分布式系统进行较长...
  • 《单片机原理及应用》试题库第四章定时器、串行口及中断系统一、判断题()1.在MCS—51单片机内部结构中,TMOD为模式控制寄存器,主要用来控制定时器启动与停止。×()2.在MCS—51单片机内部结构中,TCON为控制...
  • 学习串行接口8250的工作原理及编程和中断程序的设计,运用微机系统串行通信知识,进行微机系统串行口的测试。 实验要求: 编写程序对微机系统的串行口进行自发自收外环测试,从键盘键入发送数据,屏幕显示接收数据。...
  • 串行口通信(一)

    2021-01-06 13:59:07
    为了能更好理解串行口通信,在介绍它之前,先来看看几个概念,补充知识,方便深入明白uart工作原理。 通信方式 通信方式 通信方式有两种,分别是并行通信和串行通信。并行通信:并行是指多比特数据同时通过并行线...
  • 打算机和单片机(如MCS-51)都具有串行通讯,可以设计相应串口通讯程序,完成二者之间数据通讯义务。  实际工作中运用串口完成通讯义务时候非常之多。已有一些文章介绍串口编程文章在打算机杂志上发表。...
  • 打算机和单片机(如MCS-51)都具有串行通讯,可以设计相应串口通讯程序,完成二者之间数据通讯义务。  实际工作中运用串口完成通讯义务时候非常之多。已有一些文章介绍串口编程文章在打算机杂志上发表...
  • 计算机和单片机(如MCS-51)都具有串行通信,可以设计相应串口通信程序,完成二者之间数据通信任务。  实际工作中利用串口完成通信任务时候非常之多。已有一些文章介绍串口编程文章在计算机
  • USB 英文全称为 Universal Serial Bus,中文含义是通用串行总线,它是一种快速,双向,同步传输廉价并可以进行热拔插的串行接口。USB 接口使用方便,它可以连接多个不同设备,而过去串口和并口只能接一...
  • uart串行口通信(一)

    千次阅读 2019-02-21 11:06:11
    前言 人类生存于世,少不了沟通。沟通使人类互相认知,传递信息,提升生活品质。...为了能更好理解串行口通信,在介绍它之前,先来看看几个概念,补充知识,方便深入明白uart工作原理。 通信方式 通信方式有两...
  • 掌握8250异步串行接口芯片的工作原理;掌握串行通信程序的设计。实验内容:1. 完成硬件测试环境;2. 编写程序对微机系统的串口进行自发自收外环测试;发送采用查询方式,接收采用中断方式;3. 数据发送从键...
  • 计算机和单片机(如MCS-51)都具有串行通信,可以设计相应串口通信程序,完成二者之间数据通信任务。 实际工作中利用串口完成通信任务时候非常之多。已有一些文章介绍串口编程文章在计算机杂志上发表。但...
  • 掌握AT89C52串行口方式0的工作方式和编程 掌握利用串行口和移位寄存器扩展并行接口的方法 二、实验内容 打开ISIS 7 Professional,参照图8.1设计仿真电路原理图 编写程序实现: (1)用查询TI方式,在7段BCD...
  • 文中详述了该芯片的工作原理、工作时序及控制指令,给出了HD7279A与CPU的实际接口电路及设计程序,同时指出了实际应用中的一些注意事项。 关键词:HD7279A;工作时序;接口电路1 主要特性HD7279A是比高公司...
  • 掌握8250异步串行接口芯片的工作原理;掌握串行通信程序的设计。 实验内容: 完成硬件测试环境; 编写程序对微机系统的串口进行自发自收外环测试;发送采用查询方式,接收采用中断方式; 数据发送从键盘...
  •  不同型号单片机使用串口不同,根据需求选择相应单片机,在有些场合如果单片机如果没有需要的串行通信接口,则可以通过单片机I/O进行模拟。  全双工UART(异步串行通信接口)  UART有两种工作状态: ...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 192
精华内容 76
关键字:

串行口的工作原理