《《单片机原理与接口技术》第7章串行接口.ppt》由会员分享,可在线阅读,更多相关《《单片机原理与接口技术》第7章串行接口.ppt(32页珍藏版)》请在三一办公上搜索。
1、高等职业教育计算机类课程规划教材,单片机原理与接口技术,大连理工大学出版社,第7章 串行接口,7.1 串行通信的基本概念7.2 MCS-51 单片机串行接口及控制寄存器7.3 MCS-51 单片机串行口的工作方式7.4 串行口的应用,7.1.1 数据通信的概念 计算机的CPU与外部设备之间、计算机与计算机之间的信息交换称为数据通信。1.并行通信 并行通信是数据的各位同时进行传送(发送或接收)的通信方式。其优点是数据传送速度快;缺点是数据有多少位,就需要多少根传送线。2.串行通信 串行通信是数据的各位一位一位顺序传送的通信方式。,7.1 串行通信的基本概念,其优点是数据传送线少(利用电话线就可作
2、为传送线),这样就大大降低了传送成本,特别适用于远距离通信;其缺点是传送速度较低。7.1.2 串行通信中数据的传输方式 单工传输方式:数据只能单方向地从一端向另一端传送;半双工传输方式:允许数据向两个方向中的任一方向传送,但每次只允许向一个方向传送;全双工传输方式:允许数据同时双向传送。7.1.3 串行通信的两种基本通信方式 1.同步通信 在同步通信中,发送器和接收器由同一个时钟控制,如图7-1(a)所示。,同步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在要传送的数据块开始传送前,用同步字符SYNC来指示,其数据格式如图7-1(b)所示。,图7-1 同步通信和同步字符,同步传送的
3、优点是可以提高传送速率,但硬件比较复杂。2.异步通信 在异步通信中,发送器和接收器均由各自时钟控制,如图7-2(a)所示。通信时,数据是一帧一帧(包含一个字符代码或一字节数据)传送的,每一串行帧的数据格式如图7-2(b)所示。,在帧格式中,一个字符由四个部分组成:起始位、数据位、奇偶校验位和停止位。即首先是一个起始位“0”,然后是数据位(规定低位在前,高位在后),接下来是奇偶校验位(可省略),最后是停止位“1”。7.1.4 串行通信的传送速率 1.波特率 通信线路上传送的所有位信号都保持一致的信号持续时间,每一位的宽度都由数据传送速率确定。而传送速率是以每秒传送多少个二进制位来度量的,这个速率
4、叫波特率,它的单位是位/秒(b/s或bps)。波特率对于CPU与外部的通信是很重要的。,图7-2 异步通信和帧数据格式,2.允许的波特率误差 假设传递的数据一帧为10位,若发送和接收的波特率达到理想的一致,那么接收方对数据的采样都将发生在每位数据有效时刻的中点。如果接收一方的波特率比发送一方大或小5%,那么对10位一帧的串行数据,时钟脉冲相对数据有效时刻逐位偏移。当接收到第10位时,积累的误差达50%,则采样的数据已是第10位数据的有效与无效的临界状态,这时就可能发生错位,所以5%是10位一帧串行传送的最大的波特率允许误差。7.1.5 串行通信中的校验 1.奇偶校验 奇偶校验是检验串行通信双方
5、传输的数据正确与否的一个措施,并不能保证通信数据的传输一定正确。换言之:如果奇偶校验发生错误,表明数据传输一定出错了;,如果奇偶校验没有出错,绝不等于数据传输完全正确。奇校验:8位有效数据连同1位附加位中,二进制“1”的个数为奇数;偶校验:8位有效数据连同1位附加位中,二进制“1”的个数为偶数。2.和校验 所谓和校验是发送方将所发数据块求和(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据,同时对数据块(除校验字节外)求和(或各字节异或),将所得的结果与发送方的“校验和”进行比较,相符则无差错,否则即认为传送过程中出现了差错。7.1.6 串行通信的实现 实际上,
6、单片机串行通信的过程是将其内部的并行数据转换成串行数据,通过串行通信线传送,接收方将接收到的串行数据再转换成并行数据送到计算机中。,在MCS-51系列单片机中,串并、并串转换是由串行口的移位寄存器自动完成的。,7.2 MCS-51单片机串行接口及控制寄存器,7.2.1 MCS-51串行接口结构 MCS-51串行口由串行控制器电路、发送电路、接收电路三部分组成,其结构如图7-3所示。,图7-3 串行接口的结构原理示意图,7.2.2 串行接口控制 1.串行控制寄存器SCON SCON寄存器的字节地址为98H,可按位寻址,位地址为98H9FH。SCON用于设定串行接口工作方式、接收发送控制及设置状态
7、标志。SCON格式如下:,(98H)D7 D6 D5 D4 D3 D2 D1 D0 SCON SM0 SM1 SM2 REN TB8 RB8 TI RI 位地址 9F 9E 9D 9C 9B 9A 99 98,SCON中的各位含义如下:(1)SM0,SM1串行口的工作方式选择位 其功能及编码见表7-1。,(2)SM2多机通信控制位 在方式2或方式3中,如果SM2=1,则接收到的第9位数据(RB8)为0时不激活RI,接收到的数据丢失;只有当收到的第9位数据(RB8)为1时才激活RI,向CPU申请中断。如果SM2=0,则不论收到的第9位数据(RB8)为1还是为0,都会将接收的数据装入SBUF中。在
8、方式1时,如果SM2=1,则只有收到有效的停止位时才会激活RI;若没有接收到有效的停止位,则RI清零。在方式0中,SM2必须为0。,表7-1 串行口工作方式 SM0 SM1 工作方式 功能说明 波特率 0 0 0 移位寄存器方式(用于扩展I/O口)fosc/12 0 1 1 10位异步收发方式(UART)由T1控制 1 0 2 11位异步收发方式(UART)fosc/32或fosc/64 1 1 3 11位异步收发方式(UART)由T1控制,(3)REN允许串行接收控制位 由软件置位以允许接收,由软件清零时禁止接收。(4)TB8为发送数据位 在方式2和方式3时为要发送的第9位数据,根据需要由软
9、件置位和复位。在多机通信时,TB8的状态用来表示主机发送的是地址或数据,通常协议规定“0”表示数据,“1”表示地址。(5)RB8为接收数据位 在方式2和方式3时为接收到的第9位数据。RB8和SM2、TB8一起,常用于通信控制。在方式1时,如果SM2=0,RB8接收到的是停止位。在方式0时,不使用RB8。(6)TI发送中断标志位,由片内硬件在方式0串行发送第8位结束时置位,或在其他方式串行发送停止位的开始时置位。必须由软件清零。(7)RI接收中断标志 由片内硬件在方式0串行接收到第8位结束时置位,或在其他方式串行接收到停止位的中间时置位。必须由软件清零。2.电源控制寄存器PCON 电源控制寄存器
10、PCON能够进行电源控制,其D7位SMOD是串行口波特率设置位。寄存器PCON的字节地址为87H,没有位寻址功能。PCON与串行通信有关的格式如下:,D7 D6 D5 D4 D3 D2 D1 D0,SMOD GF0 GF1 PD IDL,PCON,PCON寄存器的D7位为SMOD,称为波特率倍增位。即当SMOD=1时,波特率加倍;当SMOD=0时,波特率不加倍。通过软件可设置SMOD=0或SMOD=1。因为PCON无位寻址功能,所以,要想改变SMOD的值,可通过相应指令来完成:ANL PCON,#7FH;使SMOD=0 ORL PCON,#80H;使SMOD=1 MOV PCON,#00H;使
11、SMOD=0,7.3 MCS-51单片机串行口的工作方式,7.3.1 方式0 串行口工作于方式0下,串行口为8位同步移位寄存器输入/输出口,其波特率固定为fosc/12。,数据由RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)端输出,发送、接收的是 8位数据。不设起始位和停止位,低位在前,高位在后。其帧格式为:,D0 D1 D2 D3 D4 D5 D6 D7,1.发送 SBUF中的串行数据由RXD逐位移出。TXD输出移位时钟,频率=fosc/12。每送出8位数据TI就自动置1,需要用软件清零TI。方式0的发送与串入并出移位寄存器(如74LS164,CD4094等)一起使用扩展并
12、行输出口,接口逻辑图如图7-4所示。,图7-4 串行口方式0,2.接收 串行数据由RXD逐位移入SBUF中。TXD输出移位时钟,频率=fosc/12。每接收8位数据RI就自动置1,需要用软件清零RI。方式0的接收与并入串出移位寄存器(如74LS165,CD4014等)一起使用扩展并行输入接口。接口逻辑图如图7-5所示。3.方式0的波特率 波特率=fosc/12。方式0工作时,多用查询方式编程:发送:MOV SBUF,A 接收:JNB RI,S JNB TI,S CLR RI CLR TI MOV A,SBUF,图7-5 串行口方式0接收,7.3.2 方式1 方式1是10位为一帧的异步串行通信方
13、式。共包括1个起始位、8个数据位(低位在前)和一个停止位。TXD为发送端,RXD为接收端,波特率可变。其帧格式为:,0 D0 D1 D2 D3 D4 D5 D6 D7 1,起始,停止,1.发送 串行口在方式1下进行发送时,数据由TXD端输出。CPU执行一条写入SBUF的指令就会启动串行口发送,发送完一帧数据信息时,发送中断标志TI置“1”。需要用软件清零TI。2.接收 接收数据时,SCON应处于允许接收状态(REN=1)。,接收数据有效时,装载SBUF,停止位进入RB8,RI置“1”。中断标志RI必须由软件清零。3.方式1的波特率 使用定时器T1作为方式1的波特率发生器。T1可以工作于方式0、
14、方式1和方式2,常使其工作于方式2。波特率计算公式如下:波特率=(2SMOD/32)fosc/12(256-X)其中X是定时器的初值。在实际应用中,一般是先按照所要求的通信波特率设定SMOD,然后再算出T1的时间常数。T1的时间常数 X=28-2SMOD fosc/(1232波特率)【例7.1】(见教材P154页),7.3.3 方式2 串行口工作于方式2,为波特率固定11位异步通信口,发送和接收的一帧信息由11位组成,即1位起始位、8位数据位(低位在前)、1位可编程位(第9位)和1位停止位。TXD为发送端,RXD为接收端。发送时可编程位(TB8)根据需要设置为“0”或“1”(TB8既可作为多机
15、通信中的地址数据标志位又可作为数据的奇偶校验位);接收时,可编程位的信息被送入SCON的RB8中。其帧格式为:,起始0 D0 D1 D2 D3 D4 D5 D6 D7 TB8/RB8 停止1,1.发送 在方式2发送时,数据由 TXD端输出,附加的第9位数据为SCON中的TB8。CPU执行一条写SBUF的指令后,便立即启动发送器发送,送完一帧信息后,TI被置“1”。,在发送下一帧信息之前,TI须由中断服务程序(或查询程序)清零。2.接收 当REN=1时,允许串行口接收数据。数据由RXD端输入,接收11位信息。接收数据有效,8位数据装入SBUF,第9位数据装入RB8,并置RI为1。3.方式2的波特
16、率 方式2的波特率=(2SMOD/64)fosc 7.3.4 方式3 串行口工作于方式3,为波特率可变的11位异步通信方式。除了波特率外,方式3和方式2相同。方式3的波特率和方式1的波特率计算相同。,7.4.1 串行口扩展并行I/O口 串行口常用工作方式0扩展并行I/O口。并行输入口可接开关、按钮等;并行输出口可接各种设备,比如发光二极管、LED显示器等。LED显示器有共阴极和共阳极两种,如图7-6所示。发光二极管的阴极连接在一起的称为共阴极显示器,阳极连接在一起的称为共阳极显示器。一个显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)ag,另一个小数点为dp发光二极
17、管。当在某段二极管上施加一定的正向电压时,该段笔划即亮;不加电压则暗。,7.4 串行口的应用,例如:共阳LED数码管公共端(字位)接高电平,笔划(字段)置为低电平就被点亮了。要显示“0”,须令a b c d e f为“0”电平,g dp为“1”电平。因此共阳极LED数码管显示字符“0”的字符编码为 0C0H,如图7-7所示。,图7-6 LED显示器,dp g f e d c b a,1 1 0 0 0 0 0 0,0C0H=“0”,图7-7 各个笔划的电平,【例7.2】(见教材P156页)7.4.2 串行口采用奇偶校验发送/接收数据 程序状态字寄存器PSW中有一个奇偶状态位P(PSW.0),P
18、=1表示目前累加器中“1”的个数为奇数;P=0表示目前累加器中“1”的个数为偶数。CPU 随时监视着 Acc的“1”的个数并自动反映在状态位P上。1.约定发送采用偶校验 若发送的8位有效数据中“1”的个数为偶数,则要人为添加一个附加位“0”一起发送;若发送的8位有效数据中“1”的个数为奇数,则要人为添加一个附加位“1”一起发送。选用偶校验方式发送,如果A中的数的1的个数是奇数(P=1),将TB8写成“1”一起发出去;反之,若1的个数是偶数(P=0),则写TB8=“0”发出去。,CLR TI;清发送中断标志以备下次发送 MOV A,R0;取由R0所指向的单元中的数据 MOV C,P;将奇偶标志位
19、通过C放进TB8 MOV TB8,C;一起发送出去 MOV SBUF,A;启动发送 INC R0;指针指向下一个数据单元 2.约定接收采用偶校验 若接收到的9位数据中“1”的个数为偶数,则表明接收正确,取出8位有效数据即可;若接收到的9位数据中“1”的个数为奇数,则表明接收出错,应当进行出错处理。选用偶校验方式接收,若P=0且RB8=0或P=1且RB8=1,表示偶校验没有出错。若P=0且RB8=1或P=1且RB8=0,偶校验出错。,CLR RI;清发送中断标志以备下次发送 MOV A,SBUF;读进收到的数据 MOV C,P;奇偶标志位C JNC L1;C=0时转到L1,即P=0时转到L1 J
20、NB RB8,ERR;P=1时,若RB8=0“出错”,转到ERR SJMP L2;若RB8=1则表明接收正确,转L2 L1:JB RB8,ERR;P=0且RB8=1表明“出错”,转ERR L2:MOV R0,A;P=0且RB8=0表明接收正确 INC R0;指针指向下一个数据单元 ERR:;出错处理 RET;返回,7.4.3 串行口通信 1.双机串行通信(1)接口电路 两台MCS-51单片机通信根据双方距离的远近可采取不同的接口电路。如果两台MCS-51应用系统相距很近,将它们的串行口直接相连,如图7-9所示。如果通信距离较远,通信线路必须加辅助电路,如可采用 RS-232C接口、电平转换器、
21、调制解调器等。(2)通信协议 通信协议就是通信双方要遵守的共同约定。,TXD RXD 51单片机(1)GND,RXD TXD51单片机(2)GND,图7-9 双机串行通信,协议内容包括双方采取一致的通信方式、一致的波特率设定、确认何方为接收机何方为发送机、设定通信开始时发送机的呼叫信号和接收机的应答信号以及通信结束的标志信号等。例如,采用查询方式带奇偶校验发送/接收数据块的双机编程思路:发送程序:波特率设置初始化(与接收程序设置相同);串行口初始化(允许接收);相关工作寄存器设置(原数据地址指针等);按约定发送/接收数据。1号机(发送机):1号机将指定存储单元数据按顺序向2号发送。每发送一帧信
22、息,2 号机对接收的数据进行奇偶校验,若奇偶校验正确,则2号机向1号机发出“数据发送正确”的信息(应答信号自定,如发00H),1号机接收到2号机的正确应答信号后再发送下一个字节。,若奇偶校验错,则2号机发出“数据发送不正确”的信息(应答信号自定,如发FFH)给1号机,要求1号机再次发送原数据,直到数据发送正确。接收程序:波特率设置初始化(与发送程序设置相同);串行口初始化(与发送程序设置相同);工作寄存器设置(原数据地址指针等);按约定发送/接收数据,传送状态字如正确标志、错误标志。2号机(接收机):接收1号机发送的数据,进行奇偶校验,并发出相应的应答信号给1号机。将接收的正确数据顺序存放在指
23、定的存储单元中。和校验发送/接收数据块的设计思路与奇偶校验发送/接收数据块设计方法雷同,在此不再赘述。【例7.3】(见教材P158页),2.多机通信 MCS-51多机分布式系统常构成全双工通信方式,主机与从机可实现全双工通信,而各从机之间只能通过主机交换信息。设有一个多机分布式系统,1个主机,n个从机,系统如图7-12所示。主机的RXD端与所有从机的TXD端相连,主机的TXD端与所有从机的RXD端相连(为增大通信距离,各机之间还要配接RS-232C或RS-422A标准接口)。,图7-12 MCS-51主从式多机通信系统,(1)多机通信原理 在多机通信中,为了保证主机与所选择的从机实现可靠的通信
24、,必须保证通信接口具有识别功能,可以通过控制单片机的串行口控制寄存器SCON中的SM2位来实现多机通信的功能,其原理简述如下:利用单片机串行口方式2或方式3及串行口控制寄存器SCON中的SM2和RB8的配合,可完成主从式多机通信。串行口以方式2或方式3接收时,若SM2为1,则仅当从机接收到的第9位数据(在RB8中)为1时,数据装入接收缓冲器SBUF,并置RI=1向CPU申请中断;如果接收到第9位数据为0,则不置位中断标志RI,信息将丢失。而 SM2为0时,则接收到一个数据字节后,不管第9位数据是1还是0都产生中断标志RI,接收到的数据装入SBUF。应用这个特点,便可实现多个单片机之间的串行通信
25、。,(2)多机通信协议 所有从机串行口初始化为工作方式2或方式3,SM2 置位,串行中断允许。各从机均有编址。主机首先发送一帧地址信息,其中包括8位地址,第9位为地址置位,表示发送的为地址。所有从机均接收主机发送的地址,并进入各自中断服务程序,与各自的地址进行比较。被寻址的从机确认后,把自身 SM2清零,并向主机返回地址供主机核对。对于地址不符的从机,仍保持SM2=1状态。主机核对地址无误后,再向被寻址的从机发送命令,命令从机是进行数据接收还是数据发送,第9位清零。,主从机之间进行数据传送,其他从机检测到主机发送的是数据而非地址,则不予理睬,直到接收主机发送新的地址后。数据传输完毕后,从机将SM2重新置位。重复过程。,