ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:170.18KB ,
资源ID:4231505      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4231505.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于AVR单片机的485通信系统设计.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于AVR单片机的485通信系统设计.docx

1、基于AVR单片机的485通信系统设计 基于AVR单片机的485通信系统设计摘 要: 现在的社会是一个数字化的时代,多机通信系统的应用已经广泛渗透到人们生活的方方面面,在科学研究的军事技术领域、文化艺术领域、工程设计领域都有它的应用。通过通讯方式交换信息、资源共享已经成为了一种必然的趋势。为了使系统中的多个计算机之间的数据通信都可以实现,它们必须根据实际需要并且按照某种形式的网络来进行,工程中经常用的是使一个完整的主站发送,然后正确的从多机通信模式接收的信号,同时要防止总线上的信号冲突。本文讨论了用ATmega16 AVR单片机来控制RS485串行接口与主机系统进行数据交换,ATmega16为核

2、心芯片,它与MAX485转换器连接实现远距离传输,同时ATmega16作为主控芯片控制按键电路与数据显示电路,系统主要由主机控制模块、通信模块、数据输入模块、数据显示模块和模数转换模块五个部分组成,实现了利用RS-485实现单片机通信,通过键盘实现从机的选择、发送数据,从机显示发送的数据。该系统是一个单片机发送另一个单片机接收的单向、平衡传输标准,具有强抗干扰能力,易于使用,易于维护,操作简单等优点,在现实生活中也拥有广泛的应用。关键字:多机通信、RS485接口、AVR单片机 Design of 485 Communication System based on AVR Micro-contr

3、oller Abstract: Todays society is a digital era, the application of much-machine communication systems have been widely seeped into the scientific research in all fields ,such as: military technology, culture and the arts, engineering and peoples daily life. By means of communication to exchange inf

4、ormation, share resources has become an inevitable trend. To make the system in data communication between multiple computer are met, they must be composed according to the actual needs some form of network engineering is often used to make a complete master sends and receives signals from the much-

5、machine communication mode, correct and prevent the signal collision on the bus is guaranteed; This article discusses the use ATmega16 AVR micro-controller to control RS485 serial interface with the host system for data exchange, ATmega16 core chip, which is connected make remote distance transmissi

6、on truth and MAX485 converters, while ATmega16 as the main chip circuit control buttons and data display circuit, system is mainly controlled by the host module, communication module, data input module, data display component modules, and analog-digital conversion module five parts, we can use the R

7、S-485 communication between SCM, realized through the keyboard to select the machine from sending data, the host display sending data. The system is a single-chip micro-controller receiving sending another way, balanced transmission standard, has a strong anti-jamming capability 、is easy to use、 eas

8、y to maintain、operate and simple, in real life, also has a wide range of applications. Keywords: much-machine communication、RS485 protocol、 AVR micro-controller 基于AVR单片机的485通信系统设计1 引 言在一个基于单片机的数据采集和实时控制系统的微控制器系统中,通过计算机接口的RS232接口与计算机之间命令和数据传送,我们可以检测和控制生产现场。由于计算机发送的RS-232的距离很短,不超过30m,所以如果需要进行远距离的数据传输和

9、控制时,这个时候我们就可以选择使用MAX485的接口转换芯片使RS-232协议转换为RS-485协议,进行远距离传输。RS-232不能在多点通信系统中使用,而只能在通信系统之间的点对点中使用,并且这些限制所有使用RS-232的系统都必须满足。 而RS-485的通信协议通常是半双工的、双向的,该协议的特别之处在于,允许不止一个驱动器和接收器同时连接在总线上,其中每个驱动器都可脱离总线。 2 系统总体方案确定2.1 设计方案选择 方案一:基于AVR单片机的485通信系统,使用的电路是:利用端口转发形式的网络接口电路并且同时使用总线型的系统网络拓扑结构等进行单片机通信系统的设计。RS485构成的多机

10、通信系统采用主从配置;主机控制从机,从机不采取从微控制器主动发送命令或数据,全部由主机MCU控制;并在多机系统中,只有一个主机,从机之间的各站不能彼此通信,如果有需要被交换的信息的话,也必须由主机转发。方案二:基于单片机的485通信系统的设计,我们利用的是单片机的串行通讯端口,以完成两个终端之间相互通信的功能。 经比较:方案一的系统比较容易扩展且提高系统的稳定性,不但能够实现主机和从机这两者之间的通信,而且能实现从机和从机间的通信;与方案一比较,方案二拥有较强的抗干扰能力、同时通信距离较远,而且也可以完成主机与从机的通信,但不能实现从机之间的通信。所以采用方案一。2.2 设计的内容以及要求2.

