第07章 单片机串行通信系统_第1页
第07章 单片机串行通信系统_第2页
第07章 单片机串行通信系统_第3页
第07章 单片机串行通信系统_第4页
第07章 单片机串行通信系统_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、通信优点并行通信优点:传送速度快传送速度快 缺点缺点:不便长距离传送不便长距离传送 7.1 概概 述述 串行通信按同步方式可分为异步通信和同步通信。串行通信按同步方式可分为异步通信和同步通信。 计 算 机 1 计 算 机 2 或 外 设 GNDGND 计 算 机 1 计 算 机 2 或 外 设 GNDGND 发 送 接 收 (a )(b ) 并行通信和串行通信 7.1.1 异步通信异步通信 串行异步传送中,通信双方必须事先约定:串行异步传送中,通信双方必须事先约定: 1、字符格式。双方要事先约定字符的编、字符格式。双方要事先约定字符的编 码形式、奇偶校验形式及起始位和停止位的规码形式、奇偶校验

3、形式及起始位和停止位的规 定。定。 2、在异步通信中,发送端与接收端的波、在异步通信中,发送端与接收端的波 特率必须一致。特率必须一致。 (波特率波特率(Baud rate)。波特率就是数据的。波特率就是数据的 传送速率,即每秒钟传送的二进制数位数,单传送速率,即每秒钟传送的二进制数位数,单 位为位位为位/秒。)秒。) 常用标准波特率: b/s 110、 300、 600、 1200、1800、2400、 4800、9600、19200 7.1.2 同步通信同步通信 波特率的倒数即为每位传输所需的时间。波特率的倒数即为每位传输所需的时间。 相互通信的甲乙双方必须具有相同的波特率,否则无法相互通

