您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 基于485总线的双机通信实验程序和电路图
实验报告课程名称现场总线(实验三)专业班级电信1012学号2010118504150学生姓名朱胜强指导教师范玉刚实训地点德信楼2013年5月10日实训成绩批阅教师日期基于485总线的双机通信实验一、实验目的1、理解基于485总线的51系列单片机通讯原理。2、理解现场仪表的通讯过程二、实验内容1、使用串口实现单片机1与单片机2的数据通信,实现互相控制。要求按下单片机1系统板上的按键,单片机2系统板上LED点亮。三、实验环境1、编程软件keil2、仿真软件proteus四、实验原理MAX487芯片用于电平转换,实现RS487电平与TTL电平(单片机)的互相转换。本次实验单片机之间通信不使用握手信号,只需3根信号线:TXD(发送线),RXD(接收线),GND(地线)。单片机之间通信的原理图如图1所示,当单片机1(主机)查询外接控制开关S3按下时,单片机1发送一个自定义信号给单片机2(从机),单片机2收到信号后点亮指示灯LED4。图1单片机之间通信的原理图五、实验过程实验程序:#includereg52.h#defineucharunsignedchar//宏定义#defineunitunsignedint//宏定义sbitanjian=P1^0;//定义按键的位sbitre=P1^1;//MAX487的读写使能控制位unsignedcharrec_c;ucharnum;ucharcodetable[]={0xff,0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示数//延时函数voiddelay(unitz){unitx,y;for(x=z;x0;x--);for(y=110;y0;y--);}//主函数voidmain(){TMOD=0x20;//定时器1工作方式2TH1=0xFD;//11.0592Mhz9600bpsTL1=0xFD;TR1=1;//启动定时器1SCON=0x50;//模式1:8位数据可变波特率,允许接收EA=1;//打开总中断ES=1;//打开串口1中断re=0;P0=0xff;while(1){if(anjian==0)//判断按键{delay(5);if(anjian==0)//按键消抖动{while(!anjian);re=1;//使MAX487能写num=num+1;if(num==11){num=0;}ES=0;//关串口中断SBUF=table[num];//发送值while(!TI);//判断发送是否完成TI=0;//发送完成标志位清零ES=1;//打开串口中断re=0;}}}}//中断接收函数voidrec()interrupt4{RI=0;//清除串口中断接收标志位rec_c=SBUF;//读串口缓冲区值P0=rec_c;//数码管显示}实验仿真电路图:六、体会与总结这个实验应该是这几个实验中最难的一个了,也是我费了很长的时间才出来的结果,到最后的结果页是发送和接收这个功能是正常了,就是发送自己这边的数码管显示会变成8,对方的接收是正常。对这个实验的感觉就是485总线比232要难的多。这也是因为485总线的强大所在。
本文标题:基于485总线的双机通信实验程序和电路图
链接地址:https://www.777doc.com/doc-5288546 .html