第8章串行口通信技术(20131115)_第1页
第8章串行口通信技术(20131115)_第2页
第8章串行口通信技术(20131115)_第3页
第8章串行口通信技术(20131115)_第4页
第8章串行口通信技术(20131115)_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、串行通信基本概念串行通信基本概念MCS-51MCS-51的串行接口的串行接口单片机与单片机之间的通信单片机与单片机之间的通信单片机与单片机与PCPC机之间的通信机之间的通信第第章章串串行行口口通通信信技技术术 本章内容本章内容Single Chip Microcomputer8.1 串行通信基本概念串行通信基本概念并行通信n特点:特点: 速度快、速度快、 距离短、距离短、 成本高成本高8.1 什么是串行通信?什么是串行通信?串行通信n特点:特点: 速度慢、速度慢、 距离远、距离远、 成本低成本低1001 101同步串行通信:同步串行通信:异步串行通信:异步串行通信:syn 数据块数据块 syn

2、 数据块数据块数据是一帧一帧传送的,每一帧的数据由四数据是一帧一帧传送的,每一帧的数据由四个部分组成:个部分组成:起始位、数据位、校验位和停起始位、数据位、校验位和停止位。止位。8.1.2 串行通信串行通信的通信方式的通信方式串串行行通通信信数据按块传送,每个数据块包括若干个字符,数据按块传送,每个数据块包括若干个字符,且字符间没有间隙,也不用起始位和停止位,且字符间没有间隙,也不用起始位和停止位,仅在数据块开始时用同步字符仅在数据块开始时用同步字符syn来指示。来指示。跳转异步异步串行通信的数据格式串行通信的数据格式1)平时为)平时为1(空闲位(空闲位)2)起起始位始位03)数据位:低位在前

3、,)数据位:低位在前, 高位在后。高位在后。4)奇偶校验位)奇偶校验位5)停止位()停止位(1、1.5、2)6)起)起始始位位08.1.2 串行通信串行通信的通信方式的通信方式1 1 1 1 1 1 11 1 1 1101011001010111010001010101010异步异步串行通信方式串行通信方式返回8.1.2 串行通信串行通信的通信方式的通信方式8.1.3 串行通信的数据传送方向串行通信的数据传送方向v单工形式单工形式v半双工形式半双工形式v全双工形式全双工形式8.1.4串行通信的传送速率串行通信的传送速率波特率:指每秒种传送二进制代码的位数。例如:数据传送速率为120字符/秒,而

