protous实验报告两个单片机之间的串行通信.pdf
约4页PDF格式手机打开展开
protous实验报告两个单片机之间的串行通信,两个单片机之间的串行通信 一、设计要求 在某个控制系统中有u1、u2这两个单片机?u1单片机首先将p1端口指拨开关数据载入sbuf?然后经由txd将数据传送给u?单片机?u?单片机将接收数据存入sbuf?再由sbuf载入累加器?并输出至p?端口?点亮相应端口的led。 二、实验所需元器件 单片机at89c51 瓷片电容...
内容介绍
此文档由会员 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;
}
}
一、设计要求
在某个控制系统中有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;
}
}