UART串行传输.docx

上传人:b****5 文档编号:6188007 上传时间:2023-01-04 格式:DOCX 页数:27 大小:777.02KB
下载 相关 举报
UART串行传输.docx_第1页
第1页 / 共27页
UART串行传输.docx_第2页
第2页 / 共27页
UART串行传输.docx_第3页
第3页 / 共27页
UART串行传输.docx_第4页
第4页 / 共27页
UART串行传输.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

UART串行传输.docx

《UART串行传输.docx》由会员分享,可在线阅读,更多相关《UART串行传输.docx(27页珍藏版)》请在冰豆网上搜索。

UART串行传输.docx

UART串行传输

 

串行传输

简介

 

Start

D0

D1

D2

D3

D4

D5

D6

D7

Parity

Stop

0

1

通用异步收发传输器(UniversalAsynchronousReceiver/Transmitter,通常称作UART,读音/ˈjuːart/)是一种异步收发传输器,将数据由串行传输(Serialcommunication)与并行传输(Parallelcommunication)间作传输转换。

•UART通常用在与其他通讯协议(如EIARS-232)的连结上。

•RS-232C是标准的串行传输标准。

RS(Recommendedstandard)代表推荐标准,232是标识号,C代表RS232的第三次修改(1969年)。

•IBMPC机上的COM1、COM2接口,就是RS-232C接口。

简介

•STC12C5410AD系列单片机具有1个采用UART(UniversalAsychronousReceiver/Transmitter)工作方式的全双工串行通信接口。

•串行口由2个数据缓冲器、一个移位寄存器、一个串行控制寄存器和一个波特率发生器等组成。

•串行口的数据缓冲器由2个互相独立的接收、发送缓冲器构成,可以同时发送和接收数据。

•发送缓冲器只能写入而不能读出,接收缓冲器只能读出而不能写入,因而两个缓冲器可以共享一个地址码。

•串行口的两个缓冲器统称为串行通信特殊功能寄存器SBUF,其共享的地址码是99H。

简介

•STC12C5410AD系列单片机的两个串行口都有4种工作方式,其中两种方式的波特率是可变的,另两种是固定的,以供不同应用场合选用。

•用户可用软件设置不同的波特率和选择不同的工作方式。

•主机可通过查询或中断方式对接收/发送进行程序处理。

•STC-12C5410AD系列单片机串行口对应的硬件部分是TxD/P3.1和RxD/P3.0引脚。

•STC12C5410AD系列单片机的串行通信口,除用于数据通信外,还可方便地构成一个或多个并行I/O口,或作串—并转换,或用于扩展串行外设等。

串行口的相关寄存器

 

PCON:

电源控制寄存器(不可位寻址)

Address

bit

B7

B6

B5

B4

B3

B2

B1

B0

87H

name

SMOD

SMOD0

LVDF

POF

GF1

GF0

PD

IDL

•SMOD:

波特率选择位。

复位时SMOD=0。

SMOD=1,则使串行通信方式1、2、3的波特率加倍;

SMOD=0,则各工作方式的波特率不变。

•SMOD0:

帧错误检测有效控制位。

复位时SMOD0=0当SMOD0=1,SCON寄存器中的SM0/FE位用于FE(帧错误检测)功能;

当SMOD0=0,SCON寄存器中的SM0/FE位用于SM0功能,和SM1一起指定串行口的工作方式。

串行控制寄存器SCON

Address

bit

B7

B6

B5

B4

B3

B2

B1

B0

98H

name

SM0/FE

SM1

SM2

REN

TB8

RB8

TI

RI

•用于选择串行通信的工作方式和某些控制功能。

•SM0、SM1确定串行口1的工作方式

•REN:

允许/禁止串行接收控制位。

REN=1为允许串行接收状态

•TI:

发送中断请求中断标志位。

由硬件自动设定TI=1,用软件设定TI=0

•RI:

接收中断请求标志位。

由硬件自动设定RI=1,用软件设定RI=0

串行控制寄存器SCON

Address

bit

B7

B6

B5

B4

B3

B2

B1

B0

98H

name

SM0/FE

SM1

SM2

REN

TB8

RB8

TI

RI

•用于选择串行通信的工作方式和某些控制功能。

•SM0/FE:

若SMOD0=1,当检测到一个无效停止位时,设定SM0/FE=1,必须用软件清除。

•SM2:

允许方式2或方式3多机通信控制位。

•TB8:

用在方式2或方式3,发送第9位,使用软件设定。

•RB8:

用在方式2或方式3,接收第9位。

SM0、SM1确定串行口的工作方式

SM0

SM1

工作方式

功能说明

波特率

0

0

方式0

同步移位元

元串行方式:

