这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 坤创E-Geek/天科大新电社 » 23. 蓝桥杯官方板CT107D串行口的使用

共8条 1/1 1 跳转至

23. 蓝桥杯官方板CT107D串行口的使用

高工
2019-02-27 21:22:53     打赏

大家好,相信大家已经学会了一些蓝桥杯常考的通讯协议,例如:IIC,SPI。今天我们就来看另外一个通信协议:单片机的串行通信。

虽然历年来蓝桥杯省赛没有考串行口通信,但是串行口作为单片机的一个基本外设是必须熟练掌握的,而且掌握了单片机的串行口的使用之后,尤其在输出外设不足的时候使用起来也是一个非常好的利器!因此串行口的使用必须掌握。

一般来对51单片机所说串行通信其实是UART,当然还有UASRT;它们之间的区别就是前者是异步通信,后者是同步的,所以后者会比前者的IO口多(同步时钟信号)。51单片机UART的IO口是TXD(P31)、RXD(P30),简单的来说连接方式是两个设备RXD连接TXD。关于51单片机的UART时序暂且不多讲,我们只谈使用,51单片机UART的使用还是比较简单的。在此之前我们先一起来看一看它的内部结构。

 01.png

由图可以看出:虽然在编程的时候,SBUF只有一个,它既表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H,但是在物理结构上,其实SBUF有两个;也就是说当CPU对SBUF读的时候(a=SBUF)数据来自接收缓冲器,而写的时候(SBUF=a)数据发送到发送缓冲器了。

一般使用的过程中通过对SCON和PCON的配置来使用串行口。而对中断运行寄存器IE的配置可以开启或者关闭串行中断。

波特率的计算:

在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。

方式0的波特率 =  fosc/12

方式2的波特率 =(2SMOD/64)· fosc

方式1的波特率 =(2SMOD/32)·(T1溢出率)

方式3的波特率 =(2SMOD/32)·(T1溢出率)

 

串行口工作之前需对相关寄存器进行配置,设定其工作模式。具体配置步骤如下:

1)设置T1的工作方式TMOD寄存器);

2)计算T1的初值,装载TH1、TL1;

3)启动T1TCON中的TR1位);

4)确定串行口控制(编程SCON寄存器);

5)如果要开启串口中断,则要对IE寄存器进行操作。

由于串行通信在平时使用的时候比较灵活,所以本次仅提供部分代码,具体程序如下。

一般初始化函数:

void uartInit()
{
    TMOD = 0x20;   //T1工作模式2  8位自动重装
    TH1 = 0xfd;
    TL1 = 0xfd;   //比特率9600
    TR1 = 1;   //启动T1定时器
    SM0 = 0;
    SM1 = 1;   //串口工作方式1 10位异步
    REN = 1;   //串口允许接收
    EA  = 1;   //开总中断
    ES  = 1;   //串口中断打开
}
void UART() interrupt 4
{
    if(RI)     //检测是否接收完成
    {
        dat = SBUF;    //num 取出接收缓存器的值
        P1 = SBUF;  //P1口读取串行口的数据
        dat++;
        RI = 0;   //接收中断标志位 必须用软件清0
        SBUF = dat;  //送出数据
        while(!TI);  //等待数据送完
        TI = 0;
    }
}

当然在实际使用过程中如果不接受数据,仅仅是单纯的发送数据的话,也可以不使用串口中断:

void uartInit()
{
    TH1 = 0xFD;   //波特率设为9600
    TL1 = TH1;
    TMOD |= 0x20; //定时器1方式2
    SCON = 0x50;   //串口接收使能  相当于SM0 = 0;SM1 = 1; REN = 1
    TR1 = 1;      //定时器1使能
    TI = 1;  
}


当然也可以#include <stdio.h>之后使用printf通过串口输出数据。

总之,串口在我们学习单片机的过程中,是个必不可少的工具,也能够辅助我们对代码进行跟踪和调试。而蓝桥杯历年省赛虽然没有考过,但是并不能代表它就不重要,希望大家能够会使用单片机的串行口。不仅仅是为了考试哦~!





关键词: 串行口     蓝桥杯     竞赛    

管理员
2019-02-28 09:28:12     打赏
2楼

涨姿势  涨姿势


院士
2019-02-28 09:51:35     打赏
3楼

串口的难点还是在于其异步的概念。


高工
2019-02-28 11:31:36     打赏
4楼

调试神器,当之无愧


菜鸟
2019-03-20 16:48:56     打赏
5楼

涨知识,涨知识,谢谢楼主



高工
2024-03-15 05:54:21     打赏
6楼

谢谢分享


专家
2024-03-15 10:28:32     打赏
7楼

谢谢分享


高工
2024-03-29 06:17:07     打赏
8楼

谢谢分享


共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]