找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3911|回复: 16
收起左侧

求助!单片机和电脑进行485通讯,电脑接收到乱码!

  [复制链接]
ID:735148 发表于 2020-6-9 16:35 | 显示全部楼层 |阅读模式
1黑币
刚拿到一块板子,准备写个小程序测试一下485.谁知道,怎么都调不出来!
单片机型号:STC12C5608AD
程序:
  1. #include <STC12C5630AD.H>

  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar flag = 1;
  5. sbit LED = P1^6;

  6. void UartInit ( )                //9600bps@11.0592MHz
  7. {
  8.         PCON &= 0x7F;                //波特率不倍速
  9.         SCON = 0x50;                //8位数据,可变波特率
  10.         AUXR &= 0xBF;                //定时器1时钟为Fosc/12,即12T
  11.         AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
  12.         TMOD &= 0x0F;                //清除定时器1模式位
  13.         TMOD |= 0x20;                //设定定时器1为8位自动重装方式
  14.         TL1 = 0xFD;                //设定定时初值
  15.         TH1 = 0xFD;                //设定定时器重装值
  16.         ET1 = 0;                //禁止定时器1中断
  17.         TR1 = 1;                //启动定时器1
  18.         ES = 1;
  19.         EA = 1;
  20. }
  21. void Uart_interrupt ( ) interrupt 4
  22. {
  23.         TI = 0;
  24.         flag = 0;
  25.        
  26. }
  27. void main ()
  28. {
  29.         UartInit( );
  30.         while(1)
  31.         {
  32.                 if( flag == 1)
  33.                 {
  34.                         SBUF = 0x20;
  35.                 }
  36.                 if( flag == 0)
  37.                 {
  38.                         LED = 0;
  39.                 }
  40.         }
  41. }
复制代码
电路原理图:
另外,,485芯片是6LB184,单片机是5V单片机,因此485芯片控制引脚连接的也是 5V ,不知道有没有影响。波特率的初始化,我是从 STC 的下载程序上找到的。试了很多个初始化了。都不行

这是485部分的原理图

这是485部分的原理图

最佳答案

查看完整内容

你好! 1、单片机晶振采用的多少 2、上位机和单片机波特率要一致 3、485的DE控制要对 4、上位机485接收采用的什么模块 5、如需帮助,可以联系我
回复

使用道具 举报

ID:735148 发表于 2020-6-16 08:05 | 显示全部楼层
已经解决了。原因是晶振没有起振。
回复

使用道具 举报

ID:735148 发表于 2020-8-7 16:49 | 显示全部楼层
STC烧写程序时特别注意:选择使用内部时钟是默认勾选的。一定要仔细看
回复

使用道具 举报

ID:648281 发表于 2020-6-9 16:35 | 显示全部楼层
你好!
1、单片机晶振采用的多少
2、上位机和单片机波特率要一致
3、485的DE控制要对
4、上位机485接收采用的什么模块
5、如需帮助,可以联系我
回复

使用道具 举报

ID:764088 发表于 2020-6-10 09:03 | 显示全部楼层
1)485 是半双工的,即,发送时,不能接收,所以max485 的RE,DE 不要接到 VCC ,另加一个读写控制脚来选择发送,接收;发送完毕,立即换为接收。
2)发送,接收方的波特率等要相同
回复

使用道具 举报

ID:735148 发表于 2020-6-10 10:06 | 显示全部楼层
MikeCai 发表于 2020-6-10 09:03
1)485 是半双工的,即,发送时,不能接收,所以max485 的RE,DE 不要接到 VCC ,另加一个读写控制脚来选择 ...

只用来发送,不准备用来接收也不可以直接接VCC么
。还有就是A B口需要接上拉电阻和下拉电阻么?不接的话有什么影响,可不可以通过软件解决
回复

使用道具 举报

ID:450608 发表于 2020-6-10 13:25 | 显示全部楼层
120欧电阻呢
回复

使用道具 举报

ID:735148 发表于 2020-6-11 13:36 | 显示全部楼层

短距离也需要匹配120Ω电阻吗?
回复

使用道具 举报

ID:735148 发表于 2020-6-11 14:28 | 显示全部楼层

刚才焊上去试了。没用。问题不在这
回复

使用道具 举报

ID:776252 发表于 2020-6-11 15:19 | 显示全部楼层
波特率是不是不同步,波特率不同步会收到乱码
回复

使用道具 举报

ID:593706 发表于 2020-6-11 18:05 | 显示全部楼层
串口芯片的2、3脚是收发控制脚,这个脚接收的时候必须是低电平,发送的时候必须是高电平,楼主把23脚直接接VCC,芯片处于发送状态,怎么能正常接收哪?
回复

使用道具 举报

ID:911776 发表于 2021-5-13 17:09 | 显示全部楼层
饮酒作乐 发表于 2020-6-16 08:05
已经解决了。原因是晶振没有起振。

这个怎么排查哦。我现在也是收到乱码
回复

使用道具 举报

ID:99525 发表于 2022-5-25 16:08 | 显示全部楼层
RE_DE接VCC,那么整条485只有你这个站点可以发,别的所有站点都只能收!
回复

使用道具 举报

ID:899981 发表于 2022-5-25 16:21 | 显示全部楼层
有那种不需要控制脚的485IC
回复

使用道具 举报

ID:403593 发表于 2022-5-27 19:41 | 显示全部楼层
把AB两端的接线倒换一下试试,有可能是接错了。 这个必须得A接A,B接B
回复

使用道具 举报

ID:1013784 发表于 2022-5-27 22:43 | 显示全部楼层
看看波特率设置对不对,还有就是485的供电电压
回复

使用道具 举报

ID:1030564 发表于 2022-5-29 00:21 | 显示全部楼层
看下晶振是否起振芯片是否正常启动了,对一下上下位机的波特率。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表