移位寄存器

当UART_M0x6=0时,波特率是

SYSclk/12,当UART_M0x6=1,波特率是SYSclk/2

0

1

方式1

8位UART,

串行传输速

率可变

(2SMOD/32)×(定时器1的溢出率)

1

0

方式2

9位UART

(2SMOD/64)xSYSclk系统工作时钟频

1

1

方式3

9位UART,

串行传输速率可变

(2SMOD/32)x(定时器1的溢出率)

当T1x12=0时,定时器1的溢出率=SYSclk/12/(256-TH1);

当T1x12=1时,定时器1的溢出率=SYSclk/(256-TH1)

数据缓冲寄存器SBUF

•缓冲寄存器(SBUF)的地址是99H,对应两个不同的寄存器,

1个是只写寄存器,1个是只读寄存器。

•接收寄存器:

在方式0时它的字长为8位元,其他方式时为9位元。

第9位装入SCON寄存器中的RB8位。

•接收后,将数据由移位寄存器装入SBUF,可立即开始接收下一个信息,主机应在该帧接收结束前从SBUF缓冲器中将数据取走,否则前一帧资料将丢失。

辅助寄存器AUXR

Address

B7

B6

B5

B4

B3

B2

B1

B0

8EH

T0x12

T1x12

UART_M0x6

EADCI

ESPI

ELVDI

-

-

•T1x12:

定时器1速度设置位元如果UART串口用定时器1做波特率发生器,T1x12位就可以控制UART串口是12T还是1T了。

•UART_M0x6:

串行口模式0的通信速度设置位元0,UART串口的模式0的速度是12分频;

1,UART串口的模式0的速度是2分频;

IE:

中断允许寄存器(可位寻址)

Address

B7

B6

B5

B4

B3

B2

B1

B0

A8H

EA

EPCA_LVD

EADC_SPI

ES

ET1

EX1

ET0

EX0

•EA:

CPU的总中断允许控制位,EA=1,CPU开放中断,EA=0,CPU屏蔽所有的中断申请。

•ES:

串行口中断允许位,ES=1,允许串行口中断,ES=0,禁止串行口中断。

IPH:

中断优先级控制寄存器

•PSH,PS:

串行口中断优先级控制位。

•当PSH=0且PS=0时,为最低优先级中断(优先级0)

•当PSH=0且PS=1时,为较低优先级中断(优先级1)

•当PSH=1且PS=0时,为较高优先级中断(优先级2)

•当PSH=1且PS=1时,为最高优先级中断(优先级3)

串行口工作模式0:

同步移位寄存器

•串行口数据由RxD/P3.0端输入/输出,同步移位脉冲

(SHIFTCLOCK)由TxD/P3.1输出。

•发送、接收的是8位数据,低位在先。

 

D7

D6

D5

D4

D3

D2

D1

D0

移位寄存器

D7

D6

D5

D4

D3

D2

D1

D0

发射SBUF

D7

D6

D5

D4

D3

D2

D1

D0

•模式0的发送过程:

当主机执行将数据写入发送缓冲器SBUF指令时启动发送,串行口即将8位数据从RxD管脚输出,发送完中断标志TI置“1”。

TxD管脚输出同步移位脉冲(SHIFTCLOCK)。

•模式0接收过程:

启动接收过程后,RxD为串行输入端,

TxD为同步脉冲输出端。

•波特率固定为SYSclk/12或SYSclk/2,无需定时器提供

•UART_M0x6/AUXR.5=0,SYSclk/12(12分频)

•UART_M0x6/AUXR.5=1,SYSclk/2(2分频)

•由TX和RX控制单元分别产生中断请求信号,并置TI=1或RI

=1,经“或门“送主机请求中断,所以主机响应中断后必须软件判别是TI还是RI请求中断,必须软件清0插断要求标志位TI或RI。

串行口工作模式1:

8位UART,波特率可变

•SM0、SM1=01

•一帧信息为10位:

1位起始位,8位数据位(低位在先)和1位停止位。

•TxD/P3.1为发送信息,RxD/P3.0为接收端接收信息

•串行模式1的波特率=2SMOD×(TIMER1溢出率)/32

•T1x12=0,TIMER1的溢出率=SYSclk/12/(256-TH1);

•T1x12=1,TIMER1的溢出率=SYSclk/(256-TH1)

•UART串行埠传输格式

串行端口模式1串行传输

 

RI

接收SBUF

D7D6

D5D4

D3D2D1D0

 

start

D0D1D2D3D4D5D6D7

移位缓存器

stop

RXD脚

串行数据

串行数据

stopD7

D6D5D4

D3D2D1

D0start

TXD脚

TI

发射SBUF

D7D6

D5D4

