51单片机485有漏发现象

51单片机485有漏发现象,第1张

出现漏发现象,可能有以下几个原因:

1、程序设计问题:程序中没有正确处理好发送和接收数据的时间间隔或者没有正确设置发送和接收缓冲区大小等参数。

2、电路设计问题:电路中存在干扰源或者噪声源导致数据传输错误;电路中未加入必要的保护元件(如TVS二极管、光耦等)导致芯片损坏。

3、软硬件不匹配问题:使用不同厂家生产的芯片进行通讯时需要注意各自芯片之间的差异性,并根据具体情况选择合适的驱动方式和波特率等参数。

while(1)

{

SBUF=0x06 ;

while(!TI);

TI= 0;

}

注意选择波特率,校验,停止位,显示方式

这个问题很简单,用485通讯的话,思路如下

思路:

PC方面:可以用MSCOMM控件先发一个字符表示接收地址,后延迟1ms,(注意PC端在485通讯在字符发送过程中一定要加延迟,这是我多次测试的总结,如果是用调试助手的话,他内部代码已经加过延迟了,就不必考虑这个问题)再发控制指令,初学者建议直接用调试助手

单片机方面:首先对接收数据进行核对,如果不是本地地址,放弃,如果是本地地址,在检测命令是否正确,如果正确,做出处理后返回PC本地地址并发送命令

我举个例子教你怎么玩多站通讯,下面是我已经通过测试的一个程序

#include <reg51h> //选用晶振110592MHz

#include <absacch>

#define DATA51 DBYTE[0x80] //80H存数据

#define AddressID 0x31 //本机地址1

sbit RS485E=P3^7; //定义485的使能脚// RS5485E=0为接收状态 RS5485E=1为发送状态

sbit MAX485_DIR=P3^7;

main()

{

//通讯设置

SCON = 0xF0; //REN=1允许串行接受状态,串口工作模式3,SM2=1

TMOD|= 0x20; //定时器工作方式2

PCON|= 0x80; //波特率提高一倍

IP=0x10; //串口优先级高

// TH1 = 0xFD; //baud2 / reload value 19200、数据位8、停止位1。效验位无(110592)

TH1 = 0xf4; //fa // //baud2 / 波特率4800、数据位8、停止位1。效验位无 (110592M)

TL1 = 0xf4;

TR1 = 1; //开启定时器1

EA = 1; // 开总中断

ES = 1; //开串口中断

RS485E=0; // RS5485E=0为接收状态 RS5485E=1为发送状态

while(1);

}

void counter4(void) interrupt 4 using 2 //串口中断

{

while(RI==0);

RI=0;

if(SBUF==AddressID)

{

while(RI==0);

RI=0;

if(SBUF==0x01) //发送指令

{

MAX485_DIR=1; //开发送

SBUF=AddressID;

while(TI==0);

TI=0;

SBUF=0x6f; //发送o

while(TI==0);

TI=0;

SBUF=0x6b; //发送k

MAX485_DIR=0; //开接收

}

if(SBUF==0x00) //接收

{

//这里怎么处理就看你自己要怎么做了,你没要求,我也不好怎么写,就自己写吧

}

}

}

程序调试通过,可以直接套用

你已经用USB转成RS485,再将RS485转成TTL了,剩下的事就简单了,就把RS485TTL的RXD接到单片机RXD,把485TTL的TXD接到单片机的TXD上就行了。然后就要写程序了。电脑的USB转485线要安驱动程序,虚拟出一个串口来,电脑就可以用串口调试助手与单片机通信了。

首先了解你是要单项通信还双向的,

单项:分开主从机

PLC做发送,单片机开接收中断。或者单片机发送,PLC开接收中断

双向:

双向麻烦些,谁先发谁优先级高,PLC和单片机在无工作状态同时设为接收中断状态

当一方发送玩数据后,设置为接收中断。即可。

搞编程重要的程序框架。而不是细节问题,细节问题是自己慢慢弄,谁也帮不了你。PLC看手册。单片机看书去吧

用 传输的产品吧

485转TTL 的模块

单片机==TTL转485==485连接==485转TTL ==单片机

请看 武汉鸿伟光电

E485TTL RS-485/TTL有源转换器

E485TTL将TTL电平信号转换成两线半双工RS-485接口,外供+5V电源。

以上就是关于51单片机485有漏发现象全部的内容,包括:51单片机485有漏发现象、51单片机485通信有些问题请大神指教、向大神求助,有没有C语言的基于485的51单片机的主从应答的程序啊,就是主机向各个从机发送地址码要求应答等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9272714.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存