11、2.1 设计的内容设计一个基于AVR单片机的485通信系统2.2.2 设计的要求1.使用键盘输入数据并且用数码管显示要传输的数据;2.AVR单片机串口与RS-485总线连接,从而将数据发送给从机,然后再显示出来。 图2.1 系统总体方案的设计图3 系统的组成及其工作的原理3.1 系统的组成首先,系统主要由数据输入模块、模数转换模块、主机控制模块和数据显示模块以及通信模块这五个模块组成。系统总体框图如下图所示: 图 3.1 系统框图在这个系统中,主要的核心部分是通信主机,它的功能主要是完成对数据的处理以及运算等;而数据的输入模块则主要是完成对数据的输入,并且所有人机交换的数据都是从这一模块中输入

12、的;接下来是数据的显示模块,这一模块主要是完成通信从机的数据显示;而通信模块呢就是使数据的接受和发送得以完成,以实现数据的远距离传输。3.2 工作原理基于AVR单片机的485通信系统设计的原理是:利用数模转换模块或者键盘输入模块通过P3口或者P1口将数据输入到ATmega16单片机主机里,ATmega16单片机主机利用MAX485芯片将数据传输到AVR单片机从机中,然后显示出来。 4 硬件电路方案设计4.1 系统硬件的介绍本设计硬件开发平台采用Protel DXP 2004。其中文版有时也叫altium designer summer。Protel DXP 2004不仅具有Protel 旧版所

13、具有的功能,而且Protel软件的最初的设计领域也被延伸了 ,它不仅功能更加完善了、界面更加灵活了,而且在仿真及PLD电路设计等方面均具有重大的改进。而且它拥有非常灵活的用户界面,可以使用户清楚明了的知道每个菜单的功能。所以新的软件不会给使用者们带来不便,而且同时PCB制作门槛也被降低了,只要经过一段时间的培训,一块合格的PCB板就一定不算是难事了。4.2 主机电路控制模块 图4.1 主机电路控制模块AVR单片机是一种增8位微控制器,同时它拥有增强内置的高速精简指令集,它是由ATMEL公司在1997年开发的。 AVR单片机不但应用在仪器仪表、通信设备、计算机外设以及工业实时控制等方面,而且在日

14、常生活,如家用电器领域也有广泛应用。随着AVR单片机的横空出世,彻底打破了旧的设计格局,不仅废除了机器周期,而且抛弃了以往只追求指令完备的做法;指令集中占大多数的单周期指令都是将内容丰富的操作数与操作码安排在一字之中,同时使用精简的指令集并且以字作为指令长度单位,它的取指周期很短,同时又能够提前取出指令以及能够完成流水作业这样的功能,因此它能够高速的执行指令。当然这种速度上的升跃,并不是必然的,它是以高可靠性作为其后盾才得以实现的。4.2.1 ATmega16 AVR单片机介绍AVR单片机的计数器在它的内部,它是由电源上电启动的,当给系统复位引脚复位上电之后,我们就可以延迟MCU开始正式读取指

15、令执行程序所用的时间这是使用AVR内部的RC看门狗定时器实现的。而这种延时启动的特性,能使MCU才正式开始执行程序,当然这只有在系统电源以及外部电路都达到稳定以后才能实现,这不仅可以提高系统工作的可靠性,而且同时还可以减少外加的复位延时电路的使用。 AVR系列的单片机有不同的型号,在此我们选择了系列型号为16的同时片内容量为16KB的单片机为主芯片。系统主芯片是本系统的核心芯片,因为系统的要求是:芯片能够灵活的处理所传输的数据,而且要求性能稳定并且价格低廉,因此我们需要选择一个合适的芯片。ATmega16是一种功耗很低的单片机。因为它本省具有很高级的指令集并且拥有单时钟周期的指令执行时间,所以

