异步串行通信.docx
- 文档编号:4120359
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:31
- 大小:658.41KB
异步串行通信.docx
《异步串行通信.docx》由会员分享,可在线阅读,更多相关《异步串行通信.docx(31页珍藏版)》请在冰豆网上搜索。
异步串行通信
******************
实践教学
*******************
****大学
计算机与通信学院
2014年秋季学期
通信系统综合训练
题目:
数字基带信号异步串行通信系统设计
专业班级:
通信工程()班
姓名:
学号:
指导教师:
成绩:
摘要
计算机与外界的信息交换称为通信。
常用通信方式有两种:
并行通信与串行通信。
串行通信又分同步和异步两种方式。
本课程设计利用51单片机与串口的线路连接、并用C语言编写程序实现PC机与51单片机通过RS-232接口实现串行通信以及通过MATLAB的GUI实现单片机与PC端的界面通信,并能根据设置调整异步串行通信参数实现单片机与PC端的通信。
关键字:
51单片机;RS232接口;异步串行传输
目录
前言2
第一章基本原理3
第二章系统分析5
2.1AT80C51单片机5
2.2RS—232接口标准5
2.3单片机串行通信8
第三章系统设计及调试12
3.1硬件部分12
3.2软件部分15
3.3结果分析19
设计总结21
参考文献22
致谢23
附录:
源代码24
前言
近年来,在自动化控制和智能仪器仪表中,单片机的应用越来越广泛,由于单片机的运算功能较差,往往需要借助计算机系统,因此单片机和PC机进行远程通信更具有实际意义,通信的关键在于互传数据信息。
51系列单片机内部的串行口具有通信的功能,该串行口可以作为通信接口,利用该串行口与PC机的串行口进行串行通信,将单片机采集的数据传送到PC机中,由PC机的高级语言或数据库语言对数据进行整理及统计等复杂处理就能满足实际的应用需要。
51单片机的开发除了硬件支持外,同样离不开软件。
用汇编语言或C语言等高级语言编写的源程序必须转换为机器码才能被执行。
目前十分流行的是Keil8051C编译器。
它提供了集成开发环境,包括C编译器、宏汇编、连接器、库管理和仿真调试器。
利用KeilCuVision编写的程序可直接调用编译器编译,连接后可直接烧至单片机上运行。
在整个通信过程中,可以通过自己编写的串口调试助手,实时地读取串口的信息,并送相应的端口显示。
完成51单片机与PC机的串口通信。
第一章基本原理
一条信息的各位数据被依次顺序传送的通信方式成为串行通信。
串行通信可以通过串口实现通信。
根据信息的传送方向,串行通信可以进一步划分为单工、半双工和全双工3种。
信息只能单方向传送为单工;信息能双向传送但不能同时传送为半双工;信息能够同时双向传送则为全双工。
8051系列单片机有一个全双工串行口,全双工的串行通信只需要一根输出线和输入线。
外设
图1.1单片机与外设串口通信原理图
串行通信又有异步通信和同步通信着两种方式。
同步通信是按照软件识别同步字符来实现数据的发送和接收,异步通信是一种利用字符的再同步技术的通信方式。
异步通信实质是指甲乙通信双方采用独立的时钟,每个数据均以起始位开始,停止位结束,起始位触发甲乙双方同步时钟。
每个异步串行帧中的1位彼此严格同步,位周期同步。
所谓异步是指发送、接收双方的数据帧与帧之间不要求同步,也不必同步。
异步通信用起始位“0”表示字符的开始,然后从低位到高位依次传送数据,最后用停止位“1”表示字符的结束。
一个字符又称作一帧信息,一帧信息包括一位起始位、8位信息位、1位停止位如图1.2,若数据位增加至9位,在8051系列单片机中,第九位可以用作奇偶校验位,也可以用作地址/数据帧标志如图1.3。
起始位
D0
D1
D2
D3
D4
D5
D6
D7
停止位
图1.2帧信息(无奇偶校验位)
起始位
D0
D1
D2
D3
D4
D5
D6
D7
D8
停止位
图1.3帧信息(含奇偶校验位)
在同步通信中,每一数据块开头时发送一个或两个字符,使发送与接收双方取得同步。
数据块的各个字符间取消了起始位和停止位,所以通信速度得以提高如图1.4。
同步通信时,如果发送的数据块之间有间隔时间,则发送同步字符填充。
图1.4同步通信中同步字符填充
8051系列单片机串行I/O借口的工作原理就是:
当要发送数据时,单片机自动将SBUF内的8位并行数据转换为一定格式的串行数据,从TXD引脚按规定的波特率来输出;当要接收数据时,要监视RXD引脚,一旦出现起始位“0”,按规定的波特率将外围设备送来的一定格式的串行数据转换成8位并行数据,等待用户读取SBUF寄存器,若不及时读取,SBUF中的数据有可能被刷新。
8051系列单片机上有通用异步接收/发送器(UART,UbiveralAsynchronousReceiver/Transimitter)用于串行通信,发送的数据有TXD引脚输出,接收时从RXD引脚输入,有两个缓冲器(SerialBuffer),一个做发送缓冲器,另一个作为接收缓冲器。
UART是可编程的全双工(FullDuplex)的串行口。
短距离的机间通信可以使用UART的TTL电平,使用驱动芯片(MAX232或1488/1489)可与通用微机进行通信。
波特率时钟必须从内部定时器1或者定时器2来产生。
若在应用中实现R232所有的握手方式,则必须借助单片机其它引脚用软件来处理。
第二章系统分析
2.1AT80C51单片机
1定时器/计时器
AT89C51单片机至少有16位内部定时器/计时器(T/C,Timer/Counter),提供了3个定时器。
其中两个基本定时器/计数器0(T/C0)和定时器/计数器1(T/C1),它们即可以编程为定时器使用,也可以编程为计数器使用,若是计数器内部晶振驱动时钟,则是定时器;若是计数输入引脚的脉冲信号,则它是计数器。
2串行口
串行收/发存储在特殊功能寄存器的SBUF(串行数据缓冲器),SBUF占用RAM地址为99H。
实际上在单片机内部有两个数据缓冲器;发送缓冲器和接收缓冲器,它们都以SBUF来命名,只根据对SBUF特殊功能寄存器读/写操作,单片机会自动切换发送缓冲器或接收缓冲器。
SBUF=0x01,该操作为写操作,数值0x01会被装载到发送缓冲器。
TTmpmp=SBUF,该操作为读操作,接收缓冲器的内容,接收缓冲器的内容会被赋值给变量。
3中断系统
AT89C51单片机中断系统的功能有5个中断源,2个中断优先级,从而实现二级中断嵌套,每一个中断源的优先级可有程序设定。
与中断系统工作有关的特殊功能寄存器有关的特殊功能寄存器有中断允许控制寄存器IE、中断优先级控制寄存器IP以及定时器/计数器控制寄存器TCON等。
2.2RS—232接口标准
RS-232C标准(协议)的全称是EIA-RS-232C标准,定义是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据接口技术标准”。
它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。
其中EIA代表美国电子工业协会,RS代表推荐标准,232是标识号,C代表RS232的最新一次修订。
RS—232接口引脚定义
由于RS-232并未定义连接器的物理特性,本课程设计使用的是DB-9类型的连接器,其引脚定义如下:
图2.1DB9引脚图
表2-1RS引脚功能表
旧制JIS名称
新制JIS名称
全称
说明
FG
SG
FrameGround
连到机器的接地线
TXD
SD
TransmittedData
数据输出线
RXD
RD
ReceivedData
数据输入线
RTS
RS
RequesttoSend
要求发送数据
CTS
CS
CleartoSend
回应对方发送的RTS的发送许可,告诉对方可以发送
DSR
DR
DataSetReady
告知本机在待命状态
DTR
ER
DataTerminalReady
告知数据终端处于待命状态
CD
CD
CarrierDetect
载波检出,用以确认是否收到Modem的载波
SG
SG
SignalGround
信号线的接地线(严格的说是信号线的零标准线)
RS—232C规标准接口有25条线,4条数据线、11条控制线、3条定时线、7条备用和未定义线,常用的只有9根,它们是:
(1)状态线
数据准备就绪(Datasetready-DSR)有效时(ON)状态,表明数据通信设备可以使用。
(DCE->DTE).
数据终端就绪(Datasetready-DTR)有效时(ON)状态,表明数据终端设备可以使用。
(DTE—>DCE)
这两个信号有时连在电脑上,上电就;立即有效。
这两个设备状态信号有效,只表示设备本身可用,并不表示通信链路可以开始进行通信了,能否开始进行通信要由下面的控制信号决定。
(2)联络线
请求发送(Requesttosend-RTS)DTE准备向DCE发送数据,DTE使该信号有效(ON状态),通知DCE要发送数据给DCE了。
(DTE->DCE)
允许发送(CLeartosend-CTS)是对RTS的响应信号。
当DCE已准备好接收DTE传来的数据时,是该信号有效,通知DTE开始发送数据。
(DCE->DTE)
RTS/CTS请求应答联络信号是用于半双工MODEM系统中发送方式和接收方式之间的切换。
在全双工系统中,因配置双向通道,故不需要RTS/CTS联络信号,使其变高。
(3)数据线
发送数据(Transmitteddata-TxD)DTE发送数据到DCE。
(DTE->DCE)
接收数据(Receiveddata-RxD)DCE发送数据到DTE。
(DCE->DTE)
(4)地线
有两根SG、PG:
信号地和保护地信号线。
(5)其余
载波检测(CarrierDetection-CD):
用来表示DCE已接通通信链路,告知DTE准备接收数据。
(DCE—>DTE)
振铃指示(Ring-RI):
当DCE收到交换台送来的振铃呼叫信号时,使该信号有效(ON状态),通知DTE,已被呼叫。
(DCE—>DTE)
通常的应用系统中,往往是CPU和I/O设备之间传送信息,两者都是DTE,比如PC和色温计,PC和单片机之间的通信,双方都能发送和接收,它们的连接只需要使用三根线即可,即RXD,TXD和GND。
2.3单片机串行通信
串行通信方式传输数据只需要两条数据线,更加经济简单,而且大大减少了数据传输过程中的串扰现象,更利于长距离通信。
所以串行通信方式在近几年得以快速发展,在各种通信领域中发挥重要作用。
51单片机的串行通信接口为RS-232接口,是一个全双工异步串行接口(UART)(已在2.2中详细介绍)。
8051系列单片机的串行接口可以与PC机的COM接口进行通信,从而可以实现单片机的PC上位机控制。
51单片机的串行数据输入口为P3.0(RXD);串行数据输出口为P3.1口(TXD)。
2.3.151单片机串行通信控制寄存器
表2-251单片机串行端口控制寄存器SCON
SCON(98H)
位
7
6
5
4
3
2
1
0
功能
SM0
SM1
SM2
REN
TB8
RB8
T1
R1
表2-3SM0、SM1指定串口工作方式
SM0
SM1
工作方式
功能描述
波特率
0
0
方式0
8位移位寄存器
/12
0
1
方式1
10位UART
由定时器决定
1
0
方式2
11位UART
/64或
/32
1
1
方式3
11位UART
由定时器决定
SM2:
多机通信控制位。
主要用于方式2、3中;
方式0不用此位应设此位为零;
方式1下此位也应设置为0,此时单片机只有接收到停止位后才置位RI位,并引发中断;
方式2、3中,当SM2清零后,串口以单片机方式发送或者接收数据,无论数据的第九位(RB8)为0还是1,都能够使R1被激活,并引发中断;
方式2、3中,当SM2置位后,只有接收到的第九位数据(RB8)为1时才能置位RI,并引发中断。
当接收到的第九位数据为0时,不置位RI,接收到的数据丢失。
REN:
接收允许控制位。
由软件控制,置位则开始接收数据,清零则停止接收数据。
TB8:
方式2、3时,本位为第九位传送位,由软件设置。
RB8:
接收到数据的第9位。
方式0不能使用该位;
方式1中,如果SM2=0,该位为接收到的停止位;
方式2、3中,该位为接收到数据的第9位;
T1:
发送中断标志位。
当数据发送完成后该位置位,并引发中断。
该位有硬件置位,必须由软件清零。
RI:
接收中断标志位。
当数据接收完成后该位置位,并引发中断。
该位由硬件置位,必须由软件清零。
表2-4电源控制寄存器PCON
PCON
(87H)
位
7
6
5
4
3
2
1
0
功能
SMOD
-
-
-
GF1
GF0
PD
IDL
SMOD:
波特率加倍位。
当串口的波特率由T1产生时,该位置位则串口波特率提高一位。
GF1:
通用标志位。
GF2:
通用标志位。
PD:
此位置位后,单片机进入掉电模式,只能由硬件复位。
IDL:
此位置位后,单片机进入空闲模式。
2.3.2串口工作模式解析
1.方式0
在方式0下,串口的SBUF为一个同步移位寄存器。
发送数据时,数据由RxD引脚串行输入/输出,TxD发出移位脉冲。
8位数据发送/接收时,低位在前,高位在后。
发送/接收完一帧数据后,TI/RI由硬件置位,并在中断允许的情况下向CPU请求中断。
2.方式1
方式1为波特率可变的10为异步串行通信接口。
10位数据包括一个起始位0,8个数据位,1个停止位。
其传输的波特率由T1的溢出率决定(波特率=T1溢出率)。
当TI=0时,8位数据可以送入SBUF寄存器中,TxD便将包括起始位和停止位的8位数据发送出去,发送完成后TI置位,如果在中断允许的条件下,引发CPU中断,提醒CPU数据发送已经完成。
当RI=0,且REN=1时,串行口采样RxD引脚,当采样到1至0的跳变并确认为起始位后,就开始接收一帧数据。
只有当RI=0且停止位为1(或者SM2=0)时,停止位才进入RB8,8位数据才进入接收寄存器,并由硬件置位中断标志RI,否则信息丢失。
所以,在方式1接收数据时,应该先用软件清零RI和SM2标志。
3.方式2
方式2为固定波特率的11为UART方式,它仅比方式1增加了一个可由软件改变的第9位数据位。
方式2发送数据时,数据由TxD端口输出一帧11位信息,包括起始位,8位数据,由SCON寄存器TB8决定的第9位数据,停止位。
当11位数据发送完成后,硬件置位TI位,如果允许中断则引发中断过程。
当REN=1时,串口串行口采样RxD引脚,当采样到1至0的跳变并确认为起始位后,就开始接收一帧数据。
当SM2=0时,无论接收到的第9位为1还是0,硬件都置位RI,并将接收到的8位数据送入SBUF寄存器。
当SM2=1时,只有接收到的第9位数据位为1时才能引发硬件置位RI位,8位数据送入SBUF寄存器,第9位数据送入RB8。
如果在中断允许的情况下引发中断。
4.方式3
方式3为波特率可变的11位UART方式。
除波特率由定时器1的溢出率决定外,其他与方式2相同。
2.3.3串口波特率计算
在方式1和方式3中,使用定时器1来产生波特率,由于串口定时要求比较严格,因此一般采用定时器1的可自动重装的方式2进行计时。
在定时器1方式2下,传输波特率计算公式为:
(2-1)
根据此式便可推导出在一定波特率下正确的定时器1初值。
值得注意的是,当波特率加倍位开启后,最终的波特率应该为上式数值的两倍。
2.3.4串口初始化步骤
串口初始化过程一般为:
(方式0、2不必设定T1,前4步可省去)
1.T1工作方式确定(TMOD);
2.TH1、TL1初值设定;
3.启动定时器1(TR1);
4.设定波特率加倍位;
5.串口工作方式确定,允许接收(SCON);
6.总中断使能(不使用中断方式可不启动总中断)。
第三章系统设计及调试
本部分包括硬件设计和软件设计两部分,硬件部分主要是实现单片机与PC机的双向通信,软件部分则是通过串口助手来调试PC端与单片机之间发送的具体信息。
3.1硬件部分
此部分实现PC端与单片机端的双向通信,PC端的电平是TTL,需要通过MAX232电平转换电路来实现TTL电平与单片机的RS232电平之间的转换。
各组成电路如下图:
异步串口通信电路
图3.1硬件电路组成图
3.1.1AT89C51及其外围电路
在系统设计中使用AT89C51单片机作为下位机与PC机进行串口通信。
AT89C51是美国ATMEL公司生产的低电压高性能的CMOS8位单片机片内置4Kbits的可反复擦写的只读程序存储器PEROM和128bytes的随机存储器
RAM器件采用ATMEL公司的高密度、非易失存储技术生产兼容标准MCS-51指令系统片内置通用8位中央处理器CPU和Flash存储单元功能强大。
AT89C51包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。
本设计中主要是利用AT89C51的异步通信UART模式原理实现单片机与PC机之间的串口通信的。
下图是AT89C51及其外围电路
图3.2AT89C51及其外围电路
该电路可以实现单片机在固定的振荡频率上正常工作,以及更好的实现PC端与单片机的通信。
3.1.2电平转换电路
一般单片机的串口通信都需要通过MAX232进行电平转换后进行数据通信的,当然AT89C51单片机也不例外,下图是电平转换电路,其中单片机的TXD与MAX232的R1OUT相连,单片机的RXD与MAX232的T1IN相连;T1OUT与RS232的RXD相连,R1IN与RS232的TXD相连。
由于RS232的逻辑“0”电平规定为+5V-+15V,逻辑“1”电平规定为-15V--5V,因此不能直接连接与TTL/CMOS电路连接,必须进行电平转换。
电平转换可以使用三极管等分离器件实现,也可采用专用的电平转换芯片,MAX232就是其中典型的一种。
MAX232不仅能够实现电平的转换,同时也实现了逻辑的相互转换即正逻辑转负逻辑。
图3.3MAX232电平转换电路
下图是整体硬件电路图的设计,同过该图可以实现从PC端发送数据,通过数码管可以显示PC端发送的信息;也可以通过按键,在通信界面显示由单片机发来的信息。
图3.4硬件部分电路
3.2软件部分
该部分需要通过在WindowsXP系统下利用VSPD虚拟出两个需要进行通信的COM端口号,利用keil编写出单片机初始化以及与PC机通信的程序,通过MATLAB的GUI编写二者通信的串口界面,从而实现信息的串行异步传输。
软件部分流程图如下:
结束
图3.5软件部分流程图
TI=1
N
N
Y
Y
Y
结束
置RI=0,单片机等待发送
置TI=0,PC端等待发送
图3.6程序设计流程图
单片机程序设计的流程图如上,通过对程序初始化,可以实现单片机与PC端的通信。
通过置中断标志位可以实现单片机对数据的读写操作。
具体的软件操作流程如下所述:
首先,需要虚拟出进行通信的两个串口,如下图,图中虚拟出通信的两个端口COM1<->COM2口,并将keil绑定至COM2口,利用串口通信助手打开需要通信的COM1口,从而实现二者的通信。
图3.7VSPD虚拟出的COM1、COM2口
图3.7keil绑定COM2端口的界面
图3.7中是给已编好的C文件添加*.INI为后缀的配置文件,文件内容为:
MODECOM29600,0,8,1//keil绑定COM2,设置其波特率、校验位、数据位和停止位的参数
ASSIGNCOM2
图3.9串口助手界面
上图是利用MATLAB的GUI设计的串口通信助手的界面,通过该界面可以读取串口的信息,也可以向串口发送信息。
图3.10PC端向单片机发送消息界面
上图是由PC端向单片机发送消息的界面,在PC端发送一串字符可以在COM2口(单片机端)接收到,并在接收框显示,表明实现了PC端向单片机端的通信。
图3.11单片机向PC端发送信息的界面
图3.12PC端接收单片机的信息界面
图3.10是单片机向PC机发送信息的界面,通过发送可以在PC端的显示界面上显示(如图3.11所示)。
表明实现了由单片机到PC端的通信。
3.3结果分析
硬件部分的电路仿真从原理上可以说明实现了单片机与PC机的双向串行异步通信,代码的编译没有问题,可能是硬件设计存在问题,最后的硬件仿真图没有实现预定的结果。
软件部分的仿真可由上述图3.10至3.12说明通过软件可以实现PC端与单片机的双向串行异步通信。
但当发送的数据过于多,速度过快时,仿真出来的串口助手有时会突然关闭,以至于不能正确读取信息,这也是软件设计部分的局限所在,其余功能在XP系统上运行良好。
设计总结
本次课程设计历时3周,在其中学到了很多新知识,也锻炼了自己的动手能力和学习新知识的能力。
认识到在老师的指引和帮助下以及同学之间互相讨论的过程中很多棘手的问题都可以解决,从中学到的不仅有学科知识,还有许多解决问题的能力。
为此,需要不断地积累基础知识,试着自己独立地解决一些问题。
在这次课程设计中,也感到自己在动手方面的欠缺,只是在现学现用,并没有足够的知识储备,在用的时候马上放到恰当的位置。
另外,在理论方面还存在许多欠缺的地方,因此在设计代码的过程中走了不少弯路。
因此在今后的工作和学习中,要规划好要做的事情,夯实理论基础,实现高效工作。
参考文献
[1]张旭涛.曾现峰.单片机原理与应用.北京:
北京理工大学出版社.2006
[2]穆兰.单片微型计算机原理及接口技术.北京:
机械工业出版社.2002
[3]杨金岩.郑应强.51单片机数据传输接口扩展技术与应用实例.北京:
人民邮电出版社.2006
[4]胡伟.季晓衡.单片机C程序设计及应用实例.北京:
人民邮电出版社.2006
[5]黄智伟.全国大学生电子设计竞赛系统设计.北京:
北京航空航天大学
出版社.2006
[6]胡汉才组编.单片机原理及接口技术.北京:
清华大学出版社,1996
致谢
在本次课程设计中,首先要感谢我的同学们,在我遇到困难时,他们给了我很大的帮助。
最重要的是要感谢彭老师的悉心支持与帮助,让我少走了许多弯路,再次真的谢谢您,您给了我们很大的帮我们遇到困难时,您给我们耐心指导,不厌其烦地给我们演示。
可以说没有您的帮助,我们的设计将很难完成,在此我要对您的谆谆教诲表示衷心的感谢!
附录:
源代码
串口
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 异步 串行 通信
![提示](https://static.bdocx.com/images/bang_tan.gif)