MAX485的功能Word格式.docx
- 文档编号:16227168
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:7
- 大小:39.57KB
MAX485的功能Word格式.docx
《MAX485的功能Word格式.docx》由会员分享,可在线阅读,更多相关《MAX485的功能Word格式.docx(7页珍藏版)》请在冰豆网上搜索。
在与单片机连接时接线非常简单。
只需要一个信号控制MAX485的接收和发送即可。
同时将A和B端之间加匹配电阻,一般可选100Ω的电阻。
引脚(管脚)图及工作电路
计算机是不能直接识别RS485通讯信号的。
我简单地讲一下,这应该是两个电路,一个是单片机的电路先将RS485协议定的信号,通过MAX485接收。
MAX485是通过两个引脚RE(2脚)和DE(3脚)来控制数据的输入和输出。
当RE为低电平时,MAX485数据输入有效;
当DE为高电平时,MAX485数据输出有效。
在半双工使用中,通常可以将这两个脚直接相连,由单片机输出的高低电平控制一块7404让MAX485在接收和发送状态之间转换并且通过7404成RS485到TTL的电平转换。
另一个电路就简单了MAX485加MAX232即可完成RS485到PC机的RS232数据转换了。
程序就用普通的单片机串行程序就行。
MAX引脚(管脚)图及工作电路(3张)
AX485是用于RS-485与RS-422通信的低功耗收发器。
MAX485的驱动器摆率不受限制,可以实现最高2.5Mbps的传输速率。
这些收发器在驱动器禁用的空载或满载状态下,吸取的电源电流在120μA至500μA之间。
驱动器具有短路电流限制,并可以通过热关断电路将驱动器输出置为高阻状态。
接收器输入具有失效保护特性,当输入开路时,可以确保逻辑高电平输出。
具有较高的抗干扰性能。
MAX485是市面上最为常见的RS422芯片,亦是用量最大的RS422芯片,性价比高,优质,供货稳定是大部分厂家采用它的主要原因。
485与89C52图,供参考。
赞同
12
|评论485-1脚-----------》MCUp3.0
485-2,3脚---------》MCUp3.3作为收发数据的使能短,H为发数据L为收数据
485-4脚-----------》MCUP3.1
485-5脚-----------》GND
485-6脚-----------》A
485-7脚-----------》B
485-8脚-----------》VCC485的多机通信//-----------------------函数声明,变量定义---------------------
#include<
reg51.h>
sbitRE_DE=P1^0;
#defineCOUNT10//定义接收缓冲区大小
#defineSlaver_NUM10
unsignedcharbdataflag;
//在可位寻址去定义一个标志变量
sbittime_over_flag=flag^0;
//接收超时标志
unsignedcharbuffer[COUNT];
//定义缓冲区
unsignedcharpoint;
//定义缓冲区位置指示
unsignedcharSlave_AD[Slaver_NUM];
//定义有效地址存放区
unsignedcharADD_num;
//有效地址个数
unsignedcharidatacount_10ms;
//用于表示有多少次10ms中断
unsignedcharidatasend_data[7]={
0x31,0x32,0x33,0x34,0x35,0x36,0x37};
//与定义发送数据,共7位
voidUART_init();
//串口初始化函数
voidCOM_send(void);
//串口接收函数
unsignedcharCLU_checkdata(void);
//计算校验位函数
//---------------------------------------------------------------
//函数名称:
UART_init()串口初始化函数
//函数功能:
在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s
//串口接收中断允许,发送中断禁止,设定定时器中断允许
voidUART_init()
{
//初始化串行设置
SCON=0x58;
//选择串口工作方式为1,打开接收允许,TB8=1
TMOD=0x21;
//定时器1工作在方式2,定时器0工作在方式1
TR1=1;
//启动定时器T1
ES=1;
//允许串行口中断
PS=1;
//设计串行口中断优先级
//初始化定时器1
TH1=0xfd;
//实现波特率9600(系统时钟11.0592MHZ)
ET1=0;
//定时器1中断禁止
}
timer0_init()初始化定时器0
设置timer0工作模式
voidtimer0_init()
time_over_flag=0;
count_10ms=0;
ADD_num=0;
TL0=0x0F0;
//T0用于产生10ms的中断
TH0=0x0D8;
//50次T0中断产生1次超时溢出
ET0=1;
//允许定时器0中断
system_init()系统初始化
调用串口、定时器初始化函数,完成系统初始化
voidsystem_init(void)
//系统总设置
UART_init();
timer0_init();
EA=1;
//单片机中断允许
com_interrup()串口接收中断处理函数
接收包括起始位"
S"
在内的十位数据到数据缓冲区
com_interrupt(void)interrupt4using3
unsignedcharRECEIVR_buffer;
if(RI)//处理接收中断
{RI=0;
//清除中断标志位
RECEIVR_buffer=SBUF;
//接收串口数据
if(point==0)//如果还没有接收到起始位
{
if(RECEIVR_b
本文来自:
高校自动化网(W)详细出处参考(转载请保留本链接):
uffer==0xFE)
//判断是否起始标志位
buffer[point++]=RECEIVR_buffer;
//把接收到的数据放入接收缓存区
}
else
point=0;
//不是,继续等待起始位
}
elseif(point>
0&
&
point<
10)
//判断是否接收够十位数据
//不够,把接收到的数据放入接收缓存区
elseif(point==10)
if(RECEIVR_buffer==0xEF)
//判断结束标志位是否正确
buffer[point]=RECEIVR_buffer;
//把接收到的数据放入接收缓存区
Slave_AD[ADD_num++]=buffer[2];
//把接收到的地址放到地址存储器
//表示该地址有有效设备
elsepoint=0;
//缓冲区已满,清除缓存区内数据重新接收
if(TI)
//串口发送中断
TI=0;
//清除发送中断
timer0_interrup()
定时器T0中断服务程序
//函数说明:
T0枚10ms中断一次,连续中断50次置time_over_flag=1;
timer0_interrupt(void)interrupt1using2
{
count_10ms++;
if(count_10ms==50)
ET0=0;
//关闭定时器T0中断
TR0=0;
//停止定时器T0
time_over_flag=1;
//设置接收超时标志
count_10ms=0x00;
//10ms计数器复位
else
TL0=0x0F0;
//重装定时器初始值
TH0=0x0D8;
COM_send()串口发送函数
把数据缓冲区的十位数据发送出去
voidCOM_send(void)
RE_DE=1;
//设置MAX483进入发送状态
for(point=0;
=10,TI=1;
point++)
//连续发送十位数据
//把缓存区的数据都发送到串口
SBUF=buffer[point];
TI=0;
RE_DE=0;
//设置MAX483进入接收状态
write_buffer()
写发送缓冲区十位数据
voidwrite_buffer(unsignedcharslaver_add)
unsignedchari;
TB8=1;
//打开多机通信方式
buffer[0]=0xFE;
buffer[1]=slaver_add;
for(i=2;
i<
9;
i++)
buffer[i]=send_data[i-2];
buffer[9]=0xEF;
主函数
调度个子函数,完成通信过程
voidmain(void)
unsignedchari=0;
system_init();
//系统初始化
do{
//查旬0到10好地址有没有对应设备
write_buffer(i++);
//写查询第i号设备的发送信息
COM_send();
//调用发送函数,完成发送
//完成一次查询,重新初始定时器0,准备下一次查询
while(time_over_flag&
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MAX485 功能