4、每个字符帧规定为10位,则传输速率为120101200位/秒,即波特率为1200。 它是表征数据传送的速率,波特率越高,数据传输速度越快。通常,异步通信的波特率在5019200b/s之间。单位为波特,即单位为波特,即: 1波特波特=1位位/秒(秒(bps)8.2 MCS-51的串行接口的串行接口 VCCVSSXTAL2XTAL1RSTP0. 0P0.1P0.2 P0.3 P0.4 P0.5 P0.6 P0.7P1. 0P1.1P1.2 P1.3 P1.4 P1.5 P1.6 P1.7P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2. 0ALEP3. 0P3.1P3.2

5、 P3.3 P3.4 P3.5 P3.6 P3.7EAPSENRXD/TXD/INT0/ INT1/ T0/ T1/WR/ RD/1234567891011121314151617181920403938373635343332313029282726252424222180318051 875189C5189S518.2.1 串行口基本结构串行口基本结构串行口基本结构串行口基本结构8.2.2 串行口寄存器1. 控制寄存器控制寄存器SCONSM0SM1SM2RENTB8RB8TIRI工作方式选择多机通信控制位允许串行接收位接收数据的第9位发送数据的第9位接收中断标志发送中断标志8.2.2 串行

6、口寄存器2.电源及波特率控制寄存器电源及波特率控制寄存器PCON位位 序序 D7 D6 D5 D4 D3 D2 D1 D0位符号位符号 SMOD用于波特率计算用于波特率计算,8.2.3 串行口四种工作方式串行口四种工作方式工作方式功能说明波特率方式08位同步移位寄存器常用于扩展I/O口fosc/12方式110位异步收发1位起始位、 8位数据位、1位停止位可变(取决于T1溢出率)方式211位异步收发1位起始位、 8位数据、1位可编程位(第9位数据)和1位停止位fosc/64或fosc/32方式311位异步收发同方式2可变(取决于T1溢出率)返回波特率的计算波特率的计算 在方式0中,波特率为时钟频

7、率的1/12,即fosc/12,固定不变返回波特率的计算波特率的计算l在方式2中,波特率=oscSMODf642返回当SMOD=0时,波特率为fosc/64;当SMOD=1时,波特率为fosc/32。溢出率波特率1322smodT返回 波特率(b/s)晶振(MHz)T1方式2初值SMOD=0误差% SMOD=1误差%1200120 xE60.160 xCC0.162400120 xF30.160 xE60.164800120 xF9-6.990 xF30.169600120 xFD8.510 xF9-6.9919200120 xFD8.51120011.05920 xE800 xD002400

8、11.05920 xF400 xE80480011.05920 xFA00 xF40960011.05920 xFD00 xFA01920011.059200 xFD0波特率=)x256(12f322oscsmod返回方式方式0 01283456 10 11 12 13数 据 输 出移 位 脉 冲RXDTXD805174LS164D7 D6 D5 D4 D3 D2 D1 D0方式0用于扩展I/O口输出926543 14 13 12 11数 据 输 入移 位 脉 冲RXDTXD805174LS165D7D6D5D4D3D2D1D0方式方式0用于扩展用于扩展I/O口输入口输入方式方式0方式1D0D

9、1D2D3D4D5D6D71D0D11D700第n1字符帧第n字符帧8位数据起始位停止位10位的帧格式位的帧格式 串行口为波特率可调的10位通用异步接口UART。每发送或接收的一帧信息中,包括1位起始位0,8位数据位和1位停止位1。波特率=)x256(12f322oscsmod方式方式2 2D0D1D2D3D4D5D6D70/1D0D110/1100第 n 1字 符 帧第 n字 符 帧8位 数 据起始位停止位奇 偶校 验11位的帧格式位的帧格式l在方式2中,波特率=oscSMODf642方式方式3 3波特率=)x256(12f322oscsmod8.3 单片机之间的通信RXDTXD8051应用

10、系统(甲机)RXDTXD8051应用系统(乙机)双机异步通信接口电路通信协议:串行口工作于方式通信协议:串行口工作于方式1 1,可以收发数据,波特率为,可以收发数据,波特率为4800b/s4800b/s,晶振频率,晶振频率12MHz12MHz。例例1 1:利用串行口进行双机通信,实现用甲机:利用串行口进行双机通信,实现用甲机P3.2P3.2口和口和P3.3P3.3口连口连接的按键分别控制乙机接的按键分别控制乙机P1P1口连接的口连接的8 8个发光二级管的亮灭。当按个发光二级管的亮灭。当按下甲机下甲机P3.2P3.2口的按键时,乙机口的按键时,乙机P1P1口灯亮,当按下甲机口灯亮,当按下甲机P3

11、.3P3.3口的口的按键时,乙机按键时,乙机P1P1口灯灭。口灯灭。双机通信原理图串行口初始化过程如下串行口初始化过程如下: : v确定确定T1T1的工作方式的工作方式-编程编程TMODTMOD寄存器。寄存器。v计算计算T1T1的初值的初值-装载装载TH1TH1、TL1TL1。v确定确定SMODSMOD位,编程位,编程PCONPCONv确定串口的工作方式确定串口的工作方式-编程编程SCONSCON寄存器。寄存器。v启动启动T1-TR1T1-TR1置位。置位。M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D7TMODSM0SM1SM2RENTB8RB8TIRI 晶振频率

12、晶振频率12MHz,串行口工作于方式串行口工作于方式1,波特率为,波特率为4800b/s。编程编程1)甲机发送程序甲机发送程序#include sbit P3_2=P32;sbit P3_3=P33;void main() TMOD=0 x20; /设置定时器设置定时器1的工作方式为方式的工作方式为方式2 TH1=0 xf3; /设置串行口波特率为设置串行口波特率为4800b/s TL1=0 xf3; PCON=0 x80; /SMOD=1 SCON=0 x50; /设置串行口的工作方式为方式设置串行口的工作方式为方式1,允许接收,允许接收 TR1=1; 1.查询方式查询方式 while(1)

