文档详情

《单片机C语言应用技术》课件_第6章.ppt

发布:2025-02-07约3.27万字共142页下载文档
文本预览下载声明

模块6串行口通信技术

任务11单片机之间双机通信

任务12单片机和PC之间一对一通信

任务13基于I2C串行总线的多点温度测量

习题6

单片机广泛应用于工业控制领域,通过串行通信不但可

以实现将单片机的数据传输到计算机端,而且也能实现计算

机对单片机的控制。由于其所需电缆线少,接线简单,所以

在远距离传输中得到了广泛的运用。

本模块从开发单片机之间双机通信的应用程序入手,介

绍51单片机的串行口内部结构及其使用方法,然后介绍常用

的I2C总线及其应用。

任务11单片机之间双机通信

在两个51单片机之间,通过其串行口实现双方的数据交

换在实践中是很常见的,硬件实现方便,软件编程也很简单。

1.任务目的

了解51系列单片机串行口的结构,掌握其使用方法。

2.任务要求

发送方向接收方发送数据,接收方接收数据并通过8个

LED发光二极管以二进制形式显示出来。

3.硬件电路

硬件连接时,将双方的RXD(P3.0)和TXD(P3.1)交叉互连

即可,如图6.1所示。实际上,本任务仅涉及单向通信,所以

只需将发送方的TXD连接至接收方的RXD即可。

图6.1双机通信硬件连接图

4.程序设计

软件编程分为接收方和发送方。发送方程序如下:

#includereg51.h

//下面定义将发送给接收方的数据

unsignedcharcode

num[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};

voiddelay(intms);

voidmain()

{

unsignedchari;

TMOD=0x20;// TMOD=00100000B,定时器T1工作

于方式2

SCON=0x40;// SCON=01000000B,串口工作方式1

PCON=0x00;// PCON=00000000B,波特率9600

TH1=0xfd;//根据规定给定时器T1赋初值

TL1=0xfd;//根据规定给定时器T1赋初值

TR1=1;//启动定时器T1

while(1)

{

for(i=0;i8;i++)

{

SBUF=num[i];//发送数据i

while(TI==0){}//等待数据发送完毕

TI=0;//准备下一次发送

delay(400);

}

}

}

voiddelay(intms)

{

inti,j;

for(i=0;ims;i++)

for(j=0;j120;j++);

}

在编写软件之前,应该确定双方通信的波特率。对于51

系列的双机通信,典型的应用是采用11.0592MHz的芯片,

波特率设定为9600b/s。在程序里面,根据波特率首先设定

定时器的初始值,然后设定串行口的工作模式。

小提示

通信双方的波特率和串口的工作方式应设定一致。

主程序中,for循环体一次发送一个字节的数据,整个for

循环发送8个字节的预定义数据。程序里面串口采用的是查询

方式,通过语句while(TI==0){}查询TI的状态,可以了解数

据是否发送完成。TI为0时,数据未发送完成;TI为1时,发

送结束。为了能够再次发送,可通过语句TI=0;将串口设定

为空载状态。

接收方程序如下:

#includereg51.h

voidmain(void)

{

TMOD=0x20;//定时器T1工作于方式2

SCON=0x50;// SCON=01010000B,串口工作方式1,

允许接收(REN=1)

PCON=0x00;// PCON=00000000B,波特率9600

TH1=0

显示全部
相似文档