485通讯以及51单片机程序

1、485接口:

485(一般称作RS485/EIA-485)是隶属于OSI模型物理层的电气特性规定为2线,半双工,多点通信的标准。它的电气特性和RS-232大不一样。用缆线两端的电压差值来表示传递信号。RS485仅仅规定了接受端和发送端的电气特性。它没有规定或推荐任何数据协议。

2、RS485的特点包括:

(1)接口电平低,不易损坏芯片。RS485的电气特性:逻辑“1”以两线间的电压差为+(26)V表示;逻辑“0”以两线间的电压差为-(26)V表示。接口信号电平比RS232降低了,不易损坏接口电路的芯片。
(2) 传输速率高。10米时,RS485的数据最高传输速率可达35Mbps,在1200m时,传输速度可达100Kbps。
(3)抗干扰能力强。RS485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。
(4)传输距离远,支持节点多。RS485总线最长可以传输1200m以上(速率 ≤100Kbps)一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。
(5)RS485推荐使用在点对点网络中,线型,总线型,不能是星型,环型网络。理想情况下RS485需要2个匹配电阻,其阻值要求等于传输电缆的特性阻抗(一般为120Ω)。没有特性阻抗的话,当所有的设备都静止或者没有能量的时候就会产生噪声,而且线移需要双端的电压差。没有终接电阻的话,会使得较快速的发送端产生多个数据信号的边缘,导致数据传输出错。485推荐的连接方式:

在上面的连接中,如果需要添加匹配电阻,我们一般在总线的起止端加入,也就是主机和设备4上面各加一个120Ω的匹配电阻。

3、收发器SP3485

图中A、B总线接口,用于连接485总线。RO是接收输出端,DI是发送数据收入端,RE是接收使能信号(低电平有效),DE是发送使能信号(高电平有效)。

4、51单片机程序:

(1)主机程序:

#include<reg52.h>typedef unsigned char uchar;sbit key=P3^4;sbit KEY=P1^0;void  delay_50ms (unsigned int  n){ unsigned int i;for( ;n>0;n--)for(i=6245;i>0;i--);}void  myuart(){SCON=0X90; TMOD=0X20;                  //8位重装载PCON=0X00;TH1=0xFD; TL1=0XFD;          //设置波特率为9600ES=1;                        //打开通信中断EA=1;                      //打开总中断TR1=1;                  //打开计数器}void main(void){myuart();while(1){  if(KEY==0){  delay_50ms (1);if(KEY==0){key=1;ES=0;                        EA=0;                      SBUF=0Xaa;while(!TI);           //等待发送数据完成TI=0;                        //清除发送完成标志位delay_50ms (1);}while(!KEY);}else{ES=1;                        //打开通信中断EA=1;                      //打开总中断key=0;}}}void ser_int (void) interrupt 4 {unsigned char receivedata;key=0;while(!RI);receivedata=SBUF;//出去,接,收到的数据RI = 0;//清除接收中断标志位P2=receivedata;//出去,接,收到的数据delay_50ms (50);P2=0xFF;}

(2)从机程序:

