第07章 单片机串行通信系统【专业教育】.ppt

上传人:rrsccc 文档编号:9971447 上传时间:2021-04-07 格式:PPT 页数:60 大小:3.07MB
返回 下载 相关 举报
第07章 单片机串行通信系统【专业教育】.ppt_第1页
第1页 / 共60页
第07章 单片机串行通信系统【专业教育】.ppt_第2页
第2页 / 共60页
第07章 单片机串行通信系统【专业教育】.ppt_第3页
第3页 / 共60页
第07章 单片机串行通信系统【专业教育】.ppt_第4页
第4页 / 共60页
第07章 单片机串行通信系统【专业教育】.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《第07章 单片机串行通信系统【专业教育】.ppt》由会员分享,可在线阅读,更多相关《第07章 单片机串行通信系统【专业教育】.ppt(60页珍藏版)》请在三一文库上搜索。

1、第07章 单片机串行通信系统,7.1 概述 6.2 串行通信接口 7.3 串行通信工作方式 7.4 串行通信波特率设置 7.5 串行方式时间显示Proteus仿真,1,学习幻灯,串行通信优点:便于长距离传送 缺点:传送速度较慢,计算机与外界信息交换称为通信。,通信的基本方式可分为并行通信和串行通信:,并行通信是数据的各位同时发送或同时接收;,串行通信是数据的各位依次逐位发送或接收。,并行通信优点:传送速度快 缺点:不便长距离传送,7.1 概 述,串行通信按同步方式可分为异步通信和同步通信。,2,学习幻灯,并行通信和串行通信,3,学习幻灯,7.1.1 异步通信,4,学习幻灯,串行异步传送中,通信

2、双方必须事先约定: 1、字符格式。双方要事先约定字符的编码形式、奇偶校验形式及起始位和停止位的规定。 2、在异步通信中,发送端与接收端的波特率必须一致。 (波特率(Baud rate)。波特率就是数据的传送速率,即每秒钟传送的二进制数位数,单位为位/秒。),5,学习幻灯,常用标准波特率: b/s 110、 300、 600、1200、1800、2400、4800、9600、19200,6,学习幻灯,7.1.2 同步通信,7,学习幻灯,波特率的倒数即为每位传输所需的时间。 相互通信的甲乙双方必须具有相同的波特率,否则无法成功地完成串行数据通信。,串行通信波特率,波特率bps(bit per se

3、cond)定义: 每秒传输数据的位数,即:,1波特 = 1位/秒(1bps),8,学习幻灯,7.1.3 串行通信的制式,串行通信中,数据通常是在二个端点(点对点)之间进行传送,按照数据流动的方向可分成三种传送模式: 单工、半双工、全双工.,1、单工方式(Simplex) :数据仅按一个固定方向传送。,9,学习幻灯,2、半双工制式(Half Duplex),使用同一根传输线,数据可双向传送,但不能同时进行。,10,学习幻灯,3、全双工制式(Full Duplex),数据的发送和接收可同时进行,11,学习幻灯,单工:广播,双工:电话,半双工:对讲机,12,学习幻灯,指令清0 RI/TI,波特率发生

4、器,下降沿表示“0”起始位开始,波特率因子:16,波特率加倍,7.2 80C51串行通信接口,13,学习幻灯,波特率因子,为保证数据传送的准确性,发送/接收时钟频率f应大于等于波特率B f= nB n为波特率因子。 同步时:n=1 异步时:通常n=16,即16个时钟脉冲传送一位数据,在7、8、9三个时钟脉冲边沿采样数据,并采用三取二原则确定数据值,14,学习幻灯,波特率误差与时钟频率,设晶振频率:6MHz. SMOD=0,串口方式1 波特率B=4800 b/s 波特率误差 8.5% 波特率B=1200 b/s 波特率误差 0.1% 波特率不同,误差不同 若选择晶振频率:11.059MHz. 波

5、特率误差普遍很小,15,学习幻灯,发送时,只需将发送数据输入SBUF,CPU将自动启动和完成串行数据的发送; 接收时,CPU将自动把接收到的数据存入SBUF,用户只需从SBUF中读出接收数据。,串行口特殊功能寄存器 5个,1、串行数据缓冲器SBUF,在逻辑上只有一个,既表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H,用同一寄存器名SBUF。 在物理上有两个,一个是发送缓冲寄存器,另一个是接收缓冲寄存器。,16,学习幻灯,2、串行控制寄存器SCON, SM0 SM1 串行口工作方式选择位。 SM2 多机通信控制位。 REN 允许接收控制位。REN=1,允许接收。 TB8 方式2和方式