4、信的甲乙双方必须具有相同的波特率,否则无法 成功地完成串行数据通信。成功地完成串行数据通信。 串行通信波特率串行通信波特率 波特率波特率bps(bit per second)bps(bit per second)定义定义: 每秒传输数据的位数,即:每秒传输数据的位数,即: 1波特波特 = 1位位/秒(秒(1bps1bps) 7.1.3 7.1.3 串行通信的制式串行通信的制式 串行通信中,数据通常是在二个端点(点对点)之间进行串行通信中,数据通常是在二个端点(点对点)之间进行 传送,按照数据流动的方向可分成三种传送模式传送,按照数据流动的方向可分成三种传送模式: 单工、半双单工、半双 工、全双

5、工工、全双工. 1 1、单工方式、单工方式(Simplex) :数据仅按一个固定方向传送。:数据仅按一个固定方向传送。 2 2、半双工制式(、半双工制式(Half DuplexHalf Duplex) 使用同一根传输线,数据可双向传送,但不能使用同一根传输线,数据可双向传送,但不能 同时进行。同时进行。 3 3、全双工制式(、全双工制式(Full DuplexFull Duplex) 数据的发送和接收可同时进行数据的发送和接收可同时进行 单工:单工:广播广播 双工:双工:电话电话 半双工:半双工:对讲机对讲机 指令清指令清0 RI/TI 波特率发生器 下降沿表示“0” 起始位开始 波特率因子:

6、16 波特率加倍 7.2 80C517.2 80C51串行通信接口串行通信接口 波特率因子 为保证数据传送的准确性,发送/接收时钟频率f应大于等于 波特率B f= nB n为波特率因子。 同步时:n=1 异步时:通常n=16,即16个时钟脉冲传送一位数据,在7、 8、9三个时钟脉冲边沿采样数据,并采用三取二原则确定 数据值 波特率误差与时钟频率 设晶振频率:6MHz. SMOD=0,串口方式1 波特率B=4800 b/s 波特率误差 8.5% 波特率B=1200 b/s 波特率误差 0.1% 波特率不同,误差不同 若选择晶振频率:11.059MHz. 波特率误差普遍很小 发送时,只需将发送数据

7、输入发送时,只需将发送数据输入SBUFSBUF,CPUCPU将自动启动将自动启动 和完成串行数据的发送;和完成串行数据的发送; 接收时,接收时,CPUCPU将自动把接收到的数据存入将自动把接收到的数据存入SBUFSBUF,用户,用户 只需从只需从SBUFSBUF中读出接收数据中读出接收数据。 串行口特殊功能寄存器串行口特殊功能寄存器 5个个 1 1、串行数据缓冲器、串行数据缓冲器SBUFSBUF 在逻辑上在逻辑上只有一个,既表示发送寄存器,又表只有一个,既表示发送寄存器,又表 示接收寄存器,具有同一个单元地址示接收寄存器,具有同一个单元地址99H99H,用,用同一同一 寄存器名寄存器名SBUF

8、SBUF。 在物理上有两个,一个是发送缓冲寄存器,另在物理上有两个,一个是发送缓冲寄存器,另 一个是接收缓冲寄存器。一个是接收缓冲寄存器。 2 2、串行控制寄存器、串行控制寄存器SCONSCON SCONSCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0 位名称位名称SM0SM0SM1SM1SM2SM2RENRENTB8TB8RB8RB8TITIRIRI 位地址位地址9FH9FH9EH9EH9DH9DH9CH9CH9BH9BH9AH9AH99H99H98H98H 功能功能 工作方式工作方式 选择选择 多机通信控多机通信控 制制 接收接收 允许允许 发送发送 第第 9 9位

9、位 接收接收 第第 9 9位位 发送发送 中中 断断 接收接收 中中 断断 SM0 SM1 SM0 SM1 串行口工作方式选择位。串行口工作方式选择位。 SM2 SM2 多机通信控制位。多机通信控制位。 REN REN 允许接收控制位。允许接收控制位。REN=1REN=1,允许接收。,允许接收。 TB8 TB8 方式方式2 2和方式和方式3 3中要发送的第中要发送的第9 9位数据。位数据。 RB8 RB8 方式方式2 2和方式和方式3 3中要接收的第中要接收的第9 9位数据。位数据。 TI TI 发送中断标志。发送中断标志。 RI RI 接收中断标志。接收中断标志。 SM0、SM1:串行口工作

10、方式选择位。用于选择四种工作方式:串行口工作方式选择位。用于选择四种工作方式 SM0SM0SM1SM1方式方式功能功能波特率波特率 0 00 0方式方式0 0移位寄存器方式移位寄存器方式f fosc osc/12 /12 0 01 1方式方式1 18 8位异步通信方式位异步通信方式可变可变 1 10 0方式方式2 29 9位异步通信方式位异步通信方式f fosc osc/32 /32或或f fosc osc/64 /64 1 11 1方式方式3 39 9位异步通信方式位异步通信方式可变可变 SM2 通常,SM2主要用于从机的状态控制 SM2=0 表示从机为数据传送状态 SM2=1 表示从机为地

11、址传送状态 3) REN允许串行接收控制位 REN0 禁止接收数据 REN1 允许接收数据 4) TB8发送数据第9位。 在方式2和方式3时,TB8为所要发送的第9位数据 在多机通信中,以TB8位的状态表示主机发送的信 息是否地址。在SM2=1时,TB8=1,表明信息为地 址 但在SM2=0时,也可用作数据的奇偶校验位。 方式0,方式1中,该位不用 5) RB8接收数据第9位 在方式2、3时,RB8是接收的第9位数据。可作为奇偶校验位 或 地址帧的标志 在方式1时,若SM2=0,RB8是接收的停止位 在方式0时,不使用RB8 6) TI发送中断标志位 在方式0时,发送完第8位数据后,该位由硬件

12、置位。 在其它方式下,于发送停止位之前,由硬件置位,并向CPU 申请中断 CPU在响应中断后,必须用软件清零。 在非中断方式,TI也可供查询使用。 7) RI接收中断标志位 在方式0时,接收完第8位数据后,该位由硬件置位。 在其它方式下,于接收到停止位之前,该位由硬件置位,并 向CPU申请中断 在CPU响应中断后,也必须用软件清零 在非中断方式,RI也可供查询使用。 3 3、电源控制寄存器、电源控制寄存器PCONPCON PCONPCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0 位名称位名称SMODSMODGF1GF1GF0GF0PDPDIDLIDL SMOD=1:波特

