1、MCS-51 单片机原理及应用教程单片机原理及应用教程 清华大学出版社清华大学出版社刘迎春刘迎春 主编主编第第7章章 单片机的串行通信及接口单片机的串行通信及接口u串行通信的有关概念uMCS-51 串行通信接口及控制寄存器u串行接口的工作方式u串行口的应用 7.1.1 数据通信数据通信7.1 串行通信的有关概念串行通信的有关概念(a)并行传输(b)串行传输图7.1 两种通信方式7.1.2 串行通信的传输方向串行通信的传输方向 (a)单工方式 (b)半双工方式(c)全双工方式1.异步通信7.1.3 异步通信和同步通信异步通信和同步通信 数据位 数据位 停止位 起始位 D0 D1 D2 D3 D4
2、 D5 D6 D7 校验位 停止位 起始位 D0 D1 D2 1 0 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 1 0 0/1 0/1 0/1 第 N 个字符 第 N+1 个字符(a)无空闲位 数据位 停止位 起始位 D0 D1 D2 D3 D4 D5 D6 D7 校验位 停止位 空闲位 起始位 数据位 1 0 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 1 1 1 1 0 第 N 个字符 第 N+1 个字符(b)有空闲位图7.3 串行异步通信的帧格式2.同步通信7.1.4 串行通信的波特率串行通信的波特率波特率,即为数据传送速率,表示
3、每秒钟传送二进制代码的位数,它的单位是b/s。波特率对于CPU与外界的通信是很重要的。同步字符 1 同步字符 2 数据 数据 数据 数据 图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 9FH 9EH 9DH 9
4、CH 9BH 9AH 99H 98H SCON(98H)SM0 SM1 SM2 REN TB8 RB8 TI RI 图7.8 串行口控制寄存器表7.1 串行口的工作方式选择SM0SM1工作方式说明波特率00方式0同步移位方式fosc/1201方式110位异步收发定时器T1控制10方式211位异步收发fosc/32或fosc/6411方式311位异步收发定时器T1控制电源控制寄存器在串行口控制中只用了一位SMOD。见图7.9。SMOD称为串行口波特率倍增位,在串行口方式1、方式2和方式3时,波特率与2SMOD成正比,亦即当SMOD1时,波特率提高一倍。复位时,SMOD=0。2.电源控制寄存器PC
5、ON D7 PCON(87H)SMOD 7.3.1 工作方式工作方式07.3 串行接口的工作方式串行接口的工作方式(a)方式0发送电路 (b)方式0接收电路图7.10 方式0应用电路图7.11 串行口方式0发送时序图7.12 串行口方式0接收时序7.3.2 工作方式工作方式1帧格式如下:起始D0D1D2D3D4D5D6D7停止串行口方式1的发送和接收时序如图7.13所示。7.3.3 工作方式工作方式2和工作方式和工作方式3其帧格式为:起始D0D1D2D3D4D5D6D7D8停止方式2和方式3的发送、接收时序与方式1类似,只是增加了一位第九位。发送和接收时序可参考图7.13。7.3.4 波特率设
6、计波特率设计1.方式0的波特率方式0波特率=fosc/122.方式2的波特率方式2波特率取决于PCON中SMOD位的值;当SMOD0时,波特率为fosc的1/64;若SMOD=1,则波特率为fosc的1/32。3.方式1和方式3的波特率(1)方式1、方式3波特率=SMOD2(T1)32溢出率(2)方式1、方式3波特率=SMODOSCf23212(256X)例例1 8051单片机时钟振荡频率为11.0592MHz,选用定时器T1工作模式2作为波特率发生器,波特率为2400b/s,求初值。并编写初始化程序。解解:设置波特率控制位(SMOD)0F4H所以:(TH1)=(TL1)=F4H初始化程序为:
7、INI:MOVTMOD,#20H;T1定时方式,模式2 MOVPCON,#00H;SMOD=0 MOVTH1,#0F4H MOVTL1,#0F4H SETB TR1 MOVSCON,#50H;串行口方式1,允许接收7.4 串行口的应用串行口的应用7.4.1 同步通信方式的应用同步通信方式的应用例例1 利用74LS164扩展并行口,构成8位静态显示数码管接口。设计电路图并编写相应的显示驱动程序。显示缓存为40H47H单元,存放被显示数字的共阴极代码。解解:根据题目要求,硬件电路如图7.14所示。图中只画了2位数码管,剩余6位数码管电路与前两位类似。图7.14 串行口扩展数码管显示接口7.4.2
8、方式方式1双机通信应用双机通信应用例例1 甲乙机以方式1进行串行数据通信,其波特率为2400b/s。甲机发送,发送数据在外部RAM 4000H401FH单元中。乙机接收,并把接收到的数据块首末地址及数据依次存入外部RAM 5000H开始的区域中。数据为ASCII码形式,采用奇校验,单片机时钟振荡频率为11.0592MHz。解:(1)求计数器初值(2)可采用奇校验(3)题目要求将被传送的数据和数据块的首末地址一起传送至接收方,因此串行发送的内容包括数据块的首末地址和数据两部分内容。7.4.3 多机通信多机通信1.多机通信原理2.多机通信举例图7.15 多机通信系统框图例例1 设计一255台从机的
9、主从式多机通信系统。解:(1)通信协议:(2)波特率与时间常数的确定(3)主机的通信软件(查询方式)(4)从机的通信软件(中断方式)(1)什么是串行异步通信,它有哪些作用?(2)8051单片机的串行口由哪些功能部件组成?各有什么作用?(3)8051串行口有几种工作方式?有几种帧格式?各工作方式的波特率如何确定?(4)假定异步串行通信采用10位帧格式,字符格式为一个起始位、八个数据位、一个停止位,请画出传送ASCII码字符“T”并且采用奇偶较验的帧格式。(5)8051中SCON的SM2,TB8,RB8有何作用?(6)PCON中SMOD控制位的功能是什么?(7)简述串行通信接口芯片UART的主要功
10、能。(8)简述单片机多机通信的原理。(9)设fosc11.0592MHz,试编写一段程序,对串口初始化,使之工作于方式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存储区中去。