您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机串口通信485modbus
项目七单片机通信实践知识目标:1.了解UART(UniversalAsynchronousReceive/Transmitter通用异步收发器。2.了解MAX232通信原理及标准的通信协议。3.了解MODBUS通信协议标准2.采用通信芯片MAX485,及多机通信原理。技能目标:1,根据数据格式的协议,数据交换的协议要求硬件连接,实现串行通讯的硬环境。2.MCU与PC机及多个单片机的硬件连接方法5.使用最小系统板实现硬件调试任务一基于RS232的点对点通信任务提出通过MAX232直接应用UART(UniversalAsynchronousReceive/Transmitter通用异步收发器,实现单片机与单片机,或单片机与PC微机之间数据传送。知识准备7.1.1串行与并行通信在实际工作中,计算机与外部设备之间常常要进行信息交换,计算机与计算机之间也要交换信息,所有这些信息交换可称为通信。在我们前面所学的知识中所涉及的数据传送都是采用并行方式,如单片机与存储器,的数据传送,存储器与存储器的数据传送,单片机与并行打印机之间的数据传送,CPU处理数据以8位数据并行方式同时一次传送一字节的数据,这样的传送方式要求用8条数据线和若于条控制信号线,传送距离较近。当计算机与计算机之间的距离较远时过多的电缆使这种方式不够经济。3.应用PROTEUS仿真工具软件绘制硬件连接图4.使用KeilC完成程序的编写和调试串行通信是用一位数据线传送数据,只用几条电缆线作控制信号线,串行通信适合远距离数据传送,处于两地的计算机之间采用串行通信就非常的经济,当然串行通信要求通信双方具有相同的数据转换格式,规定的时间控制,相等的逻辑电路,通一的通信协议。7.1.1.1串行与并行通信基本概念1.串行通信与并行通信通信方式有两种:并行通信和串行通信。通常是根据信息传送的距离决定采用哪种通信方式,如果距离小于30cm则可采用并行通信方式,当距离大于30cm时则要采用通信方式。并行通信方式是指数据的各位同时进行传送的通信方式,其优点是传送速度高,缺点是数据有多少位,就需要多少根数据传送线,单片机与外部设备之间的数据传送属于并行通信图7-1-1(a)所示为AT89C51系列单片机与外部设备间的8位数据并行通信的连接方法,并行通信方式在位数多、传送距离远的情况下就不太合适了。串行通信间数据是一位一位按顺序传送的通信方式,图7-1-1(b)所示为单片机与外部设备间的串行通信连接方式,可以看出最单间的串行连接只需三条线,因此利用电话线就可作为传输线,这样大大降低了成本,特别适用于远距离通信;串行通信的缺点是传送速度较低。假设并行传送N位数据所需时间为T,那么串行传送的时间至少为NT,实际上总是大于NT的。图7-1-1两种通信方式连接2.单工、半双工和全双工串行通信的传送方式通常有3种:⑴单向(或单工),只允许数据向一个方向传送;⑵半双向(或半双工),允许数据向两个方向中的任一方向传送,但每次只能有一个站点发送;⑶全双向(或全双工),允许同时双向传送数据,全双工配置是一对单向配置,它要求两端的通信设置具有完整和独立的发送和接收能力。7.1.1.2单片机串行口发送与接受数据1.串行通信协议串行通信协议是通信双方为保证通信成功而制定的一系列约定。包括数据格式定义和数据位定义等。通信双方必须遵守统一的通信协议,串行通信协议包括同步协议的异步协议两种。异步串行通信协议规定了字符的传送格式和字符传送的波特率。51系列单片机串行行口数据的发送的数据的接受采用异步通信方式,在MCU内部有一个UART(UniversalAsynchronousReceive/Transmitter通用异步收发器。在异步通信中数据是一帧一帧(包括一个字符代码或一字节数据)传送的,每一帧的数据格式如图7-1-2所示。图7-1-2串行异步通信的数据格式在帧格式中,一个字符由4部分组成:起始位、数据位、奇偶校验位和停止位。首先是一个起始位(0),起始位信号只占用一位,用来通知接收设备一个待接收的字符开始到达,线路上在不传送字符时应保持为1。接收端不断检测线的状态,若连续为1以后又测到一个0,就知道发来一个新的字符,应马上准备接收,字符的起始位还被用作同步接收端的的时钟,以保证以后的接收能正确进行。然后是5—8位数据位(规定低位在前,高位在后),它可以是5位(D0—D4)、7位或8位(D0—D7)。其次是奇偶校验位(该位可省略),但在字符中也可以规定不用奇偶校验位,则这一位就可省去。民可和这一位(0/1)来确定这一帧中的字符代表代表的性质(地址/数据等)。最后是停止位(1),用来表征字符的结束,它一定是高电位(逻辑1)。停止位可以是1位、1.5位或2位。接收端收到停止位后,知道上一字符已传送完毕,同时也为接收下一个字符作好准备,只要再接收藏夹0,就是新字符。2.波特率通信线上传送的所有位信号都保持一致的信号持续时间,每一位的信号持续时间都由数据传送速度确定,而传送速度是以每秒多少个二进制位来衡量的,这个速度叫波特率。波特率是串行通信中的一个重要指标,它反映了对传输通道的要求。波特率越高,要求传输通道的频带越宽。一般异步通信的波特率为50—9600b/s7.1.1.3单片机串行口控制寄存器1.串行口控制寄存器SCONSCON是串行口控制和状态寄存器,其格式如下:D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI.SM0、SM1:串行口工作方式控制位,具体工作方式见表。表7-1-1串行口工作方式控制SMOSM1工作方式说明波特串00方式0同步移位寄存器fosc/1201方式110位异步收发由定时器控制10方式211位异步收发fosc/32或fosc/6411方式311位异步收发由定时器控制.SM2:多机通信控制位(方式2,3)。1一只有接收到第9位(RB8)为1,RI才置位。0一接收到字符N就置位。.REN:串行口接收允许位。1一允许串行口接收。0一禁止串行口接收。.TB8:方式2和方式3时,为发送的第9位数据,也可以作奇偶校验位。.RB8:方式2和方式3时,为接收到的第9位数据;方式1时,为接收到的停止位.TI:发送中断标志。由硬件置位,必须由软件清0。.RI:接收中断标志。由硬件置位,必须由软件清0。2.电源控制寄存器PCONPCON的第7位SMOD是与串行口的波特率设置有关的选择位。D7D6D5D4D3D2D1D0SMODGF1GF0PDIDL.SMOD:串行口波特率加倍位。1——方式1,3波特率=定时器1溢出率/16;方式2波特率为fosc/32;·0——方式1,3波特率=定时器1溢出率/32;方式2波特率为fosc/64。.GF0、GF1:两个通用标志位。.PD、IDL:CHMOS器件的低功耗控制位。7.1.1.4串行口工作模式及波特率设置1.串行通信的工作方式⑴方式0方式0为移位寄存器输入/输出方式。串行数据通过RXD输入/输出,TXD则用于输出移位时钟脉冲。方式0时,收发的数据为8位,低位在前。波特率固定为fosc/12,其中fosc为单片机外接晶振频率。数据发送是以写SBUF寄存器的指令开始的,8位输出结束时TI被置位。方式0接收是在REN=1和RI=0同时满足时开始的。接收的数据装入SBUF中,结束时RI被置位。移位寄存器方式在用最小的硬件扩展接口时很有用。串行口外接一片移位寄存器74LSl64可构成输出接口电路;串行口外接一片移位寄存器74LSl65可构成输入接口电路。在典型1MHz时钟,8位加载大约用10us。任何数目的移位寄存器可串接用于输出和输入,通过一系列的SBUF的写和读。若移位时的波动不重要或移位寄存器中包含并行加载锁存,这可构成非常经济的I/O扩展小系统。移位寄存器方式的第二种用法是用于两个单片机之间的通信。与通常波特率9600相比,以1MHz通信能力对短距离通信很吸引人。⑵方式1方式1是10位异步通信方式,1位起始位(0),8位数据位和1位停止位(1)。其中的起始位和停止位在发送时是自动插入的。任何一条以SBUF为目的寄存器的指令都启动一次发送,发送的条件是TI=0,发送完置位TI。方式1接收的前提条件是SCON中的REN为1,同时以下两个条件都满足,本次接收有效,将其装入SBUF和RB8位。否则放弃接收结果。两个条件是:1)RI=0;2)SM2=0或接收到的停止位为1。方式1的波特率是可变的,波特率可由以下计算公式计算得到:方式1波特率=2SMOD·(定时器1的溢出率)/32其中的SMOD为PCON的最高位。定时器1的方式0,1,2,都可以使用,其溢出率为定时时间的倒数值。⑶方式2和方式3这两种方式都是11位异步接收/发送方式,它们的操作过程完全一样,所不同的是波特率:方式2波特率=642SMOD×(振荡器频率fosc)方式3波特率同方式1(定时器1作波特率发生器)。方式2和方式3的发送起始于任何一条“写SBUF”指令。当第9位数据(TB8)输出之后,置位TI。方式2和方式3的前提条件也是REN为1。在第9位数据接收到后,如果下列条件同时满足:1)RI=0;2)SM2=0或接收到的第9位为1则将已接收的数据装入SBUF和RB8,并置位RI;如果条件不满足,则接收无效。51系列单片机串行口的不同寻常的特征是包括第九位方式。这允许在串行口通信增加的第九位用于标志特殊字节的接收。对简单网络,第九位方案允许接收单片机仅当字节具有一个第九位时才能被中断。用这种方法,发送器可以广播一个字节让第九位为高作为“每个人请注意”字节。字节可以为节点地址,地址相同的节点可以打开接收接下来的字符。所接续字节(第九位为低)不能引起其它单片机中断,因为未送它们的地址。用这种方式。一个单片机可以和大量的其它单片机对话而不打扰不寻址的单片机。这种系统必须工作在严格的主从方式,由软件进行取舍安排。2.通信波特率设置在异步通信中,收、发双方各用自己的的时钟源,要保证捕捉到的信号正确,最好采用较高频率的时钟,一般选择时钟频率比波特率16倍或64倍,若时钟频率等于波特率,则频率稍有偏差便会产生接收错误。各方式波特率的取值方法如下:⑴方式0状态:当软件设置SCON的SM0、SM1为“00”时串行通信则以方式0工作,串行通信工作在同步移位寄存器方式下。其波特率固定为(1/12)×fosc。⑵方式1状态:当软件设置SCON的SM0、SM1为“01”时串行通信则以方式1工作,串行通信的波特率由定时器T1的溢出率获得:串行通信方式1波特率=322SMOD×(定时器/计数器1的溢出率)定时器/计数器1的溢出率定义为:单位时间(秒)内定时器/计数器回0溢出的次数,即定时器/计数器1的溢出率=定时器/计数器1的溢出次数/秒。定时器/计数器1的溢出率=)2(12f8osc初值(次/秒)当T1工作于方式2其初始值为:初值N=256-12322波特率oscSMODf⑶串行通信方式2波特率=322SMOD×(振荡器频率)通常情况下,使用单片机的串行口时,选用的晶振比较固定6MHz,12MHz,11.0592MHz。常用于和微机的通信;选用的波特率也相对固定。串行口常用的波特率及相应的设置见表7-1-1串行口常用波特率表。表7-1-1串行口常用波特率串行口工作方式波特率Fosc=6MHzFosc=12MHzFosc=11.0592MHzSMODTMODTH1SMODTMODTH1SMODTMODTH1方式01MHzXXX方式2375k187.5k1XX1XX0XX方式1或方式362.5k020FFH19.2k120FDH9.6k020FDH4.8k120F3H020FAH2.4k020FFH120F3H020F4H1.2k120E6H020E6H020E8H600120CCH020CCH020D0H300020CCH02098H020A0H137.51201DH0201DH0202EH11002072H010FEEBH010FEFFH7.1.1.5单片机之间的通信波特率查询表51系列单片机内部集成有一
本文标题:单片机串口通信485modbus
链接地址:https://www.777doc.com/doc-314741 .html