13、率加倍 SMOD=0:表示波特率不加倍。 )GF1,GF0用户可自行定义的通用标志位 )PD掉电方式控制位 PD=0:常规工作方式 PD=1:进入掉电方式 CPU处于掉电方式时,振荡器停振,片内RAM和 SRF的值保持不变,P0P3口维持原状,程序停止。只 有复位能退出掉电方式。 4)IDL待机方式(空闲方式)控制位。 IDL=0:常规工作方式 IDL=1:进入待机方式 CPU处于待机方式时,振荡器继续振荡,中断、定时器、 串口功能继续有效,片内RAM和SRF保持不变,CPU状态 保持,P0P3口维持原状,程序停顿。中断、复位都能 退出待机状态。 EA-ESESET1EX1ET0EX0 AFH

14、ACHACHABHAAHA9HA8H 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,允 许定时器0中断;ET0 = 0,禁止定时器0 中断。 外部中断0中断允许

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

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

17、D5D6D7 波特率固定为fosc/12。 前 后 7.3 串行通信方式 指令将TI/RI清零 方式0工作时,多用查询方式编程: 发送: MOV SBUFMOV SBUF,A A JNB TIJNB TI,$ $ CLR TI CLR TI 接收: JNB RIJNB RI,$ $ CLR RICLR RI MOV A, SBUFMOV A, SBUF 注)复位时,SCON被清零,工作方式的缺省值为方式0。 接收前,务必先置位REN=1REN=1方允许接收数据。 【例例7.3-17.3-1】74LS165芯片的输入端接8个开关,利用单片机 串行方式0将开关的状态串行输入单片机,并在LED上显示

18、。 ORG 0000H ;0000H单元存放转移指令 AJMP START ;跳转到主程序 ORG 0030H ;主程序从0030H开始存放 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 ;循环 DELAY:MOV R6,#10 ;延时程序 D1:MOV R7,#248 DJNZ R7,$ DJNZ R6,

19、D1 RET END 工作方式 8位异步通信接口,一帧有1O位信息,1位起始位(低 电平信号),8位数据位(先低位后高位),1位停止位 (高电平信号)。波特率可变,由定时器/计数器T1的 溢出率和SMOD(PCON.7)决定。其格式如下: 起始位 数据位停止位 D0D1D2D3D4D5D6D7 1 波特率=(2SMOD/32)T1溢出率 定时器定时器T1T1的溢出率计算的溢出率计算 定时器的溢出率是指在1秒钟内产生溢出的次数。 定时器T1在工作方式2时,定时器T1的溢出一次所需要 的时间为: (28N)12时钟周期时钟周期=(28N)12/fosc(秒秒) ) 于是,定时器每秒所溢出的次数为:

