PIC单片机EUSART串行通信接口的应用方法解析

2019-12-03来源: elecfans关键字:PIC单片机  EUSART  串行通信接口

PIC单片机的EUSART是一种串行通信接口,我们可以利用他让不同设备之间传输数据,我们来讲讲我们最常用的串行异步接收和发送。


管脚

串行异步接收和发送。如果只要两个引脚,一个是接收RX一个是发送TX。


数据格式

我们先来讲讲TX是如何发送出数据的,数据格式具体是什么样的。

PIC单片机EUSART串行通信接口的应用方法解析

如果我们要向其他设备发送个大写字母A。将是什么样的呢。“A”这个字母对应的ASCII码是65,对应的八位二进制数则是01000100。TX就将对应的二进制码发送出去。


发送时用高电平来代表1,用低电平代表0。那不发送数据的时候管脚就一直为高电平。


启动位和停止位

怎么区分现在是在发送数据还是在常态呢?所以在每次发送一个字节的数据之前TX脚都会先输出一小段的低电平。来告诉对方,我要发送数据了这一小段低电平便是启动位(起始位)。


如果我们发送的不仅仅只有一个字节,而是好几个字节,两个数据之间总要有个间隔吧!要不然分不清谁跟谁。所以每发送完一个字节的数据,TX脚就会输出一小段的高电平这便是停止位。


波特率

在数据发送中每个位的时间都要事先定好,而且发送和接收的双方都必须事先知道并设置好。那这个时间是怎么确定的呢?这就牵扯的一个东西波特率。在这里波特率=比特率。比特率也就是一秒钟发送多少位的数据。如果要一秒钟发送为9600个位,我们将波特率设置为9600。1/9600约等于0.0001s也就是每个位的发送时间。


小端发送

如果发送大写字母“A”也就是发送二进制数“01000100”,串行通信是从低位开始发送。

下图为字母”A”数据发送的时序图。

PIC单片机EUSART串行通信接口的应用方法解析

实例:我们可以利用PC机的串口和单片机进行异步串行通信,单片机接收到什么样的数据,就在给PC机发送数据,波特率为115200。不过单片机输出的TTL信号,需TTL转232.PC机才能接收。有关这方面的硬件设计网上很多故不赘述。


在官方的数据手册有对应配置步骤,不过我将根据我的实例来讲解其实也是大同小异。


1,配置端口

1.1配置备用功能

我们可以看单片机的引脚图,第13和第6脚都标有TX说明这两个引脚是可以作为EUSART数据输出。第12和第5脚都标有RX说明这两个引脚是都可以作为EUSART数据输入的。但是同时只有一个引脚作为RX或者TX。不可以同时有两个RX或TX。RX与TX的选择是通过APFCON。我们这里选择13脚作为TX,选择12脚作为RX.配置如下:

APFCONbits.TXCKSEL=1;//RA0

APFCONbits.RXDTSEL=1;//RA1

PIC单片机EUSART串行通信接口的应用方法解析

1.2将RX脚配置位数字输入。

我们可以看第12脚上标有AN1,说明该引脚还带有模拟输入的功能。所以我们必须将其设置为数字输入。配置如下:

TRISA1=1;//RA1RXinput

ANSELAbits.ANSA1=0;

2配置波特率

如何设置波特率为115200呢,这里我们必须先要知道计算公式。在官方的数据手册中有给我们提供表格。到底选择那个公式由SYNC,BRG16,BRGH这三个位的配置决定。

我们选在异步通信模式故SYNC为0;

波特率发生器位,可以选择8位或者16位。不过选择16位。波特率的精度会更高。所以选择16位。BRG16为1.

我们这里选择高速的波特率BRGH为1;

配置如下:

TXSTAbits.BRGH=1;//highspeed

BAUDCONbits.BRG16=1;//16bitBaudrateGeneratorisused

TXSTAbits.SYNC=0;//Asynchronousmode

PIC单片机EUSART串行通信接口的应用方法解析

我们可以得出我们的计算公式为波特率=FOSC/[4(n+1)];

我们的波特率为115200,时钟定为32MHz。计算出n的值。

115200=32MHz/[4(n+1)];可以得到n=68。444即n=0x44;

将0x44存入到SPBRGH和SPBRGL中,配置如下

SPBRGH=0x00;//

SPBRGL=0x44;//Baudrate115200

3,配置接收中断

实际可以根据自己的需求配置是否用中断接收。不过这里设置为中断接收,配置如下。