16、ATmega16单片机的可以达到很高的数据吞吐率,可以达到1MIPS/MHz,因此是解决系统在功耗与处理速度这两者间冲突的行之有效的方法。因为ATmega16 AVR的内核拥有32个通用工作寄存器,而且所有寄存器我们都可以直接与逻辑运算单元连接,所以我们就可以只用一条指令就可以在一个时钟周期内同时访问两个独立的寄存器。ATmega16具有16K字节系统内部可编程Flash,32个通用的输入/输出口线以及32个通用工作寄存器和512字节EEPROM,支持片内编程与调试,具备JTAG接口,片内/外中断,三个具有比较模式的定时器/ 计数器,可编程串行USART,8路10位可编程增益可选差分输入级的A

17、D转换器,一个SPI 串行的端口,并且具有起始条件检测器的通用串行接口,同时还具备片内振荡可编程看门狗定时器以及六个可以通过软件选择的省电模式,这是非常厉害的。同时ATmega16 具有一系列并且很完整的编程以及系统开发的工具,它包含了:C 语言编译器、评估板和仿真器以及程序调试器/ 软件仿真器。本芯片是用ATMEL存储器技术生产的,这个芯片具有高密度非易失性。片内ISP Flash也可以有其他的编程方式,如我们能够选择运行于AVR内核之中的引导程序来完成编程。也允许程序存储器通过ISP串行接口,或者也可以用通用编程器进行编程。这款单片机在产品中得到了大量的使用。本设计就用这款。4.3 数据显

18、示模块因为系统事实要求传输的简单的数据,所以采用数码管显示就可以满足指标要求。我们通常所说LED显示器,一般是由七个发光二极管组成,所以我们也称它为七段数码管,其二极管排列形状如下图所示。我们可以通过控制七个发光二极管中,哪些发光,哪些不发光,然后显示不同的字母、数字以及其他符号。发光二极管在LED显示器有两种完全不同的接法,下面来介绍一下这两种接法:(1) 共阳极接法就是公共阳极是由发光二极管的所有阳极连接在一起组成的。在用的时候,把公共阳极接上电源+5V。这样,当在阴极端输入低电平时它的发光二极管就能够导通发亮了,而输入高电平是则不亮。(2) 而共阴极接法就是说它的公共阴极是由发光二极管的

19、阴极连在一起而组成的。在用的时候,把公共阴极接地,所以发光二极管就可以导通发亮了。假如我们在阳极端输入高电平的时候,二极管就发光,而输入低电平时就不发光。在此,我们采用的是八段共阴极数码管显示。表3-1八段数码管的字型代码如下图:4.4 键盘输入模块 图4.2 键盘输入模块本次课题采用的是矩阵式键盘,它的突出优点是I/O端口的重复使用率很高,又可以循环操作,不但如此,而且在扫描键盘时占用CPU的时间很少,操作又比较灵活,矩阵键盘控制状态多,编写程序较方便,故此模块采用的是矩阵式键盘。4.5 通信电路模块 图4.3 通信电路模块 MAX485接口芯片是由Maxim公司开发的一种RS485芯片。R

20、S-485是美国电气工业协会(EIA)制定的的多点通信标准,它可以进行多点间的通信而且采用的是利用平衡双绞线的传输线的标准。同时它使用差分信号传输;最大传输距离可以达到120公里,而且它拥有低至200 MV的接收的灵敏度以及最大传输速率,高达2.5 Mb / s。因而,RS-485协议设置为高灵敏度,多点通信,远程等的设置协议。MAX485芯片采用单一电源电压+5V供电,同时它的额定工作电流为300微安,而且它可以采用半双工通讯的方式,可以将TTL电平转换为RS485电平。MAX485芯片的结构和引脚都是很简单的,它的内部含有一个驱动器和一个接收器。DI端为驱动器的输入端,而RO端为接收器的输

21、出端,它与单片机相接时只要分别与单片机的TXD引脚以及RXD引脚相连就可以了,/RE端为接收的使能端,DE端为发送的使能端,由于MAX485工作状态是在半双工,因此我们仅仅需要使用一个信号就可以同时控制MAX485的接收和发送了。因此我们要满足远距离通信的性能指标,在本模块采用MAX485芯片就可以了。4.5.1 RS-485协议RS232和RS485这两种通信协议是一种很有典范的串行通讯标准,虽然它们给予了阻抗和电压定义,但他们没有对软件协议进行定义。RS485的特性包括一下几个方面:(1)RS-485的电气特性:假如有两条线他们之间的电压差为+(2-6)V时,表示一个逻辑“1”;两条线之间

