protous实验报告两个单片机之间的串行通信.pdf

约4页PDF格式手机打开展开

protous实验报告两个单片机之间的串行通信,两个单片机之间的串行通信 一、设计要求 在某个控制系统中有u1、u2这两个单片机?u1单片机首先将p1端口指拨开关数据载入sbuf?然后经由txd将数据传送给u?单片机?u?单片机将接收数据存入sbuf?再由sbuf载入累加器?并输出至p?端口?点亮相应端口的led。 二、实验所需元器件 单片机at89c51 瓷片电容...
编号:5-252994大小:572.15K
分类: CAD图纸

内容介绍

此文档由会员 dingpeng52 发布

两个单片机之间的串行通信



一、设计要求

在某个控制系统中有U1、U2这两个单片机?U1单片机首先将P1端口指拨开关数据载入SBUF?

然后经由TXD将数据传送给U?单片机?U?单片机将接收数据存入SBUF?再由SBUF载入累

加器?并输出至P?端口?点亮相应端口的LED。











二、实验所需元器件

单片机AT89C51 瓷片电容CAP-22pF 晶振CRYSTAL 电解电容CAP-ELEC

电阻RES 按扭BUTTON 发光二极管

LED-YELLOW

发光二极管LED?

RED

开关SWITCH 拨码开关DIPSW?S 发光二极管LED?

GREEN

发光二极管LED?

RED











三、电路原理图?



两个单片机之间的串行通信电路图









四、程序设计

这两个单片机均工作在半工状态?U?将P?端口的状态通过TXD发半空给U??而U?接收

U?的数据?然后控制P1端口的LED显示。因此?需编写两个不同的程序?其程序流程图如

下所示?





































Y



N









N



























单片机1开始

设置波特率

串行寄存器设置

启动TR

读拨入键值

载入SBUF发送

键值是否与前次相同

单片机2开始

串行寄存器设置

清除RI

启动TR

载入SBUF发送

数据暂存

数据输出到P1

结束

结束

设置波特率

是否接收到数据?

是否发送完毕? 五、C语言程序?



U1的C语言程序?

#include "reg51.h"

#define uint unsigned int

#define uchar unsigned char



void send(uchar state)

{

SBUF=state;

while(TI==0);

TI=0;

}

void SCON_init(void)

{

SCON=0x50;

TMOD=0x20;

PCON=0x00;

TH1=0xfd;

TL1=0xfd;

TI=0;

TR1=1;

ES=1;



}



void main()

{

P1=0xff;

SCON_init();

while(1)

{

send(P1);

}

}

U2的C语言程序?

#include "reg51.h"

#define uint unsigned int

#define uchar unsigned char

uchar state;

void receive()

{

while(RI==0)

state=SBUF;

RI=0;

}



void SCON_init(void)

{

SCON=0x50;

TMOD=0x20;

PCON=0x00;

TH1=0xfd;

TL1=0xfd;

RI=0;

TR1=1;



}



void main()

{

SCON_init();

while(1)

{

receive();

P1=state;

}

}