13、 P3_2=1; P3_3=1; if(P3_2=0) /判断判断P3.2引脚键是否按下引脚键是否按下 SBUF=0 x00; /将按键按下命令将按键按下命令00H发送给乙机发送给乙机 while(!TI); TI=0; if(P3_3=0) /判断判断P3.3引脚键是否按下引脚键是否按下 SBUF=0 xff; /将按键按下命令将按键按下命令ffH发送给乙机发送给乙机 while(!TI); TI=0; 2)乙机接收程序)乙机接收程序#include void main() TMOD=0 x20; /设置定时器设置定时器1的工作方式为方式的工作方式为方式2 TH1=0 xf3; /设置串行口

14、波特率为设置串行口波特率为4800b/s TL1=0 xf3; SCON=0 x50; /设置串行口的工作方式为方式设置串行口的工作方式为方式1,允许接收,允许接收 PCON=0 x80; /SMOD=1 TR1=1; 1.查询方式查询方式 while(1) while(RI=0); /查询等待接收查询等待接收 RI=0; if(SBUF=0 x00) P1=0 x00; /控制控制8个发光二极管亮个发光二极管亮 if(SBUF=0 xff) P1=0 xff; /控制控制8个发光二极管灭个发光二极管灭 P1=SBUF; #include void main() TMOD=0 x20; /设置

15、定时器设置定时器1的工作方式为方式的工作方式为方式2 TH1=0 xf3; /设置串行口波特率为设置串行口波特率为4800b/s TL1=0 xf3; SCON=0 x50; /设置串行口的工作方式为方式设置串行口的工作方式为方式1,允许接收,允许接收 PCON=0 x80; /SMOD=1 TR1=1; EA=1; ES=1; while(1);乙机接收程序乙机接收程序2.中断方式中断方式 void serial() interrupt 4 EA=0; RI=0; P1=SBUF; /控制控制8个发光二极管亮个发光二极管亮 EA=1;通信协议:串行口工作于方式通信协议:串行口工作于方式1 1

16、,可以收发数据,波特率为,可以收发数据,波特率为2400b/s2400b/s,晶振频率,晶振频率12MHz12MHz。例例2 2:利用串行口进行双机通信,实现用甲机:利用串行口进行双机通信,实现用甲机P2P2口的开关控制乙口的开关控制乙机机P0P0口连接的口连接的8 8个发光二级管的亮灭。用已机个发光二级管的亮灭。用已机P2P2口的开关控制甲口的开关控制甲机机P0P0口连接的口连接的8 8个发光二级管的亮灭。个发光二级管的亮灭。双机通信原理图1. 甲机通信程序(乙机程序同甲机)甲机通信程序(乙机程序同甲机)#include void main() TMOD=0 x20; /设置定时器设置定时器

17、1的工作方式为方式的工作方式为方式2 TH1=0 xf3; /设置串行口波特率为设置串行口波特率为2400b/s TL1=0 xf3; PCON=0 x00; /SMOD=0 SCON=0 x50; /设置串行口的工作方式为方式设置串行口的工作方式为方式1,允许接收,允许接收 TR1=1; EA=1; ES=1; 波特率(b/s)0晶振(MHz)T1方式2初值SMOD=0误差%SMOD=1误差%1200120 xE60.160 xCC0.162400120 xF30.160 xE60.164800120 xF9-6.990 xF30.169600120 xFD8.510 xF9-6.99192