#include<reg52.h>
#include <intrins.h>typedef unsigned char uchar;sbit key=P3^4;sbit SH=P1^1;sbit DS=P1^2;sbit ST=P1^3;sbit KEY=P1^0;const uchar code a[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0123456789const uchar code b[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};void  delay_50ms (unsigned int  n){ unsigned int i;for( ;n>0;n--)for(i=6245;i>0;i--);}
void senddate(uchar num,uchar dat)
{uchar i;ST = 0;SH =0;for(i=0;i<8;i++){SH =0;if(num>=0x80)DS=1;else DS= 0;num<<=1;SH= 1;}for(i=0;i<8;i++){SH =0;if(dat>=0x80)DS=1;else DS= 0;dat<<=1;SH= 1;}ST = 0;ST = 1;ST = 0;SH =0;DS=0;
}void  myuart(){SCON=0X90; TMOD=0X20;                  //8位重装载PCON=0X00;TH1=0xFD; TL1=0XFD;          //设置波特率为9600ES=1;                        //打开通信中断EA=1;                      //打开总中断TR1=1;                  //打开计数器}void main(void){myuart();while(1)
{   if(KEY==0){delay_50ms (1);if(KEY==0){key=1;EA=0;ES=0;SBUF=0x0a;//将接收到的数据放入到发送寄存器while(!TI);          //等待发送数据完成TI=0;                        //清除发送完成标志位delay_50ms (1);}while(!KEY);}else{ES=1;                        //打开通信中断EA=1;                      //打开总中断key=0;}}}   void ser_int (void) interrupt 4 {unsigned char receivedata;key=0;receivedata=SBUF;//出去,接,收到的数据while(!RI);RI = 0;//清除接收中断标志位if(receivedata==0xaa){int i;for(i=0;i<8;i++){senddate(b[i],a[i]);delay_50ms (10);}}}

5、仿真电路图:

嵌入式单片机基础篇(三十七)之485通讯以及51单片机程序相关推荐

  1. c语言485通讯源程序,51单片机485通信实验C语言源代码实现

    #include #include sbit RS485=P3^7;   //定义485的使能脚 bit SendFlag; unsigned int ReData,SenData; /******* ...

  2. 嵌入式单片机基础篇(一)之stm32F1GPIO详解

    嵌入式单片机基础篇(一)之stm32F1GPIO详解 stm32F1GPIO详解 下面以stm32f103zet6以及51单片机为例,讲解单片机最基本部分IO口 第一部分:stm32 STM32 的 ...

  3. 嵌入式单片机基础篇(八)之两只看门狗

    嵌入式单片机基础篇(八)之两只看门狗 独立看门狗与窗口看门狗 第一部分:stm32 .STM32 内部自带了 2 个看门狗:独立看门狗(IWDG)和窗口看门狗(WWDG). (一)独立看门狗 STM3 ...

  4. WF4.0 基础篇 (三十 完) 对学习WF的一点建议

    从09年10月份 NET4.0 Bata 2发布后,我就开始写[WF4.0 基础篇]这个系列,经历了5个多月终于在NET4.0正式发布前将这个系列完成了 这段时间与一些对WF4.0感兴趣的公司与开发人 ...

  5. LINUX学习基础篇(十七)用户与用户组

    LINUX学习基础篇(十七)用户与用户组 用户相关文件 /etc/passwd 用户信息文件 /etc/shadow 影子文件 /etc/group 组信息文件 其他用户有关文件 用户管理命令 use ...

  6. 圆形界面 开启相机_「基础篇三」手机摄影拍照界面详解

    ​[基础篇三]手机摄影拍照界面详解 手机拍照对我们来说已习以为常,每天我们都会用手机相机功能或多或少的拍出几张照片.故手机拍照界面对我们来说也不陌生,但手机拍照界面上的那些按钮,那些功能你都用过吗?你 ...

  7. 科沃斯机器人拆解_周末清洁大会战 篇三十七:科沃斯扫地机器人朵朵S四年后的配件选购及终极清洁与拆解,以后不坏不拆,至死不渝!...

    周末清洁大会战 篇三十七:科沃斯扫地机器人朵朵S四年后的配件选购及终极清洁与拆解,以后不坏不拆,至死不渝! 2020-05-25 14:24:35 3点赞 6收藏 0评论 前言 科沃斯扫地机器人朵朵S ...

  8. 嵌入式单片机基础篇(三十九)之CAN通讯以及STM32F1单片机程序

    CAN通讯以及STM32F1单片机程序 1.CAN通讯基本概念: (1)定义: CAN是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议.由德 ...

  9. python 01列表异或_python基础篇三

    python基础篇二所介绍的列表是基本的数据类型之一,元组.集合.字典也是基本的数据类型之一.熟练运用这些基本的数据类型很重要,就像是一座高楼大厦,把地基打扎实了,这栋高楼大厦才能在狂风暴雨中岿然不动 ...

  10. Python机器学习基础篇三《无监督学习与预处理》

    前言 前期回顾: Python机器学习基础篇二<为什么用Python进行机器学习> 上面这篇里面写了文本和序列相关. 我们要讨论的第二种机器学习算法是无监督学习算法.无监督学习包括没有已知 ...

最新文章

  1. 邀请了阿里的学长学姐分享
  2. datetime 和 smalldatetime
  3. python怎么读文件名-python如何获取当前文件夹下所有文件名详解
  4. Implementing Synchronization Operations
  5. c语言姓名号码,c语言如何输入编号和姓名
  6. 还是畅通工程(思想+代码)
  7. mysql期末考试试卷_mysql试题
  8. Burpsuite Web渗透-扫描工具(中间攻击,渗透大牛都用来修改包和监视包)
  9. 从伪随机数的产生到高大上的蒙特卡洛算法(C语言实现)
  10. win10搜索框没反应或者搜索太慢,看这篇就够了
  11. html5网页设计作业代码 大学生校园网站制作 学校官网制作html
  12. 感知特性评价指标SSIM
  13. 关于PCBLayout的一些具体细节的认识(能力有限,请大家多多指点)
  14. matlab T检验(ttest,ttest2)
  15. NLP 的巨人肩膀(下):从 CoVe 到 BERT
  16. Excel文件加密后忘记密码破解方法
  17. 解决 Javascript 中 atob 方法解码中文字符乱码问题
  18. 推荐一个日历转换开源工具库,支持C#、Java、PHP等主流的语言
  19. Apache POI 设置Excel单元格的宽度和高度
  20. 【JAVA】MyEclipse 各菜单项:功能、说明(转自CSDN - lgx06)

热门文章

  1. GeoNet: Deep Geodesic Networks for Point Cloud Analysis
  2. iec611313标准下载_IEC 62108-2016
  3. 认识计算机系统基本结构,高中信息技术计算机基础应用课件:03认识计算机系统的组成与作用...
  4. 三年级下册计算机知识点,【北师大】三年级下册语文各单元知识点归纳
  5. PPT投影仪演示设置
  6. UG二次开发-基础篇:GRIP函数查询表与帮助文档
  7. RemCom.XFDTD.Bio-Pro.v6.3.8.4
  8. autocad 职称计算机,2015职称计算机考试《AutoCAD》考点总结(1)
  9. 服务器部署Java项目详述
  10. pythonsdk_Python SDK下载