这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 高校专区» 坤创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 之后使用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 跳转至

回复

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