18、00120 xFD8.51 while(1) SBUF=P2; /将将P2口开关状态发送给对方单片机口开关状态发送给对方单片机 while(!TI); TI=0; void serial() interrupt 4 EA=0; if(RI=1) RI=0; P0=SBUF; /从从对方机接收过来的对方机接收过来的P2状态值送给本机状态值送给本机P0口口 EA=1;8.4 单片机与单片机与PCPC机之间的串行通信机之间的串行通信 单片机与PC机进行串行通信是通过RS232C接口标准实现的。 RS232C是一种异步串行通信标准。PC机提供给用户的是9针信号引脚。8.4.1 RS-232C总线标准总

19、线标准1. 接插件连接接插件连接25针、针、9针针2脚:脚:TXD(发送数据)发送数据) 3脚:脚: RXD(接收数据)接收数据)2. RS-232C电平逻辑值电平逻辑值“1”:-5V-15V;“0”:+5V+15V;负逻辑:负逻辑:3. 常用传送速率常用传送速率1200、2400、4800、9600、19200bps 要实现单片机与PC机的数据通信,必须进行电平转换。解决方法:采用电平转换集成芯片MAX232实现RS-232C电平与TTL平之间的相互转换。8.4.2 51单片机与单片机与PC机的串行通信接口电路机的串行通信接口电路MAX232芯片内部结构及外围电路连接图MAX232芯片包括两

20、路接收器和驱动器的集成芯片,它的内部有一个电源电压变换器,可以把输入的+5V电源电压变换成RS-232输出电平所需的+10V电压。8.4.2 51单片机与单片机与PC机的串行通信接口电路机的串行通信接口电路51单片机与单片机与PC机的串行通信接口电路机的串行通信接口电路8.4.3 实例实例例例3 3:利用串行口进行单片机与:利用串行口进行单片机与PCPC机间的通信,在机间的通信,在PCPC机(上机(上位机)用串口调试助手发送位机)用串口调试助手发送01H01H命令给单片机;单片机接收命令给单片机;单片机接收到到PCPC发来的命令后,使发来的命令后,使P1P1口的灯全亮,再回发口的灯全亮,再回发

21、01H01H命令给命令给PCPC机作为应答信号。机作为应答信号。 设置主、从机的波特率为设置主、从机的波特率为2400b/s2400b/s;light_P1.hex单片机与单片机与PC机间通信硬件连接图机间通信硬件连接图#include void main() TMOD=0 x20; /设置定时器设置定时器1的工作方式为方式的工作方式为方式2 TH1=0 xf3; /设置串行口波特率为设置串行口波特率为2400b/s TL1=0 xf3; PCON=0 x00; /SMOD=0 SCON=0 x50; /设置串行口的工作方式为方式设置串行口的工作方式为方式1,允许接收,允许接收 TR1=1;

22、while(1) while(RI=0); RI=0; if(SBUF=0 x01) P1=0 x00; SBUF=0 x01; while(!TI); /查询发送是否完毕查询发送是否完毕 TI=0; /发送成功,发送成功,TI由软件清零由软件清零 单片机通信程序(查询方式)单片机通信程序(查询方式) #include void main() TMOD=0 x20; /设置定时器设置定时器1的工作方式为方式的工作方式为方式2 TH1=0 xf3; /设置串行口波特率为设置串行口波特率为2400b/s TL1=0 xf3; SCON=0 x50; /设置串行口的工作方式为方式设置串行口的工作方式

