两个51单片机,两机的串口交叉连线,双机互发数据
来源:互联网 发布:JAVA http 多附件报文 编辑:程序博客网 时间:2024/06/09 19:38
串口通信是单片机和其它系统交换数据的主要形式。
上周有几位网友问到单片机双机通信的问题,做而论道为此特意设计了软件、硬件,进行了测试。
下列程序,经过编译、硬件仿真调试成功。
要点如下:
两个51单片机,两机的串口交叉连线,双机互发数据;
发送方大约每隔 1s 发送一个字节,内容递增(或递减);
接收方采用两位数据显示器显示收到的数据。
网友实验时,显示函数应该根据自己的设备进行改写。
下面的程序,既包括了发送功能,也包括了接收功能,也就是说:进行双机通信实验时,两个单片机使用同一个程序就可以。
//=========================================
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar Rbuf = 0;
uchar code dis_7[] = {
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, //共阴段码
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x00};
//段码表 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, off
//-------------------------------
void delay(uint k)
{
uint i, j;
for(i = 0; i < k; i++) for(j = 0; j < 200; j++);
}
//-------------------------------
void Display(uchar x)
{
P2 = 0xFF;
P0 = dis_7[x / 16]; //输出高四位
P2 = 0xFE; delay(2);
P2 = 0xFF;
P0 = dis_7[x % 16]; //输出低四位
P2 = 0xFD; delay(2);
}
//-------------------------------
void UART()interrupt 4
{
if(RI) {
RI = 0; //清除中断标志
Rbuf = SBUF;
}
if(TI) {
TI = 0; //清除中断标志
}
}
//-------------------------------
void main()
{
uchar t1, i;
SCON = 0x50; //串口工作在方式1
PCON &= 0x7F; //SMOD=0
TMOD = 0x20; //定时器1当做波特率发生器
TH1 = 0xFD; //初值, 9600 @ 11.0592MHz
TL1 = 0xFD;
TR1 = 1;
ES = 1;
EA = 1;
while (1) {
for (i = 0; i < 100; i++)//多次循环,便于观察与发送
Display(Rbuf); //显示收到的数据
SBUF = t1; //发送数据
P1 = ~t1; //本机显示
t1++;
// t1--;
}
}
//=========================================
上述程序,用PROTEUS仿真截图如下:
图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/9ce19408eae9bf9539c76374.html#
图中的两个单片机,都是使用上述的同一个程序。
题目网址:http://zhidao.baidu.com/question/129741635.html
- 两个51单片机,两机的串口交叉连线,双机互发数据
- 串口:交叉线与直连线的区别
- 串口:交叉线与直连线的区别
- 发一个51单片机的模拟串口代码
- 两单片机间的串口通信
- 51单片机的串口
- 51单片机双机通讯
- 51单片机的串口通讯
- 51单片机的串口参数
- 51单片机的串口通信
- 单片机串口收发数据
- 51单片机串口通信使用类似printf函数的两种办法
- 51单片机串口通信使用类似printf函数的两种办法
- 单片机串口通信中换行的两种方法
- 单片机串口通信中换行的两种方法
- 双机(51单片机)串行通信最基本的方法
- 51 单片机 C 语言串行双机通信的问题
- 单片机怎么擦除程序,串口一直发数据来 STC-ISP一下载就关闭
- 片外RAM数据排序
- block的循环引用
- 按键控制计数,用两个数码管显示0到99。十位数为0的时候,显示为空白
- CentOS6.5网络配置出错:Device not managed by NetworkManager or unavailable
- 显示计时的时间,最大显示为99
- 两个51单片机,两机的串口交叉连线,双机互发数据
- sass使用记录
- P1.1, P1.2做输入, P1.3做输出, 控制一个5V继电器
- virtualbox安装linux配置安装程序源
- 单片机蜂鸣程序 汇编
- 开关控制的单片机流水灯 汇编
- mac上用文本写html5的注意点
- 八进制数转换为二进制数 -80x86汇编语言
- 定时顺序控制程序 -51单片机