第6章80C51单片机的串行口_第1页
第6章80C51单片机的串行口_第2页
第6章80C51单片机的串行口_第3页
第6章80C51单片机的串行口_第4页
第6章80C51单片机的串行口_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、2022-5-61第第6 6章章 80C5180C51单片机的串行口单片机的串行口计算机计算机串行通信基础串行通信基础6.180C5180C51单片机的单片机的串行口串行口6.280C5180C51单片机的单片机的串行口应用串行口应用6.32022-5-626.1 计算机串行通信基础计算机串行通信基础通信:并行通信与串行通信通信:并行通信与串行通信 v 并行通信并行通信特点特点:传送控制简单、速度快,但传输线较多,成本高。:传送控制简单、速度快,但传输线较多,成本高。 2022-5-63v 串行通信串行通信特点特点:传送控制复杂、速度慢,传输线少,成本低:传送控制复杂、速度慢,传输线少,成本低

2、 2022-5-64v 异步通信与同步通信异步通信与同步通信n 收、发设备时钟独立,以字符收、发设备时钟独立,以字符( (帧帧) )为单位传输为单位传输 6.1.1 6.1.1 串行通信的基本概念串行通信的基本概念v 异步通信异步通信 2022-5-65 异步通信帧格式异步通信帧格式v起始位(位);起始位(位);v 数据位(位);数据位(位);v 奇偶校验位(位,可无校验位);奇偶校验位(位,可无校验位);v 停止位(位)。停止位(位)。 特点特点n 易于实现易于实现n 效率不高效率不高 v 同步通信同步通信(发、收时钟直接连接,效率高。板内元件间的(发、收时钟直接连接,效率高。板内元件间的S

3、PI接口)接口) 2022-5-66v 串行通信的传输方向串行通信的传输方向v 单工单工 v 半双工半双工 v 全双工全双工 80C5180C51有有1 1个全双工个全双工串行口串行口 2022-5-67v 信号的调制与解调信号的调制与解调DTEDTE:数据:数据终端终端设备设备DCEDCE:数据:数据通信通信设备设备 调制解调器调制解调器n 调制调制n 解调解调 2022-5-68v 串行通信的错误校验串行通信的错误校验v奇偶校验奇偶校验 发送字符时发送字符时,数据位,数据位尾随尾随1 1位奇偶校验位位奇偶校验位(1 1或或0 0)。)。奇校验时奇校验时,数据中,数据中“1 1”的个数与校验

