购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.8.1 串口的应用

AVR单片机的串行通信口(RXD和TXD)除了接在USB到串行数据的转换芯片上之外,还作为Arduino的0号和1号引脚,在板上有明确的标识,如图1-55所示。

本节实例采用两条杜邦线将两块Arduino板的通信口交叉连起来,其中一块Arduino每隔1s发送一个值为0x55的字节,另一块Arduino收到该字节后控制13号引脚的LED转换状态。

图1-55 Arduino板上的串行通信口

1.硬件连接

本实验的硬件连接非常简单,直接将一块开发板的TX0连接另一块板的TX1,而TX1连接另一块板的TX0,如图1-56所示。

图1-56 串口通信实例电路

2.程序代码

由于实例用到了两块Arduino,因此程序设计分为发送端和接收端两部分,先来看看发送端的程序,实例要求发送端每隔1s发送一个值为0x55的字节。

/****************************************************

串行通信实例程序--发送端

每隔1s发送一个值为0x55的字节

初始化部分estup()函数

******************************************************/

void setup()

{

//设置串口波特率为9600bps

Serial.begin(9600);

}

/*****************************************************

执行部分——(loop)函数

*****************************************************/

void loop()

{

//延时1s,bdlay函数

delay(1000);

//输出0x55)

serial.print(0x55,BYTE);

}

接收端程序的任务是收到0x55后转换13号引脚的状态,代码如下:

This example code is in the public domain.

******************************************************/

int ledflag; //LED状态

/******************************************************

初始化部分estup()函数

******************************************************/

void setup()

{

//设置串口波特率为9600bps

Serial.begin(9600);

//设置13号引脚为输出

Pinmode(13,OUTPUT);

}

/*****************************************************

执行部分——(loop)函数

*****************************************************/

void loop()

{

byte rxdata;

if(serial.availablew())

{

//获取收到的数据

RXDate=Serial,read();

//判断收到的数据是否是0x55

if(RXData==0x55)

{

if(ledflag==0)//判断LED状态

{

ledflag=1;

digitalwrite(13,HIGH);

}

else

{

ledflag=0;

digitalwrite(13,LOW);

}

}

}

}

读者在开始学习Arduino串口通信时,可以用计算机与 Arduino 进行通信,原理上是一样的。在Arduino开发环境下带有Serial Monitor(串口监视窗)功能 。可方便地进行串口通信调试,界面如图1-57所示。

图1-57 Serial Monitor(串口监视窗)界面 z8Mo5TCgDT9roCAicyjvMp31UoqRkA4b9FxaZ73o+ksdtsqN0mkc6T5YUh0Br+0w

点击中间区域
呼出菜单
上一章
目录
下一章
×