实训成绩
批阅教师
日 期
实 验 报 告
课程名称 现场总线(实验三)
专业班级 电信1012
学 号 2010118504150
学生姓名 朱胜强
指导教师 范玉刚
实训地点 德信楼
2013 年 5 月 10 日
基于485总线的双机通信实验
一、 实验目的
1、 理解基于485总线的51系列单片机通讯原理。
2、 理解现场仪表的通讯过程
二、实验内容
1、 使用串口实现单片机1与单片机2的数据通信,实现互相控制。
要求
对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗
按下单片机1系统板上的按键,单片机2系统板上LED点亮。
三、 实验环境
1、编程软件keil
2、仿真软件proteus
四、 实验原理
MAX487芯片用于电平转换,实现RS487电平与TTL电平(单片机)的互相转换。本次实验单片机之间通信不使用握手信号,只需3根信号线:TXD(发送线),RXD(接收线),GND(地线)。单片机之间通信的原理图如图1所示,当单片机1(主机) 查询外接控制开关S3按下时,单片机1发送一个自定义信号给单片机2(从机),单片机2收到信号后点亮指示灯LED4。
图1 单片机之间通信的原理图
5、 实验过程
实验程序:
#include
#define uchar unsigned char //宏定义
#define unit unsigned int //宏定义
sbit anjian=P1^0; //定义按键的位
sbit re=P1^1; //MAX487的读写使能控制位
unsigned char rec_c;
uchar num;
uchar code table[]={0xff,0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管显示数
//延时函数
void delay(unit z)
{
unit x,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
SCON=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;
}
}
}
}
//中断接收函数
void rec() interrupt 4
{
RI=0; //清除串口中断接收标志位
rec_c=SBUF; //读串口缓冲区值
P0=rec_c; //数码管显示
}
实验仿真电路图:
6、 体会与
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
这个实验应该是这几个实验中最难的一个了,也是我费了很长的时间才出来的结果,到最后的结果页是发送和接收这个功能是正常了,就是发送自己这边的数码管显示会变成8,对方的接收是正常。对这个实验的感觉就是485总线比232要难的多。这也是因为485总线的强大所在。