22、的电压差为 -(2-6)V表示一个逻辑“0”。如果接口信号的电平比RS-232的接口信号电平降低了,在这个时候芯片接口电路处于不容易被损坏的状态,而且它的电平和TTL电平兼容,这个时候我们就可以很容易地用TTL电路与其连接。 (2)RS485通讯距离高达1219M的,传输速率为10MB /秒,传输速率反比于距离传输,只有传输速率在100 Kb / s的情况下,才能够实现最大通信距离,如果需要传送一个更大的距离,您需要添加485中继器。 RS-485总线可以支持在一般32个节点,如果使用一个专用芯片485则最多可以达到400个节点。(3) RS485接口是由平衡驱动器和差分接收器组成的一个接口,

23、抗共模干扰是比较强的,这就是说拥有良好的抗噪性能。因为RS-485接口具有很好的抗噪声性能、远的传输距离以及多站能力等,这些优点就使它成为被首先选择的串行接口,由于RS485接口组成的半双工网络只需用二根连线就可以了,所以所有的RS485的接口均可以采用屏蔽双绞线进行传输。4.6 从机控制模块4.6.1 单片机最小系统图4.4 最小系统图 ATmega16单片机的最小系统主要包括电源电路、振荡电路和复位电路等。 图中的复位电路是由按键复位和上电复位这两部分组成的。只要最小脉冲宽度低于复位低电平持续的时间时触发复位过程就被触发,就算此时没有时钟信号处于运行的状态。而且当外加信号等于或大于复位门限

24、电压时,这个时候延时周期就开始了。延时结束后MCU就开始启动。时钟电路是给通信主机提供正常工作时序不可或缺的部分是 时钟电路,只有在同一个时序下主机才能完成正常的工作。而主芯片的内部的振荡器是由一个反相放大器构成的,可以由它产生时钟。时钟的产生通常有两种方式,即内部方式和外部方式。上图给出的是内部方式。 5 软件设计5.1 IAR FOR AVR软件的介绍 在所有AVR的编译器中,虽然编译效率最高的编译器是IAR for AVR , 可是每件事情都不会是十全十美的,所以相对来说IAR for AVR 的设置项也很多,如果我们使用不当就会出现很多没见过的问题。下面来介绍一下需要注意的几个问题。(

25、1) 关于堆栈的设置问题 首先,关于GCC 和 IAR 分配堆栈的方法是不一样的,IAR是先分配堆栈空间,这就是说我们定义了一个全局数组把它作为堆栈空间,而堆栈的初始化则是堆栈空间的最高地址;而GCC 就不需要预先分配堆栈,它是把 RAM 所余下的空间自动设置为堆栈空间, RAM 最高地址为堆栈初始。 IAR For SAM8 默认的堆栈是 32 字节,不够用的话,就要增大,但是增大到多少比较合适呢?首先呢,把你的程序编译,这样就可以看到程序到底用了多大本身的RAM。然后呢我们需要再查看芯片的 Data sheet,这样我们就可以知道芯片总共有多大的 RAM了。 举个例子,好了,现在我们就能够

26、知道还余下多少 RAM 了,就是208-142=66(Byte)。 在前面我们所说的IAR 的 CSTACK,NEAR_HEAP 和 RSTACK 都是最初分配好的,占用的存储空间是不变的,就是说等于设定了一个全局数组, 而IAR的堆栈策略与GCC的堆栈策略是完全不同的,GCC的堆栈大小并不是早先就已经分配好了的,它是把 SRAM 里面所余下的空间当成堆栈空间。 如果是 GCC,那么编译器就会自动把余下的 RAM 设置为数据的堆栈空间 。 (2) 关于代码的优化 当我们在使用 IAR 开发 C 语言程序的时候,开发环境就会给出一个优化的选项,总共有4 档,分别是None、Low、Medium以

