51单片机串口通讯uart笔记

发布者:HarmonyInLife最新更新时间:2021-10-19 来源: eefocus关键字:51单片机  串口通讯  uart 手机看文章 扫描二维码
随时随地手机看文章

我需要设计一个夜晚蓝牙开关灯设计,采用的蓝牙芯片为JDY-30,刚开始不知道具体型号,后来连接蓝牙之后发现是JDY-30,查手册发现采用的是uart通讯,所以就进行了重新的温习。下面是uart串口通讯的笔记


使用串口通讯需要对相关寄存器进行配置

我这里需要将串口通讯工作在中断方式,那我肯定要用到中断有关的寄存器IE


还需要设置定时/计数器T1,可能有人会有疑问,为什么要用定时器呢,波特率是每秒传输二进制代码的位数,单位是 位/秒 即bps 而定时器是用来确定发送和发送执行每一位的时间的,所以需要对TCON与TMOD寄存器进行配置


使用串行通讯的话还需要确定串行通信的工作方式与控制功能,这就需要对SCON与PCON寄存器进行配置


SCON寄存器的各位如下:

在这里插入图片描述

(这里要注意是不是可位寻址的寄存器,如果是我们就可以直接写TI=1;如果不可以,写代码时我们必须要写SCON=0X02)

SM0与SM1是工作方式选择位

在这里插入图片描述

我们要让它工作在8位UART,波特率可变的情况,所以SM0与SM1为01,在方式1时,SM2是多机通讯控制位,这里把它置零。

REN是允许接收控制位 REN为1允许接收

TB8与RB8方式2/3才用到,这里给他置零

TI是发送中断请求标志位 TI=1向主机请求中断 方式一下必须由软件置位

RI是接收中断请求标志位,接收到停止位中间时刻由内部硬件置位,即RI=1,RI也必须由软件置位。

所以串口初始化时,SCON寄存器为 0101 0000

当对串口控制寄存器进行设置之后,就需要对PCON波特率加倍寄存器进行配置

在这里插入图片描述

SMOD为1时,串口波特率加倍,为0时不加倍,正常情况下系统默认为0

然后我们对定时器/计数器控制寄存器进行配置

TR1是定时器T1的运行控制位

在这里插入图片描述

接下来对定时/计数器工作模式寄存器TMOD进行配置,我们将T1工作在定时器状态下,模式选择为8位自动重装。

在这里插入图片描述

TMOD刚开始配置为 0010 0000

最后最重要的 我们这里用到了定时中断,所以一定要打开总中断

在这里插入图片描述

EA=1 CPU开放中断 ES是串行口1中断允许位 所以ES=1


中断级别如下图所示:所以中断函数写的时候需要写void Uart() interrupt 4

在这里插入图片描述

串口初始化函数


void UART_Init(void)

{

    SCON  = 0x50;         // SCON: 模式 1, 8-bit UART, 使能接收  

    TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重装

    TH1   = 0xFD;               // TH1:  重装值 9600 波特率 晶振 11.0592MHz

TL1 = TH1;  

    TR1   = 1;                  // TR1:  timer 1 打开                         

    EA    = 1;                  //打开总中断

    ES    = 1;                  //打开串口中断


放入初值的计算公式;

TH1=256-(11059200/12/32)/(需要的波特率)

(这里默认是11.0593MHZ的晶振)

因为是8位自动重装的 当溢出的时候 将TH1的值重装进TL1所以直接令TL1=TH1即可

关键字:51单片机  串口通讯  uart 引用地址:51单片机串口通讯uart笔记

上一篇:#51单片机#UART串口通信的初步认识
下一篇:80C51

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
更多往期活动
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved