单片机速成第5章.ppt
《单片机速成第5章.ppt》由会员分享,可在线阅读,更多相关《单片机速成第5章.ppt(177页珍藏版)》请在三一办公上搜索。
1、第5章单片机串行口功能扩展,5.1 串行口的功能扩展概述5.2 51系列单片机与异步串行通信总线接口5.3 51系列单片机与同 步串行总线接口习题五,5.1串行口功能扩展概述随着单片机应用技术的发展,单片机的应用模式也在不断更新。一方面,单片机应用系统的规模越来越大,在其外围连接了种类繁多的外设;另一方面,单片机进入了计算机网络系统,工业控制系统多采用多机分布式系统。同时,单片机的嵌入式系统应用模式又使其体积越来越小,且器件引脚数目越来越少。近年来,串行接口设备凭借其控制灵活、接口简单、占用资源少等优点在工业测控、仪器仪表等领域被广泛应用。这些发展趋势加强了单片机串行通信的功能,使串行通信技术
2、成为了单片机应用技术的重要组成部分。,51系列单片机内部仅有一个可编程的全双工串行通信口,具有UART的全部功能。在单片机应用系统开发中,开发人员常面临单片机串行通信口不足的问题,需要对串行通信口进行扩展。在进行串行通信接口扩展设计时,必须根据需要选择标准接口,同时要考虑传输介质、电平转换、通信协议等问题。采用标准接口后,能够方便地把单片机与外设、测量仪器等有机地连接起来,构成一个测控系统。,5.251系列单片机与异步串行通信总线接口51系列单片机与异步串行通信接口简单,只要解决电平转换与驱动问题,就可方便地实现串行通信。异步串行通信接口主要有三类:RS 232接口;RS 449、RS 422
3、、RS 423接口;20 mA电流环接口。,5.2.1RS 232接口RS-232C是使用最早、应用最多的一种异步串行通信总线标准,它是美国电子工业协会EIA(Electronic Industry Association)于1962年公布、1969年最后修订而成的。RS表示 Recommended Standard,232是该标准的标识,C表示最后一次修订。RS-232C主要用于定义计算机系统的一些数据终端设备(DTE)和数据通信设备(DCE)之间接口的电气特性。CRT、打印机与CPU的通信大都采用RS-232C总线。,1.RS-232C接口的电平转换RS-232C标准是在TTL电路之前研制
4、的,它的电平不是+5 V和地,而是采用负逻辑,其逻辑电平为:逻辑“0”:+3 V+15 V逻辑“1”:-3 V-15 V因此,RS-232C不能和计算机的TTL电平直接相连,使用时必须加上适当的电平转换电路芯片,否则将使TTL电路烧坏。,常用的电平转换接口芯片是传输驱动器MC1488和传输接收器MC1489,它们是用于计算机(终端)与RS 232C总线间进行电平转换的接口芯片。MC1488:输入TTL电平,输出与RS 232C兼容,电源电压为15 V或12 V;MC1489:输入与RS 232C兼容,输出为TTL电平,电源电压为5 V。MC1488和MC1489的原理电路如图5.1所示。,图
5、5.1MC1488、MC1489电平转换原理图,另一种常用的电平转换芯片是MAX232,该芯片有两个传输驱动器和两个传输接收器。MAX232系列收发器的引脚及原理如图5.2所示。,图 5.2MAX系列收发器的引脚及原理电路,从图5.2可看出,MAX232系列收发器由电压倍增器、电压反相器、RS-232发送器和RS 232接收器四部分组成。电压倍增器利用电荷充电泵原理,用电容C1把+5 V电压变换成+10 V电压,并存放在C3上。第二个电容充电泵用C2将+10 V电压转换成-10 V电压,存储在滤波电容C4上。因此,RS-232只需+5 V单电源即可。这些芯片的收发性能与MC1488、MC148
6、9基本相同,只是收发器路数不同。,2.RS-232C总线标准接口RS-232C标准规定的数据传输率为50 b/s、75 b/s、100 b/s、150 b/s、300 b/s、600 b/s、1200 b/s、2400 b/s、4800 b/s、9600 b/s、19 200 b/s。驱动器允许有2500 pF的电容负载,通信距离将受此电容限制。例如,采用150 pF/m的通信电缆时,最大通信距离为 15 m,若每米电缆的电容量减小,则通信距离可以增加。传输距离短的另一原因是RS-232C 属单端信号传送,存在共地噪声和不能抑制共模干扰等问题。因此,它一般用于 20 m 以内的通信。,RS-2
7、32C总线标准规定了21个信号,有25条引脚线,常采用25芯D型插头座,提供一个主信道和一个辅助信道,在多数情况下主要使用主信道。对于一般异步双工通信,仅需几条信号线就可实现,如一条发送线、一条接收线及一条地线。RS-232C也有9芯标准D型插头座。RS-232C引脚排列如图5.3所示。,图 5.3RS-232C总线引脚排列(a)25芯排列;(b)9芯排列,25芯RS-232C引脚信号定义如表5.1所示。9芯RS-232C引脚信号定义如表5.2所示。,表5.1 25芯RS-232C引脚说明,表5.2 9芯RS-232C引脚说明,RS-232C定义了计算机系统的一些数据终端设备(DTE)和数据通
8、信设备(DCE)之间接口的电气特性。RS-232C提供的两个信道中,辅助串行信道提供数据控制和第二信道,但其传输速率比主信道要低得多。除了速率低之外两信道无异,但辅助信道通常很少使用。这里对主信道的信号再做详细说明。信号分为两类:一类是DTE与DCE交换的信息TxD和RxD;另一类是为了正确无误地传输上述信息而设计的联络信号。,3.RS-232C接口连线方式RS-232C标准规定有25条连接线,虽然其中大部分引脚线有信号定义,可以使用,但在一般的计算机串行通信系统中,仅9个信号(不包括保护地)经常使用。计算机与终端设备之间的连接方法如图5.4所示。最简单的RS-232C连接方式,只需交叉连接2
9、条数据线以及信号地线即可,如图 5.5 所示。,图 5.4RS-232C直接与终端设备连接,图 5.5RS-232C三线连接(a)三线连接;(b)简化的三线连接,在图5.5(a)中,将各自的RTS和DTR分别接到自己的CTS和DSR端,只要一方使自己的RTS和DTR为1,那么它的CTS、DSR也就为1,从而进入了发送和接收的就绪状态。这种接法常用于一方为主动设备,而另一方为被动设备的通信中,如计算机与打印机或绘图仪之间的通信。这样,被动的一方RTS与DTR常置1,因而CTS、DSR也常置1,使其常处于接收就绪状态。只要主动一方令线路就绪(DTR=1),并发出发送请求(RST=1),即可立即向被
10、动的一方传送信息。,图5.5(b)所示为更简单的连接方法。如果说图5.5(a)所示的连接方法在软件设计上还需要检测“清除发送(CTS)”和“数据设备就绪(DSR)”的话,那么图5.5(b)所示的连接方法则完全不需要检测这些信号,随时可进行数据发送和接收。,5.2.251单片机与PC机间的通信接口利用PC机配置的异步通信适配器,可以方便地完成PC机与51单片机的数据通信。1.接口电路采用MAX232芯片接口的PC机与51单片机串行通信接口电路如图5.6所示。MAX232芯片中有两路发送/接收器,与51单片机接口时,只选其中一路即可。连接时,应注意其发送与接收引脚的对应关系,否则可能造成器件或计算
11、机串口的永久性损坏。,图 5.6PC机与51单片机串行通信接口示例电路,2.PC机端通信软件设计1)通信协议波特率:1200 b/s;信息格式:8位数据位,1位停止位,无奇偶检验;传送方式:PC机采用查询方式收发数据,51单片机采用中断方式接收数据,查询方式发送数据;校验方式:累加和校验;,握手信号:采用软件握手。发送方在发送之前先发一联络信号(用“?”号的ASCII码,接收方接到“?”号后,回送一个“”号作为应答信号),随后依次发送数据块长度(字节数),发送数据,最后发送校验和。接收方在收到发送方发过来的校验和后,与自己所累加的校验和相比较。若相同,则回送一个“0”,表示正确传送并结束本次通
12、信过程;若不相同,则回送一个“F”,并使发送方重新发送数据,直到接收正确为止。为了给出一个完整的通信程序,下面分别给出C语言PC机端和汇编语言单片机端的通信程序。,2)PC机发送文件子程序首先介绍通过串口发送一个文件的函数Sendf(),规定欲发送的这个文件存在当前盘上。为了便于说明问题,只传送总字节小于256个字符的文件。Sendf()函数的程序流程图如图5.7所示。,图 5.7PC机发送文件子函数流程,PC机发送文件子函数Sendf()的程序清单如下:Void sendf(char*fname)FIlE*fp;char ch;int handle,count,sum=0;if(fpfope
13、n(fname,r)=NULL)printf(不能打开输入文件!n);,exit(1);Handle=fileno(fp);*取得文件句柄*count=filelength(handle):*取得文件总字节数*printf(准备发送文件.n);do ch=?;*发送联络信号*sport(ch);while(rport()!);*直到接到应答信号为止*sport(count);*发送总字节数*,rep:for(;count;count-)ch=getc(fp);*从文件中取一个字符*sum=sum+ch;*累加校验和*if(ferror(fp)printf(读文件有错误n);Break;spor
14、t(ch);*从串口发一个字符*sport(sum);*发送累加校验和*,if(rport()=F)count=filelength(handle);*发送错误则重发*Sum=0;fseek(fp,count,1);*文件指针回退COUNT字节*goto rep;elsefclose(fp);printf(发送文件结束n);,3)PC机接收文件子程序接收函数Receivef()采用查询方式从串口接收一个总字节数小于256个字符的文件,接收的文件也存于当前盘上。接收文件子函数Receivef()的程序流程图如图5.8所示。,图 5.8PC机接收文件子函数流程图,PC机接收文件子函数Receive
15、f()的程序清单如下:void receivef(char*fname)FILE*fp;char ch;int count,temp,sum=0;remove(fname);*盘上有同名文件将被删掉*if(fpfopen(fname,w)=NULL)printf(不能打开输出文件n);exit(1);,printf(接收文件名:sn,fname);while(rport()!?);*收到联络信号?*sport($);ch:;sport(ch);*发应答信号*temprport();*收总字节数*count=temp;,rep:for(;count;count-)chrport();*从串口接收
16、一个字符*putc(ch,fp);*将一个字符写入文件*samsum+ch;*累加校验和*if(ferror(fp)printf(写文件有错误n);exit(1);,if(rport()!sum)ch=F;sport(ch);*校验和有错误,发F*count=temp;sum=0;fseek(fp,count,1);*文件指针回退COUNT个字节*goto rep;,elsech=0;sport(ch);*校验和正确,发0*fclose(fp);printf(接收文件结束n);,4)PC机主程序(函数)有了上述发送和接收文件两个子函数之后,就可以在主函数中使用它们了。主函数的工作是在完成串口初
17、始化后,根据键入的命令来决定是发送文件还是接收文件。主函数流程图如图5.9所示。,图 5.9PC机主函数流程图,PC机主函数清单如下:main(int argc,char*argv)while(argc!=3)printf(命令行命令不正确,请重新键入命令!n);exit(1);,bioscom(0,0 x83,0);*串口初始化*if(tolower(*argv1)=s)sendf(argv2);else if(tolower(*argv1)=r)receivef(argv2);,这里采用的是带参主函数main(int argc,char*argv)。其中,argc是一个整型变量,argv
18、是一个字符型指针数组。利用main()函数的参数可以使主程序从系统得到所需数据(也就是说,带参函数可直接从DOS命令行中得到参数值,当然,这些值是字符串)。当程序运行时(在DOS下执行.EXE文件),可以根据输入的命令行参数进行相应的处理。例如,执行程序mypro时,若要从当前盘上将名为f1.c的文件从串口发送出去,则需键入下述命令:mypro s fl.c,其中,mypro是源文件mypro.c经编译连接后生成的可执行文件mypro.exe。键入命令:mypro r f2.c 可以从串口接收若干字符,并写入当前盘上名为f2.c的文件中。,3.单片机通信软件设计1)单片机查询发送子程序程序将片
19、外RAM从1000H开始的小于256字节的数据从串行口发送出去,发送的数据字节数在R7中,用R6作累加和寄存器。程序流程图如图5.10所示。,图 5.10单片机查询发送流程图,单片机查询发送子程序如下:SEND:MOV A,#3FH MOV SBUF,A JNB TI,$CLR TI;发?号JNB RI,$CLR RIMOV A,SBUF,CJNE A,#2EH,SEND;应答信号是MOV A,R7;则发字节数MOV R3,A;暂存总字节数MOV SBUF,AJNB TI,$CLR TI MOV R6,#00HMOV DPTR,#1000HSEND1:MOVX A,DPTR,MOVS BUF,
20、A;发送一个字符 JNB TI,$CLR TI ADD A,R6;计算校验和MOV R6,AINC DPTR DJNZ R7,SEND1 MOV A,R6MOV SBUF,AJNB TI,$CLR TI;发送校验和,JNB RI,$CLR RIMOV A,SBUFCJNE A,#46H,SEND2;如收到应答是F,即46H,则重发数据RETSEND2:MOV DPTR,#1000HMOV R6,#00HMOV A,R3MOV R7,AAJMP SEND1,2)单片机接收中断服务子程序在中断服务子程序中,为了区别所接收的信号是联络信号还是字节数,是数据还是校验和,需要设立不同的标志位。为此,在可
21、位寻址的RAM中设定0003H存储不同的标志位:00H为接收联络信号标志位;01H为接收字节数标志位;02H为接收数据标志位;03H为接收文件结束标志位。在初始化时,这些位均为0。程序流程图如图5.11所示。,图 5.11单片机接收中断服务子程序流程图,在中断服务子程序中,将接收到的字节数存入R7中,接收的数据存入片外RAM从1000H开始的单元中。单片机接收中断服务子程序如下:RECE:CLR ESCLR RIJB 00H,RECElMOV A,SBUFCJNE A,#3FH,RECE2;收到的不是?号则退出,MOV A,#2EHMOV SBUF,AJNB TI,$CLR TI;发送应答信号
22、,即2EHSETB 00HSETB ESRETIRECE2:MOV A,#24HMOV SBUF,AJNB TI,$CLR TI;发送应答信号$,即24HSETB ES,RETIRECE1:JB 01H,RECE4MOV A,SBUF;接收字节数MOV R7,AMOV R3,A;暂存总字节数SETB 01HSETB ESRETIRECE4:JB 02H,RECE5,MOV A,SBUF;接收一字符MOVX DPTR,A;存入片外RAM中ADD A,R6MOV R6,AINC DPTRDJNZ R7,RECE7SETB 02HRECE7:SETB ESRETIRECE5:MOV A,SBUF,C
23、JNE A,06H,RECE8;06H为R6的字节地址MOV A,#4FH;校验和不正确,重发数据MOV SBUF,AJNB TI,$CLR TI;校验正确发0,即4FHSETB 03HSETB ESRETIRECE8:MOV DPTR,#1000HMOV R6,#00H,MOV A,R3MOV R7,A MOV A,#46HMOV SBUF,AJNB TI,$CLR TI;校验不正确发F,即46HCLR 02HSETB ESRETl,3)单片机主程序主程序流程图如图5.12所示。,图 5.12单片机主程序流程图,单片机主程序如下:ORG 0000H AJMP MAINORG 0023HAJM
24、P RECEORG 0040HMAIN:MOV SP,#60HMOV SCON,#50H;串口初始化,MOV TMOD,#20HMOV TH1,#0F3HMOV TL1,#0F3HMOV PCON,#00H;设置波特率SETB TR1;启动定时器1SETB EA;开放中断SETB ES;开放串行中断 L3:CLR 00H,CLR 01HCLR 02H CLR 03HMOV R6,#00HMOV DPTR,#1000HL2:JB 03H,L1SJMP L2L1:ACALL SENDAJMP L3,5.2.3RS-449/RS-422/RS-423/RS-485标准接口 虽然RS-232应用广泛,
25、但因其推出较早,在通信系统中存在以下缺点:数据传输速率慢,传输距离短,未规定标准的连接器,接口处各信号间易产生串扰。鉴于此,EIA制定了新的标准RS 449/RS 422/RS-423/RS 485,这些标准除了与RS-232C兼容外,在提高传输速率、增加传输距离、改善电气性能方面有了很大改进。,1.RS-449接口RS-449是1977年公布的标准接口,在很多方面可以代替RS-232C使用,两者的主要差别在于信号在导线上的传输方法不同。RS-232C是利用传输信号与公共地的电压差;RS-449是利用信号导线之间的信号电压差,可在1200 m的24 AWG双绞线上进行数字通信。RS-449可以
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 速成

链接地址:https://www.31ppt.com/p-6449722.html