27、及High档。但是我们在使用时应该知道,不是在所有情况下都能够进行优化,在某些时候优化后就不能正常运行了,比如说在没有优化时运行的代码。 (3) 关于 输入输出端口的位操作 和KEIL差不多,在 IAR For AVR 中我们也可以选择直接进行位操作,就这一方面来说它要比 ICC AVR好的多。 (4 )关于内存模型 在 AVR_IAR C/C+编译器中,我们可以选择一种特定的存储模式,如memory model(记忆模式),进行设置一些访问方法为默认的存储器访问方法。总共有三种可以使用的存储模式,分别为Tiny,Small 和 Large模式。哪种模式可以使用需要看你的处理器选项。假如你不指

28、定一种存储模式,编译器就会在设定v0、v1、v2、v3、v5 选项下默认为 Tiny,并且-v4 和-v6 选项下的访问方法为 Small。 5.2 通信协议5.2.1 串行通信协议RS232和RS485的比较 RS-232与RS-485标准只对接口的电气特性做出规定,而不涉及接插件、电缆或者协议等,并且在这个基础上我们可以建立自己的高层通信协议。RS-232与RS-485都是典型的串行数据接口标准,都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,EIA又于1983年在RS-232基础上升级了RS-485通信协议的标准,并且添加了多点以及双向通信的能力,就是说允许不止一

29、个发送器同时连接在一条总线上,并且能够同时增加发送器的驱动能力以及改善冲突的保护特性。5.2.2 通信过程一次完整的通信过程可以分为3个部分:主机处理输入数据、通信以及从机显示输入的数据。第一部分,主机判断输入的键值,并且将其进行打包处理;第二部分是通信阶段,即是把数值经过打包处理好的发送给寄存器,然后再从寄存器发送给接收机;第三部分是接收机显示部分,把打包好的数据处理之后再还原成原来的数据,然后通过查表以数码管的形式显示出来;此时接收机清除接收缓冲区及相关变量,准备与主机下次通信。任何一次完整的通信过程都是由发送机即主机方发起的,从机在无键值输入的情况下处于接收状态。5.3 主机程序5.3.

30、1 主程序总流程图多机通信的软件设计主要分为:系统初始化、确定主从机的关系、主机发送数据以及从机接收数据这四大部分;而且每个功能模块都是通信系统不可或缺的,只有这些都具有主机才能够很好的对外的部信息进行采集、分析以及解决等。下面来介绍一下这几个部分。 1.系统初始化:系统初始化包括串口初始化以及显示模块初始化。主要实现串口中断的开启、显示模块初始化、定时器的选择以及其工作方式的选择、总中断的开启以及串行口工作方式的选择等功能。2.有键按下:通信双方在进行通信的时候需要确定双方的主从关系,然后相应的键盘按下,则会显示所传输的数据。3.键值处理:在这一部分,通信主机会发送信号给通信从机,并且通信主

31、机发送的数据经过处理后再传输给从机。4.发送及显示数据:需要发送的数据需要经过处理之后才能发送给从机。5.关闭显示:从机显示完数据之后我们就可以关闭显示,这时就不需要再传输数据和显示数据。6.从机接收数据:这一部分功能比较容易,只要能够完成从机不断的接收主机发送的数据的就可以了。图 5.1 主程序流程图5.3.2 键盘输入的子程序在初始化之后程序需要不断检测矩阵键盘的状况,当检测到有键按下时,在消抖之后就可以开始处理输入的数据了。确定是哪个按键按下之后,我们就可以用相对来说方便一点传输的16进制的数值来替换它了。5.3.3 用数码管显示子程序 图5.2 数码管显示子程序的流程图5.4 从机程序

32、5.4.1 从机总流程图 图5.3 从机主流程图5.4.2 接收并且显示主程序 在从机接收到主机传来的信息以后,经过处理然后在从机的数码管上显示出来。 图 5.4 接收部分流程图6 实验调试和测试结果与分析先利用Altium进行仿真,看能否满足要求,若满足要求后,再将写好的主机程序和从机程序分别烧录进两个单片机里,主从两个单片机的一个引脚控制RS485使能端,然后再接上数据输入输出两根导线,打开电源之后,单片机的数码管显示模块处于显示的状态;再将采集电压的开关闭合,然后按下其中的任意一个键时从机的数码管显示模块显示键盘输入的键值,但是在改变滑动电阻器的阻值时,与从机相连的数码管显示模块的数值没有改变,证明串行通信成功。然后进行几次反复的按键输入,我们就可以确认单片机是能够用半双工的方式来进行串行通信的。 总 结此次的设计的内容是是

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1