当前位置:
文档之家› 基于RS232的双机通信实验程序和电路图
基于RS232的双机通信实验程序和电路图
SCON=0x5; //模式1:8位数据可变波特率,允许接收
EA=1; //打开总中断
ES=1;//打开串口1中断
while(1)
{
if(anjian==0)//判断按键
{
delay(5);
if(anjian==1)//按键消抖动
{
num=num+1;
}
if(num==11)
{
num=0;
}
P0=table[num];//读数组中的值
实训成绩
批阅教师
日期
实验报告
课程名称现场总线技术及其应用
专业班级电信1012
学号2010118504150
学生姓名朱胜强
指导教师范玉刚
实训地点德行楼
2013年5月10日
基于RS232的双机通信实验
一、实验目的
1、理解串行通信的基本概念和51系列单片机的串行通信接口结构。
2、 理解现场仪表的通讯过程
二、实验内容
1、 使用串口实现单片机1与单片机2的数据通信,实现互相控制。要求按下单片机1系统板上的按键,单片机2系统板上LED点亮。
三、实验环境
1、编程软件keil
2、仿真软件proteus
四、实验原理
MAX232芯片用于电平转换,实现RS232电平与TTL电平(单片机)的互相转换。本次实验单片机之间通信不使用握手信号,只需3根信号线:TXD(发送线),RXD(接收线),GND(地线)。单片机之间通信的原理图如图1所示,当单片机1(主机)查询外接控制开关S3按下时,单片机1发送一个自定义信号给单片机2(从机),单片机2收到信号后点亮指示灯LED4。
{
TMOD=0x20; //定时器1工作方式2
TH1=0xFD; //11.0592Mhz 9600bps
TL1=0xFD;
TR1=1;//启动定时器1
SCON=0x5; //模式1:8位数据可变波特率,允许接收
EA=1; //打开总中断
ES=1;//打开串口1中断
}
//中断接收函数
voidrec() interrupt 4
//延时函数
void delay(unit z)
{
unitx,y;
for(x=z;x>0;x--);
for(y=110;y>0;y--);
}
//主函数
void main()
{
TMOD=0x20; //定时器1工作方式2
TH1=0xFD; //11.0592Mhz 9600bps
TL1=0xFD;
TR1=1;//启动定时器1
图1 单片机之间通信的原理图
五、实验过程
单片机1的程序:
#include<reg52.h>
#define uchar unsigned char//宏定义
#deห้องสมุดไป่ตู้ine unit unsigned int//宏定义
sbit anjian=P1^0;//定义按键的位
ucharnum;
uchar codetable[]={0xff,0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管显示数
SBUF=table[num]; //发送值
}
TI=0;//清除发送中断标志位
}
}
单片机2的程序:
#include<reg52.h>
#define uchar unsigned char//宏定义
#define unit unsigned int //宏定义
unsigned char rec_c;
void main()
{
RI=0;//清除串口中断接收标志位
rec_c=SBUF;//读串口缓冲区值
P1=rec_c;//数码管显示
}
六、实验结论
在单片机跟单片机之间通过MAX232通信的时候最重要的就是要设置好两个单片机的串口通信的初始化,只有确保了初始化的正确,后面的工作才能顺利的进行。在硬件的连接上,两片MAX232之间的连接要将TXD和RXD相连,这样才能实现两个单片机之间的通信。