PIE1bits.RCIE=1;//enablestheUSARTReceiveinterrupt

INTCONbits.PEIE=1;

INTCONbits。GIE=1;

4,开启串口的功能

开启接收,开启发送,开启串口功能,配置如下:

RCSTAbits.CREN=1;//Enablesreceiver

TXSTAbits.TXEN=1;//Transmitenabled

RCSTAbits.SPEN=1;//serialportenable

实例代码:单片机型PIC16LF1823,开发环境MPLAB X IDE.

#include

__CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON

&CLKOUTEN_OFF&IESO_ON&FCMEN_ON);//这个要放到上一行去

__CONFIG(PLLEN_OFF&LVP_OFF);

unsignedcharRC_DATA;

unsignedcharRC_FLAG;

voidinit_fosc(void)

{

OSCCON=0xF0;//32MHz

}

voidinit_eusart()

{

APFCONbits。TXCKSEL=1;//RA0

APFCONbits.RXDTSEL=1;//RA1

TRISA1=1;//RA1RXinput

ANSELAbits.ANSA1=0;

SPBRGH=0x00;//

SPBRGL=0x44;//Baudrate115200

TXSTAbits。BRGH=1;//highspeed

BAUDCONbits.BRG16=1;//16bitBaudrateGeneratorisused

TXSTAbits.SYNC=0;//Asynchronousmode

PIE1bits.RCIE=1;//enablestheUSARTReceiveinterrupt

INTCONbits。PEIE=1;

INTCONbits。GIE=1;

RCSTAbits.CREN=1;//Enablesreceiver

TXSTAbits.TXEN=1;//Transmitenabled

RCSTAbits。SPEN=1;//serialportenable

}

voidtx_eusart(unsignedchartx_data)

{

TXREG=tx_data;

while(TRMT==0);//loop

}

voidinterruptisr(void)

{

if(RCIE&&RCIF){

RC_DATA=RCREG;

RC_FLAG=1;

LATA2=1;

}

}

/*

*

*/

intmain(intargc,char**argv){

init_fosc();

init_eusart();

RC_FLAG=0;

TRISA2=0;

LATA2=0;

while(1)

{

if(RC_FLAG》0)

{

tx_eusart(RC_DATA);

RC_FLAG=0;

LATA2=0;

}

}

}

PIC单片机EUSART串行通信接口的应用方法解析

PIC单片机EUSART串行通信接口的应用方法解析

注意异步通信的back-to-back与单字节操作时的区别。

PIC单片机EUSART串行通信接口的应用方法解析

图示是3个字节内容在RX上面的,需要注意,使用上面程序无法完成操作。

关键字:PIC单片机  EUSART  串行通信接口 编辑:什么鱼 引用地址:http://news.2689mr.com/mcu/ic481803.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:PIC单片机系统定义字的含义解析
下一篇:PIC单片机与AD5410芯片控制系统输出4-20mA电流信号的设计

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

