没有合适的资源?快使用搜索试试~ 我知道了~
单片机串口通信485modbus.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 42 浏览量
2022-11-12
11:46:46
上传
评论
收藏 1.06MB DOCX 举报
温馨提示
试读
28页
。。。
资源推荐
资源详情
资源评论
项目七 单片机通信实践
知识目标:
1. 了解 UART(Universal Asynchronous Receive/Transmitter通用异步收发器。
2.了解 MAX232通信原理及标准的通信协议。
3. 了解 MODBUS通信协议标准
2. 采用通信芯片 MAX485,及多机通信原理。
技能目标:
1, 根据数据格式的协议,数据交换的协议要求硬件连接,实现串行通讯的硬环境。
2. MCU与 PC 机及多个单片机的硬件连接方法
3. 应用 PROTEUS仿真工具软件绘制硬件连接图
4. 使用 Keil C 完成程序的编写和调试
5. 使用最小系统板实现硬件调试
任务一 基于 RS232 的点对点通信
任务提出
通过 MAX232直接应用 UART(Universal Asynchronous Receive/Transmitter通用异步收发器,实现
单片机与单片机,或单片机与 PC微机之间数据传送。
知识准备
7.1.1 串行与并行通信
在实际工作中,计算机与外部设备之间常常要进行信息交换,计算机与计算机之间也要交换信息,所有
这些信息交换可称为通信。
在我们前面所学的知识中所涉及的数据传送都是采用并行方式,如单片机与存储器,的数据传送,存储
器与存储器的数据传送,单片机与并行打印机之间的数据传送,CPU处理数据以 8 位数据并行方式同时一次
传送一字节的数据,这样的传送方式要求用 8 条数据线和若于条控制信号线,传送距离较近。当计算机与计
算机之间的距离较远时过多的电缆使这种方式不够经济。
串行通信是用一位数据线传送数据,只用几条电缆线作控制信号线,串行通信适合远距离数据传送,处
于两地的计算机之间采用串行通信就非常的经济,当然串行通信要求通信双方具有相同的数据转换格式,
规定的时间控制,相等的逻辑电路,通一的通信协议。
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(Universal Asynchronous Receive/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/s
7.1.1.3 单片机串行口控制寄存器
1.串行口控制寄存器 SCON
SCON是串行口控制和状态寄存器,其格式如下:
D7
D6
D5
D4
D3
D2
RB8
D1
TI
D0
RI
SM0
SM1
SM2
REN
TB8
.SM0、SM1:串行口工作方式控制位,具体工作方式见表。
表 7-1-1 串行口工作方式控制
SMO SM1
工作方式
方式 0
方式 1
方式 2
方式 3
说
明
波特串
0
0
1
1
0
1
0
1
同步移位寄存器
10 位异步收发
11 位异步收发
11 位异步收发
fosc/12
由定时器控制
fosc/32 或 fosc/64
由定时器控制
.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.电源控制寄存器 PCON
PCON的第 7 位 SMOD是与串行口的波特率设置有关的选择位。
D7
D6
D5
D4
D3
D2
GF0
D1
PD
D0
IDL
SMOD
GF1
.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 位加载大约用 10 us。
任何数目的移位寄存器可串接用于输出和输入,通过一系列的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
SMOD
64
方式 2 波特率=
×(振荡器频率 fosc)
方式 3 波特率同方式 1(定时器 1 作波特率发生器)。
方式 2 和方式 3 的发送起始于任何一条“写 SBUF”指令。当第 9 位数据(TB8)输出之后,置位 TI。 方
式 2 和方式 3 的前提条件也是 REN 为 1。在第 9 位数据接收到后,如果下列条件同时满足:
剩余27页未读,继续阅读
资源评论
春哥111
- 粉丝: 1w+
- 资源: 5万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功