串行通信举例
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
U2
9 R SRG8
8 C1/->
1
3
2&
1D
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
//主程序
main() {
//延时子程序 delay() { uint j; uchar k; for(j=0;j<50000;j++)
for(k=0;k<10;k++); }
//主程序 main() SCON=0X50; PCON=0X80; TMOD=0X20; TH1=0XFF; TL1=0XFF; TR1=1; while(1) {
29 30 31
PSEN ALE EA
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
一、串并转换(方式0运用)
目的:将串行数据转换为并行数据输出。 硬件电路:
+5V
U1
19 XTAL1 18 XTAL2
9 RST
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
39 38 37 36 35 34 33 32
硬件电路
U1
39 38 37 36 35 34 33 32
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
21 22 23 24 25 26 27 28
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
10 11 12 13 14 15 16 17
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
XTAL1 19
U2
19 XTAL1
XTAL2 18 18 XTAL2
RST 9
9 Leabharlann BaiduST
PSEN ALE EA
29 30 31
39 38 37 36 35 34 33 32
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
21 22 23 24 25 26 27 28
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
while(1) { while(!RI); RI=0; P0=0xff; P2=SBUF; delay(); SBUF=0xf9;
while(!TI); TI=0; P0=0xf9; P2=0XFF;
delay();
} }
多机通信
硬件电路
a1 a2
a3 a4 a5
a6
a7
甲机
U1
19 XTAL1
#define uint unsigned int
//延时子程序 delay()
{ uint j; uchar k; for(j=0;j<50000;j++)
for(k=0;k<10;k++); }
//主程序 main() { SCON=0X50; PCON=0X80; TMOD=0X20; TH1=0xff; TL1=0xff; TR1=1;
for(k=0;k<10;k++); }
//主程序 main() { SCON=0x00; while(1) { SBUF=0xc0; delay(); } }
仿真
二、双机通信
两单片机都工作于方式1;
将甲方串口的发送端和乙方串口的 接收端连接,甲方串口的接收端和 乙方串口的发送端连接。
实验观察现象:甲方先发送 “0”的显示码,乙方接收到后, 再发送“1”的显示码作为应答, 再发送“0”的显示码,如此循 环。
//串行通信:串行信号变为并行信号 //包含头文件 #include <reg51.h> //宏定义 #define uchar unsigned char
#define uint unsigned int
//延时子程序 delay() { uint j; uchar k; for(j=0;j<50000;j++)
SBUF=0XC0; WHILE(!TI); TI=0; P0=0XC0; P2=0XFF; delay(); while(!RI); RI=0; P2=SBUF; P0=0XFF; delay(); }}
//乙方通信程序 //包含头文件 #include <reg51.h> //宏定义 #define uchar unsigned char
18 XTAL2
9 RST
29 30 31
PSEN ALE EA
a1 a2
a3 a4 a5 a6 a7
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89C51
d1 d2 d3 d4 d5 d6 d7
21 22 23 24 25 26 27 28
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
4 5 6 10 11 12 13 74LS164
AT89C51
74ls164
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
//two_cpu_1.c //双机通信实验 //包含头文件 #include<reg51.h> //宏定义 #define uchar unsigned char #define uint unsigned int