单片机方案开发注意事项及如何挑选PIC单片机进行学习
  要对PIC单片机进行编程,你需要了解特定的开发工具的基本构件,例如配置寄存器,总线和存储器类型。理解C编程语言、汇编语言等单片机开发语言等。此外,选择正确的软件开发工具集还可以使升级更加容易和快捷。  许多PIC的基础内存体系结构是哈佛体系结构,该体系结构广泛应用于英特尔8051单片机中。哈佛结构具有一个用于存储程序命令的存储空间,并为运行内存额外分配空间,单独的存储空间(可以是片上闪存,ROM,RAM或外部芯片)通常可以提高程序执行速度。  在对单片机方案开发之前,我们必须明确将要用于设计的PIC单片机。其中,8位PIC是一个不错的选择,因为它们的成本通常低于16位和32位MCU,并具有足够的外设集(例如A/D转换器
发表于 2020-07-22
基于PIC单片机的气体报警器
  天然气等气体如果泄露,可能具有极大的危险,如果不加以控制,甚至可能导致死亡。在这个方案中,英锐恩单片机工程师们将使用MQ-2气体传感器和PIC单片机制作一个简单的天然气报警系统。该报警系统既可以显示当前的检测到的其他浓度水平,又可以在天然气超过危险浓度水平时发出警报。  一、基于PIC单片机的气体报警原理图    二、基于PIC单片机开发的气体报警器的工作原理  该方案的两个主要组件是MQ-2传感器和PIC16F1516。MQ-2气体传感器能够检测多种可燃性气体,例如酒精,并且对包括LPG,丙烷和氢气在内的气体具有高灵敏度。传感器的核心是SnO 2(氧化锡),在清洁的空气中具有很大的阻力。当传感器与爆炸性气体接触时,传感器
发表于 2020-07-22
基于<font color='red'>PIC单片机</font>的气体报警器
使用PIC单片机开发的简易数字电压表
  对于单片机初学者来说,数字电压表是一个不错的练习项目。在本文中,单片机开发工程师们分享了一个使用PIC单片机开发的简易数字电压表。该数字电压表的范围是0-20V,当然你也可以自己增加或减少输入电压的范围。  在这个方案中,使用的是microchip的PIC16F688单片机,该PIC单片机通过8个模拟通道之一读取输入电压,并使用内部ADC将其转换为10位数字。用ADC转换做一些数学运算,该数字可以转换为实际测得的电压。电压显示在基于HD44780的字符LCD上。  一、数字电压表电路图和说明  你无法将20V信号直接馈入PIC单片机的输入通道。它的工作电压过高,可能会损坏单片机。因此,首先我们需要一个电压缩放器,该电压缩放器
发表于 2020-07-22
使用<font color='red'>PIC单片机</font>开发的简易数字电压表
使用PIC单片机开发的被动红外传感器模块的报警器
  在本文中,单片机开发工程师们分享了一个使用PIC单片机开发的被动红外(PIR)传感器模块的报警器。在这个方案中,我们使用PIC12F635单片机进行开发,持续监控传感器模块的输出,并在其激活时打开蜂鸣器。  一、被动红外(PIR)报警器方案的原理  某些半导体材料具有暴露于热红外辐射时会产生表面电荷的特性。这种现象称为热电。被动红外(PIR)传感器模块的工作原理相同。人体以红外线辐射的形式辐射热量,最大约为9.4微米。人体的存在会导致热释电传感器感应到的周围环境的IR轮廓发生突然变化。PIR传感器模块在板上具有仪表电路,该仪表电路将该信号放大到适当的电压电平以指示运动的检测。  PIR传感器需要大约10到60秒的初始稳定
发表于 2020-07-22
使用<font color='red'>PIC单片机</font>开发的被动红外传感器模块的报警器
使用PIC单片机制的简单拍手开关
  拍手开关对于初学者来说是一个很有趣的单片机方案。它以拍手的声音打开和关闭电器。在本文中,单片机开发工程师们将使用PIC单片机制作一个简单的拍手开关,当它连续检测到两个拍手声音时,该开关便会运行。在这个方案中,使用驻极体麦克风作为换能器,将拍手声转换为电信号。麦克风的输出由晶体管放大,然后发送到PIC12F683单片机,当检测到有效拍手时,PIC12F683单片机执行ON/OFF切换动作。  声控拍手开关的原理  拍手开关的输入端需要一个换能器,以将拍手的声音振动转换为电能。为此使用驻极体麦克风或简单的麦克风(OBO-04FN-0B)。麦克风的输出中的声音信号电流很低,因此我们需要一个放大器电路来增强检测到的声音信号。以下电路图
发表于 2020-07-22
使用<font color='red'>PIC单片机</font>制的简单拍手开关
使用PIC单片机开发需要什么东西
  PIC单片机,由Microchip制造。目前,它有许多类型的单片机,具有相同替代方案的国产单片机有英锐恩的EN系列。但这里仅以PIC18F452为例,所以让我们对PIC18F452做一些简单的介绍。  PIC18F452是一个40引脚单片机,每个引脚都有自己的功能,这里不赘述了。  那么,假设我想创建一个关于LED闪烁的项目,这算是一个关于PIC单片机的最简单项目之一,所以用它来介绍PIC18F452可能非常简单、直观。  首先,我需要以下内容,以便我可以使用它们来处理PIC。英锐恩单片机工程师们在另一篇文章中讨论了PIC18F452单片机中另一些可用功能,可以去看一下。  一、MPLAB  MPLAB是一个软件
发表于 2020-07-22
使用<font color='red'>PIC单片机</font>开发需要什么东西
小广播
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD。com。cn, Inc。 All rights reserved
足彩送彩金 下载就送彩金的棋牌 无需充值送彩金的彩票平台 2019白菜网送彩金 真人百家乐赠送彩金 送彩金100可提款mg游戏 送彩金的网站有那些 真人百家乐送彩金 送彩金的棋牌app糖果派对 那个棋牌平台送彩金最多