6、3中要发送的第9位数据。 RB8 方式2和方式3中要接收的第9位数据。 TI 发送中断标志。 RI 接收中断标志。,17,学习幻灯,SM0、SM1:串行口工作方式选择位。用于选择四种工作方式,18,学习幻灯,SM2,通常,SM2主要用于从机的状态控制 SM2=0 表示从机为数据传送状态 SM2=1 表示从机为地址传送状态,19,学习幻灯,3) REN允许串行接收控制位 REN0 禁止接收数据 REN1 允许接收数据 4) TB8发送数据第9位。 在方式2和方式3时,TB8为所要发送的第9位数据 在多机通信中,以TB8位的状态表示主机发送的信息是否地址。在SM2=1时,TB8=1,表明信息为地址

7、 但在SM2=0时,也可用作数据的奇偶校验位。 方式0,方式1中,该位不用,20,学习幻灯,5) RB8接收数据第9位 在方式2、3时,RB8是接收的第9位数据。可作为奇偶校验位或 地址帧的标志 在方式1时,若SM2=0,RB8是接收的停止位 在方式0时,不使用RB8 6) TI发送中断标志位 在方式0时,发送完第8位数据后,该位由硬件置位。 在其它方式下,于发送停止位之前,由硬件置位,并向CPU申请中断 CPU在响应中断后,必须用软件清零。 在非中断方式,TI也可供查询使用。 7) RI接收中断标志位 在方式0时,接收完第8位数据后,该位由硬件置位。 在其它方式下,于接收到停止位之前,该位由

8、硬件置位,并向CPU申请中断 在CPU响应中断后,也必须用软件清零 在非中断方式,RI也可供查询使用。,21,学习幻灯,3、电源控制寄存器PCON,SMOD=1:波特率加倍 SMOD=0:表示波特率不加倍。,22,学习幻灯,)GF1,GF0用户可自行定义的通用标志位 )PD掉电方式控制位 PD=0:常规工作方式 PD=1:进入掉电方式 CPU处于掉电方式时,振荡器停振,片内RAM和SRF的值保持不变,P0P3口维持原状,程序停止。只有复位能退出掉电方式。 4)IDL待机方式(空闲方式)控制位。 IDL=0:常规工作方式 IDL=1:进入待机方式 CPU处于待机方式时,振荡器继续振荡,中断、定时

9、器、串口功能继续有效,片内RAM和SRF保持不变,CPU状态保持,P0P3口维持原状,程序停顿。中断、复位都能退出待机状态。,23,学习幻灯,4. 中断允许控制寄存器IE(A8H),总中断允许控制位。EA = 1,开放所有中断;EA = 0,禁止所有中断。,串行口中断(包括串行发、串行收)允许位。ES = 1,允许串行口中断;ES = 0,禁止串行口中断。,定时/计数器T1中断允许位。ET1 = 1,允许定时器T1中断;ET1 = 0,禁止定时器T1中断。,外部中断1中断允许位。EX1 = 1,允许外部中断1中断;EX1 = 0,禁止外部中断1中断。,定时/计数器T0中断允许位。ET0 = 1

10、,允许定时器0中断;ET0 = 0,禁止定时器0中断。,外部中断0中断允许位。EX0 = 1,允许外部中断0中断;EX0 = 0,禁止外部中断0中断。,24,学习幻灯,5. 中断优先级控制寄存器IP(B8H),串行口中断优先级控制位。PS = 1,设定串行口为高优先级中断;PS = 0,设定串行口为低优先级中断。,定时器T1中断优先级控制位。PT1 = 1,设定定时器T1中断为高优先级中断;PT1 = 0,设定定时器T1中断为低优先级中断。,外部中断1中断优先级控制位。PX1 = 1,设定外部中断1为高优先级中断;PX1 = 0,设定外部中断1为低优先级中断。,定时器T0中断优先级控制位。PT

