protous實(shí)驗(yàn)報告兩個單片機(jī)之間的串行通信.pdf
約4頁PDF格式手機(jī)打開展開
protous實(shí)驗(yàn)報告兩個單片機(jī)之間的串行通信,兩個單片機(jī)之間的串行通信 一、設(shè)計要求 在某個控制系統(tǒng)中有u1、u2這兩個單片機(jī)?u1單片機(jī)首先將p1端口指撥開關(guān)數(shù)據(jù)載入sbuf?然后經(jīng)由txd將數(shù)據(jù)傳送給u?單片機(jī)?u?單片機(jī)將接收數(shù)據(jù)存入sbuf?再由sbuf載入累加器?并輸出至p?端口?點(diǎn)亮相應(yīng)端口的led。 二、實(shí)驗(yàn)所需元器件 單片機(jī)at89c51 瓷片電容...
內(nèi)容介紹
此文檔由會員 dingpeng52 發(fā)布
兩個單片機(jī)之間的串行通信
一、設(shè)計要求
在某個控制系統(tǒng)中有U1、U2這兩個單片機(jī)?U1單片機(jī)首先將P1端口指撥開關(guān)數(shù)據(jù)載入SBUF?
然后經(jīng)由TXD將數(shù)據(jù)傳送給U?單片機(jī)?U?單片機(jī)將接收數(shù)據(jù)存入SBUF?再由SBUF載入累
加器?并輸出至P?端口?點(diǎn)亮相應(yīng)端口的LED。
二、實(shí)驗(yàn)所需元器件
單片機(jī)AT89C51 瓷片電容CAP-22pF 晶振CRYSTAL 電解電容CAP-ELEC
電阻RES 按扭BUTTON 發(fā)光二極管
LED-YELLOW
發(fā)光二極管LED?
RED
開關(guān)SWITCH 撥碼開關(guān)DIPSW?S 發(fā)光二極管LED?
GREEN
發(fā)光二極管LED?
RED
三、電路原理圖?
兩個單片機(jī)之間的串行通信電路圖
四、程序設(shè)計
這兩個單片機(jī)均工作在半工狀態(tài)?U?將P?端口的狀態(tài)通過TXD發(fā)半空給U??而U?接收
U?的數(shù)據(jù)?然后控制P1端口的LED顯示。因此?需編寫兩個不同的程序?其程序流程圖如
下所示?
Y
N
N
單片機(jī)1開始
設(shè)置波特率
串行寄存器設(shè)置
啟動TR
讀撥入鍵值
載入SBUF發(fā)送
鍵值是否與前次相同
單片機(jī)2開始
串行寄存器設(shè)置
清除RI
啟動TR
載入SBUF發(fā)送
數(shù)據(jù)暫存
數(shù)據(jù)輸出到P1
結(jié)束
結(jié)束
設(shè)置波特率
是否接收到數(shù)據(jù)?
是否發(fā)送完畢? 五、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;
}
}
一、設(shè)計要求
在某個控制系統(tǒng)中有U1、U2這兩個單片機(jī)?U1單片機(jī)首先將P1端口指撥開關(guān)數(shù)據(jù)載入SBUF?
然后經(jīng)由TXD將數(shù)據(jù)傳送給U?單片機(jī)?U?單片機(jī)將接收數(shù)據(jù)存入SBUF?再由SBUF載入累
加器?并輸出至P?端口?點(diǎn)亮相應(yīng)端口的LED。
二、實(shí)驗(yàn)所需元器件
單片機(jī)AT89C51 瓷片電容CAP-22pF 晶振CRYSTAL 電解電容CAP-ELEC
電阻RES 按扭BUTTON 發(fā)光二極管
LED-YELLOW
發(fā)光二極管LED?
RED
開關(guān)SWITCH 撥碼開關(guān)DIPSW?S 發(fā)光二極管LED?
GREEN
發(fā)光二極管LED?
RED
三、電路原理圖?
兩個單片機(jī)之間的串行通信電路圖
四、程序設(shè)計
這兩個單片機(jī)均工作在半工狀態(tài)?U?將P?端口的狀態(tài)通過TXD發(fā)半空給U??而U?接收
U?的數(shù)據(jù)?然后控制P1端口的LED顯示。因此?需編寫兩個不同的程序?其程序流程圖如
下所示?
Y
N
N
單片機(jī)1開始
設(shè)置波特率
串行寄存器設(shè)置
啟動TR
讀撥入鍵值
載入SBUF發(fā)送
鍵值是否與前次相同
單片機(jī)2開始
串行寄存器設(shè)置
清除RI
啟動TR
載入SBUF發(fā)送
數(shù)據(jù)暫存
數(shù)據(jù)輸出到P1
結(jié)束
結(jié)束
設(shè)置波特率
是否接收到數(shù)據(jù)?
是否發(fā)送完畢? 五、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;
}
}
TA們正在看...
- 2016中考總復(fù)習(xí)專題二:反比例中的存在性問題.doc
- 2016中考數(shù)學(xué)相似三角形壓軸題.doc
- 2016中考數(shù)學(xué)真題word版考點(diǎn)分類匯編36規(guī)律探索.doc
- 2016中考數(shù)學(xué)計算題專項(xiàng)訓(xùn)練.doc
- 2016中考浙教版科學(xué)全知識點(diǎn)匯總.doc
- 2016中考物理-比熱容四種典型計算題.doc
- 2016中考語文閱讀訓(xùn)練100天18資料含解析資料.doc
- 2016中考語文閱讀訓(xùn)練100天24資料含解析資料.doc
- 2016中考語文閱讀訓(xùn)練100天45資料含解析資料.doc
- 2016中考語文閱讀訓(xùn)練100天53資料含解析資料.doc