串行通信及数据校验程序设计.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中北大学
单片机原理及接口技术
课程设计说明书
学生姓名:学号:
学院:计算机与控制工程学院
专业:自动化
题目:串行通信及数据校验程序设计
指导教师:职称:
2013年12月22日
中北大学
单片机及其接口技术课程设计任务书
12/13 学年第一学期
学院:计算机与控制工程学院
专业:自动化
学生姓名:学号
课程设计题目:串行通信及数据校验程序设计
起迄日期:12月16 日~12月20 日
课程设计地点:中北大学
指导教师:沈小林
下达任务书日期: 2013年12月16日
课程设计任务书
课程设计任务书
目录
一、设计任务 (2)
1.任务 (2)
2.通信技术要求 (2)
二、基本原理 (2)
1. AT89C51单片机的串行接口结构 (2)
2.串行口方式1的发送和接收 (4)
3.设置串行通信寄存器 (4)
三、系统方案比较与论证 (5)
1.汇编语言和C语言的特点及选择 (5)
2.并行通信与串行通信的比较 (5)
3.串行通信程序设计的比较 (6)
4.同步通信与异步通信的区别 (6)
四、系统电路设计 (6)
五、软件设计 (7)
1.发送程序设计 (7)
2.接收程序设计 (7)
3.校验程序设计 (8)
4.系统软件总体流程图 (9)
六、总结 (11)
七、参考文献 (11)
一、设计任务
1.任务
通过对单片机串行通信程序设计掌握单片机串行数据通讯的实现及数据校验的原理。
2.通信技术要求
(1)串行通信波特率:9600bps;
(2)数据长度:20字节
二、基本原理
1.AT89C51单片机的串行接口结构
51单片机的串行接口是一个全双工的接口,它可以作为UART用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下:
(1)数据缓冲器(SBUF)
接受或发送的数据都要先送到SBUF缓存。接收SBUF和发送SBUF用同一直接地址99H,两者在物理结构上是相互独立的,单片机用它们来接收和发送数据,发送时用指令将数据送到SBUF即可启动发送;接收时用指令将SBUF中接收到的数据取出。
(2)串行控制寄存器(SCON)
SCON用于串行通信方式的选择,收发控制及状态指示,各位含义如下:
SM0,SM1:串行接口工作方式选择位,这两位组合成00,01,10,11对应于工作方式
0、1、2、3。串行接口工作方式特点见下表
SM2:多机通信控制位。
REN :接收允许控制位。软件置1允许接收;软件置0禁止接收。 TB8:方式2或3时,TB8为要发送的第9位数据,根据需要由软件置1或清0。
RB9:在方式2或3时,RB8位接收到的第9位数据,实际为主机发送的第9位数据TB8,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。
TI :发送中断标志。发送完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续发送。
RI :接收中断标志。接收完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续接收。
(3)输入移位寄存器
数据先串行进入输入移位寄存器,8位数据全移入后,再并行送入接收SBUF 中。
(4)波特率发生器
波特率发生器用来控制串行通信的数据传输速率的,51系列单片机用定时器T1作为波特率发生器,T1设置在定时方式。波特率时用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。
(5)电源控制寄存器PCON ,最高位为波特率控制位SMOD 。 (6)波特率计算
串行口方式1波特率≌2SMOD /32×f OSC /12(256-X)
下表列出了定时器T1工作于方式2常用波特率及初值。
.
方式1真正用于串行发送或接收,为10位通用异步接口。TXD与RXD分别用于发送与接收数据。收发一帧数据的格式为1位的起始位(低位在前)﹑1位停止位,最高位TB8用来作奇偶校验位,共10位。在接收时,停止位进入SCON的RB8,此方式的传送波特率可调。
串行口方式1的发送与接收时序如图7—12(a)和(b)所示。
图1—1 方式1发送和接收时序
3.设置串行通信寄存器。
(1)确定定时器T1工作模式寄存器TMOD
令TMOD=00100000B=10H,定时器工作于模式2(自动重装初始值定时器),这种模式下可以自动重新装载初始值,可省去用户软件中重装常数的语句,并可产生相当精确的定时时间,此时定时器T1用作波特率发生器,系统晶体振荡频率为11.059MHZ。
(2)设置串行通信控制寄存器SCON
由于采用了方式1、全双工通信、允许接收,所以SCON中取(SM0 SM1)=0 1、REN =1,其余有关多机通信的控制位SM2、TB8、RB8和接收/发送中断标志TI、RI都应清0,因此SCON=01010000B=50H,基本设置如下表所示:
(3
令波特率控制位SMOD=0,波特率为设定值9600bps。
(4)计算定时器T1的初值X
X≌256-fosc×(SMOD+1)/(384×波特率)解得:X≌FDH
所以(TH1)=(TL1)=FDH。
(5)确定通信协议
甲机:将片外数据存储器单元的内容向乙机发送,每发送一帧信息,乙机对接收的信息进行奇偶校验。此处对发送的数据作偶校验,将P值放在TB8中。若校验正确,则乙机向甲机回发“数据发送正确”的信号(以00H作为应答信号)。甲机收到乙机“正确”的应答信号后,再发送下一个字节。若奇偶校验有错,则乙机发出“数据发送不正确”的信号(以FFH作为应答信号)。甲机接收到“不正确”应答信号后,重新发送原数据,直至发送正确。甲机将该数据块发送完毕后停止发送。其发送格式为:
乙机:接收甲机发送的数据,并写入片外数据存储器中。每接收一帧数据,乙机对所接收的数据进行奇、偶校验,并发出相应的应答信号,直至接收完所有的数据。
4 MAZ232芯片
用8051串行接口通信,如果两台8051单片机之间的距离很近(不超过1.5m),可以采用直接将两台8051单片机的串行接口直接相连,利用其自身的TTL电平(0-5V)直接传输数据信息。如果传输距离较远(超过1.5m),由于传输线的阻抗与分布电容,会产生电平损耗和波形畸变,以至于检测不出数据或数据出错。此时可利用 RS232标准总线接口,将单片机输出的TTL电平转换为RS232标准电平(逻辑1为-15—-5V;逻辑0为+5-—+15V)。用RS232可将传输距离提高到15m,如果想远距离传输,可以采用RS422或者RS485。
电平转换芯片MAX232是美信公司(MAXIM)生产,专用于进行将TTL电平转换为RS232电平的芯片,MAX232内部有泵电源,能将+5V电源电压在芯片内提高到RS232电平所需的+10V或者-10V电平。