11、0 = 1,设定定时器T0中断为高优先级中断;PT0 = 0,设定定时器T0中断为低优先级中断。,外部中断0中断优先级控制位。PX0 = 1,设定外部中断0为高优先级中断;PX0 = 0,设定外部中断0为低优先级中断。,中断源 同级自然优先级 外部中断0 最高级 定时器T0中断 外部中断1 定时器T1中断 串行口中断 最低级,25,学习幻灯,工作方式 移位寄存器方式,可外接移位寄存器以扩展I/O口,也可以外接同步输入/输出设备。 一帧信息有8位数据,低位在前,高位在后,没有起始位和停止位 数据从RXD输入或输出。TXD用来输出同步脉冲。 数据格式如下:,波特率固定为fosc/12。,前,后,7

12、.3 串行通信方式,26,学习幻灯,指令将TI/RI清零,27,学习幻灯,方式0工作时,多用查询方式编程: 发送: MOV SBUF,A JNB TI,$ CLR TI 接收: JNB RI,$ CLR RI MOV A, SBUF 注)复位时,SCON被清零,工作方式的缺省值为方式0。接收前,务必先置位REN=1方允许接收数据。,28,学习幻灯,【例7.3-1】74LS165芯片的输入端接8个开关,利用单片机串行方式0将开关的状态串行输入单片机,并在LED上显示。,ORG 0000H ;0000H单元存放转移指令 AJMP START ;跳转到主程序 ORG 0030H ;主程序从0030H

13、开始存放 START:MOV SCON,#10H ;设定串行口为方式0,并允许接收 LOOP:CLR P3.2;并行输入数据 SETB P3.2;允许串行移位操作 JNB RI,$;等待接收完毕 CLR RI;标志位清零 MOV A,SBUF ;接受数据 MOV P2,A;送P2口显示 LCALL DELAY ;调用延时程序 AJMP LOOP ;循环,29,学习幻灯,30,学习幻灯,DELAY:MOV R6,#10 ;延时程序 D1:MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET END,31,学习幻灯,工作方式 8位异步通信接口,一帧有1O位信息,1位起始位(低电

