《单片机原理及应用-PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用-PPT讲稿.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机原理及应用-第1页,共69页,编辑于2022年,星期五第第7章章 MCS-51单片机串行口单片机串行口 目目 录录7.1 串行通信基本知识串行通信基本知识7.2 串行口结构及控制串行口结构及控制7.3 串行口工作方式串行口工作方式7.4 串行口应用举例串行口应用举例7.5 单片机与单片机与PC机通信的接口电路机通信的接口电路第2页,共69页,编辑于2022年,星期五本章要点本章要点 本章主要讲述本章主要讲述MCS-51单片机串行口的结构、工作单片机串行口的结构、工作原理以及应用原理以及应用。主要内容包括串行通信基本知识、主要内容包括串行通信基本知识、MCS-51单片机串行口单片机串行口结
2、构、串行口工作方式以及单片机与结构、串行口工作方式以及单片机与PC机通信的接口电路。机通信的接口电路。第3页,共69页,编辑于2022年,星期五7.1 串行通信基本知识串行通信基本知识主要内容主要内容7.1.1 数据通信数据通信7.1.2 异步通信和同步通信异步通信和同步通信7.1.3 波特率波特率7.1.4 通信方向通信方向7.1.5 串行通信接口种类串行通信接口种类第4页,共69页,编辑于2022年,星期五7.1.1 数据通信数据通信 计算机与外界的信息交换称为通信计算机与外界的信息交换称为通信。基本的通信方法有。基本的通信方法有并行通信和串行通信两种。并行通信和串行通信两种。1并行通信并
3、行通信单位信息(通常指一个字节)的各位数据单位信息(通常指一个字节)的各位数据同时传送同时传送的通信的通信方法称为并行通信。方法称为并行通信。2串行通信串行通信单位信息的各位数据被分时单位信息的各位数据被分时一位一位依次顺序传送一位一位依次顺序传送的通的通信方式称为串行通信。信方式称为串行通信。第5页,共69页,编辑于2022年,星期五7.1.1 数据通信数据通信图图7-1 并行通信示意图并行通信示意图从图中可以看出从图中可以看出:并行通信连线多,速度快,适合并行通信连线多,速度快,适合近距离近距离通信;通信;串行通信连线少,速度慢,适合串行通信连线少,速度慢,适合远距离远距离通信。通信。图图
4、7-1 并行通信示意图并行通信示意图图图7-2 串行通信示意图串行通信示意图第6页,共69页,编辑于2022年,星期五1异步通信异步通信异步通信中,传送的数据可以是一个异步通信中,传送的数据可以是一个字符字符代码或一个代码或一个字节字节数数据,数据以据,数据以帧帧的形式一帧一帧传送。的形式一帧一帧传送。7.1.2 异步通信和同步通信异步通信和同步通信图图7-3 异步通信的一帧数据格式异步通信的一帧数据格式第7页,共69页,编辑于2022年,星期五2同步通信同步通信在同步通信中,每一数据块发送开始时,先发送在同步通信中,每一数据块发送开始时,先发送一个一个或两个同步字符或两个同步字符,使发送与接
5、收取得同步,然后再顺序发送数据。,使发送与接收取得同步,然后再顺序发送数据。数据块的各个字符间数据块的各个字符间取消起始位和停止位取消起始位和停止位,所以通信速度得以,所以通信速度得以提高提高。7.1.2 异步通信和同步通信异步通信和同步通信图图7-4 同步通信数据帧格式同步通信数据帧格式第8页,共69页,编辑于2022年,星期五7.1.3 波特率波特率在串行通信中,对数据传送速度有一定要求。在串行通信中,对数据传送速度有一定要求。波特率波特率表示每秒传送的位数表示每秒传送的位数,单位为,单位为b/s(记作波特)。(记作波特)。例如:数据传送速率为每秒钟例如:数据传送速率为每秒钟10个字符,若
6、每个字符的个字符,若每个字符的一帧为一帧为11位,则传送波持率为:位,则传送波持率为:11b/字符字符10字符字符/s110b/s异步通信的传送速率一般在异步通信的传送速率一般在5019 200b/s之间之间。第9页,共69页,编辑于2022年,星期五7.1.4 通信方向通信方向单工方式:单工方式:一对传输线只允许一对传输线只允许单方向单方向传送数据;传送数据;半双工方式:半双工方式:一对传输线允许向两个方向中的任一方一对传输线允许向两个方向中的任一方向传送数据,但向传送数据,但不能同时不能同时进行;进行;全双工方式:全双工方式:用两对传输线连接在发送器和接收器上,用两对传输线连接在发送器和接
7、收器上,发送和接收发送和接收能同时能同时进行。进行。第10页,共69页,编辑于2022年,星期五7.1.4 通信方向通信方向图图7-5 串行通信传输方式串行通信传输方式第11页,共69页,编辑于2022年,星期五7.1.5 串行通信接口种类串行通信接口种类根据串行通信格式及约定(如同步方式、通信速率、根据串行通信格式及约定(如同步方式、通信速率、数据块格式等)不同,形成了许多串行通信接口标准,如数据块格式等)不同,形成了许多串行通信接口标准,如常见的:常见的:UART(串行异步通信接口)、(串行异步通信接口)、USB(通用串行总线接口)、(通用串行总线接口)、I2C(集成电路间的串行总线)、(
8、集成电路间的串行总线)、SPI(串行外设总线)、(串行外设总线)、485总线、总线、CAN总线接口等。总线接口等。第12页,共69页,编辑于2022年,星期五7.2 串行口串行口结构及控制结构及控制主要内容主要内容7.2.1 MCS-51串行口结构串行口结构7.2.2 与串行口有关的特殊功能寄存与串行口有关的特殊功能寄存器器7.2.3 波特率设计波特率设计第13页,共69页,编辑于2022年,星期五7.2.1 MCS-51串行口结构串行口结构图图7-6 串行口方式串行口方式1、3内部结构示意简图内部结构示意简图第14页,共69页,编辑于2022年,星期五7.2.2 与串行口有关的特殊功能寄存器
9、与串行口有关的特殊功能寄存器1控制状态寄存器控制状态寄存器SCON用于定义串行通信口的工作方式和反映串行口状态,其字节用于定义串行通信口的工作方式和反映串行口状态,其字节地址为地址为98H,复位值为,复位值为0000 0000B,可位寻址可位寻址格式为:格式为:D7D6D5D4D3D2D1D0SM0 SM1 SM2 REN TB8RB8TIRI第15页,共69页,编辑于2022年,星期五lSM0和和SM1(SCON.7、SCON.6):串行口工作方式选择):串行口工作方式选择位。位。SM0 SM1 工作方式功能说明波特率00方式0同步移位寄存器fosc/1201方式18位数据UART可变(T1
10、溢出率/32或/16)10方式29位数据UARTfosc/64或 fosc/3211方式39位数据UART可变(T1溢出率/32或/16)7.2.2 与串行口有关的特殊功能寄存器与串行口有关的特殊功能寄存器SM2(SCON.5):多机通信控制位,在方):多机通信控制位,在方式式2或或3中使用。中使用。REN(SCON.4):允许接收控制位,由软):允许接收控制位,由软件置件置1或清或清0。第16页,共69页,编辑于2022年,星期五lTB8(SCON.3):发送数据的第):发送数据的第9位。位。lRB8(SCON.2):接收数据的第):接收数据的第9位。位。lTI(SCON.1):发送中断标志
11、。):发送中断标志。lRI(SCON.0):接收中断标志。):接收中断标志。7.2.2 与串行口有关的特殊功能寄存器与串行口有关的特殊功能寄存器关于关于TI和和RI:串行发送中断标志串行发送中断标志TI和接收和接收中断中断RI是同一个中断源,是同一个中断源,CPU事先不知道是发事先不知道是发送中断标志送中断标志TI还是接收中断标志还是接收中断标志RI产生的中断请产生的中断请求,所以,在全双工通信时,必须由求,所以,在全双工通信时,必须由软件来判别软件来判别。第17页,共69页,编辑于2022年,星期五2电源控制寄存器电源控制寄存器PCON电源控制寄存器电源控制寄存器PCON(地址为地址为87H
12、)中中只有只有SMOD位与串位与串行口工作有关行口工作有关。D7D6D5D4D3D2D1D0SMOD-GF1GF0PDIDL7.2.2 与串行口有关的特殊功能寄存器与串行口有关的特殊功能寄存器SMOD(PCON.7):波特率倍增位。串行):波特率倍增位。串行口工作于方式口工作于方式1、方式、方式2和方式和方式3时,当时,当SMOD1时,串行口波特率加倍。复位值为时,串行口波特率加倍。复位值为0000 0000B。PCON寄存器寄存器不能进行位寻址不能进行位寻址。第18页,共69页,编辑于2022年,星期五7.2.3 波特率设计波特率设计方式方式0和方式和方式2的波特率是的波特率是固定的固定的,
13、方式,方式1和方式和方式3的波特的波特率是由定时器率是由定时器T1的溢出率的溢出率来决定的。在增强型单片机中,也来决定的。在增强型单片机中,也可以使用可以使用T2作波特率发生器作波特率发生器。1方式方式0的波特率的波特率固定为振荡频率的固定为振荡频率的1/12。并不受。并不受PCON寄存器中寄存器中SMOD位的影响。位的影响。方式方式0的波特率的波特率=fosc/12第19页,共69页,编辑于2022年,星期五7.2.3 波特率设计波特率设计2方式方式2的波特率的波特率接收与发送的移位时钟由振荡频率接收与发送的移位时钟由振荡频率fosc的第二节拍的第二节拍P2时时钟(钟(fosc/2)给出,所
14、以,方式)给出,所以,方式2波特率取决于波特率取决于PCON中中SMOD位的值:当位的值:当SMOD=0时,波特率为时,波特率为fosc的的1/64;若;若SMOD=1,则波特率为,则波特率为fosc的的1/32。即。即方式方式2的波特率的波特率=2SMODfosc/64第20页,共69页,编辑于2022年,星期五7.2.3 波特率设计波特率设计3方式方式1和方式和方式3的波特率的波特率(1)T1作波特率发生器作波特率发生器在最典型应用中,定时器在最典型应用中,定时器T1选用定时器模式选用定时器模式2,此时,此时n=8,设定时器的初值为,设定时器的初值为X:于是,于是,X=256-方式方式1、
15、3的波特率的波特率=(T1溢出速率)溢出速率)即波特率即波特率=/(2n-初值)初值)第21页,共69页,编辑于2022年,星期五(2)T2作波特率发生器作波特率发生器在增强型单片机中,还可以使用在增强型单片机中,还可以使用T2作为波特率发生器。作为波特率发生器。当寄存器当寄存器T2CON的位的位TCLK=1和(或)和(或)RCLK=1时,允许串行时,允许串行口从口从T2获得发送和(或)接收的波特率。获得发送和(或)接收的波特率。串行口方式串行口方式1、3的波特率的波特率=T2溢出率溢出率/16定时器定时器2作波特率发生器时,计数在每个作波特率发生器时,计数在每个状态周期状态周期递增。递增。这
16、样:这样:方式方式1、3的波特率的波特率=7.2.3 波特率设计波特率设计第22页,共69页,编辑于2022年,星期五主要内容主要内容7.3.1 串行口方式串行口方式07.3.2 串行口方式串行口方式17.3.3 串行口方式串行口方式2和方式和方式37.3 串行口工作方式串行口工作方式第23页,共69页,编辑于2022年,星期五7.3.1 串行口方式串行口方式0方式方式0为为同步移位寄存器输入同步移位寄存器输入/输出方式,输出方式,常用于扩展常用于扩展I/O口口。RXD为数据输入或输出为数据输入或输出,TXD为移位时钟为移位时钟,作为外接部件的同步信号。,作为外接部件的同步信号。方式方式0不适
17、用于两个不适用于两个89C52之间之间的数据通信,的数据通信,可以通过外接移位寄存器来实现单片机的可以通过外接移位寄存器来实现单片机的接口扩展接口扩展。在这种方式下,收在这种方式下,收/发的数据为发的数据为8位位,低位,低位在前,无起始位、奇偶校验位及停止位,在前,无起始位、奇偶校验位及停止位,波特波特率是固定的率是固定的。第24页,共69页,编辑于2022年,星期五7.3.1 串行口方式串行口方式0发送电路发送电路接收电路接收电路第25页,共69页,编辑于2022年,星期五例例1:用串行口方式用串行口方式0扩展扩展8位并行位并行I/O输出口。输出口。74HC164实现:串行实现:串行并行的数
18、据转换并行的数据转换第26页,共69页,编辑于2022年,星期五例例2:用串行口方式用串行口方式0扩展扩展8位并行位并行I/O输入口。输入口。74HC165实现:并行实现:并行串行的数据转换串行的数据转换第27页,共69页,编辑于2022年,星期五解:解:采用中断方式发送数据,显示延时调用延时子程采用中断方式发送数据,显示延时调用延时子程序序DELAY。例例1:用:用89C51串口外接串口外接74HC164扩展扩展8位并行输位并行输出口,每位接一个发光二极管(阴接地),要求出口,每位接一个发光二极管(阴接地),要求从左到右延迟轮流显示,并不断循环。从左到右延迟轮流显示,并不断循环。第28页,共
19、69页,编辑于2022年,星期五ORG0000HLJMPMAINORG0023HAJMPSBRORG0030HMAIN:MOVSCON,#00HSETB EASETB ESSETBP1.0 MOVA,#80HMOVSBUF,ASJMP$SBR:CLRTIACALL DELAYRR AMOVSBUF,ARETIDELAY:;主程序入口;主程序入口;串口中断服务程序入口;串口中断服务程序入口;串口方式;串口方式0初始化初始化;CPU开中开中;串口开中;串口开中;74HC164的的CLR=1,保持有移位输出,保持有移位输出;输出;输出80H,最左一位先亮,最左一位先亮;踏步等中断;踏步等中断;清发送
20、标志;清发送标志;调用延时子程序,亮一段时间;调用延时子程序,亮一段时间;点亮下一位;点亮下一位;中断返回;中断返回;延时子程序(根据点亮时间编制);延时子程序(根据点亮时间编制)第29页,共69页,编辑于2022年,星期五例例2:用:用89C51串口外接串口外接74HC165扩展扩展8位并行输入口,输入数据由位并行输入口,输入数据由8个个开关提供,另有一个开关开关提供,另有一个开关K提供联络信号。当提供联络信号。当K=0时,表示要求输入时,表示要求输入8位开位开关量,作为逻辑模拟子程序关量,作为逻辑模拟子程序的输入信号。的输入信号。解:解:采用查询方式输入。要点:采用查询方式输入。要点:RE
21、N=1,允许接收,允许接收K闭合才输入闭合才输入0000H ORGSTART LJMP0030H ORGSCON MOVSTART:,#10HNEXT :P1.1JB,NEXTP1.0 CLRP1.0 SETBRI JNB,$RI CLRA MOV,SBUF LCALL LOGSIMNEXT SJMPLOGSIM:;串口方式;串口方式0初始化初始化;开关;开关K未闭合,等待未闭合,等待;SHIFT=0,置入并行数据,置入并行数据;SHIFT=1,移位的将是置入的数据,移位的将是置入的数据;查询;查询RI;清;清RI;输入数据;输入数据;调用逻辑模拟子程序;调用逻辑模拟子程序;继续下一次模拟;继
22、续下一次模拟;逻辑模拟子程序;逻辑模拟子程序第30页,共69页,编辑于2022年,星期五7.3.2 串行口方式串行口方式1方式方式1真正用于串行发送或接收,为真正用于串行发送或接收,为10位通用异步接口位通用异步接口。TXD与与RXD分别用于发送与接收数据。分别用于发送与接收数据。收发一帧数据的格式为收发一帧数据的格式为1位起始位位起始位、8位数据位位数据位(低位在前)(低位在前)、1位停止位位停止位,共,共10位。在接收时,停止位进入位。在接收时,停止位进入SCON的的RB8,此方式的传送,此方式的传送波特率可调波特率可调。第31页,共69页,编辑于2022年,星期五7.3.3 串行口方式串
23、行口方式2和方式和方式3串行口工作在方式串行口工作在方式2和方式和方式3均为均为每帧每帧11位异步通信格式位异步通信格式,由由TXD和和RXD发送与接收(两种方式操作是完全一样的,不发送与接收(两种方式操作是完全一样的,不同的只是特波率)。同的只是特波率)。每帧每帧11位:位:即即1位起始位位起始位、8位数据位位数据位(低位在前)、(低位在前)、1位可编程的第位可编程的第9数据位数据位和和1位停止位位停止位。发送时,发送时,第第9数据位(数据位(TB8)可以设置为)可以设置为1或或0,也可将,也可将奇偶位装入奇偶位装入TB8;接收时,接收时,第第9数据位进入数据位进入SCON的的RB8。第32
24、页,共69页,编辑于2022年,星期五7.4 串行口应用举例串行口应用举例 主要内容主要内容 7.4.1 同步方式应用同步方式应用 7.4.2 异步方式应用异步方式应用第33页,共69页,编辑于2022年,星期五7.4.1 同步方式应用同步方式应用MSC-51单片机的串行口在方式单片机的串行口在方式0时,以时,以同步方式操作同步方式操作。外。外接串入接串入/并出或并入并出或并入/串出器件,可串出器件,可实现实现I/O口的扩展口的扩展。例例7-2 用用89C52串行口外接串行口外接164串入串入/并出移位寄存器扩展并出移位寄存器扩展8位并行输出口,外接位并行输出口,外接165并入并入/串出移位寄
25、存器扩展串出移位寄存器扩展8位并位并行输入口。行输入口。8位并行输出口的每位都接一个发光二极管,要位并行输出口的每位都接一个发光二极管,要求从求从8位并行输入口读入开关的状态值,使闭合开关对应的发光位并行输入口读入开关的状态值,使闭合开关对应的发光二极管点亮。如图二极管点亮。如图7-13所示。所示。第34页,共69页,编辑于2022年,星期五7.4.1 同步方式应用同步方式应用图图7-13 方式方式0扩展输入输出电路扩展输入输出电路第35页,共69页,编辑于2022年,星期五解:解:数据的输入输出通过数据的输入输出通过RXD接收和发送,移接收和发送,移位时钟通过位时钟通过TXD送出,送出,74
26、HC164用于串用于串/并转换,并转换,74HC165用于并用于并/串转换。串转换。C语言程序清单语言程序清单:#includesbit P1_0=P10;sbit P1_1=P11;unsigned char data1;void main()SCON=0 x10;/串行口方式串行口方式0,允许接收,允许接收ES=1;EA=1;/允许允许串行口中断串行口中断7.4.1 同步方式应用同步方式应用第36页,共69页,编辑于2022年,星期五P1_0=0;/关闭并行输出关闭并行输出P1_1=0;/并行置入数据并行置入数据P1_1=1;/开始串行移位开始串行移位while(1);/等待中断等待中断v
27、oid s_srv()interrupt 4/中断服务程序中断服务程序if(TI)/发送中断发送中断TI=0;P1_0=1;/打开并行输出打开并行输出7.4.1 同步方式应用同步方式应用第37页,共69页,编辑于2022年,星期五else/接收中断接收中断RI=0;data1=SBUF;/读取接收的数据读取接收的数据P1_0=0;/关闭并行输出关闭并行输出SBUF=data1;/送入串行数据送入串行数据P1_1=0;/为接收下一次为接收下一次P1_1=1;/数据做准备数据做准备汇编语言程序清单:汇编语言程序清单:ORG 0000HSJMP MAINORG 23HSJMP S_SRV ;串行口中
28、断服务程序串行口中断服务程序7.4.1 同步方式应用同步方式应用第38页,共69页,编辑于2022年,星期五MAIN:MOV SCON,#10H ;串行口方式串行口方式0初始化初始化SETB ESSETB EACLR P1.0;关闭并行输出关闭并行输出 CLR P1.1 SETB P1.1SJMP$;等待中断等待中断7.4.1 同步方式应用同步方式应用第39页,共69页,编辑于2022年,星期五S_SRV:JBC TI,SENDCLRRIMOV A,SBUFCLR P1.0CPL AMOV SBUF,ACLR P1.1 SETB P1.1RETISEND:SETB P1.0RETI7.4.1
29、同步方式应用同步方式应用第40页,共69页,编辑于2022年,星期五7.4.2 异步方式应用异步方式应用串行口方式串行口方式1与方式与方式3很近似,很近似,波特率设置一样波特率设置一样,不同之处,不同之处在于方式在于方式3比方式比方式1多了一个数据附加位。多了一个数据附加位。方式方式2与方式与方式3基本一样(只是基本一样(只是波特率设置不同波特率设置不同),接收),接收/发送发送11位信息:开始为位信息:开始为1位起始位(位起始位(0),中间),中间8位数据位数位数据位数据位之后为据位之后为1位程控位(由用户置位程控位(由用户置SCON的的TB8决定),最后决定),最后是是1位停止位(位停止位
30、(1)。只比)。只比方式方式1多了一位程控位多了一位程控位。第41页,共69页,编辑于2022年,星期五例例7-3 将片内将片内RAM 50H5FH中的数据串行发送,用第中的数据串行发送,用第9个数据位作奇偶校验位,设晶振为个数据位作奇偶校验位,设晶振为11.059 2MHz,波特率为,波特率为2 400b/s,编制串行口方式,编制串行口方式3的发送程序。的发送程序。解:解:用用TB8作奇偶校验位,在数据写入发送缓冲器之前先作奇偶校验位,在数据写入发送缓冲器之前先将数据的奇偶位将数据的奇偶位P写入写入TB8,这时,第,这时,第9位数据作奇偶校验用,位数据作奇偶校验用,发送采用中断方式。发送采用
31、中断方式。7.4.2 异步方式应用异步方式应用第42页,共69页,编辑于2022年,星期五C语言程序清单:语言程序清单:#includeunsigned char i=0;unsigned char array16 _at_ 0 x50;/发送缓冲区发送缓冲区void main()SCON=0 xc0;/串行口初始化串行口初始化TMOD=0 x20;/定时器初始化定时器初始化TH1=0 xf4;TL1=0 xf4;ES=1;EA=1;/开中断开中断 TR1=1;ACC=arrayi;/发送第一个数据送发送第一个数据送TB8=P;/累加器累加器,目的取目的取P位位SBUF=ACC;/发送一个数据
32、发送一个数据while(1);/等待中断等待中断7.4.2 异步方式应用异步方式应用第43页,共69页,编辑于2022年,星期五void server()interrupt 4/串行口中断服务程序串行口中断服务程序TI=0;/清发送中断标志清发送中断标志ACC=array+i;/取下一个数据取下一个数据TB8=P;SBUF=ACC;if(i=16)/发送完毕,发送完毕,ES=0;/禁止串口中断禁止串口中断7.4.2 异步方式应用异步方式应用第44页,共69页,编辑于2022年,星期五汇编语言程序清单:汇编语言程序清单:ORG0000HSJMPMAIN ;上电,转主程序上电,转主程序ORG23H
33、SJMPSERVER ;转中断服务程序转中断服务程序MAIN:MOVSCON,#0C0H;串行口方式串行口方式3初始化初始化MOVTMOD,#20H;定时器定时器1工作在方式工作在方式2MOVTH1,#0F4HMOVTL1,#0F4HSETBES;允许串行口中断允许串行口中断SETBEA;CPU开中断开中断 SETBTR1 MOVR0,#50HMOVR7,#0FH7.4.2 异步方式应用异步方式应用第45页,共69页,编辑于2022年,星期五MOVA,R0MOVC,PMOVTB8,C ;送奇偶标志位到送奇偶标志位到TB8MOVSBUF,A ;发送第一个数据发送第一个数据SJMP$SERVER:
34、CLRTI ;清除发送中断标志清除发送中断标志INCR0 ;修改数据地址修改数据地址MOVA,R0MOVC,PMOVTB8,CMOVSBUF,A ;发送下一个数据发送下一个数据DJNZR7,ENDT ;判断数据块是否发送完判断数据块是否发送完CLRES ;否则,禁止串行口中断否则,禁止串行口中断ENDT:RETI ;中断返回中断返回7.4.2 异步方式应用异步方式应用第46页,共69页,编辑于2022年,星期五例例7-4 编写一个接收程序,将接收的编写一个接收程序,将接收的16字节数据送入字节数据送入片内片内RAM 50H5FH单元中。设第单元中。设第9个数据位作奇偶校验个数据位作奇偶校验位,
35、晶振为位,晶振为11.059 2 MHz,波特率为,波特率为2 400b/s。解:解:RB8作奇偶校验位,接收时,取出该位进行核对,作奇偶校验位,接收时,取出该位进行核对,接收采用查询方式。接收采用查询方式。7.4.2 异步方式应用异步方式应用第47页,共69页,编辑于2022年,星期五C语言程序清单:语言程序清单:#includeunsigned char i;unsigned char array16 _at_ 0 x50;/接收缓冲区接收缓冲区void main()SCON=0 xd0;/串行口初始化,允许接收串行口初始化,允许接收TMOD=0 x20;TH1=0 xf4;TL1=0 x
36、f4;TR1=1;7.4.2 异步方式应用异步方式应用第48页,共69页,编辑于2022年,星期五for(i=0;i16;i+)/循环接收循环接收16个数据个数据while(!RI);/等待一次接收完成等待一次接收完成RI=0;ACC=SBUF;if(RB8=P)/校验正确校验正确arrayi=ACC;else /校验不正确校验不正确F0=1;break;while(1);7.4.2 异步方式应用异步方式应用第49页,共69页,编辑于2022年,星期五汇编语言程序清单:汇编语言程序清单:MAIN:MOV TMOD,#20H;定时器初始化定时器初始化MOV TH1,#0F4HMOV TL1,#0
37、F4HSETB TR1MOV SCON,#0D0H;串口初始化,允许接收串口初始化,允许接收MOV R0,#50H;首地址送首地址送R0MOV R7,#10H;数据长度送数据长度送R7WAIT:JNB RI,$;等待接收完成等待接收完成 CLR RI;清中断标志清中断标志 MOV A,SBUF;读数到累加器读数到累加器7.4.2 异步方式应用异步方式应用第50页,共69页,编辑于2022年,星期五JNBP,PNP;P=0,转,转PNPJNBRB8,ERROR;P=1,RB8=0,转出错,转出错SJMP RIGHTPNP:JBRB8,ERROR;P=0,RB8=1,转出错,转出错RIGHT:MO
38、V R0,A;存数存数INCR0;修改地址指针修改地址指针DJNZ R7,WAIT;未接收完,继续未接收完,继续CLR F0;置正确接收标志置正确接收标志F0=0RETERROR:SETB F0;置错误接收标志置错误接收标志F0=1RET7.4.2 异步方式应用异步方式应用第51页,共69页,编辑于2022年,星期五例例7-5 用第用第9个数据位作奇偶校验位,编制串行口方式个数据位作奇偶校验位,编制串行口方式3的的全双工通信程序,设双机将各自键盘的按键键值发送给对方,全双工通信程序,设双机将各自键盘的按键键值发送给对方,接收正确后放入缓冲区(可用于显示或其它处理),晶振为接收正确后放入缓冲区(
39、可用于显示或其它处理),晶振为11.059 2 MHz,波特率为,波特率为9 600b/s。解:解:因为是全双工方式,通信双方的程序一样。发送和接因为是全双工方式,通信双方的程序一样。发送和接收都采用中断方式。收都采用中断方式。7.4.2 异步方式应用异步方式应用第52页,共69页,编辑于2022年,星期五C语言程序清单:语言程序清单:#includechar k;unsigned char buffer;void main()SCON=0 xd0;/串行口初始化串行口初始化,允许接收允许接收TMOD=0 x20;/定时器初始化定时器初始化TH1=0 xfd;TL1=0 xfd;TR1=1;E
40、S=1;/开串行口中断开串行口中断EA=1;/开总中断开总中断7.4.2 异步方式应用异步方式应用第53页,共69页,编辑于2022年,星期五while(1)k=key();/读取按键按下键值读取按键按下键值if(k!=-1)/无键按下返回无键按下返回-1ACC=k;/将键值送累加器,取将键值送累加器,取P位位TB8=P;/送送TB8SBUF=ACC;/发送发送display();/显示程序显示程序7.4.2 异步方式应用异步方式应用第54页,共69页,编辑于2022年,星期五void serial_server()interrupt 4if(TI)/发送引起,清发送引起,清TITI=0;el
41、se /否则,接收引起否则,接收引起RI=0;ACC=SBUF;/读取接收数据读取接收数据if(RB8=P)/校验正确,校验正确,buffer=ACC;/存入缓冲区存入缓冲区7.4.2 异步方式应用异步方式应用第55页,共69页,编辑于2022年,星期五汇编语言程序清单:汇编语言程序清单:ORG 0000HSJMP MAIN ;跳转到主程序跳转到主程序ORG 23HLJMP S_SERV ;跳转到串口中断服务程序跳转到串口中断服务程序MAIN:MOV SP,#0DFH ;设置堆栈指针设置堆栈指针MOV SCON,#0D0H ;串口初始化串口初始化MOV TMOD,#20H ;定时器初始化,定时
42、器初始化,T1方式方式2MOV TH1,#0FDHMOV TL1,#0FDH ;定时器定时器1赋初值赋初值7.4.2 异步方式应用异步方式应用第56页,共69页,编辑于2022年,星期五SETB TR1 ;启动定时器启动定时器1SETB ES ;开中断开中断SETB EALOOP:LCALL KEY;读取按键读取按键(参看第参看第9章章),;有键按下有键按下返回键值返回键值,CJNE A,#0FFH,SEND;无键按下返回无键按下返回0FFH,;有键按下转发送有键按下转发送NEXT:LCALL DISPLAY ;调用显示调用显示LJMP LOOP ;主程序循环主程序循环7.4.2 异步方式应用
43、异步方式应用第57页,共69页,编辑于2022年,星期五SEND:MOV C,PMOV TB8,CMOV SBUF,A;带校验位发送带校验位发送LJMP LOOP;循环循环S_SERV:JBC RI,RECV ;是接收中断转接收处理是接收中断转接收处理CLR TI;是发送中断,清是发送中断,清TIRETI 7.4.2 异步方式应用异步方式应用第58页,共69页,编辑于2022年,星期五RECV:;接收处理程序接收处理程序MOV A,SBUF;取接收值送取接收值送AJB P,ONE;校验位为校验位为1,转,转JB RB8,I_END;校验错,转中断返回校验错,转中断返回SJMP RIGHT;校验
44、正确,正确处理校验正确,正确处理ONE:JNB RB8,I_END;校验错,转中断返回校验错,转中断返回RIGHT:MOV BUFFER,A;接收数据送缓冲区接收数据送缓冲区I_END:RETI;中断返回中断返回7.4.2 异步方式应用异步方式应用第59页,共69页,编辑于2022年,星期五7.5单片机与单片机与PC机通信的接口电路机通信的接口电路主要内容主要内容7.5.1 MAX232芯片简介芯片简介7.5.2 PC机与机与89C52串行通信的接口电路串行通信的接口电路第60页,共69页,编辑于2022年,星期五利用利用PC机配置的异步通信适配器,可以很方便地完成机配置的异步通信适配器,可以
45、很方便地完成PC机机与单片机的数据通信。与单片机的数据通信。PC机与机与89C52单片机最简单的连接是单片机最简单的连接是零调制零调制3线经济型线经济型,这是进行全双工通信所必须的最少数目的线路。这是进行全双工通信所必须的最少数目的线路。7.5 单片机与单片机与PC机通信的接口电路机通信的接口电路第61页,共69页,编辑于2022年,星期五串行通信电平:串行通信电平:由于由于89C52单片机输入、输出电平为单片机输入、输出电平为TTL电电平,而平,而PC机配置的是机配置的是RS-232C标准串行接口,二者的电气规范标准串行接口,二者的电气规范不一致。不一致。数字值:数字值:1 0TTL电平:电
46、平:+5V 0V232电平:电平:-3V-15V +3V+15V串行通信电平转换:串行通信电平转换:要完成要完成PC机与单片机的数据通信机与单片机的数据通信必须进行电平转换。必须进行电平转换。MAX232单芯片可实现单芯片可实现89C52单片机与单片机与PC机的机的RS-232C之间的电平转换。之间的电平转换。7.5 单片机与单片机与PC机通信的接口电路机通信的接口电路第62页,共69页,编辑于2022年,星期五7.5.1 MAX232芯片简介芯片简介MAX232芯片:芯片:是是MAXIM公司生产的、包含两路接收器和公司生产的、包含两路接收器和驱动器的驱动器的IC芯片,适用于各种芯片,适用于各
47、种EIA-232C和和V.28/V.24 的通信的通信接口。接口。MAX232芯片的功能:芯片的功能:MAX232内部有一个电源电压变内部有一个电源电压变换器,可以把输入的换器,可以把输入的+5V电源电压变换成为电源电压变换成为RS-232C输出电平所输出电平所需的需的10V电压。所以,采用此芯片接口的串行通信系统只需电压。所以,采用此芯片接口的串行通信系统只需单单一的一的+5V电源电源就可以了。对于没有就可以了。对于没有12V电源的场合,其适应电源的场合,其适应性更强。性更强。第63页,共69页,编辑于2022年,星期五7.5.1 MAX232芯片简介芯片简介图图7-15 MAX232芯片引
48、脚芯片引脚第64页,共69页,编辑于2022年,星期五7.5.1 MAX232芯片简介芯片简介MAX232原原理理结结构构路路图图第65页,共69页,编辑于2022年,星期五7.5.2 PC机与机与89C52串行通信的接口电路串行通信的接口电路图图7-17 采用采用MAX232接口的串行通信电路接口的串行通信电路第66页,共69页,编辑于2022年,星期五第67页,共69页,编辑于2022年,星期五本章小结本章小结本章介绍了数据通信的本章介绍了数据通信的一般概念一般概念和单片机串行口和单片机串行口基本组成基本组成与与应用应用。通信是计算机与外设之间的数据传送通信是计算机与外设之间的数据传送。通信方式有。通信方式有串行通串行通信信和和并行通信并行通信,串行通信又分为,串行通信又分为同步通信同步通信和和异步通信异步通信。MCS-51单片机有一个全双工单片机有一个全双工UART,工作方式有,工作方式有4中,中,方方式式0为移位寄存器方式,主要用来进行为移位寄存器方式,主要用来进行串行与并行数据的转换串行与并行数据的转换,方式方式1、2、3为通用的为通用的异步传送异步传送方式。方式。第68页,共69页,编辑于2022年,星期五本章完本章完第69页,共69页,编辑于2022年,星期五