D3D2D1D0

串行口工作模式2:

9位UART,波特率固定

•SM0、SM1=10

•一帧信息由11字节成:

1位起始位,8位数据位(低位在先),1位可程序设计位(第9位资料)和1位停止位。

•TxD/P3.1为发送埠,RxD/P3.0为接收埠

•模式2的波特率为:

•=2SMOD×(SYSclk系统工作时钟频率)/64

串行口工作模式2:

9位UART,波特率固定

•第9数据位,TB8(SCON.3)可指定为0或1;或将同位检查

旗标(P,PSW.0)存放到TB8。

•在接收周期时,第9数据位会被存放到RB8。

串行口工作模式3:

9位UART,波特率可变

•一帧的信息由11字节成:

1位起始位,8位数据位

元(低位在先),1位可程序设计位和1位停止位。

•发送时可程序设计第9位数据,由SCON中的TB8提供,可软件设置为1或0,或者可将PSW中的奇/偶校验位P值装入TB8。

•模式3的波特率为:

•=2SMOD×(TIMER1的溢出率)/32

•T1x12=0,TIMER1的溢出率=SYSclk/12/(256-TH1);

•T1x12=1,TIMER1的溢出率=SYSclk/(256-TH1)

传输速率的设置

•串行通信模式0

•UART_M0x6/AUXR.5=0时,其波特率=SYSclk/12。

•UART_M0x6/AUXR.5=1时,其波特率=SYSclk/2。

•串行通信工作模式2

•SMOD=1,传输速率=(SYSclk)/32;

•SMOD=0,传输速率=(SYSclk)/64。

•串行通信模式1、3

•传输速率=2SMOD×(TIMER1的溢出率)/32

•T1x12=0,TIMER1的溢出率=SYSclk/12/(256-TH1);

•T1x12=1,TIMER1的溢出率=SYSclk/(256-TH1)

传输速率的设置

•UART在Mode1模式下,使用Timer1工作于Mode2(自动重

新加载模式)计算传输率公式如下:

9600=

2SMOD振荡器频率

3212⨯[256-(TH1)]

•配合9600传输率,使用11.0592MHz石英晶体振荡器,且

SMOD=0,得出TH1为:

TH1=

256-

2⨯11.0592⨯106

384⨯9600

=253=

FDH

传输速率的设置

•T1x12=0,TIMER1的溢出率=SYSclk×(28-N)/12

•T1x12=1,TIMER1的溢出率=SYSclk×(28-N)

常用波特率

系统时钟

频率(MHz)

SMOD

定时器1

C/T

方式

重新装入值

方式0

MAX:

1M

12

×

×

×

×

方式2

MAX:

375K

12

1

×

×

×

方式1

和3

62.5K

12

1

0

2

FFH

19.2K

11.059

1

0

2

FDH

9.6K

11.059

0

0

2

FDH

4.8K

11.059

0

0

2

FAH

2.4K

11.059

0

0

2

F4H

1.2K

11.059

0

0

2

F8H

137.5

11.986

0

0

2

1DH

110

6

0

0

2

72H

110

12

0

0

1

FFFBH

双机通信

•如果两个8051应用系统距离很近,可将它们的串行埠直接相连(TXD—RXD,RXD—TXD,GND—GND—地),即可实现双机通信。

RS232的串行信号

UART串行埠传输格式

 

Start

D0

D1

D2

D3

D4

D5

D6

D7

Parity

Stop

0

1

 

8051与RS232的串行信号电压转换

 

80515V

信号

0V

+10V

RS232

信号

-10V

GND

15

串行端口UART电路

VCC

16

VCC

 

1

214

T1OUTT1IN11TXD

1

2

3

413

R1INR1OUT12RXD

3

4

5

68

T2OUTT2IN9

R2INR2OUT4

 

RS-232C接脚

 

 

UART电路

•8051的RXD与TXD与EIA界面ICL232连接,做讯号准位转换

-准位0V转换为-8V-15V

-准位5V转换为8V-15V

•使用9PIN的RS-232接头

PIN2(RXD)接脚接收PIN3(TXD)接脚传送PIN5(GND)接地。

双机异步通信软件协议

•甲机发送数据,乙机接收数据。

•在双机开始通信时,先由甲机发送一个呼叫信号(例如“06H”),以询问乙机是否可以接收数据;

•乙机接收到呼叫信号后,若同意接收资料,则发回“00H”作为应答信号,否则发“05H”表示暂不能接收资料,;

•甲机只有在接收到乙机的应答信号“00H”后才可将存储在外部数据存储器中的内容逐一发送给乙机,否则继续向乙机发呼叫信号,直到乙机同意接收。

字节数n

资料1

资料2

