不知道为什么,rs232串口可以正常通讯,485通讯的时候会出现乱码。

2020-01-27 11:33发布

用的STC12C5A60S2的单片机,
rs232和485是用同一个端口,用两个短路冒切换,
同一个程序,rs232通讯非常正常,但是有些板子485会出乱码,
出乱码的板子,我换过485芯片,换过485旁边的120欧姆电阻和104电容,都没有效果,还是乱码。
附上原理图,


(原文件名:1.jpg)


(原文件名:2.jpg)

不知道为什么会这样子,调了一天还没找到原因。
希望各位大哥帮帮忙啊。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
23条回答
gongnn
1楼-- · 2020-01-28 05:42
 精彩回答 2  元偷偷看……
gongnn
2楼-- · 2020-01-28 08:21
485反应不会那么快
zywh
3楼-- · 2020-01-28 11:35
还是不行...哎...

void SendData_1(unsigned char dat)
{
        RS_1 = 1;                        //使能发送
        Delay_us(1000);
        SBUF = dat;                        //Send current data
        while(!TI);                        //Wait for the previous data is sent 等待前一个转换结束
        TI = 0;                                //Clear TI flag,清除TI标志位
        Delay_us(1000);
        RS_1 = 0;                        //发送完毕置位使能接收
        Delay_us(1000);
}
PenGH
4楼-- · 2020-01-28 14:25
不知AB线有没有加上拉与下拉,如果没有,很有可能是这个原因。因为器件分别不了0,1

另个,加不加延,最多只是最后一个字节有总是,而且楼主的这样的发送: while(!TI);应当不要加延。因为转换时,肯定已经发送完成。而且,while(!TI)退出后,又执行了 TI=0这样的语句,时间是uS级,而485的开关速率应当比这个快。我想达到了纳秒级。
zywh
5楼-- · 2020-01-28 17:40
回复【10楼】PenGH  
不知ab线有没有加上拉与下拉,如果没有,很有可能是这个原因。因为器件分别不了0,1
另个,加不加延,最多只是最后一个字节有总是,而且楼主的这样的发送: while(!ti);应当不要加延。因为转换时,肯定已经发送完成。而且,while(!ti)退出后,又执行了 ti=0这样的语句,时间是us级,而485的开关速率应当比这个快。我想达到了纳秒级。
-----------------------------------------------------------------------

确实是没有加上啦下啦,估计老师设计的板子本身也有点问题。

现在的情况是,没有修改板子(没有上啦下拉),换个485转232的转换器就好了。。。(不知道那些不能用的485转232,加上啦下拉还能不能用)
PenGH
6楼-- · 2020-01-28 20:03
 精彩回答 2  元偷偷看……

一周热门 更多>