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单片机ad转换c程序分享
法的工作过程是:当模拟电压Vi加到V/F的输入端,便产生频率F与Vi成正比的脉冲,在一定的时间内对该脉冲信号计数,时间到,统计到计数器的计数值正比于输入电压Vi,从而完成A/D转换。pic单片机ad转换c程序#include《pic.h》#define uchar unsigned char#define uint unsigned int__CONFIG(0x3FB1);void init();void Delay();unsigned int getad();void Display(unsigned char a,unsigned char b,unsigned char c);unsigned char DIG_CODE[17
发表于 2020-01-20
pic单片机ad转换c程序分享
pic单片机多路ad切换程序介绍
PIC单片机(Peripheral Interface Controller)是一种用来开发和控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。PIC 单片机是一个小的计算机。PIC单片机有计算功能和记忆内存像CPU并由软件控制运行。然而,处理能力—般,存储器容量也很有限,这取决于PIC的类型。但是它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。时钟频率与扫描程序的时间和执行程序指令的时间有关系。但不能仅以时钟频率来判断程序处理能力,它还随处理装置的体系结构改变。如果是同样的体系结构,时钟频率较高的处理能力
发表于 2020-01-20
pic单片机多路ad切换程序介绍
大神对PIC单片机的简单入门时如何讲解的
你所说,那你就不妨跟着我再失败一次, 反正吗多一次失败又不纳税,嘿嘿。不过你也要有思想准备,彻底弄明白是个渐进的过程。要说这程序和单片机内部结构,还真是老大难,不过蟹黄蟹肉可都在里面。我现在要是给你说PIC单片机是哈佛结构的,51系列是冯-诺伊曼结构的,恐怕你要立马走人了。所以我得用点心思不让你溜号。好在PIC系列的制造商(microchip 微芯公司 美国)理解我等苦衷,全部只有35条指令,而且有一些指令我们一般很少使用,常用的也就十几句,用的时候查手册,无需记忆。就算我们两天学习一句,也就两三个月时间,总比到老了还怕它们强啊。废话少说先看下面的两个例语:my_name006: movlw 02h '常数2进入
发表于 2020-01-20
大神对PIC单片机的简单入门时如何讲解的
外加电压检测复位电路设计方案
1.6.5 PIC单片机的外接电压检测复位电路举例  1.设计思路  有许多型号单片机的内部均不具备掉电复位功能,即使对于内部包含该功能的PIC单片机,其复位门槛电压值是固定不可更改的,有时不能满足用户的需求,因此,外加电压检测复位电路也是较常见的设计方案。  对于片内带有掉电复位功能BOR的PIC单片机,在使用外接电压检测复位电路时,就必须将内部BUR功能禁止,方法是将系统配置字的BUDEN位设置为0。  对于内部不带BOR功能的PIC单片机,其电源控制寄存器PCUN没有BOR标志位,无法准确识别由外接电压检测复位电路引起的单片机复位,因此在程序执行过程中在MCLR引脚施加了人工复位信号引起的复位。  与外接电
发表于 2020-01-20
外加电压检测复位电路设计方案
以PIC单片机为主要核心控制元件的LED模块书写显示屏设计
本文采用PIC 16F877A单片机为主要核心控制元件,设计了一个32×32 LED“ title=”LED“》LED” TItle=“LED”》LED“ TItle=”LED“》LED点阵模块的书写显示屏。它主要由光笔模块和点阵显示模块组成,光笔模块利用光敏电阻的光电特性,实现微亮检测功能。光笔反馈信号经放大器LM324比较后,送给单片机处理。32×32点阵显示模块、驱动模块由74HC595外设驱动阵列和8位串行输入/输出移位寄存器ULN2803A组成。光笔通过显示屏微亮扫描寻找坐标值,按键和LED指示灯可实现“点亮、划亮、反显、整屏擦除、笔画擦除、连写多字、对象拖移”等书写显示功能。系统系统总体
发表于 2020-01-20
以PIC单片机为主要核心控制元件的LED模块书写显示屏设计
以PIC单片机为核心的步进电机自适应控制技术研究
),投影仪、数码摄像机、放像机(VCD、DVD等)、大型望远镜、卫星天线定位系统、医疗器械、条码扫描仪以及各种可控机械工具等等。随着经济的发展,技术的进步和电子技术的发展,步进电机的应用领域更加广阔,同时也对步时电机的运行性能提出了更高的要求。本文就采用当前流行的PIC单片机来对步进电机进行控制以及自适应控制技术在步进电机中的应用进行了研究和讨论。2、自适应控制原理2.1系统原理框图图1所示为模型参考自适应控制系统原理框图。从图中我们可以看出与典型的反馈控制系统的不同之处是在图1中增加了参考模型和自适应机构。在自适应控制系统中,当偏差信号e(t)=x(t)-y(t)进入自适应控制回路后,经运算产生准实时的调整作用,从而改变控制器的参数
发表于 2020-01-20
以PIC单片机为核心的步进电机自适应控制技术研究
小广播
何立民专栏 单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD。com。cn, Inc。 All rights reserved
白菜大全自动送彩金 PC蛋蛋机器人 棋牌正版送彩金 澳客彩票 棋牌正版送彩金 hg平台送彩金 澳客彩票 送彩金棋牌平台大全 免费送彩金可提款 博彩送彩金全讯网