资料3

资料n

累加校验和

•发送数据格式如上:

•字节数n:

甲机向乙机发送的资料个数;

•数据1~数据n:

甲机将向乙机发送的n帧资料;

•累加校验和:

为字节数n、数据1、…、数据n,这(n+1)

个字节内容的算术累相加的和.

•乙机根据接收到的“校验和”判断已接收到的n个数据是否正确。

若接收正确,向甲机回发“0FH”信号,否则回发“F0H”信号。

•甲机只有在接收到乙机发回的“0FH”信号才算完成发送任务,返回被调用的程序,否则继续呼叫,重发数据。

双机通信软件(查询方式)

甲机发送子程序

双机通信软件(查询方式)

乙机接收子程序段

双机通信软件(中断方式)

•由于STC-12C5410AD系列单片机的串行通信是双工的,且中断系统只提供一个中断向量入口地址,所以实际上是中断和查询必须相结合,即接收/发送均可各自请求中断,响应中断时主机并不知道是谁请求中断,统一转入同一个中断向量入口,必须由中断服务程序查询确定并转入对应的服务程序进行处理。

•甲方(发送方)任以查询方式通信(从略),乙方(接收

方)则改用中断—查询方式进行通信。

常用的串行端口函数

 

stdio.h内定函数格式

串行埠输出入说明

getkey(void)

接收一个按键数据

getchar(void)

接收一个字符数据

putchar(char)

发射一个字符数据

printf(constchar,...)

发射字符、字符串及数值数据

gets(char,intn)

接收一个字符串字符数据

scanf(constchar,...)

接收字符串数据

puts(constchar)

发射一个字符串字符常数数据

常用显示格式字符表

字符

动作

%d

显示有符号10进制数据

%u

显示无符号10进制数据

%f

显示浮点数10进制资料

%e

显示指数10进制数据

%g

先以浮点数显示,若不行则以指数显示数据

%o

显示8进制数据

%x

显示16进制数据

%6d

10进制数据占用6格,数据右移

%06d

10进制数据占用6格,数据右移,前面加0

%-6d

10进制数据占用6格,数据左移

%c

显示字符数据

%6c

显示字符数据,占用6格,资料右移

%-6c

显示字符数据,占用6格,资料左移

%s

显示字符串数据

常用“\”控制字符表

 

控制字符

动作

ASCII码(16进制)

\0

空字符(NULL)

0x00

\n

换行(LF)

0x0A

\r

归位(CR)

0x0D

\t

跳9格(HT)

0x09

\b

倒退(BS)

0x08

\f

换页(FF)

0x0C

\’

单引号

0x27

\”

双引号

0x22

\\

反斜杠

0x5C

UART

•使用时设定1.ES2.EA3.IP,IPH

•当串行口接收中断请求标志位RI和串行口发送中断请求标志位TI中的任何一个被置为1后,串行口中断都会产生。

范例8_1

•//串行传输模拟的观察与练习

•//从8051传送字符串Hellokitty到PC的超级终端机

•//不使用中断,每次传送1BYTE后检查TI=1,表示传送结

束,必须用软件设定TI=0

范例8_1

范例8_1

范例8_2

•//PC和8051的串行传输

•//从PC的超级终端机输入字符0,1,...9到8051,在8051的port2显示,

•//从8051的port2读取资料,传送到PC的超级终端机显示,

范例8_2

范例8_3

•//串行传输模拟的观察与练习

•//从8051传送字符串Hellokitty到PC的超级终端机

•//使用中断,每次传送1BYTE后,在中断服务程序表示传

送结束,必须用软件设定TI=0

范例8_3

范例8_3

范例8_3

 

范例8_4

•//PC和8051的串行传输

•//从PC的超级终端机输入字符0,1,...9到8051,在8051的port0显示,

•//从8051的port0读取资料,传送到PC的超级终端机显示,

范例8_4

范例8_4

Ex8_4testevenparity

•串行传输的同位检查有none,even,odd,1,0等5种。

•不用同位检查,只需8位,使用模式1;其他方式,需要9位,使用模式3

•设定传输速率9600

Ex8_4testevenparity

 

Ex8_4testevenparity

 

Ex8_4testevenparity

传输速率的设置

Ex8_4testevenparity

Ex8_4testevenparity

 

作业1

•使用8051的UART和PC连接。

•8051的P2连接LED。

•在PC使用超级终端机,当按下1时,第1个(P2.0)LED

亮,…,按下8时,第8个(P2.7)LED亮。

•当按下9时,8051读取P2的数据,将之转换成16进位,传回PC。

例当P2=01000000,PC上出现0x40。

当P2=00001000,

PC上出现0x08。

 

~END~

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

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

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