找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11263|回复: 2
打印 上一主题 下一主题
收起左侧

UART转RS485通信 485转UART(单片机转485通信模块)

[复制链接]
跳转到指定楼层
楼主
ID:280979 发表于 2019-4-11 10:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【简要说明】
一、尺寸:全长37mm25mm15mm
二、主芯片:MAX485通讯芯片
三、工作电压:直流3.3V5V
四、特点:
1、电路简单实用,接线简单。
2、一端与485模块连接,另一端可直接和单片机连接。
3、可以单片机与单片机通讯。
4、可UART 485设备通讯。
5、电路小巧,方便固定安装。
6、通信距离最大1200米。
7、工作温度-20°~50°。
8RS-485的数据最高传输速率为10Mbps
9RS-485最大的通信距离约为1200m,最大数据传输速率10Mb/S,传输速率与传输距离成反比,在100Kb/S的传输速率下,才可以达到最大的通信距离,如果需传输更长的距离,需要加485中继器。RS-485总线一般最大支持32节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。
【小知识】
RS232,RS422,RS485是电气标准,主要区别就是逻辑如何表示。   
    RS232使用12V,0,-12V电压来表示逻辑,(-12V表示逻辑112V表示逻辑0),全双工,最少3条通信线(RX,TX,GND),因为使用绝对电压表示逻辑,由于干扰,导线电阻等原因,通讯距离不远,低速时几十米也是可以的。   
RS422,在RS232后推出,使用TTL差动电平表示逻辑,就是两根的电压差表示逻辑,RS422定义为全双工的,所以最少要4根通信线(一般额外地多一根地线),一个驱动器可以驱动最多10个接收器(即接收器为1/10单位负载),通讯距离与通讯速率有关系,一般距离短时可以使用高速率进行通信,速率低时可以进行较远距离通信,一般可达数百上千米。   
RS485,在RS422后推出,绝大部分继承了422,主要的差别是RS485可以是半双工的,而且一个驱动器的驱动能力至少可以驱动32个接收器(即接收器为1/32单位负载),当使用阻抗更高的接收器时可以驱动更多的接收器。所以现在大多数全双工485驱动/接收器对都是标:RS422/485的,因为全双工RS485的驱动/接收器对一定可以用在RS422网络。
适用场合:单片机学习、电子竞赛、产品开发、毕业设计。。。
【标注说明】<?xml:namespace prefix = o />
接线示意图
【参考原理图】
PCB尺寸图】
【测试程序】
简单的发送程序:
/********************************************************************
*********************************************************************/
#include<reg52.h>          //库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int  //宏定义无符号整型
/********************************************************************
                            初始定义
*********************************************************************/
code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //显示段码 数码管字跟
uchar wei[4]={0XEf,0XDf,0XBf,0X7f};  //位的控制端
uchar dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
sbit P2_0=P2^0;//数据发送按键
/********************************************************************
                            延时函数
*********************************************************************/
void delay(uchar t)
{
  uchar i,j;
   for(i=0;i<t;i++)
   {
     for(j=13;j>0;j--);
{ ;
}
   }
}
/********************************************************************
                            显示函数
*********************************************************************/        
void Led(uchar date) //显示函数
{
/*****************数据转换*****************************/
uint z,x,c,v;
  z=date/1000;  //求千位
  x=date%1000/100;  //求百位
  c=date%100/10;  //求十位
  v=date%10;  //求个位
  P2=0XFF;
  P0=seg7code[z];
  P2=wei[0];
  delay(80);
  P2=0XFF;  
  P0=seg7code[x];
  P2=wei[1];
  delay(80);
  P2=0XFF;  
  P0=seg7code[c];
  P2=wei[2];
  delay(80);
  P2=0XFF;  
  P0=seg7code[v];
  P2=wei[3];
  delay(80);
  P2=0XFF;
}
///////功能:串口初始化,波特率9600,方式1/////////
void Init_Com(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
/********************************************************************
                            主函数
*********************************************************************/
void main()
{
Init_Com();//串口初始化
while(1)
{
dat=0x06;  //要发送的数据
if(P2_0==0)//当按键按下时开始发送数据
{
while(!P2_0);//消隐
RI=0; //RI 清零。
SBUF = dat; //把数据发送出去
}
Led(dat); //显示发送的数据
}
}
/********************************************************************
                              结束
*********************************************************************/
简单的接收程序:
/********************************************************************
*********************************************************************/
#include<reg52.h>          //库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int  //宏定义无符号整型
/********************************************************************
                            初始定义
*********************************************************************/
code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //显示段码 数码管字跟
uchar wei[4]={0XEf,0XDf,0XBf,0X7f};  //位的控制端
unsigned char dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
/********************************************************************
                            延时函数
*********************************************************************/
void delay(uchar t)
{
  uchar i,j;
   for(i=0;i<t;i++)
   {
     for(j=13;j>0;j--);
{ ;
}
   }
}
/********************************************************************
                            显示函数
*********************************************************************/        
void Led(uchar date) //显示函数
{
/*****************数据转换*****************************/
uint z,x,c,v;
  z=date/1000;  //求千位
  x=date%1000/100;  //求百位
  c=date%100/10;  //求十位
  v=date%10;  //求个位
P2=0XFF;
  P0=seg7code[z];
  P2=wei[0];
  delay(80);
  P2=0XFF;  
  P0=seg7code[x];
  P2=wei[1];
  delay(80);
  P2=0XFF;  
  P0=seg7code[c];
  P2=wei[2];
  delay(80);
  P2=0XFF;  
   P0=seg7code[v];
  P2=wei[3];
  delay(80);
  P2=0XFF;
}
///////功能:串口初始化,波特率9600,方式1/////////
void Init_Com(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
/********************************************************************
                            主函数
*********************************************************************/
void main()
{
Init_Com();//串口初始化
while(1)
{
if ( RI ) //扫描判断是否接收到数据,
{
dat = SBUF; //接收数据SBUF赋与dat
RI=0; //RI 清零。
SBUF = dat; //在原样把数据发送回去
}
Led(dat); //显示接收到的数据
}
}
/********************************************************************
                              结束
*********************************************************************/
【实物展示】

GYJ-0177_485通信模组产品使用手册.pdf

738.3 KB, 下载次数: 25, 下载积分: 黑币 -5

GYJ-0177_485通信模组发货资料.zip

2.28 MB, 下载次数: 43, 下载积分: 黑币 -5

GYJ-0177_485通信模组原理图及PCB图.pdf

160.46 KB, 下载次数: 40, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:652246 发表于 2019-11-29 11:18 | 只看该作者
学习下
回复

使用道具 举报

板凳
ID:669624 发表于 2020-10-30 17:44 | 只看该作者
问问,485速率如何控制
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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