《第6章80C51单片机的串行口课件电子教案幻灯片.ppt》由会员分享,可在线阅读,更多相关《第6章80C51单片机的串行口课件电子教案幻灯片.ppt(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2023/4/271第第6 6章章 80C5180C51单片机的串行口单片机的串行口计算机计算机串行通信基础串行通信基础6.180C5180C51单片机的单片机的串行口串行口6.280C5180C51单片机的单片机的串行口应用串行口应用6.32023/4/2726.1 计算机串行通信基础计算机串行通信基础通信:并行通信与串行通信通信:并行通信与串行通信 并行通信并行通信特点特点:传送控制简单、速度快,但传输线较多,成本高。:传送控制简单、速度快,但传输线较多,成本高。2023/4/273 串行通信串行通信特点特点:传送控制复杂、速度慢,传输线少,成本低:传送控制复杂、速度慢,传输线少,成本低
2、2023/4/274 异步通信与同步通信异步通信与同步通信n收、发设备时钟独立,以字符收、发设备时钟独立,以字符(帧帧)为单位传输为单位传输 6.1.1 6.1.1 串行通信的基本概念串行通信的基本概念异步通信异步通信 2023/4/275 异步通信帧格式异步通信帧格式起始位(位);起始位(位);数据位(位);数据位(位);奇偶校验位(位,可无校验位);奇偶校验位(位,可无校验位);停止位(位)。停止位(位)。特点特点n易于实现易于实现n效率不高效率不高 同步通信同步通信(发、收时钟直接连接,效率高。板内元件间的(发、收时钟直接连接,效率高。板内元件间的SPI接口)接口)2023/4/276
3、串行通信的传输方向串行通信的传输方向单工单工 半双工半双工 全双工全双工 80C5180C51有有1 1个全双工个全双工串行口串行口 2023/4/277 信号的调制与解调信号的调制与解调DTEDTE:数据:数据终端终端设备设备DCEDCE:数据:数据通信通信设备设备 调制解调器调制解调器n调制调制n解调解调 2023/4/278 串行通信的错误校验串行通信的错误校验奇偶校验奇偶校验 发送字符时发送字符时,数据位,数据位尾随尾随1 1位奇偶校验位位奇偶校验位(1 1或或0 0)。)。奇校验时奇校验时,数据中,数据中“1 1”的个数与校验位的个数与校验位“1 1”的个数之和应为奇数;的个数之和应
4、为奇数;偶校验时偶校验时,数据中,数据中“1 1”的个数与校验位的个数与校验位“1 1”的个数之和应为偶的个数之和应为偶数。数。接收字符时接收字符时,对,对“1 1”的个数进行校验,若发现的个数进行校验,若发现不一致,则说明传输数据过程中出现了差错。不一致,则说明传输数据过程中出现了差错。2023/4/279代码和校验代码和校验 发送方发送方将所发将所发数据块求和数据块求和(或各字节异或或各字节异或),产),产生的生的校验和字节校验和字节附加到数据块的末尾。附加到数据块的末尾。接收方接收方在接收数据时要对在接收数据时要对数据块(数据块(除校验字节外除校验字节外)求和(或各字节异或),求和(或各
5、字节异或),将所得的结果与收到的将所得的结果与收到的“校验和校验和”进行比较,两者相符则无差错,否则进行比较,两者相符则无差错,否则就认为传送过程出现了差错。就认为传送过程出现了差错。2023/4/2710 传输速率与传输距离传输速率与传输距离传输速率传输速率波特率波特率:每秒钟传送信息的位数,单位:波特(:每秒钟传送信息的位数,单位:波特(Baud)基带传输基带传输(每个(每个码元码元带有带有“1 1”或或“0 0”这这1 bit1 bit信息信息)。常用波特率为:常用波特率为:24002400、48004800、96009600、14.4K14.4K、19.2K19.2K等等 传输距离与传
6、输速率的关系传输距离与传输速率的关系传输距离随波特率的增加而减小。传输距离随波特率的增加而减小。等时间间隔信号称为码元每个码元可以携带n位信息 2023/4/27116.1.2 6.1.2 串行通信接口标准串行通信接口标准RS-232CRS-232C定义的是定义的是DTEDTE与与DCEDCE间的接口标准。间的接口标准。机械特性机械特性DB-25DB-25(阳头)连接器(阳头)连接器 DB-9DB-9(阳头)连接器(阳头)连接器 阳头阳头通常用于通常用于计算机侧计算机侧,阴头阴头用于用于连接线侧连接线侧 2023/4/2712 功能特性功能特性插针序号插针序号信号名称信号名称功能功能信号方向信
7、号方向 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振铃指示振铃指示DTEDCE2023/4/2713 电气特性电气特性RS-232CRS-
8、232C采用负逻辑电平,规定(采用负逻辑电平,规定(-3-3-25V-25V)为逻辑)为逻辑“1 1”,(,(+3+3+25V+25V)为逻辑)为逻辑“0 0”。-3V-3V+3V+3V是未定义的过渡区。是未定义的过渡区。试比较:试比较:电平转换电路(如电平转换电路(如MAX232MAX232)。)。2023/4/2714 过程特性过程特性远远程通信,需要调制解调器程通信,需要调制解调器 2023/4/2715近近程通信,不需要调制解调器程通信,不需要调制解调器 无联络线方式无联络线方式 联络线短接(伪连接)方式联络线短接(伪连接)方式 2023/4/2716 RS-232CRS-232C电平
9、与电平与TTLTTL电平转换驱动电路电平转换驱动电路早期采用早期采用MC1488MC1488、MC1489MC1489 近期常用近期常用MAXM232MAXM232:片内带有自升压电路片内带有自升压电路 仅需仅需+5V+5V电源电源 内含内含2 2个发送器,个发送器,2 2个接收器个接收器 2023/4/2717 采用采用RS-232CRS-232C接口存在的问题接口存在的问题 传输距离短、速率低传输距离短、速率低 通常不超过通常不超过1515米,速率米,速率20Kbps20Kbps 有电平偏移有电平偏移 RS-232RS-232收发共地,地电流会使电平偏移出现逻辑错误。收发共地,地电流会使电
10、平偏移出现逻辑错误。抗干扰能力差抗干扰能力差 RS-232RS-232单端输入,易混入干扰。(单端输入,易混入干扰。(故用大摆幅故用大摆幅)新标准新标准RS-485RS-485改善了传输特性,应用广泛!改善了传输特性,应用广泛!2023/4/27186.2 80C51单片机的串行口单片机的串行口6.2.1 80C516.2.1 80C51串行口的结构串行口的结构 1 1个全双工串口:个全双工串口:通信通信或或接口扩展接口扩展 接收发送缓冲器接收发送缓冲器逻辑同名、物理分开;逻辑同名、物理分开;接收双缓冲。接收双缓冲。2023/4/27196.2.2 80C516.2.2 80C51串行口的控制
11、寄存器串行口的控制寄存器 串行口控制寄存器串行口控制寄存器SCONSCONSM0SM0和和SM1SM1:工作方式选择位:工作方式选择位76543210SCONSM0SM1SM2RENTB8RB8TIRI字节地址:字节地址:98HSM0SM1方方 式式说说 明明波特率波特率000移位寄存器移位寄存器fosc/1201110位位UART(8位数据)位数据)可变可变10211位位UART(9位数据)位数据)fosc/64或或fosc/3211311位位UART(9位数据)位数据)可变可变2023/4/2720SM2SM2:多机通信控制位:多机通信控制位SM2=1SM2=1时时,接收机接收机地址帧甄别
12、地址帧甄别使能使能 。若若RB8RB81 1,接收的信息接收的信息可进入可进入SBUFSBUF,并使,并使RIRI为为1 1,进而在中断服务中再进行地址号比较进而在中断服务中再进行地址号比较;若若RB8RB80 0,该帧不接收,丢弃掉,且保持,该帧不接收,丢弃掉,且保持RI=0RI=0。SM2=0SM2=0时,时,接收机接收机地址帧甄别地址帧甄别禁止禁止。不论收到的不论收到的RB8RB8为为0 0或或1 1,均可以使接收帧进入,均可以使接收帧进入SBUFSBUF,并使,并使RI=1RI=1。此时的此时的RB8RB8通常为校验位。通常为校验位。RENREN:串行接收使能位,软件置:串行接收使能位
13、,软件置1 1时,启动接收过程时,启动接收过程2023/4/2721TB8TB8:多机方式发送的第:多机方式发送的第9 9位位发送的发送的地址地址/数据帧数据帧标志。标志。也可作为奇偶校验位。也可作为奇偶校验位。RB8RB8:多机方式接收的第:多机方式接收的第9 9位位接收的接收的地址地址/数据帧数据帧标志。标志。也可作为奇偶校验位。也可作为奇偶校验位。TITI:发送中断标志位,要由:发送中断标志位,要由软件清软件清0 0RIRI:接收中断标志位,要由:接收中断标志位,要由软件清软件清0 02023/4/2722 电源控制寄存器电源控制寄存器PCON PCON SMODSMOD:波波特特率率倍
14、倍增增位位。在在串串行行口口方方式式1 1、方方式式2 2、方方式式3 3时时,波波特特率率与与SMODSMOD有有关关,当当SMOD=1SMOD=1时时,波波特特率提高一倍。率提高一倍。复位时,复位时,SMOD=0SMOD=0。76543210PCONSMOD字节地址:字节地址:97H2023/4/27236.2.3 80C516.2.3 80C51串行口的工作方式串行口的工作方式 方式方式0 0:同步移位寄存器:同步移位寄存器,用于,用于扩展并行口扩展并行口 RXDRXD:输入输入或或输出输出引脚引脚 TXDTXD:移位脉冲移位脉冲输出引脚输出引脚发送和接收都是发送和接收都是8 8位位波特
15、率固定为波特率固定为:fosc/12fosc/122023/4/2724数据输数据输出出:CRCR用于对用于对74LS16474LS164清清0 0 2023/4/2725数据输数据输入入:S/LS/L下降沿下降沿将并行数将并行数据装入据装入,高,高电电平平启启动动数据移入。数据移入。2023/4/2726 方式方式1 1:1010位帧,用于位帧,用于双双机通信机通信 起始位:起始位:1 1位位 数据位:数据位:8 8位位停止位:停止位:1 1位位2023/4/2727串行发送串行发送:(:(写写SBUFSBUF启动启动发送过程)发送过程)串行接收串行接收:(置置REN=1REN=1启动启动接
16、收过程接收过程)2023/4/2728 方式方式2 2和方式和方式3 3:1111位帧,用于位帧,用于多机多机通信通信 起始位:起始位:1 1位位 数据位:数据位:9 9位位停止位:停止位:1 1位位2023/4/2729串行串行发送发送:(写:(写SBUFSBUF启动发送过程)启动发送过程)串行串行接收接收:(置置REN=1REN=1启动接收过程启动接收过程)2023/4/27306.2.4 80C516.2.4 80C51波特率确定与初始化步骤波特率确定与初始化步骤 波特率的确定波特率的确定 波特率的计算波特率的计算固定波特率:固定波特率:方式方式0 0波特率波特率=fosc/12=fos
17、c/12 方式方式2 2波特率波特率=(2 2SMODSMOD/64/64)*foscfosc可变可变波特率波特率:(方式方式1 1、方式、方式3 3)波特率波特率=(2 2SMODSMOD/32/32)*(T1T1溢出率溢出率)T1T1溢出率溢出率 =foscfosc/12256 /12256(TH1TH1)2023/4/2731 波特率的选择波特率的选择 波特率要选择波特率要选择标称值标称值,由于,由于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。2023/4/2732 串行口初始化步骤串行口初始化步骤 确定确定T1T1的工作方式(的工作方式(TMODTMOD)计算计算T1T1的初值,的初值,装载装载TH1TH1、TL1TL1启动启动T1T1(
19、置位置位TR1TR1)确定串行口工作方式(确定串行口工作方式(SCONSCON)串口中断设置(串口中断设置(IEIE、IPIP)2023/4/27336.3 80C51单片机的串行口应用单片机的串行口应用6.3.1 6.3.1 利用单片机串口的并行利用单片机串口的并行I/OI/O扩展扩展 占用串口!占用串口!单片机端的电平转换单片机端的电平转换6.3.2 6.3.2 单片机与单片机与PCPC机间的通信机间的通信与与PCPC机的硬件连接机的硬件连接 直通连接直通连接交叉连接交叉连接PCPC机串行口检查机串行口检查 nPCPC机的串行口的机的串行口的收、发信号引脚收、发信号引脚短接短接 n运行运行
20、串口调试软件串口调试软件 连机编程测试连机编程测试void void main(voidmain(void)ucharuchar temp;temp;init();init();while(1)while(1)temp=temp=ReceiveCharReceiveChar();();/接收数据接收数据SendChar(tempSendChar(temp););/发送数据发送数据 void void init(voidinit(void)SCON=0 xSCON=0 x5050;/;/方式方式1 1(N,8,1N,8,1),接收允许),接收允许PCON=0 x00;/PCON=0 x00;/波
21、特率不倍增波特率不倍增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字节地址:字节地址:98Hucharuchar ReceiveCharReceiveChar()()ucharuchar chch;while(!RI);while(!RI);/等待接收完等待接收完chch=SBUF;=SBUF;RI=0;RI=0;return(
22、return(chch););void void SendChar(ucharSendChar(uchar chch)SBUF=SBUF=chch;/发送字符发送字符while(!TI);while(!TI);/等待发送完等待发送完TI=0;TI=0;/清标志清标志 通信程序的扩充与完善通信程序的扩充与完善通讯协议:通讯协议:n 每帧:每帧:数据数据8 8位,起始位位,起始位1 1位,停止位位,停止位1 1位,无检位,无检验,波特率验,波特率96009600。n PC PC机作为主机,机作为主机,主机命令主机命令由由4 4个字符形成的字符个字符形成的字符串构成,首字符串构成,首字符$是同步头,
23、次字符为命令关是同步头,次字符为命令关键字,其他键字,其他2 2个字符未定义。个字符未定义。n设命令设命令关键字为关键字为1 1时时,单片机要将缓冲区的数据,单片机要将缓冲区的数据以由以由前至后的顺序前至后的顺序发送到发送到PCPC机端;当命令机端;当命令关键字为关键字为2 2时时,单片机要将缓冲区的数据以由,单片机要将缓冲区的数据以由后至前的顺序后至前的顺序发送到发送到PCPC机端,其他关键字未定义。机端,其他关键字未定义。v单片机端程序:单片机端程序:void void DataInit(voidDataInit(void)/设置缓冲区调试数据设置缓冲区调试数据ucharuchar i;i
24、;for(ifor(i=0;i10;i+)=0;i10;i+)OutBuffiOutBuffi=i+0 x30;=i+0 x30;void void SPortInit(voidSPortInit(void)TMOD|=0 x20;TMOD|=0 x20;SCON=0 x50;SCON=0 x50;TH1=0 xfd;TH1=0 xfd;TL1=0 xfd;TL1=0 xfd;TR1=1;TR1=1;ES=1;ES=1;EA=1;EA=1;void void SendCharSendChar(uchar(uchar chch)SBUF=SBUF=chch;/;/发送字符发送字符while(!T
25、I);/while(!TI);/等待发送完等待发送完TI=0;TI=0;void void SPortIsrSPortIsr()interrupt 4()interrupt 4 ucharuchar i,chi,ch;ES=0;ES=0;chch=SBUF;=SBUF;RI=0;RI=0;if(chif(ch=0 x24)/=0 x24)/检测检测$InBuff0=InBuff0=chch;for(ifor(i=1;i4;i+)=1;i4;i+)while(!RI);while(!RI);RI=0;RI=0;InBuffiInBuffi=SBUF;=SBUF;InFullFlagInFullF
26、lag=1;=1;ES=1;ES=1;void void main(voidmain(void)DataInitDataInit();();SPortInitSPortInit();();InFullFlagInFullFlag=0;=0;while(1)while(1)if(InFullFlagif(InFullFlag)switch(InBuff1)switch(InBuff1)/依命令完成相应功能依命令完成相应功能 InFullFlagInFullFlag=0;=0;switch(InBuff1)switch(InBuff1)/依命令完成相应功能依命令完成相应功能 case 0 x31c
27、ase 0 x31:for(ifor(i=0;i10;i+)=0;i10;i+)SendChar(OutBuffiSendChar(OutBuffi););break;break;case 0 x32:case 0 x32:for(ifor(i=0;i10;i+)=0;i10;i+)SendChar(OutBuff9-i);SendChar(OutBuff9-i);break;break;default:default:breakbreak;2023/4/2746PCPC机端程序:机端程序:Private Sub Private Sub Form_LoadForm_Load()()MSComm
28、1.CommPort=1 MSComm1.CommPort=1 设置通信端口号为设置通信端口号为COM1COM1MSComm1.Settings=MSComm1.Settings=9600,n,8,19600,n,8,1 设置串口参数设置串口参数MSComm1.InputMode=0 MSComm1.InputMode=0 接收文本型数据接收文本型数据MSComm1.PortOpen=True MSComm1.PortOpen=True 打开串行口打开串行口End SubEnd Sub2023/4/2747Private Sub Private Sub Cmdsend_ClickCmdsend
29、_Click()()If If Textsend.TextTextsend.Text=Then=Then pp=pp=MsgBoxMsgBox(发送数据不能为空!发送数据不能为空!,16),16)Exit Sub Exit SubEnd IfEnd IfMSComm1.Output=MSComm1.Output=Trim(Textsend.TextTrim(Textsend.Text)For i=1 To 20000000For i=1 To 20000000Next iNext iEnd Sub End Sub Private Sub Timer1_Timer()Private Sub Ti
30、mer1_Timer()Dim Dim bufbuf$bufbuf=Trim(MSComm1.Input)=Trim(MSComm1.Input)将缓冲区数据读入将缓冲区数据读入bufbuf变量变量If If Len(bufLen(buf)0 Then )0 Then 判缓冲区是否有数据判缓冲区是否有数据TextReceive.TextTextReceive.Text=TextReceive.TextTextReceive.Text+Chr(13)+Chr(10)+Chr(13)+Chr(10)+bufbuf End IfEnd IfEnd SubEnd Sub6.3.3 6.3.3 单片机与
31、单片机间的通信单片机与单片机间的通信硬件连接硬件连接 通讯协议:通讯协议:n 每每帧数据帧数据为为8 8位,位,1 1位起始位,位起始位,1 1位停止位,无检验,位停止位,无检验,波特率波特率96009600。n 申请接收数据的单片机,按下本机的请求键(按申请接收数据的单片机,按下本机的请求键(按键接在键接在P3.5P3.5引脚),按下键后有引脚),按下键后有3 3种按键事件可能发种按键事件可能发生:生:短击、长击和双击短击、长击和双击,分别对应,分别对应3 3种请求接收数据种请求接收数据的命令,即:的命令,即:“$1”$1”、“$2”$2”和和“$3”$3”。3 3种命令会种命令会根据发生的按键事件发送到对方;发送数据的单片根据发生的按键事件发送到对方;发送数据的单片机依据接收到的命令完成对应的数据发送任务。数机依据接收到的命令完成对应的数据发送任务。数据传送采用据传送采用“!”为同步字符。为同步字符。程序见教材程序见教材