蓝桥杯—串口通信

51单片机串口通信基本原理与应用

一:串口通信概述

1.并行通信和串行通信

微控制器与外部设备的数据通信,根据连线结构和传送方式的不同,分为两种:并行通信和串行通信。

并行通信:数据的各位同时发送或接收,每个数据位使用一条导线。

串行通信:数据一位一位的按顺序发送或接收。

2.串行通信

<1>串行通信有SPI,IIC,UART等多种,最常见的最通用的是指UART,大多数情况下,串口通信指的就是UART。

<2>串行通信的制式有单工,半双工,全双工 三种。RS485总线是半双工的通信制式。

<3>串行通信的主要方式有两种:同步和异步。

同步串行通信:需要使用同一个时钟,以数据块为单位传送数据。

异步串行通信:每个设备都有自己的时钟信号,通信中双方的波特率要保持一致,以字符为单位进行数据帧传送,一次传送一个帧。

二:关于波特率的计算

<1>波特率:串口每秒钟传输的位数。

<2>在51单片机的串口通信中,模式1和模式3的波特率的可变的。取决于定时器的1的溢出率,也就是说定时器1每溢出1次,串口就发送一次数据

<3>通常使用定时器1的工作模式2(8位自动重装来产生波特率,TL1作为脉冲计数寄存器,TH1作为自动重装寄存器,当计数到最大值溢出时,TH1的值会自动装到TL1中。

三:51单片机串口相关寄存器

<1>串口相关寄存器

TH1TL1:设置波特率参数。
TMOD:设置定时器1的工作模式。
SBUF:串行通信数据的发送和接收缓冲器。
SCON:串行接口控制寄存器。
 在这里主要是掌握SCON,跟串口有关的各种属性都在这个寄存器里进行配置:

<2>

SCON=0X50          //   0   1  0  1  0  0  0   0

如果使用STC15F2K602单片机,还需要对新增的辅助寄存器AUXR进行设置,否则无法进行串口数据收发,对于传统的89C52单片机,则不需要。

四:串口通信编程思路

主要分为两部分:串口初始化和数据收发

初始化函数:(可自动生成)

<1>设置定时器1的工作模式,也就是对TMOD寄存器赋值。

<2>计算波特率参数,并赋值给TH1和TL1寄存器

<3>打开定时器1,如果是stc12系列单片机,则要设置AUXR寄存器

<4>设置SCON寄存器

<5>使能串口中断ES

<6>使能总中断EA

数据收发

数据发送采用查询,数据接收采用中断

五:代码

sfr AUXR=0x8e;                       //新增辅助寄存器

unsigned char tmpRecv;

void Init_UART()

{

TMOD=0x20;                         //定时器1工作模式为自动重装

TH1=0Xfd;                             //设置波特率为9600

TL1=0xfd;                              //11.0592M或12M的12分频

AUXR=0x00;                        //bit7=1,定时器1不分频,0则12分频

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

SCON=0x50 ;                         //串口参数为模式1和允许接收

ES=1;                                  //使能串口中断

EA=1;                                 //使能总中断

}

void SendByte(unsigned char dat)

{

SBUF=dat;                   //将数据放入SBUF缓存器

while(TI==0);             //等待发送数据完成

TI=0;                          //清除发送完成标志

}

void Sevice_UART()  interrupt 4

if(RI==1)//接收一个完整字节

{

RI=0;

tmpRecv=SBUF;

SendByte (tmpRecv+1);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值