23、为方式1,允许接收,允许接收 PCON=0 x00; /SMOD=0 TR1=1; EA=1; ES=1; while(1) ; 单片机通信程序(中断方式)单片机通信程序(中断方式) void serial() interrupt 4 EA=0; RI=0; if(SBUF=0 x01) P1=0 x00; SBUF=0 x01; while(!TI); /查询发送是否完毕查询发送是否完毕 TI=0; /发送成功,发送成功,TI由软件清零由软件清零 EA=1; 8.4.3 实例实例例例4 4 1.从上位机(从上位机(PC机机)输入输入“0-9”中任意命令,发送给单片机;单片机中任意命令,发送给

24、单片机;单片机接收到接收到PC发来的命令后,显示在数码管上。发来的命令后,显示在数码管上。2.从下位机输入键盘命令从下位机输入键盘命令,发送给发送给PC机;机;PC机收到命令后显示。机收到命令后显示。3.设置主、从机的波特率为设置主、从机的波特率为4800b/s;桢格式为;桢格式为10位,位,1起始位,起始位,8位数据位,位数据位,1位停止位,无校验位位停止位,无校验位。keynix.hex#include unsigned char key;unsigned char seg=0 x00,0 x01,0 x02,0 x03,0 x04,0 x05,0 x06,0 x07,0 x08,0 x0

25、9void delayms(unsigned int t)unsigned int i,j;for(i=0;it;i+)for(j=0;j120;j+);void display(unsigned char i)P1=segi+0 x00+0 x80;单片机通信程序(中断方式)单片机通信程序(中断方式) unsigned char scan_key() /键盘扫描键盘扫描 unsigned char hang,lie; P2=0 x0f; if(P2!=0 x0f) delayms(10); if(P2!=0 x0f) switch(P2&0 x0f) case 0 x0e:hang=

26、0;break;case 0 x0d:hang=1;break;case 0 x0b:hang=2;break;case 0 x07:hang=3;break; P2=0 xf0; switch(P2&0 xf0) case 0 xe0:lie=0;break; case 0 xd0:lie=1;break; case 0 xb0:lie=2;break; case 0 x70:lie=3;break; P2=0 x0f; while(P2!=0 x0f); key=hang*4+lie; return (key);void main() TMOD=0 x20; /设置定时器设置定时器

27、1的工作方式为方式的工作方式为方式2 TH1=0 xf3; /设置串行口波特率为设置串行口波特率为4800b/s TL1=0 xf3; PCON=0 x80; /SMOD=1 SCON=0 x50; /设置串行口的工作方式为方式设置串行口的工作方式为方式1,允许接收,允许接收 TR1=1; EA=1; ES=1; while(1) scan_key(); SBUF=key; while(!TI); /查询发送是否完毕查询发送是否完毕 TI=0; /发送成功,发送成功,TI由软件清零由软件清零 单片机通信程序(中断方式)单片机通信程序(中断方式) void ser() interrupt 4 E

28、A=0; unsigned char temp; if(RI=1) RI=0; temp=SBUF; display(temp); EA=1;单片机通信程序(中断方式)单片机通信程序(中断方式) 8.4.3 实例实例课堂练习:课堂练习:1.PC机键盘输入机键盘输入11H命令,发送给单片机;单片机接收到命令,发送给单片机;单片机接收到PC发发来的命令后,使来的命令后,使P1口的灯亮口的灯亮1s,再发送,再发送11H命令作为应答信号。命令作为应答信号。2.PC机键盘输入机键盘输入22H命令,发送给单片机;单片机接收到命令,发送给单片机;单片机接收到PC发来的命令后;发来的命令后;使使P1口的灯灭口的灯灭1s,并回送,并回送22H命令作为应答信号命令作为应答信号。3.设置主、从机的波特率为设置主、从机的波特率为4800b/s;桢格式为;桢格式为10位,位,1起始位,起始位,8位数据位,位数据位,1位停止位,无校验位位停止位,无校验位ser_flashled_fing.hex#include void delayms(unsigned int t) unsigned int i,j; for(i=0;it;i+) for(j=0;j120;j+);void main() TMOD=0 x20; /设置定时器设置定时器1

温馨提示

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

评论

0/150

提交评论