- 1、本文档共142页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
模块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
文档评论(0)