《基于RS-485的单片机通信系统设计(发送端)和实现 通信工程专业.docx》由会员分享,可在线阅读,更多相关《基于RS-485的单片机通信系统设计(发送端)和实现 通信工程专业.docx(24页珍藏版)》请在优知文库上搜索。
1、目录前言5第一章系统总体方案6系统总体框图设计6系统框图6第二章系统具体设计及硬件设计2.1主机控制模块62.1.1系统主芯片选择62.1.2复位电路72.1.3时钟电路72.2通信模块82.2.1通信芯片选择82.2.2通信电路82.3数据输入模块92. 4数据显示模块9第三章软件设计113. 1系统总流程图113.1.1程序流程图12第四硬件试与分析164.1实验调试仪器164.2各个子系统模块调试164.2.1握手信号发送模块调试164.2.2接收数据与拒绝接收数据模块调试174.2.3发送数据与接收数据模块调试17第五章总结与体会19参考文献20附录一:总原理图20附录二:源程序代码2
2、1在以单片机为基础的数据采集和实时控制系统中,通过计算机中的RS-232接口进行计算机与单片机之间的命令和数据传送,就可以对生产现场进行监测和控制。由于计算机上的RS-232所传送的距离不超过30m,所以在远距离数据传送和控制时,可以利用MAX485的接口转换芯片将RS-232协议转换成RS-485协议进行远距离传送。RS-232是一个最初用于调制解调器、打印机及其它PC外设的通讯标准,提供单端20kbps的波特率,后来速率提高至IMbps0RS-232的其它技术指标包括:标称5V发送电平、3V接收电平(间隔/符号)、2V共模抑制、220OPF最大电缆负载电容、300最大驱动器输出电阻、3k最
3、小接收器(负载)阻抗、100英尺(典型值)最大电缆长度。RS-232只用于点对点通信系统,不能用于多点通信系统,所有RS-232系统都必须遵从这些限制。RS-485是双向、半双工通信协议,允许多个驱动器和接收器挂接在总线上,其中每个驱动器都能够脱离总线。接收器输入灵敏度为200mV,这就意味着若要识别符号或间隔状态,接收端电压必须高于+20OmV或低于-200mV。最小接收器输入阻抗为12k,驱动器输出电压为1.5V(最小值)、5V(最大值)。驱动器能够驱动32个单位负载,即允许总线上并联32个12k的接收器。RS-485接收器可随意组合,连接至同一总线,但要保证这些电路的实际并联阻抗不高于3
4、2个单位负载(375)o采用典型的24AWG双绞线时,驱动器负载阻抗的最大值为54,即32个单位负载并联2个120终端匹配电阻。RS-485已经成为POS.工业以及电信应用中的最佳选择。较宽的共模范围可实现长电缆、嘈杂环境(如工厂车间)下的数据传输。更高的接收器输入阻抗还允许总线上挂接更多器件。第一章系统总体方案系统总体框图设计系统框图系统框图如下:图27系统原理框图在本系统中,通信主机是核心部分,主要完成对数据的处理、操作和运算;数据输入模块主要完成数据的输入,所有人机交换的数据都从该模块中输入;数据显示模块完成了通信双方数据的显示;通信模块即完成数据的接收与发送,实现数据远距离传输。数据从
5、数据输入模块输入,经通信主机处理后发送给通信从机,通信从机接收到数据后显示在相应的模块上。第二章系统具体设计及硬件设计2.1 主机控制模块2.1.1 系统主芯片选择系统主芯片是本系统的核心芯片,由于系统要求芯片能灵活处理所传输的数据,且性能稳定,价格低廉,因此需选择一个合适的芯片。STC89C52是一个低功耗,高性能CMOS8位单片机,器件采用高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的它为许多嵌入式控制通信系统提供了高性价比的解决方案。STC89C52具有如下特点:8kBytesFlash
6、片内程序存储器,128bytes的随机数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器和2个全双工串行通信口,而且价格低廉,市场运用很普遍,因此采用它作为系统的主芯片即可进行灵活的控制。2.1.2复位和时钟电路复位时钟电路如下图:图2-3复位时钟电路主芯片的RST复位引脚是高电平有效的。高电平有效的持续时间应为24个振荡周期以上。若时钟频率为12MHz,则复位信号至少应持续2us以上才可以复位单片机。只要该引脚保持高电平,芯片便循环复位。当RST端由高变低后,程序指针由ROM的OoOOH开始执行程序。它的复位操作不影响内部R
7、AM的内容。当VCC加电后,RAM的内容是随机的。此外主芯片的复位方式有上电复位和手工复位两种。只要Vcc上升时间不超过1ms,通过在VCC和RST引脚之间加一个IOuF的电容和一个1K,由延时常数T=R*C=1K*10uF=lms可知,当系统上电后即可完成复位。时钟电路是给通信主机提供正常工作时序所必不可缺的部分,主机只有在统一的时序下才能进行正常的工作。主芯片内部由一个反相放大器构成振荡器,可以由它产生时钟。时钟可以由两种方式产生,即内部方式和外部方式。图2-3给出的是外部方式。Fosc可在1.212MHz之间选择,为方便计算,选取晶振频率fosc=12MHz,可以得到机器周期为:T=lf
8、osc=luso电容对频率有微调作用,因此小电容取值为20pF。2. 2通信模块3. 2.1通信芯片的选择MX485接口芯片是Maxim公司的一种RS-485芯片。RS-485是美国电气工业联合会(ElA)制定的利用平衡双绞线作传输线的多点通讯标准。它采用差分信号进行传输;最大传输距离可以达到L2km;最大可连接32个驱动器和收发器;接收器最小灵敏度可达200mV;最大传输速率可达2.5Mb/s。由此可见,RS485协议正是针对远距离、高灵敏度、多点通讯制定的标准。MAX485芯片采用单一电源+5V工作,额定电流为300uA,采用半双工通讯方式。它完成将TTL电平转换为RS-485电平的功能。
9、MAX485芯片的结构和引脚都非常简单,内部含有一个驱动器和接收器。RO和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可/RE和DE端分别为接收和发送的使能端,因为MAX485工作在半双工状态,所以只需要一个信号控制MAX485的接收和发送即可。因此本模块采用MAX485芯片即可满足远距离通信的性能指标。RS485通信协议:典型的串行通讯标准是RS232和RS485,它们定义了电压阻抗等,但不对软件对协议给予定义,区别于RS232,RS485的特性包括:1. RS485的电气特性:逻辑“1”以两线间的电压差为+(26)V表示;逻辑“0”以两线间
10、的电压差为(26)V表示。接口信号电平比RS232C降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。2. RS-485的数据最高传输速率为10Mbps。3. RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。4. RS-485接口的最大传输距离标准值为4000英尺,实际上可达3000米(理论上的数据,在实际操作中,极限距离仅达1200米左右),另外RS-232-C接口在总线上只允许连接1个收发器,即单站能力。而RS-485接口在总线上是允许连接多达128个收发器。即具有多站能力,这样用户可以利用单一的RS-485接口方
11、便地建立起设备网络。因RS-485接口具有良好的抗噪声干扰性,长的传输距离和多站能力等上述优点就使其成为首选的串行接口。因为RS485接口组成的半双工网络一般只需二根连线,所以RS485接口均采用屏蔽双绞线传输。RS485接口连接器采用DB-9的9芯插头座,与智能终端RS485接口采用DB-9(孔),与键盘连接的键盘接口RS485采用DB-9(针)2.2.2通信电路图2-4通信模块电路MAX485的RO和Dl引脚分别和单片机的RXD和TXD相连接,/RE和DE受单片机PLO的控制,当PLo=I是,MAX485发送数据,当PLO=O是MAX485接收数据,主机和从机都是按照如图所示的电路进行通信
12、的,为了减少信息传输时的错误,主从机都使用相同频率的晶振,设置主从机相同的波特率。2.3数据输入模块矩阵式键盘,矩阵式键盘稳定,其突出优点是占用I/O口少,I/O端口利用率高,可循环操作,而且扫描键盘时占用CPU时间少,操作灵活,方便。由设计要求可知系统需求能控制多状态而且利用率高的键盘,因此综合以上要求此模块采用矩阵式键盘。2.4数据显示模块采用八段共阴极数码管显示,利用HD7279进行驱动,性能稳定,操作简单。HD7279是一片具有串行接口的可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成显示键盘接口的全部功能。由于系
13、统要求传输的只是简单的数据,因此采用数码管显示即可满足指标要求。第三章软件设计3.1系统总流程图多机双向通信的软件设计主要分为:系统初始化、确定主从机关系、双方进行握手、不接收主机数据、主机发送数据和从机接收数据等六大部分;每个功能模块对于通信双方都是必不可缺的,只有这样主机才能很好的对外部的信息进行采集、分析和解决。1.系统初始化:系统初始化包括串口初始化和显示模块初始化。主要实现串口中断的开启、总中断的开启、定时器的选择及其工作方式的选择、串行口工作方式的选择和显示模块初始化等功能。2 .有键按下:通信双方进行通信时需确定双方的主从关系,然后通过键盘按下,显示所传输的数据。3 .键值处理:
14、在该部分中,通信主机会发送握手信号给从机,主机发送的数据通过处理再传输给从机4 .送显数据:所发送的数据通过处理之后再发送给从机。5 .关闭显示:从机显示数据完毕之后需要关闭显示不再传输数据和显示数据。6 .从机接收数据:此部分功能较简单,只需完成从机不断的接收主机发送的数据的即可。3.1.1程序流程图:图3T主机程序流程图本系统程序主要有:初始化,键盘发送,键盘处理,送显,关闭显示等五个部分。1.初始化:该部分主要是串行口初始化,16位定时器初始化和中断初始化三部分的功能,具体实现如下:voidiniI()初始化子程序TM0D=0x20;设置定时器1为工作方式2,8位自动重装THl=0xe8
15、;赋计数初值,对应定时26usTLl=0xe8;TR1=1;/Tl中断开启EA=I;总中断开启REN=I;串行接收允许SwM);串行通信方式选择方式1,10位异步收发,由定时器控制波特率SMl=I;第四章硬件调试与分析4.1 实验调试仪器调试过程中运用到的实验仪器主要有:1 .微机一台,串行接口线一根;2 .单片机仿真机一块;3 .工具箱一个;4 .5V稳压电源一个;4.2 各个子系统模块调试4.2.1 握手信号发送模块调试系统上电后,通信双方1机2机第1位都点亮,且为闪烁状态,说明初始化部分正常,如图6所示。然后按下1机的发送2键,在1机的第1位都显示数字“2”,说明有发送键按下,在2机第1位数码管都显示数字“2”,说明接收到了1机的握手信号,然后2机按下接收数据1键,在1机的数码管第4位上显示数字“2”,说明接收到了2机,至此握手信号模块全部工作正常,且系统稳定,说明该模块功能实现成功。图4-11机作为主机发送数据2给2机图4-2接通电源两单片机都显示O初始化正常4.2.2接收数据与拒绝接收数据模块调试先对系统进行复位,重复以上操作至1机发送握手信号后,如果2机不接收数据1,按下2机的不接收1键,刚开始数码管关闭一下,后又闪