20、 定时器定时器T1T1的溢出率的溢出率=fosc/(12=fosc/(12(2(28 8N)N) 式中的N为时间常数,即T1的初值。 波特率与计数初值的关系波特率与计数初值的关系 设波特率用B表示,计数初值用N表示,则波特率B 与T1计数初值N之间的关系可以表示为: )256(1232 2 N f B OSC SMOD B f B f N OSC SMOD OSC SMOD 384 2 256 1232 2 256 【例例7.3-27.3-2】双机通信。设甲乙两机以串行方式1进行数据 传送,fosc=11.0592MHz,波特率为1200b/s。甲机发送 的1、2、3、4、5、6、7、8八个数

21、字,存在内部 RAM40H4FH单元中,乙机接收后在数码管上显示。 编程思路:T1的设置。设SMOD=0,T1工作在方式2。T0 不用,则TMOD=20H,T1的计数初值为: X=256-(2011059200)/(32121200)=232=E8H 由于T1用于波特率发生器,故禁止中断,TR1=1启动。 串口设置。工作方式1(M0M1=01),其他位均为0,可 得SCON=40H。查询方式传送,禁止串口中断。 甲乙两机设置相同。 ORG 0000H ;在0000H单元存放转移指令 LJMP TXDA ;转移到主程序 ORG 0100H ;主程序从0100H开始 TXDA:MOV 40H,#0

22、1H;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单元存入07H MOV 47H,#08H;47H单元存入08H MOV TMOD,#20H;置T1定时方式2 MOV TL1,#0E8H;T1初值. MOV TH1,#0E8H CLR ET1;禁止T1中断 SETB TR1;T1启动 MOV SCON,#40H;串行方式1,禁止接收 MOV PCO

23、N,#00H;SMOD=0 CLR ES;禁止串行中断 MOV R0,#40H;发送数据区首地址 MOV R2,#8;发送数据长度 TRSA:MOV A,R0;读一个数据 MOV SBUF,A;发送 JNB TI,$ ;等待一帧数据发送完毕 CLR TI;清发送中断标志 INC R0;指向下一字节单元 DJNZ R2,TRSA;判8个数据发完否?未完 继续 SJMP $ ;循环等待 END 乙机接收程序: ORG 0000H ;在0000H单元存放转移指令 LJMP RXDB ;转移到主程序 ORG 0100H ;主程序从0100H开始 RXDB:MOV TMOD,#20H;T1定时方式2 M

24、OV 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,#50H ;置接收数据区首地址 MOV R2,#8 ;置接收数据长度 SETB REN;启动接收 RDSB:JNB RI,$;等待一帧数据接收完毕 CLR RI;清接收中断标志 MOV A,SBUF;读接收数据 MOV R0,A;存接收数据 INC R0;指向下一数据 存储单元 DJNZ R2,RDSB;判8个数据接收

25、 完否? START1:MOV R1,#50H ;显示数据首地址 LOOP4:MOV A,R1;取显示数据 MOV DPTR,#TAB ;置共阳字段码表首址 MOVC A,A+DPTR ;查段码表 MOV P2,A ;送P2口显示 LCALL DELAY ;调用延时程序 INC R1 ;显示内容加1 CJNE R1,#58H,LOOP4 ;判断循环是否结束 AJMP START1 ;跳转到START1 DELAY: MOV R5,#10 ;延时程序,给R5赋值 DEL1: MOV R6,#100 ;中循环控制 DEL2: MOV R7,#150 ;内循环控制 DEL3: DJNZ R7,DEL

26、3 ;内循环体 DJNZ R6,DEL2 ;中循环体 DJNZ R5,DEL1 ;外循环体 RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;段 码表 END 工作方式 9位异步通信接口,一帧有11位,1位起始位(低电 平信号),8位数据位(先低位后高位),1位可编程 位,1位停止位(高电平信号)。其格式如下: 起始位 数据位停止位 D0D1D2D3D4D5D6D7TB8 1 在工作方式2下,波特率只有二种:SMOD0时,波特率 为f0SC/64,SMOD1时,波特率为f0SC/32。 波特率=(2SMOD/64)fosc 工作

27、方式 串行接口工作方式3也是9位异步通信接口, 一帧信息有11位,1位起始位(低电平信号),8 位数据位(先低位后高位),1位可编程位,1位 停止位(高电平信号)。但波特率与工作方式1相 同,由定时器/计数器T1的溢出率和SMOD (PCON.7)决定。也就是说方式3的工作机制与 方式2相同,波特率与方式1相同,它是方式1和 方式2的综合运用。 方式0方式1方式2、3 SM0,SM1000110,11 输出 (发 送) TB8未使用未使用发送第9位信息 一帧位数81011 数据位数889 RXD输出串行数据 TXD输出同步脉冲输出数据输出数据 波特率fosc/122SMODT1溢 出率/32

28、方式2: 2SMODfosc/64 方式3:同方式1 中断一帧发送完,置TI=1,响应中断后,软件清TI 方式0方式1方式2、3 SM0,SM1000110,11 输入 (接收) RB8未使用SM2=0,停止位第9位数据 REN接收时REN=1 SM200正常接收0 多机通信1 一帧位数81011 数据位数889 波特率与发送相同 接收条件无RI=0且SM2=0或 停止位1 RI=0且SM2=0或第9位 数1 中断接收完毕:置RI=1,响应中断后,软件清RI RXD输入串行数据输入串行数据输入串行数据 TXD输出同步脉冲 5 多机通信 MCS-51单片机工作在串行方式2、3时,具有多机通信 功

29、能,可以实现一台主机与多台从机的信息交流。 图 从机:从机:SM2=1表示接收地址状态,表示接收地址状态, SM2=0表示接收数据状态表示接收数据状态 TB8=1表示发送的信息是地址,表示发送的信息是地址,TB8=0表示发送的信息是数据表示发送的信息是数据 主从多机通信的过程如下: 使所有的从机工作在方式2或方式3,且SM2位置1, REN=1,以便接收主机发来的地址。 主机发出要寻址的从机的一帧地址信息,其中包括 8位需要与之通信的从机地址,第9位TB8=1。 所有从机接收到地址帧后,置RI=1。 各从机相应中断,进入中断服务程序,进行地址比 较。对于地址相同的从机,使SM20,准备接收主机

30、 随后发来的数据信息;对于地址不符合的从机,仍保 持SM2=1的状态,对主机随后发来的数据不予理睬, 直至发送新的地址帧。 主机给已被寻址到的从机发送控制指令和数据(数 据帧的第9位TB8=0)实现主从通信。 总结总结 串行口应用的6个问题: 1.工作方式:设定SCON的SM0、SM1 2.接收/发送:接收时REN=1 3.数据格式:方式2或3,设置TB8 4.波特率加倍:若工作方式不是模式0,设定SMOD 5.波特率选择:方式0:固定,方式1,3计算T1初值,设 置工作方式。方式2,2选1,选SMOD=0/1. 6.中断设置:EA、ES、PS设置 为节省单片机并口资源,全自动洗衣机时间显示用

31、串口驱动。全自动洗衣机一次为节省单片机并口资源,全自动洗衣机时间显示用串口驱动。全自动洗衣机一次 洗衣时间一般不会超过洗衣时间一般不会超过9999分钟,用分钟,用2 2位位LEDLED数码管显示时间。用串口扩展并口的时间向仿数码管显示时间。用串口扩展并口的时间向仿 真电路如下图所示。真电路如下图所示。 7.6 7.6 洗衣机串行方式时间显示电路洗衣机串行方式时间显示电路Proteus仿真仿真 图中用图中用AT89C51单片机串行口扩展单片机串行口扩展2个并行口接个并行口接2 位数码管组成显示电路。串行口工作于方式位数码管组成显示电路。串行口工作于方式0,与外,与外 接的接的2片移位寄存器片移位

32、寄存器74LS164连接。连接。 74LS164是一个是一个8位串入并出的移位寄存器,功能位串入并出的移位寄存器,功能 是接收是接收AT89C51单片机串行通信口输出的串行数据并单片机串行通信口输出的串行数据并 转换成并行数据输出,从而驱动转换成并行数据输出,从而驱动LED数码管显示数码管显示。 两只两只LED数码管采用静态扫描显示方式,数码管数码管采用静态扫描显示方式,数码管 为共阴极。使用串行口进行为共阴极。使用串行口进行LED通信,程序编写相当通信,程序编写相当 简单,用户只需将需显示的数据直接送串口发送缓冲简单,用户只需将需显示的数据直接送串口发送缓冲 器,等待串行中断即可。器,等待串行中断即可。 汇编语言参考程序: ORG 0000H ;在0000H单元存放转移指 令 LJMP NAIN ;转移到主程序 ORG 000BH ;定时器T0的中断入口地址 LJMP INTERRUPT ;转移到中断子程序 ORG 0200H ;主程序从0200H开始 MAIN: MOV TMOD,#01H ;使用定时器T0,工作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论