14、平信号),8位数据位(先低位后高位),1位停止位(高电平信号)。波特率可变,由定时器/计数器T1的溢出率和SMOD(PCON.7)决定。其格式如下:,波特率=(2SMOD/32)T1溢出率,32,学习幻灯,33,学习幻灯,定时器T1的溢出率计算 定时器的溢出率是指在1秒钟内产生溢出的次数。定时器T1在工作方式2时,定时器T1的溢出一次所需要的时间为: (28N)12时钟周期=(28N)12/fosc(秒) 于是,定时器每秒所溢出的次数为: 定时器T1的溢出率=fosc/(12(28N) 式中的N为时间常数,即T1的初值。,34,学习幻灯,波特率与计数初值的关系,设波特率用B表示,计数初值用N表

15、示,则波特率B与T1计数初值N之间的关系可以表示为:,35,学习幻灯,36,学习幻灯,37,学习幻灯,【例7.3-2】双机通信。设甲乙两机以串行方式1进行数据传送,fosc=11.0592MHz,波特率为1200b/s。甲机发送的1、2、3、4、5、6、7、8八个数字,存在内部RAM40H4FH单元中,乙机接收后在数码管上显示。 编程思路:T1的设置。设SMOD=0,T1工作在方式2。T0不用,则TMOD=20H,T1的计数初值为: X=256-(2011059200)/(32121200)=232=E8H 由于T1用于波特率发生器,故禁止中断,TR1=1启动。 串口设置。工作方式1(M0M1

16、=01),其他位均为0,可得SCON=40H。查询方式传送,禁止串口中断。 甲乙两机设置相同。,38,学习幻灯,39,学习幻灯,ORG 0000H ;在0000H单元存放转移指令 LJMP TXDA ;转移到主程序 ORG 0100H ;主程序从0100H开始 TXDA:MOV 40H,#01H;40H单元存入01H MOV 41H,#02H;41H单元存入02H MOV 42H,#03H;42H单元存入03H MOV 43H,#04H;43H单元存入04H MOV 44H,#05H;44H单元存入05H MOV 45H,#06H;45H单元存入06H MOV 46H,#07H;46H单元存入

17、07H MOV 47H,#08H;47H单元存入08H MOV TMOD,#20H;置T1定时方式2,40,学习幻灯,MOV TL1,#0E8H;T1初值. MOV TH1,#0E8H CLR ET1;禁止T1中断 SETB TR1;T1启动 MOV SCON,#40H;串行方式1,禁止接收 MOV PCON,#00H;SMOD=0 CLR ES;禁止串行中断 MOV R0,#40H;发送数据区首地址 MOV R2,#8;发送数据长度 TRSA:MOV A,R0;读一个数据 MOV SBUF,A;发送 JNB TI,$ ;等待一帧数据发送完毕 CLR TI;清发送中断标志 INC R0;指向下

18、一字节单元 DJNZ R2,TRSA;判8个数据发完否?未完继续 SJMP $ ;循环等待 END,41,学习幻灯,乙机接收程序: ORG 0000H ;在0000H单元存放转移指令 LJMP RXDB ;转移到主程序 ORG 0100H ;主程序从0100H开始 RXDB:MOV TMOD,#20H;T1定时方式2 MOV TL1,#0E8H;T1计数初值 MOV TH1,#0E8H;T1计数重装值 CLR ET1;禁止T1中断 SETB TR1;T1启动 MOV SCON,#40H;置串行方式1,禁止接收 MOV PCON,#00H;置SMOD=0 CLR ES;禁止串行中断 MOV R0

19、,#50H ;置接收数据区首地址 MOV R2,#8 ;置接收数据长度 SETB REN;启动接收,42,学习幻灯,RDSB:JNB RI,$;等待一帧数据接收完毕 CLR RI;清接收中断标志 MOV A,SBUF;读接收数据 MOV R0,A;存接收数据 INC R0;指向下一数据存储单元 DJNZ R2,RDSB;判8个数据接收完否? START1:MOV R1,#50H ;显示数据首地址 LOOP4:MOV A,R1;取显示数据 MOV DPTR,#TAB ;置共阳字段码表首址 MOVC A,A+DPTR ;查段码表 MOV P2,A ;送P2口显示 LCALL DELAY ;调用延时

20、程序 INC R1 ;显示内容加1 CJNE R1,#58H,LOOP4 ;判断循环是否结束 AJMP START1 ;跳转到START1,43,学习幻灯,DELAY: MOV R5,#10 ;延时程序,给R5赋值 DEL1: MOV R6,#100 ;中循环控制 DEL2: MOV R7,#150 ;内循环控制 DEL3: DJNZ R7,DEL3 ;内循环体 DJNZ R6,DEL2 ;中循环体 DJNZ R5,DEL1 ;外循环体 RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;段码表 END,44,学习幻灯,工作方式 9

21、位异步通信接口,一帧有11位,1位起始位(低电平信号),8位数据位(先低位后高位),1位可编程位,1位停止位(高电平信号)。其格式如下:,在工作方式2下,波特率只有二种:SMOD0时,波特率为f0SC/64,SMOD1时,波特率为f0SC/32。 波特率=(2SMOD/64)fosc,45,学习幻灯,46,学习幻灯, 工作方式 串行接口工作方式3也是9位异步通信接口,一帧信息有11位,1位起始位(低电平信号),8位数据位(先低位后高位),1位可编程位,1位停止位(高电平信号)。但波特率与工作方式1相同,由定时器/计数器T1的溢出率和SMOD(PCON.7)决定。也就是说方式3的工作机制与方式2

22、相同,波特率与方式1相同,它是方式1和方式2的综合运用。,47,学习幻灯,48,学习幻灯,49,学习幻灯,5 多机通信,MCS-51单片机工作在串行方式2、3时,具有多机通信功能,可以实现一台主机与多台从机的信息交流。,图,从机:SM2=1表示接收地址状态, SM2=0表示接收数据状态 TB8=1表示发送的信息是地址,TB8=0表示发送的信息是数据,50,学习幻灯,51,学习幻灯,主从多机通信的过程如下: 使所有的从机工作在方式2或方式3,且SM2位置1,REN=1,以便接收主机发来的地址。 主机发出要寻址的从机的一帧地址信息,其中包括8位需要与之通信的从机地址,第9位TB8=1。 所有从机接

23、收到地址帧后,置RI=1。 各从机相应中断,进入中断服务程序,进行地址比较。对于地址相同的从机,使SM20,准备接收主机随后发来的数据信息;对于地址不符合的从机,仍保持SM2=1的状态,对主机随后发来的数据不予理睬,直至发送新的地址帧。 主机给已被寻址到的从机发送控制指令和数据(数据帧的第9位TB8=0)实现主从通信。,52,学习幻灯,53,学习幻灯,总结,串行口应用的6个问题: 1.工作方式:设定SCON的SM0、SM1 2.接收/发送:接收时REN=1 3.数据格式:方式2或3,设置TB8 4.波特率加倍:若工作方式不是模式0,设定SMOD 5.波特率选择:方式0:固定,方式1,3计算T1

24、初值,设置工作方式。方式2,2选1,选SMOD=0/1. 6.中断设置:EA、ES、PS设置,54,学习幻灯,为节省单片机并口资源,全自动洗衣机时间显示用串口驱动。全自动洗衣机一次洗衣时间一般不会超过99分钟,用2位LED数码管显示时间。用串口扩展并口的时间向仿真电路如下图所示。,7.6 洗衣机串行方式时间显示电路Proteus仿真,55,学习幻灯,图中用AT89C51单片机串行口扩展2个并行口接2位数码管组成显示电路。串行口工作于方式0,与外接的2片移位寄存器74LS164连接。 74LS164是一个8位串入并出的移位寄存器,功能是接收AT89C51单片机串行通信口输出的串行数据并转换成并行

25、数据输出,从而驱动LED数码管显示。 两只LED数码管采用静态扫描显示方式,数码管为共阴极。使用串行口进行LED通信,程序编写相当简单,用户只需将需显示的数据直接送串口发送缓冲器,等待串行中断即可。,56,学习幻灯,汇编语言参考程序: ORG 0000H ;在0000H单元存放转移指令 LJMP NAIN ;转移到主程序 ORG 000BH ;定时器T0的中断入口地址 LJMP INTERRUPT ;转移到中断子程序 ORG 0200H ;主程序从0200H开始 MAIN: MOV TMOD,#01H ;使用定时器T0,工作方式1 MOV TH0, #3CH ;置初T0值50ms MOV TL

26、0, #0B0HH MOV R0,#0 ;用于存1秒的计数次数 SETB EA ;开中断总允许 SETB ET0 ;允许T0中断 SETB TR0 ;启动计时,57,学习幻灯,LOOP: LCALL Display ;循环调用显示子程序 SJMP LOOP TAB: DB 3FH,06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH ;09的共阴极段码 DISPLAY: ;显示子程序(显示分钟) MOV DPTR, #TAB ;将表首地址赋给DPTR MOV A, 30H ;将30H中存放的分计数赋给累加器A MOV B, #0AH ;将10赋给累加器B DI

27、V AB ;分计数除以10得十位数放在A中,个位数放在B中 MOVX A, A+DPTR ;查表得十位数的显示段码 MOV SBUF, A ;发送十位数 L1: JBC TI, L2 ;判是否发送完,未发完循环等待,若发完则转L2 SJMP L1,58,学习幻灯,L2: MOV A, B ;将个位数赋给累加器A MOVX A, A+DPTR ;查表得个位数的显示段码 MOV SBUF, A ;发送个位数 L3: JBC TI, L4 ;判是否发送完,未发完循环等待,若发完则转L4 SJMP L3 L4: RET ;子程序返回 INTERRUPT: ;中断服务子程序 INC R0 ;每中断一次(

28、50ms)加1 CJNE R0, #20, L5 ;判是否中断20次,若不是则转L5中断返回,若是则顺序执行 CLR R0 ;到1秒钟,清R0 INC R1 ;秒计数加1 CJNE R1, #60, L5 ;判秒是否计满60次,若未满则转L5中断返回,若满则顺序执行 CLR R1 ;如果秒计满60,将秒计数单元内容清0 INC 30H ;分钟计数单元30H内容加1 CJNE 30H, #99, L5 ;判分是否计满99次,若未满则转L5中断返回,若满则顺序执行 CLR R1 ;如果分计满99,将秒计数单元内容清0 CLR 30H ;同时将分计数单元内容清0 L5: MOV TH0, #3CH ; 定时器重新赋初值 MOV TL0, #0B0HH RETI ;中断返回,59,学习幻灯,优秀是一种习惯,两点之间最短的距离并不一定是直线 如果你在考数学试题,一定要答两点之间直线段最短;如果你在走路,从A到B,明明可以直接过去,但所有人都不走,你最好别走,因为有陷阱。 通往幸福的路,没有捷径。,60,学习幻灯,

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1