1、MCS-51 单片机原理及应用教程,清华大学出版社 刘迎春 主编,第7章 单片机的串行通信及接口,串行通信的有关概念 MCS-51 串行通信接口及控制寄存器 串行接口的工作方式 串行口的应用,7.1.1 数据通信,7.1 串行通信的有关概念,(a)并行传输 (b)串行传输 图7.1 两种通信方式,7.1.2 串行通信的传输方向,(a)单工方式 (b)半双工方式,(c)全双工方式,1. 异步通信,7.1.3 异步通信和同步通信,(b)有空闲位 图7.3 串行异步通信的帧格式,2. 同步通信,7.1.4 串行通信的波特率,波特率,即为数据传送速率,表示每秒钟传送二进制代码的位数,它的单位是b/s。
2、波特率对于CPU与外界的通信是很重要的。,图7.4 串行同步通信格式,7.1.5 远距离串行通信,7.1.6 串行通信接口,图7.6 UART的结构示意图,7.2.1 MCS-51串行接口机构,MCS-8051通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界进行通信。,7.2 MCS-51串行通信接口及控制寄存器,7.2.2 串行口控制寄存器,1. 串行口控制寄存器SCON,图7.8 串行口控制寄存器,表7.1 串行口的工作方式选择,电源控制寄存器在串行口控制中只用了一位SMOD。见图7.9。,SMOD称为串行口波特率倍增位,在串行口方式1、方式2和方式
3、3时,波特率与2SMOD成正比,亦即当SMOD1时,波特率提高一倍。复位时,SMOD=0。,2. 电源控制寄存器PCON,7.3.1 工作方式0,7.3 串行接口的工作方式,(a)方式0发送电路 (b)方式0接收电路 图7.10 方式0应用电路,图7.11 串行口方式0发送时序,图7.12 串行口方式0接收时序,7.3.2 工作方式1,帧格式如下:,串行口方式1的发送和接收时序如图7.13所示。,7.3.3 工作方式2和工作方式3,其帧格式为:,方式2和方式3的发送、接收时序与方式1类似,只是增加了一位第九位。发送和接收时序可参考图7.13。,7.3.4 波特率设计,1. 方式0的波特率 方式
4、0波特率=fosc/12,2. 方式2的波特率 方式2波特率取决于PCON中SMOD位的值;当SMOD0时,波特率为fosc的1/64;若SMOD=1,则波特率为fosc的1/32。,3. 方式1和方式3的波特率 (1)方式1、方式3波特率=,(2)方式1、方式3波特率=,例1 8051单片机时钟振荡频率为11.0592MHz,选用定时器T1工作模式2作为波特率发生器,波特率为2400b/s,求初值。并编写初始化程序。 解:设置波特率控制位(SMOD)0 F4H 所以:(TH1)=(TL1)=F4H,初始化程序为: INI: MOV TMOD,#20H ;T1定时方式,模式2MOV PCON,
5、#00H ;SMOD=0MOV TH1,#0F4HMOV TL1,#0F4HSETB TR1MOV SCON,#50H ;串行口方式1,允许接收 ,7.4 串行口的应用,7.4.1 同步通信方式的应用,例1 利用74LS164扩展并行口,构成8位静态显示数码管接口。设计电路图并编写相应的显示驱动程序。显示缓存为40H47H单元,存放被显示数字的共阴极代码。 解:根据题目要求,硬件电路如图7.14所示。图中只画了2位数码管,剩余6位数码管电路与前两位类似。,图7.14 串行口扩展数码管显示接口,7.4.2 方式1双机通信应用,例1 甲乙机以方式1进行串行数据通信,其波特率为2400b/s。甲机发
6、送,发送数据在外部RAM 4000H401FH单元中。乙机接收,并把接收到的数据块首末地址及数据依次存入外部RAM 5000H开始的区域中。数据为ASCII码形式,采用奇校验,单片机时钟振荡频率为11.0592MHz。,解: 求计数器初值 (2) 可采用奇校验 (3) 题目要求将被传送的数据和数据块的首末地址一起传送至接收方,因此串行发送的内容包括数据块的首末地址和数据两部分内容。,7.4.3 多机通信,1. 多机通信原理,2. 多机通信举例,图7.15 多机通信系统框图,例1 设计一255台从机的主从式多机通信系统。 解: (1)通信协议:(2)波特率与时间常数的确定 (3)主机的通信软件(
7、查询方式) (4)从机的通信软件(中断方式),(1)什么是串行异步通信,它有哪些作用? (2)8051单片机的串行口由哪些功能部件组成?各有什么作用? (3)8051串行口有几种工作方式?有几种帧格式?各工作方式的波特率如何确定? (4)假定异步串行通信采用10位帧格式,字符格式为一个起始位、八个数据位、一个停止位,请画出传送ASCII码字符“T”并且采用奇偶较验的帧格式。 (5)8051中SCON的SM2,TB8,RB8有何作用? (6)PCON中SMOD控制位的功能是什么? (7)简述串行通信接口芯片UART的主要功能。 (8)简述单片机多机通信的原理。 (9)设fosc11.0592MH
8、z,试编写一段程序,对串口初始化,使之工作于方式l,波特率为1200b/s,用查询串行口状态的方法读出接收缓冲器的数据并回送到发送缓冲器。,7.5 思考练习题,(10)若晶振为fosc11.0592MHz,采用串行口工作方式1,波特率为4800b/s。写出用T1作为波特率发生器的方式字和计数初值。 (11)串行口工作在方式1和方式3时,其波特率与定时器T1工作模式2的初值及SMOD位的关系如何?设fosc6MHz,现利用定时器T1模式2产生的波特率为110b/s。试计算定时器初值。 (12)说明为什么定时器T1用作串行口波特率发生器时,常选用工作模式2。 (13)若定时器T1设置成模式2,作波特率发生器,已知fosc6MHz。求可能产生的最高和最低的波特率是多少? (14)以8031串行口按工作方式1进行串行数据通信。假定波特率为1200b/s,以中断方式传送数据。试编写全双工通信程序。 (15)以8031串行口按工作方式3进行串行数据通信。假定波特率为1200b/s,第9数据位作奇偶校验位,以中断方式传送数据。试编写通信程序。 (16)设计一个单片机的双机通信系统,并编写通信程序。将甲机内部RAM 30H3FH存储区的数据块通过串行口传送到乙机内部RAM 40H4FH存储区中去。,