4、位的个数与校验位“1 1”的个数之和应为奇数;的个数之和应为奇数;偶校验时偶校验时,数据中,数据中“1 1”的个数与校验位的个数与校验位“1 1”的个数之和应为偶数。的个数之和应为偶数。接收字符时接收字符时,对,对“1 1”的个数进行校验,若发现的个数进行校验,若发现不一致,则说明传输数据过程中出现了差错。不一致,则说明传输数据过程中出现了差错。 2022-5-69v代码和校验代码和校验 发送方发送方将所发将所发数据块求和数据块求和(或各字节异或或各字节异或),产),产生的生的校验和字节校验和字节附加到数据块的末尾。附加到数据块的末尾。 接收方接收方在接收数据时要对在接收数据时要对数据块(数据

5、块(除校验字节外除校验字节外)求和(或各字节异或),求和(或各字节异或),将所得的结果与收到的将所得的结果与收到的“校验和校验和”进行比较,两者相符则无差错,否则进行比较,两者相符则无差错,否则就认为传送过程出现了差错。就认为传送过程出现了差错。 2022-5-610v 传输速率与传输距离传输速率与传输距离v传输速率传输速率波特率波特率:每秒钟传送信息的位数,单位:波特(:每秒钟传送信息的位数,单位:波特(Baud) 基带传输基带传输(每个(每个码元码元带有带有“1 1”或或“0 0”这这1 bit1 bit信息信息) )。 常用波特率为:常用波特率为:24002400、48004800、 9

6、6009600、14.4K14.4K、19.2K19.2K等等 v传输距离与传输速率的关系传输距离与传输速率的关系传输距离随波特率的增加而减小。传输距离随波特率的增加而减小。 等时间间隔信号称为码元每个码元可以携带n位信息 2022-5-6116.1.2 6.1.2 串行通信接口标准串行通信接口标准RS-232CRS-232C定义的是定义的是DTEDTE与与DCEDCE间的接口标准。间的接口标准。 v 机械特性机械特性DB-25DB-25(阳头)连接器(阳头)连接器 DB-9DB-9(阳头)连接器(阳头)连接器 阳头阳头通常用于通常用于计算机侧计算机侧,阴头阴头用于用于连接线侧连接线侧 202

7、2-5-612v 功能特性功能特性插针序号信号名称功能信号方向 1 PGND保护接地 2(3)TXD发送数据(串行输出)DTEDCE 3(2)RXD接收数据(串行输入)DTEDCE 4(7)RTS请求发送DTEDCE 5(8)CTS允许发送DTEDCE 6(6)DSRDCE就绪(数据建立就绪)DTEDCE 7(5) SGND信号接地 8(1)DCD载波检测DTEDCE 20(4)DTRDTE就绪(数据终端准备就绪)DTEDCE 22(9) RI振铃指示DTEDCE2022-5-613v 电气特性电气特性RS-232CRS-232C采用负逻辑电平,规定(采用负逻辑电平,规定(-3-3-25V-2

8、5V)为逻辑)为逻辑“1 1”,(+3+3+25V+25V)为逻辑)为逻辑“0 0”。-3V-3V+3V+3V是未定义的过渡区。是未定义的过渡区。试比较:试比较: 电平转换电路(如电平转换电路(如MAX232MAX232)。)。 2022-5-614v 过程特性过程特性v远远程通信,需要调制解调器程通信,需要调制解调器 2022-5-615v近近程通信,不需要调制解调器程通信,不需要调制解调器 无联络线方式无联络线方式 联络线短接(伪连接)方式联络线短接(伪连接)方式 2022-5-616v RS-232CRS-232C电平与电平与TTLTTL电平转换驱动电路电平转换驱动电路v早期采用早期采用

9、MC1488MC1488、MC1489MC1489 v近期常用近期常用MAXM232MAXM232: 片内带有自升压电路片内带有自升压电路 仅需仅需+5V+5V电源电源 内含内含2 2个发送器,个发送器,2 2个接收器个接收器 2022-5-617v 采用采用RS-232CRS-232C接口存在的问题接口存在的问题 v传输距离短、速率低传输距离短、速率低 通常不超过通常不超过1515米,速率米,速率20Kbps20Kbps v有电平偏移有电平偏移 RS-232RS-232收发共地,地电流会使电平偏移出现逻辑错误。收发共地,地电流会使电平偏移出现逻辑错误。 v抗干扰能力差抗干扰能力差 RS-23

10、2RS-232单端输入,易混入干扰。(单端输入,易混入干扰。(故用大摆幅故用大摆幅) 新标准新标准RS-485RS-485改善了传输特性,应用广泛!改善了传输特性,应用广泛! 2022-5-6186.2 80C51单片机的串行口单片机的串行口6.2.1 80C516.2.1 80C51串行口的结构串行口的结构 1 1个全双工串口:个全双工串口:通信通信或或接口扩展接口扩展 接收发送缓冲器接收发送缓冲器逻辑同名、物理分开;逻辑同名、物理分开;接收双缓冲。接收双缓冲。 2022-5-6196.2.2 80C516.2.2 80C51串行口的控制寄存器串行口的控制寄存器v 串行口控制寄存器串行口控制

11、寄存器SCONSCONv SM0SM0和和SM1SM1:工作方式选择位:工作方式选择位76543210SCONSM0SM1SM2RENTB8RB8TIRI字节地址:98HSM0SM1方 式说 明波特率000移位寄存器fosc/1201110位UART(8位数据)可变10211位UART(9位数据)fosc/64或fosc/3211311位UART(9位数据)可变2022-5-620vSM2SM2:多机通信控制位:多机通信控制位SM2=1SM2=1时时, ,接收机接收机地址帧甄别地址帧甄别使能使能 。若若RB8RB81 1,接收的信息接收的信息可进入可进入SBUFSBUF,并使,并使RIRI为为

12、1 1,进而在中断服务中再进行地址号比较进而在中断服务中再进行地址号比较; ;若若RB8RB80 0,该帧不接收,丢弃掉,且保持,该帧不接收,丢弃掉,且保持RI=0RI=0。 SM2=0SM2=0时,时,接收机接收机地址帧甄别地址帧甄别禁止禁止。不论收到的不论收到的RB8RB8为为0 0或或1 1,均可以使接收帧进入,均可以使接收帧进入SBUFSBUF,并使,并使RI=1RI=1。此时的此时的RB8RB8通常为校验位。通常为校验位。 vRENREN:串行接收使能位,软件置:串行接收使能位,软件置1 1时,启动接收过程时,启动接收过程2022-5-621vTB8TB8:多机方式发送的第:多机方式

13、发送的第9 9位位发送的发送的地址地址/ /数据帧数据帧标志。标志。也可作为奇偶校验位。也可作为奇偶校验位。 vRB8RB8:多机方式接收的第:多机方式接收的第9 9位位接收的接收的地址地址/ /数据帧数据帧标志。标志。也可作为奇偶校验位。也可作为奇偶校验位。 vTITI:发送中断标志位,要由:发送中断标志位,要由软件清软件清0 0vRIRI:接收中断标志位,要由:接收中断标志位,要由软件清软件清0 02022-5-622v 电源控制寄存器电源控制寄存器PCON PCON vSMODSMOD:波特率倍增位。波特率倍增位。在串行口方式在串行口方式1 1、方式、方式2 2、方式方式3 3时,波特率

14、与时,波特率与SMODSMOD有关,有关,当当SMOD=1SMOD=1时,波时,波特率提高一倍。特率提高一倍。复位时,复位时,SMOD=0SMOD=0。 76543210PCONSMOD字节地址:97H2022-5-6236.2.3 80C516.2.3 80C51串行口的工作方式串行口的工作方式v 方式方式0 0:同步移位寄存器:同步移位寄存器,用于,用于扩展并行口扩展并行口 vRXDRXD:输入输入或或输出输出引脚引脚 vTXDTXD:移位脉冲移位脉冲输出引脚输出引脚v发送和接收都是发送和接收都是8 8位位v波特率固定为波特率固定为:fosc/12fosc/122022-5-624数据输数

15、据输出出: CRCR用于对用于对74LS16474LS164清清0 0 2022-5-625数据输数据输入入: S/LS/L下降沿下降沿将并行数将并行数据装入据装入,高电平,高电平启动启动数据移入。数据移入。 2022-5-626v 方式方式1 1:1010位帧,用于位帧,用于双双机通信机通信 v起始位:起始位:1 1位位 v数据位:数据位:8 8位位v停止位:停止位:1 1位位2022-5-627串行发送串行发送:(:(写写SBUFSBUF启动启动发送过程)发送过程) 串行接收串行接收:( (置置REN=1REN=1启动启动接收过程接收过程) ) 2022-5-628v 方式方式2 2和方式

16、和方式3 3:1111位帧,用于位帧,用于多机多机通信通信 v起始位:起始位:1 1位位 v数据位:数据位:9 9位位v停止位:停止位:1 1位位2022-5-629串行串行发送发送:(写:(写SBUFSBUF启动发送过程)启动发送过程) 串行串行接收接收:( (置置REN=1REN=1启动接收过程启动接收过程) ) 2022-5-6306.2.4 80C516.2.4 80C51波特率确定与初始化步骤波特率确定与初始化步骤v 波特率的确定波特率的确定 v波特率的计算波特率的计算固定波特率:固定波特率: 方式方式0 0波特率波特率= fosc/12= fosc/12 方式方式2 2波特率波特率

17、= =(2 2SMODSMOD/64/64)* * foscfosc可变可变波特率波特率:( (方式方式1 1、方式、方式3 3) ) 波特率波特率= =(2 2SMODSMOD/32/32)* *(T1T1溢出率溢出率) T1T1溢出率溢出率 = fosc /12= fosc /12256 256 (TH1TH1)2022-5-631v 波特率的选择波特率的选择 波特率要选择波特率要选择标称值标称值,由于,由于TH1TH1的的初值是整数初值是整数,为了,为了获得标称值,依公式获得标称值,依公式晶振频率要选晶振频率要选11.059211.0592MHzMHz。 方式方式1 1和方式和方式3 3

18、波特率与波特率与TH1TH1初值的对应关系:初值的对应关系: 波特率/(b/s)19.2 k9600480024001200TH1初值FDHFDHFAHF4HE8HSMOD10000若晶振为若晶振为12MHz12MHz,TH1TH1初值取初值取FDHFDH,依公式算出的波特,依公式算出的波特率为率为10416.610416.6; TH1TH1初值取初值取FCHFCH,为,为7812.57812.5。 2022-5-632v 串行口初始化步骤串行口初始化步骤 v确定确定T1T1的工作方式(的工作方式(TMODTMOD)v计算计算T1T1的初值,的初值,装载装载TH1TH1、TL1TL1v启动启动

19、T1T1(置位置位TR1TR1)v确定串行口工作方式(确定串行口工作方式(SCONSCON)v串口中断设置(串口中断设置(IEIE、IPIP)2022-5-6336.3 80C51单片机的串行口应用单片机的串行口应用6.3.1 6.3.1 利用单片机串口的并行利用单片机串口的并行I/OI/O扩展扩展 占用串口!占用串口!v单片机端的电平转换单片机端的电平转换6.3.2 6.3.2 单片机与单片机与PCPC机间的通信机间的通信v与与PCPC机的硬件连接机的硬件连接 v直通连接直通连接v交叉连接交叉连接vPCPC机串行口检查机串行口检查 nPCPC机的串行口的机的串行口的收、发信号引脚收、发信号引

20、脚短接短接 n运行运行串口调试软件串口调试软件 v连机编程测试连机编程测试void main(void)void main(void) uchar temp; uchar temp; init(); init(); while (1) while (1) temp = ReceiveChar();temp = ReceiveChar();/接收数据接收数据SendChar(temp); SendChar(temp); /发送数据发送数据 void init(void)void init(void) SCON = 0 xSCON = 0 x5050; /; /方式方式1 1(N,8,1N,8,1

21、),接收允许),接收允许PCON = 0 x00; /PCON = 0 x00; /波特率不倍增波特率不倍增TMOD = 0 xTMOD = 0 x2020; /; /置置T1T1为为8 8位自动重装方式位自动重装方式TL1 = 0 xfd;TL1 = 0 xfd;TH1 = 0 xfd; /TH1 = 0 xfd; /波特率波特率96009600TR1 = 1; TR1 = 1; 76543210SCONSM0SM1SM2RENTB8RB8TIRI字节地址:98Huchar ReceiveChar() uchar ReceiveChar() uchar ch;uchar ch;while (

22、!RI); while (!RI); /等待接收完等待接收完ch = SBUF; ch = SBUF; RI = 0; RI = 0; return (ch);return (ch); void SendChar(uchar ch)void SendChar(uchar ch) SBUF = ch; SBUF = ch; /发送字符发送字符while (!TI); while (!TI); /等待发送完等待发送完TI = 0; TI = 0; /清标志清标志 v通信程序的扩充与完善通信程序的扩充与完善通讯协议:通讯协议:n 每帧:每帧:数据数据8 8位,起始位位,起始位1 1位,停止位位,停止

23、位1 1位,无检位,无检验,波特率验,波特率96009600。 n PC PC机作为主机,机作为主机,主机命令主机命令由由4 4个字符形成的字符个字符形成的字符串构成,首字符串构成,首字符$是同步头,次字符为命令关是同步头,次字符为命令关键字,其他键字,其他2 2个字符未定义。个字符未定义。n设命令设命令关键字为关键字为1 1时时,单片机要将缓冲区的数据,单片机要将缓冲区的数据以由以由前至后的顺序前至后的顺序发送到发送到PCPC机端;当命令机端;当命令关键字为关键字为2 2时时,单片机要将缓冲区的数据以由,单片机要将缓冲区的数据以由后至前的顺序后至前的顺序发送到发送到PCPC机端,其他关键字未

24、定义。机端,其他关键字未定义。 v单片机端程序:单片机端程序:void DataInit(void)void DataInit(void) / /设置缓冲区调试数据设置缓冲区调试数据uchar i;uchar i;for(i=0;i10;i+)for(i=0;i10;i+)OutBuffi=i+0 x30; OutBuffi=i+0 x30; void SPortInit(void)void SPortInit(void) TMOD |=0 x20; TMOD |=0 x20; SCON=0 x50; SCON=0 x50; TH1=0 xfd; TH1=0 xfd; TL1=0 xfd; T

25、L1=0 xfd; TR1=1; TR1=1; ES = 1; ES = 1; EA = 1; EA = 1; void void SendCharSendChar(uchar ch)(uchar ch) SBUF = ch; /SBUF = ch; /发送字符发送字符while (!TI); /while (!TI); /等待发送完等待发送完TI = 0; TI = 0; void SPortIsr () interrupt 4void SPortIsr () interrupt 4 uchar i,ch; uchar i,ch; ES=0; ES=0; ch = SBUF; ch = SB

26、UF; RI=0; RI=0; if(ch= =0 x24) /if(ch= =0 x24) /检测检测$ InBuff0=ch; InBuff0=ch; for(i=1;i4;i+) for(i=1;i4;i+) while (!RI); while (!RI); RI=0; RI=0; InBuffi = SBUF; InBuffi = SBUF; InFullFlag=1; InFullFlag=1; ES=1; ES=1; void main(void)void main(void) DataInit(); DataInit(); SPortInit(); SPortInit(); I

27、nFullFlag = 0; InFullFlag = 0; while(1) while(1) if(InFullFlag)if(InFullFlag) switch(InBuff1)switch(InBuff1) /依命令完成相应功能依命令完成相应功能 InFullFlag = 0;InFullFlag = 0; switch(InBuff1)switch(InBuff1) /依命令完成相应功能依命令完成相应功能 case 0 x31case 0 x31: : for(i=0;i10;i+) for(i=0;i10;i+) SendChar(OutBuffi); SendChar(OutB

28、uffi); break;break; case 0 x32:case 0 x32: for(i=0;i10;i+) for(i=0;i10;i+) SendChar(OutBuff9-i); SendChar(OutBuff9-i); break;break; default:default:break;break; 2022-5-646PCPC机端程序:机端程序:Private Sub Form_Load()Private Sub Form_Load()MSComm1.CommPort = 1 MSComm1.CommPort = 1 设置通信端口号为设置通信端口号为COM1COM1MSC

29、omm1.Settings = MSComm1.Settings = 9600,n,8,19600,n,8,1 设置串口参数设置串口参数MSComm1.InputMode = 0 MSComm1.InputMode = 0 接收文本型数据接收文本型数据MSComm1.PortOpen = True MSComm1.PortOpen = True 打开串行口打开串行口End SubEnd Sub2022-5-647Private Sub Cmdsend_Click()Private Sub Cmdsend_Click()If Textsend.Text = ThenIf Textsend.Text = Then pp = MsgBox( pp = MsgBox(发送数据不能为空!发送数据不能为空!

温馨提示

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

评论

0/150

提交评论