《单片机的串行通信.ppt》由会员分享,可在线阅读,更多相关《单片机的串行通信.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第7 7章章 单片机的串行通信单片机的串行通信 本章的学习目标本章的学习目标n 单片机串行通信单片机串行通信I/OI/O接口的接口的结构结构n 串行通信串行通信控制寄存器控制寄存器n 单片机串行通信的单片机串行通信的工作方式工作方式n 串行通信串行通信应用应用。通通信信方方式式7.1 7.1 串行通信的概念串行通信的概念 7.1.1 7.1.1 异步通信与同步通信异步通信与同步通信 并行通信并行通信空空间上区分各位数据及联络间上区分各位数据及联络控制信号。控制信号。占用传输线多占用传输线多,速度快。,速度快。串行通信串行通信时时间上区分各位数据及联络间上区分各位数据及联络控制信号。控制信号。
2、占用传输线少占用传输线少,速度慢。,速度慢。一、串行通信方式一、串行通信方式 信息传输在一个方向上只占用一跟通信线,信息传输在一个方向上只占用一跟通信线,它既作为数据线,又作为联络线。它既作为数据线,又作为联络线。信息信息格式格式上分上分 异步通信方式异步通信方式:按按字符字符传输传输 同步通信方式同步通信方式:按按数据块数据块传输传输 1.1.异步通信数据格式异步通信数据格式停停止止位位起起始始位位低位低位高位高位7位数据位位数据位奇偶奇偶校验校验停停止止位位第第N个字符个字符第第N-1个字符个字符1 10 02同步通信同步通信SYNC(Synchronous Data Communicat
3、ion)n 在同步通信中,数据或字符开始处是用在同步通信中,数据或字符开始处是用 同步字符来指示同步字符来指示(一般约定为(一般约定为1 12 2个字符),以个字符),以实现发送端和接收端同步,实现发送端和接收端同步,一旦检测到约定同步一旦检测到约定同步字符,下面就连续按顺序接收数据字符,下面就连续按顺序接收数据。7.1.2 7.1.2 串行通信的波特率串行通信的波特率 波波特特率率(bpsbps)是是异异步步通通信信中中数数据据传传送送速速率率的的单位,其意义是单位,其意义是每秒传送多少位二进制数每秒传送多少位二进制数。n例例如如:数数据据传传送送的的速速率率为为120120个个字字符符每每
4、秒秒,每每个个字字符符由由1 1个个起起始始位位、8 8个个数数据据位位和和1 1个个停停止止位位组组成成,则则其传送波特率为:其传送波特率为:10b120s1200bps1200波特波特7.1.3 7.1.3 串行通信的方式串行通信的方式n按照数据传送方向,串行通信可分为按照数据传送方向,串行通信可分为单工、半双工单工、半双工(half half duplexduplex)制式和制式和全双工全双工(full duplexfull duplex)制式。制式。n1 1半双工制式半双工制式 在在半半双双工工制制式式下下,甲甲机机和和乙乙机机之之间间只只有有一一个个通通信信回回路路,接接收收和和发发
5、送送不不能能同同时时进进行行,只只能能分分时时发送和接收。发送和接收。演演 示示 思考:思考:实际生活的例子?实际生活的例子?n2 2全双工制式全双工制式 在在全全双双工工制制式式下下,甲甲、乙乙两两机机之之间间数数据据的的发发送送和和接接收收可可以以同同时时进进行行,称称为为全全双双工工传传送送。不不管管哪哪种种形形式式的的串串行行通通信信,在在两两机机之之间间均均应应有有共地线。共地线。思考:思考:实际生活的例子?实际生活的例子?7.2 7.2 串行通信总线标准及其接口串行通信总线标准及其接口7.2.1RS-232C接口接口 RS-232C是是使使用用最最早早、应应用用最最多多的的一一种种
6、异异步步串串行行通通信信总总线线标标准准。是是美美国国电电子子工工业业协协会会(EIA)1962年年公公布布,1969年年最最后后修修定定而而成成的的。其其中中,RS表表示示RecommendedStandard,232是是该该标标准的标识号,准的标识号,C表示最后一次修定。表示最后一次修定。RS-232C主要用来定义计算机系统的一些数据终端设备主要用来定义计算机系统的一些数据终端设备(DTE)和数据电路终接设备(和数据电路终接设备(DCE)之间的电气性能。之间的电气性能。RS-232C串行接口总线适用于:设备之间的通信距离不设备之间的通信距离不大于大于15 m15 m,传输速率最大为传输速率
7、最大为20 kb/s20 kb/s。1.RS-232C信息格式标准信息格式标准 RS-232C采用串行格式,如图7-5所示。该标准规定:信息的开始为起始位,信息的结束为停止位;信息本身可以是5、6、7、8位再加一位奇偶校验位。如果两个信息之间无信息,则写“1”,表示空。图图7-5 RS-232C7-5 RS-232C信息格式信息格式2.RS-232C电平转换器电平转换器 RS-232CRS-232C规规定定了了自自己己的的电电气气标标准准,由由于于它它是是在在TTLTTL电电路路之之前前研研制制的的,所所以以它它的的电电平平不不是是+5+5 V V和和地地,而而是是采采用用负负逻逻辑辑,即即逻
8、逻辑辑“0 0”:+5+5 V V+15+15 V V;逻逻辑辑“1 1”:-5-5 V V-15-15 V V。因因此此,RS-232CRS-232C不不能能和和TTLTTL电电平平直直接接相相连连,使使用用时时必必须须进进行行电电平平转转换换,否否则则将将使使TTLTTL电电路路烧烧坏坏,实实际际应应用用时时必必须须注注意意!常常用用的的电电平平转转换换集集成成电电路路是是传传输输线线驱动器驱动器MC1488MC1488和传输线接收器和传输线接收器MC1489MC1489。图图7-6 MAX2327-6 MAX232引脚图引脚图 常用的电平转换电路是常用的电平转换电路是MAX232。图图7
9、.7为为MAX232的引脚图的引脚图。接计算机接计算机接单片机接单片机 3.RS-232C总线规定总线规定RS-232C引脚图引脚图 RS-232C标准总线为25根,采用标准的D型25芯插头座。各引脚的排列如图。DTE:数据终端设备数据终端设备(如个人计算机如个人计算机)DCE:数据电路终接设备数据电路终接设备(如调制解调器如调制解调器)12345678910111213141516171819202122232425方向 名称 第2路发送数据 发送时钟 第2路接收数据 接收时钟未用 第2路请求发送 数据终端就绪 数据信号检测 振铃指示 数据信号速率选择 发送时钟未用未用保护地 N.A发送数据
10、 到DCE接收数据 到DCE请求发送 到DCE允许发送 到DTE数据置位就绪 到DTE信号地 N.A载波检测 到DTE留作调试用第2路载波检测 到DTE第2路允许发送 到DTE名称 方向到DCE到DTE到DTE到DTE到DCE到DCE到DTE到DTE到DCE到DCE7.2.2RS-449、RS-422A、RS-423A标准接口标准接口 RS-232C虽然应用广泛,但因为推出较早,在现代通信系统中存在以下缺点:数数据据传传输输速速率率慢慢,传传输输距距离离短短,未规定标准的连接器,接口处各信号间易产生串扰。鉴于此,EIA制定了新的标准RS-449,该标准除了与RS-232C兼容外,在在提提高高传
11、传输输速速率率,增增加加传传输输距距离离,改善电气性能等方面有了很大改进。1.RS-449标准接口标准接口 RS-449是1977年公布的标准接口,在很多方面可以代替RS-232C使用。RS-449与RS-232C的主要差别在于信号在导线上的传输方法不同:RS-232C是利用传输信号与公共地的电压差,RS-449是利用信号导线之间的信号电压差,在1219.2m的24-AWG双铰线上进行数字通信。RS-449规定了两种接口标准连接器,一种为37脚,一种为9脚。RS-449可以不使用调制解调器,它比RS-232C传输速率高,通信距离长,且由于RS-449系统用平衡信号差传输高速信号,所以噪声低,又
12、可以多点或者使用公共线通信,故RS-449通信电缆可与多个设备并联。2.RS-422A、RS-423A标准接口标准接口 RS-422A文本给出了RS-449中对于通信电缆、驱动器和接收器的要求,规定双端电气接口形式,其标准是双端线传送信号。它具体通过传输线驱动器,将逻辑电平变换成电位差,完成发送端的信息传递;通过传输线接收器,把电位差变换成逻辑电平,完成接收端的信息接收。RS-422A比比RS-232C传传输输距距离离长长、速速度度快快,传传输输速速率率最最大大可可达达10Mb/s,在在此此速速率率下下,电电缆缆的的允允许许长长度度为为12m,如果采用低速率传输,最大距离可达如果采用低速率传输
13、,最大距离可达1200m。7.2.320mA电流环路串行接口电流环路串行接口 20 mA电流环是目前串行通信中广泛使用的一种接口电路。电流环串行通信接口的最大优点是低阻传输线对电气噪声不敏感,而且易实实现现光光电电隔隔离离,因此在长距离通信时要比RS-232C优越得多。图7-9是一个实用的20 mA电流环接口电路。它是一个加上光电隔离的电流环传送和接收电路。在发送端,将TTL电平转换为环路电流信号,在接收端又转换成TTL电平。图7.11 20 mA电流环接口电路TTL数据入TTL数据出 通信需要考虑的因素:通信需要考虑的因素:(1)通通信信速速度度和和通通信信距距离离。通通常常的的标标准准串串
14、行行接接口口,都都要要满满足足可可靠靠传传输输时时的的最最大大通通信信速速度度和和传传送送距距离离指指标标,但但这这两两个个指指标标具具有有相相关关性性,适适当当降降低低传传输输速速度度,可可以以提提高高通通信信距距离离,反反之之亦亦然然。例例如如,采采用用RS-232C标标准准进进行行单单向向数数据据传传输输时时,最最大大的的传传输输速速度度为为20kb/s,最最大大的的传传输输距距离离为为15m。而而采采用用RS-422A标标准准时时,最最大大的的传传输输速速度度可可达达10Mb/s,最最大大的的传传输输距距离离为为300m,适适当当降降低低传传输输速速度度,传输距离可达传输距离可达120
15、0m。(2)抗抗干干扰扰能能力力。通通常常选选择择的的标标准准接接口口,在在保保证证不不超超过过其其使使用用范范围围时时都都有有一一定定的的抗抗干干扰扰能能力力,以以保保证证可可靠靠的的信信号号传传输输。但但在在一一些些工工业业测测控控系系统统中中,通通信信环环境境十十分分恶恶劣劣,因因此此在在通通信信介介质质选选择择、接接口口标标准准选选择择时时,要要充充分分考考虑虑抗抗干干扰扰能能力力,并并采采取取必必要要的的抗抗干干扰扰措措施施。例例如如在在长距离传输时,使用RS-422A标准,能能有有效效地地抑抑制制共共模模信信号号干干扰扰;使使用用20mA电电流流环环技技术术,能能大大大大降降低低对
16、对噪噪声声的的敏敏感感程度。程度。在在高高噪噪声声污污染染的的环环境境中中,通通过过使使用用光光纤纤介介质质可可减减少少噪声的干扰,通过光电隔离可以提高通信系统的安全性。噪声的干扰,通过光电隔离可以提高通信系统的安全性。7.3 MCS-517.3 MCS-51的串行接口的串行接口7.3.1MCS-51串行口结构串行口结构 MCS-51MCS-51内内部部有有两两个个独独立立的的接接收收、发发送送缓缓冲冲器器SBUFSBUF。SBUFSBUF属属于于特特殊殊功功能能寄寄存存器器。发发送送缓缓冲冲器器只只能能写写入入不不能能读读出出,接接收收缓缓冲冲器器只只能能读读出出不不能能写写入入,二二者者共
17、共用用一一个个字字节节地地址址(99H99H)。)。串行口的结构如图串行口的结构如图7-107-10所示。所示。1 1串行口控制寄存器串行口控制寄存器SCONSCONnSM0、SM1:控制串行口的工作方式。:控制串行口的工作方式。nSM2:允许方式:允许方式2和方式和方式3进行多机通信控制位。进行多机通信控制位。nREN:允许串行接收控制位。:允许串行接收控制位。REN=1,允许接收。,允许接收。nTB8:是工作在方式:是工作在方式2和方式和方式3时要发送的第时要发送的第9位数据,位数据,根据需要由软件置位和复位。根据需要由软件置位和复位。nRB8:是工作在方式:是工作在方式2和方式和方式3时
18、接收到的第时接收到的第9位数据位数据。nTI:发送中断标志位。必须由软件清零。:发送中断标志位。必须由软件清零。nRI:接收中断标志位。必须由软件清零。:接收中断标志位。必须由软件清零。SM0SM0、SM1SM1:串行口工作方式选择位串行口工作方式选择位2特殊功能寄存器特殊功能寄存器PCONnSMOD:波特率倍增位。:波特率倍增位。当当SMOD=1时,波特率时,波特率加倍加倍;当当SMOD=0时,波特率时,波特率不加倍不加倍。nGF1、GF0:两个通用标志位,用户使用:两个通用标志位,用户使用。思考:思考:该两位的作该两位的作用是什么?用是什么?7.3.2 7.3.2 单片机串行口的工作方式单
19、片机串行口的工作方式n1 1方式方式0 0 串行接口工作方式串行接口工作方式0 0为为同步移位寄存器同步移位寄存器方式,多用方式,多用于于I/OI/O口的扩展,其口的扩展,其波特率是固定波特率是固定的,为的,为f foscosc/12/12。TXDTXD引引脚输出同步移位脉冲,脚输出同步移位脉冲,RXDRXD引脚串行输入引脚串行输入/输出。输出。n2 2方式方式1 1 在方式在方式l l时,串行口被设置为时,串行口被设置为波特率可变波特率可变的的8 8位异步位异步通信通信接口。发送接口。发送/接收接收1 1帧数据为帧数据为1010位位,其中,其中1 1位起始位、位起始位、8 8位数据位(先低位
20、后高位)和位数据位(先低位后高位)和1 1位停止位。位停止位。n3 3方式方式2 2 串串行行口口工工作作为为方方式式2 2时时,被被定定义义为为9 9位位异异步步通通信信接接口口。发发送送/接接收收1 1帧帧数数据据为为1111位位,其其中中1 1位位起起始始位位、8 8位位数数据据位位、1 1位位控控制制/校校验验位位和和1 1位位停停止止位位。控控制制/校校验验位位为第为第9 9位数据。位数据。n4 4方式方式3 3 方方式式3 3为为波波特特率率可可变变的的1111位位异异步步通通信信方方式式,除除了了波波特率有所区别之外,其余同方式特率有所区别之外,其余同方式2 2。7.37.33
21、3 串行通信的波特率串行通信的波特率n(1)方式)方式0的波特率的波特率 在在方方式式0下下,串串行行口口通通信信的的波波特特率率是是固固定定的的,其值为其值为fosc/12(fosc为主机频率)。为主机频率)。n(2)方式)方式2的波特率的波特率 在在方方式式2下下,通通信信波波特特率率为为fosc/32或或fosc/64,根根据据特特殊殊功功能能寄寄存存器器PCON中中SMOD位位的的状状态态来来决决定定串串行行口口在在那那个个波波特特率率下下工工作作。选选择择公公式为:式为:(3 3)方式)方式1 1或方式或方式3 3的波特率的波特率n在在这这两两种种方方式式下下,串串行行口口波波特特率
22、率是是由由定定时时器器的的溢溢出出率率决决定定的的,因因而而波波特特率率是是可可变变的的。波波特特率率的公式为:的公式为:式中:式中:K K为定时器为定时器T1T1的位数。的位数。7.4 7.4 单片机串行口的应用单片机串行口的应用 n7.4.1 串行口扩展显示器串行口扩展显示器 n【例例7 7-1 1】用用8 8位串入并出移位寄存器位串入并出移位寄存器74HC16474HC164扩展显扩展显示器。示器。功能:把数据从显示缓冲区送到数码管。功能:把数据从显示缓冲区送到数码管。ORG 1000H MOV R2,08H;显示;显示8个数码管个数码管 MOV R0,DIS;显示缓冲区未地址送入;显示
23、缓冲区未地址送入R0 DL0:MOV A,R0 ;取要显示数作查表偏移量;取要显示数作查表偏移量 MOV DPTR,TAB;指向字形表首;指向字形表首 MOVC A,ADPTR;查表得字形码;查表得字形码 MOV SBUF,A ;发送显示;发送显示 DL1:JNB T1,DL1 ;等待发送完一帧;等待发送完一帧 CLR T1 ;清中断标志,准备继续发送;清中断标志,准备继续发送 DEC R0 ;更新显示单元;更新显示单元 DJNZ R2,DL0 ;重复显示所有数码管;重复显示所有数码管 TAB:DB 0C0H,0F9H,0A4H,0B0H,99H ;0,1,2,3,4,DB 92H,82H,0
24、F8H,80H,90H ;5,6,7,8,9,DB 88H,83H,0C6H,0A1H,86H ;A,B,C,D,E,DB 8EH,0BFH,8CH,0FFH ;F,P,暗,暗 7.4.2 串行口扩展的键盘串行口扩展的键盘n 在方式在方式0下,串行口作下,串行口作同步移位寄存器同步移位寄存器用,用,以以8位数据为一帧,位数据为一帧,先发送或接收最低位先发送或接收最低位,每,每个机器周期发送或接收一位,故其波特率是固个机器周期发送或接收一位,故其波特率是固定的,为定的,为fosc12。串行数据由串行数据由RXD(P3.0)端输入或输出端输入或输出。nORG 0100HnSTART:MOV R0,
25、50H ;片内片内RAMn MOV DPTR,#TABnRCVI:MOV SCON,10H;设置串口;设置串口0并接收并接收 JNBRI,$;一帧接收完毕;一帧接收完毕 CLRRI MOVA,SBUF ;读数据;读数据 MOVR0,#0 ;初始键号;初始键号 MOVR1,#0 ;查询健计数器;查询健计数器 LP1:RRCA ;从低位健判断;从低位健判断 JNCN1 ;c不等于不等于1,有健,有健 INCR0 ;初始键号加一;初始键号加一 INCR1 CJNE R1,08,LP1;8个是否判断完毕个是否判断完毕 SJMP RCVIN1:MOV A,R0 ADD A,A JMP ADPTR ;有健
26、按下;有健按下TAB:AJMP OPR0 ;转向;转向0号健号健 AJMP OPR1 AJMP OPR7OPR0:LJMP STARTOPR7:LJMP START END 7.4.3 7.4.3 双机通信双机通信 【例例7 7-3 3】编编程程把把甲甲机机片片内内RAM50HRAM50H5FH5FH单单元元中中的的数数据据块块从从串串行行口口输输出出。定定义义在在方方式式3 3下下发发送送,TB8TB8作作奇奇偶偶校校验验位位。采采用用定定时时器器1 1方方式式2 2作作波波特特率率发发生生器器,波波特特率率为为12001200波波特特,f foscosc11110592MHz0592MHz
27、,预预置值置值TH1TH10E8H0E8H。编编程程使使乙乙机机从从甲甲机机接接收收1616个个字字节节数数据据块块,并并存存入入片片外外3000H3000H300FH300FH单单元元。接接收收过过程程中中要要求求判判奇奇偶偶校校验验标标志志RB8RB8。若若出出错错则则置置F0F0标标志志为为1 1,若若正正确则置确则置F0F0标志为标志为0 0,然后返回。,然后返回。发送子程序如下:发送子程序如下:n ORG 0000Hn MOV TMOD,#20H;设置定时器设置定时器1为方式为方式2n MOV TL1,0E8H;设预置值设预置值n MOV TH1,0E8Hn SETB TRI ;启动
28、定时器启动定时器1 1n MOV SCON,0C0H;设置串行口为方式;设置串行口为方式3n MOV PCON,00H ;SMOD0n MOV R0,#50H;设数据块指针;设数据块指针n MOV R7,10H;设数据长度;设数据长度10H TRS:MOVA,R0 ;取数据送至;取数据送至An MOVC,Pn MOVTB8,C ;奇偶位;奇偶位P送至送至 TB8n MOVSBUF,A;启动发送启动发送WAIT:JNBTI,$;判;判1帧是否发送完帧是否发送完n CLRTIn INCR0;更新数据单元;更新数据单元n DJNZR7,TRS;循环发送至结束;循环发送至结束 n END接收子程序编程
29、如下:接收子程序编程如下:n MOV TMOD,20H;设置定时器;设置定时器1为方式为方式2n MOV TL1,0E8H;设预置值设预置值n MOV TH1,0E8Hn SETB TR1;启动定时器启动定时器1n MOV SCON,0C0H;设置串行口为方式设置串行口为方式3n MOV PCON,00H;SMOD0n MOV DPTR,3000H;设置数据块指针设置数据块指针n MOV R7,10H ;设数据块长度;设数据块长度n SETB REN;允许接收允许接收nWAIT:JNBRI,$;判;判1帧是否接收完帧是否接收完n CLR RIn MOV A,SBUF;读入读入1帧数据帧数据n JNB PSW.0,PZ;奇偶位奇偶位P为为0则跳转则跳转n JNB RB8,ERR;Pl,RB80则出错则出错n SJMP YES;二者全为二者全为1则正确则正确nPZ:JBRB8,ERR ;P0,RB8l则出错则出错nYES:MOVX DPTR,A ;正确,存放数据;正确,存放数据n INC DPTR;修改地址指针修改地址指针n DJNZ R7,WAIT;判断数据块接收完否;判断数据块接收完否n CLR PSW.5;接收正确且接收完清;接收正确且接收完清F0标志标志n RET;返回返回nERR:SETB PSW.5 ;出错则置;出错则置F0标志为标志为“l”n RET;返回返回
限制150内