首页 串口中断2

串口中断2

举报
开通vip

串口中断2nullnull项目7 PC机与单片机串行通信 泸州职业技术学院机电工程系《单片机应用技术》精品课程组《单片机应用技术》本讲主要内容本讲主要内容6 项目考核null1、终极目标: 制作PC机与单片机通信的单片机系统。 2、促成目标: (1) 了解MCS-51单片机串行接口结构; (2) 掌握MCS-51串行接口的使用方法; (3) 理解MCS-51单片机串行口接收和发送数据的实现方法; (4) 熟悉MCS-51单片机串行通信的格式规定; (5) 理解MCS-51单片机串行通信的程序设计思想。【教学目标】null...

串口中断2
nullnull项目7 PC机与单片机串行通信 泸州职业技术学院机电工程系《单片机应用技术》精品课程组《单片机应用技术》本讲主要内容本讲主要内容6 项目考核null1、终极目标: 制作PC机与单片机通信的单片机系统。 2、促成目标: (1) 了解MCS-51单片机串行接口结构; (2) 掌握MCS-51串行接口的使用方法; (3) 理解MCS-51单片机串行口接收和发送数据的实现方法; (4) 熟悉MCS-51单片机串行通信的格式规定; (5) 理解MCS-51单片机串行通信的程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 思想。【教学目标】null 单片机系统接收电脑PC机串口发过来的ASCII码,并在液晶LCD1602上显示出来;同时把收到的ASCII码回传给电脑PC机串口,以验证串口接收、发送数据的正确性。【工作任务】null 1.系统组成 本系统功能由硬件和软件两大部份协调完成,硬件部分主要完成信息的显示;软件主要完成信号的处理及控制功能等。 本系统的硬件采用模块化设计,以AT89S52单片机为核心,与LCD显示电路、串行口通信电路组成控制系统。该系统硬件主要包括以下几个模块:AT89S52主控模块、LCD显示模块、串行口通信模块等。其中AT89S52主要完成外围硬件的控制以及一些运算功能,LCD显示模块完成字符、数字的显示功能、串行口通信模块主要完成单片机和PC机之间的通信功能。系统组成方框图如图7.1所示。【项目实践】【活动一】总体设计null图7.1 单片机串行通信控制系统组成方框图【项目实践】null 应用软件采用模块化设计方法。该系统软件主要由主程序、串口接收发送数据中断子程序、LCD显示子程序等模块组成,系统软件结构框图如图7.4所示。图7.4 系统软件结构框图【项目实践】null2.系统工作原理 MCS-51单片机串行口发送/接收数据时,通过2个串行缓冲器SBUF进行,这2个缓冲器采用一个地址(98H),但在物理上是独立的。其中接收缓冲器只能读出不能写入,发送缓冲器只能写入不能读出。 ① 发送过程 由指令MOV SBUF,A启动,此时待传送的数据由A累加器传入串行发送缓冲器SBUF,由硬件自动在发送字符的始、末加上起始位(低电平)、停止位(高电子)及其它控制位(如奇偶位等),而后在移位脉冲的控制下,低位在前,高位在后,逐位从TXD端(方式0除外)发出。【项目实践】null ② 接收过程 串行口的接收与否受制于允许接收位REN的状态,当REN被软件置“1”后,允许接收器接收。串口的接收器以所选波特率的16倍速对RXD线进行监视。当“1”到“0”跳变时,检测器连续采样到RXD线上低电平时。便认定RXD端出现起始位,继而接收控制器开始工作。在每位传送时间的第7、8、9三个脉冲状态采样RXD线,决定所接收的值为“0”或“1”。当接收完停止位后,控制电路使中断标志R1置为“1”,此时程序可通过MOV A,SBUF指令将接收到的字符从SBUF送入累加器A,从而完成一帧数据的接收工作。【项目实践】null1.主控模块设计 本项目采用ATMEL公司生产的AT89S52单片机,主控模块的具体设计参见项目1。 2.LCD显示模块设计 LCD显示模块选用1602字符型LCD模块,具体设计请参见项目6“LCD显示技术”。 3.串行口通信模块设计 51单片机有一个全双工的串行通信口,使单片机和计算机之间可以方便地进行通信。 电平范围是电路能够安全可靠识别信号的电压范围。 CMOS电路的电平范围一般是从0到电源电压。CMOS电平中,高电平(3.5~5V)为逻辑“1”,低电平(0~0.8V)为逻辑“0”。 【项目实践】【活动二】硬件设计null RS232接口的电平范围是-15V到+15V,RS232电平采用负逻辑,即逻辑“1”:-3~-15V,逻辑“0”:+3~+15V。 单片机的串口是TTL电平的,而计算机的串口是RS232电平,要使两者之间进行通信,两者之间必须有一个电平转换电路,即单片机的串口要外接电平转换电路芯片把与TTL兼容的CMOS高电平 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示的1转换成RS232的负电压信号,把低电平转换成RS-232的正电压信号。典型的转换电路给出-9V和+9V。 实现逻辑电平转换可以采用以下三种方式: (1) 采用MC1488和MC1489芯片的转换接口 MC1488和MC1489芯片为早期的RS232至TTL逻辑电平的转换芯片。该方式的不便之处是需要±12V电压,并且功耗较大,不适合用于低功耗的系统。【项目实践】null (2) 采用MAX232芯片的转换接口 MAX232是MAXIM公司生产的,包含两路驱动器和接收器的RS-232转换芯片。MAX232芯片内部有一个电压转换器,可以把输人的+5V电压转换为RS-232接口所需的±10V电压,尤其适用于没有±12V的单电源系统。与此原理相同的芯片还有MAX202、AD公司的ADDt101以及SIL公司的IC1232芯片。 (3) 采用分立元件实现转换接口 采用分立元件实现的RS232至TTL电平的转换接口电路,其特点是利用PC机的RS232接口的3脚信号(也可用4、7脚)来供给负电源,PC机的3、4、7脚在非发送逻辑“0”电平时均为1电平(-10V左右),其驱动能力为20mA,利用这个特性,用一个二极管和电解电容,即在电解电容上获取了RS232通信所需的负电源。该电路简单、功耗小,在没有专用芯片时不失为一种替代方法。 使用RS232接口进行异步通信,必须将单片机的TTL电平转换为RS232电平,即在通信方的单片机接口部分增加RS232电气转换接口,在本项目中利用MAXIM公司的MAX232集成芯片构成转换接口电路。 【项目实践】null图7.5 MAX232芯片引脚图【项目实践】null图7.5 MAX232芯片内部框图【项目实践】null图7.1 RS232接口引脚图RS232引脚定义如表7.1所示。 表7.1 RS232接口引脚定义【项目实践】null 因此,MAX232芯片的T1in引脚连接AT89S52单片机 的TXD引脚,MAX232芯片的R1out引脚连接AT89S52单 片机的RXD引脚;MAX232芯片的T1out引脚连接DB9针 接口的第2引脚,MAX232芯片的R1in引脚连接DB9针接 口的第3引脚,串行通信模块与单片机的接口电路原理图 见图6.7。【项目实践】null图7.7 串行通信模块与单片机的接口电路原理图【项目实践】null1.算法设计 编写单片机异步通信程序步骤如下: (1) 设置串口工作方式。 此时需对串行控制器SCON中的SM0、SM1进行设置。PC机与单片机的通信中一般选择串口工作在方式1下。 串行控制器SCON(98H)的格式如下所示: (2) 选择波特率发生器。 选择定时器l或定时器2做为其波特率发生器。 【项目实践】【活动三】软件设计null (3) 设置定时器工作方式。 当选择定时器1做为波特率发生器时,需设置其方式寄存器TMOD 为计数方式并选择相应的工作方式(一般选择方式2以避免重装定时器初值);当选择定时器2做为波特率发生器时,需将T2CON设置为波特率发生器工作方式。 (4) 设置波特率参数。 影响波特率的参数有二,一是特殊寄存器PCON的SMOD位,另一个是相应定时器初值。 (5) 允许串行中断。 因在程序中我们一般采有中断接收方式,故应设EA=l、ES=1。 (6) 允许接收数据。 设置SCON中的REN为1。表示允许串行口接收数据。 (7) 允许定时/计数器工作。 此时开启定时/计数器,使其产生波特率 (8) 编写串行中断服务程序。 当有数据到达串口时,系统将自动执行所编写的中断服务程序。 (9) 收/发相应数据。 注意的是发送操作完成需将T1清零,接收工作完成后需将R1清零。【项目实践】null 2.数据结构设计 1602LCD使能信号E 定义为P2口线的P2.2; 1602LCD读/写选择信号R/W定义为P2口线的P2.1,0为写数据信号,1为读数据信号; 1602LCD 数据/命令选择信号RS定义为P2口线的P2.0,0为命令信号;1为数据信号; 1602LCD的8位双向数据线DB7~DB0信号LCDPORT定义为P0口线; 1602LCD写命令入口参数CMD_BYTE定义为片内数据存储器的2EH单元; 1602LCD写显示数据入口参数DAT_BYTE定义为片内数据存储器的2FH单元; 串口成功接收数据标志位RECOKBIT定义为片内数据存储器的位寻址区的00H位; 串口接收数据单元RECDATA定义为片内数据存储器的30H单元;【项目实践】null 3.程序设计 (1) 主程序设计 主程序主要完成硬件初始化、子程序调用等功能。 ① 初始化 首先调用LCD子程序,设置LCD的DDRAM地址,在LCD上显示数据“RECDATA:”。把串口接收数据单元RECDATA清零。设置寄存器SCON的SM0、SM1位定义串口工作方式,选择波特率发生器为定时器T1;设定定时器T1工作方式为方式2;设置波特率参数为9600bps;允许串行中断及总中断;允许串口接收数据,定义REN=1;启动定时/计数器T1工作,定义TR1=1。 ② 串口收发数据 判断串口成功接收数据标志位RECOKBIT是否为0,若RECOKBIT为0,表明串口未接收到数据,则继续等待串口接收数据;若RECOKBIT为1,表明串口成功接收或发送数据,进入串口中断服务子程序,单片机接收数据,并将串口成功接收数据标志位RECOKBIT清零,调用LCD显示接收数据子程序,在LCD上显示单片机从串口接收到的数据。 主程序设计 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图如图7.5所示。【项目实践】null主程序设计流程图如图7.5所示。【项目实践】null图6.5 主程序设计流程图【项目实践】null (2) 串口接收发送数据中断服务子程序设计 判断串口发送标志位TI是否为1,若TI为1,则把数据从单片机发给PC机,并把TI清零,中断子程序返回;若TI为0,表明RI=0,则把串口接收标志位RI清零,把串口接收缓冲器SBUF中的数据写入串口接收数据单元RECDATA,再把该数据送到串口发送缓冲器SBUF中,传给PC机,置串口成功接收数据标志位RECOKBIT为1,表明串口成功接收发送数据,最后中断子程序返回。串口收发数据中断服务子程序设计流程图如图7.6所示。【项目实践】null图7.6 串口接收发送数据中断服务子程序流程图【项目实践】null (3) LCD显示子程序模块设计 LCD显示子程序模块包括LCD初始化子程序、写入指令数据到LCD子程序、写入显示数据到LCD子程序、字符显示子程序、延时子程序等模块组成,详细设计请参见项目6“LCD显示技术”。 4.汇编语言源程序 ;*********************************************************** ;实验名称:RS232通信与PC通信 ;功能:接收电脑送过来的数据,并且显示16进制数,并将数据回传到电脑(只 ;显示最后一个) ;作者:linux ;日期:08-04-08 ;***********************************************************【项目实践】null;*********************************************************** ;功能:LCD口线的定义 ;*********************************************************** E BIT P2.2; RW BIT P2.1 RS BIT P2.0 LCDPORT EQU P0 CMD_BYTE EQU 2EH DAT_BYTE EQU 2FH RECOKBIT BIT 00H ;串口成功接收数据标志位 RECDATA EQU 30H ;串口接收数据单元 ORG 0000H AJMP MAIN【项目实践】null;*********************************************************** ;功能:串口接收发送数据中断子程序 ;*********************************************************** ORG 0023H RS232: JB TI,SEND232 CLR RI MOV A,SBUF MOV RECDATA,A MOV SBUF,A SETB RECOKBIT RETI SEND232:CLR TI RETI ;*********************************************************** ;功能:主程序 ;***********************************************************【项目实践】nullORG 0050H MAIN: MOV 20H,#00H LCALL INITLCD MOV CMD_BYTE,#80H ;设置DDRAM的地址 LCALL WRITE_CMD LCALL DELAY0 MOV DAT_BYTE,#"R" LCALL WRITE_DAT MOV DAT_BYTE,#"E" LCALL WRITE_DAT MOV DAT_BYTE,#"C" LCALL WRITE_DAT MOV DAT_BYTE,#"D" LCALL WRITE_DAT MOV DAT_BYTE,#"A“ LCALL WRITE_DAT MOV DAT_BYTE,#"T" LCALL WRITE_DAT【项目实践】nullMOV DAT_BYTE,#"A" LCALL WRITE_DAT MOV DAT_BYTE,#":" LCALL WRITE_DAT MOV RECDATA,#00H MOV TMOD,#20H MOV TH1,#0FDH;波特率9600 MOV TL1,#0FDH MOV SCON,#50H SETB TR1 SETB REN MOV IE,#90H;串口中断 WAIT:JNB RECOKBIT,WAIT CLR RECOKBIT ACALL DISPREC SJMP WAIT【项目实践】null;*********************************************************** ;功能:;LCD1602要用到的一些子程序 ;*********************************************************** ;*********************************************************** ;功能:;写命令(入口参数CMD_BYTE) ;*********************************************************** WRITE_CMD:CLR RS CLR RW MOV A,CMD_BYTE MOV LCDPORT,A SETB E NOP NOP CLRE LCALL DELAY0 RET【项目实践】null;*********************************************************** ;功能:;写显示数据(入口参数DAT_BYTE) ;*********************************************************** WRITE_DAT:SETB RS CLR RW MOV A,DAT_BYTE MOV LCDPORT,A SETB E NOP NOP CLR E LCALL DELAY0 RET【项目实践】null;*********************************************************** ;功能:;LCD显示初始化 ;*********************************************************** INITLCD: MOV CMD_BYTE,#30H LCALL WRITE_CMD MOV CMD_BYTE,#30H LCALL WRITE_CMD MOV CMD_BYTE,#30H LCALL WRITE_CMD MOV CMD_BYTE,#38H;设定工作方式 LCALL WRITE_CMD MOV CMD_BYTE,#0CH;显示状态设置 LCALL WRITE_CMD MOV CMD_BYTE,#01H;清屏 LCALL WRITE_CMD MOV CMD_BYTE,#06H;输入方式设置 LCALL WRITE_CMD RET【项目实践】null;*********************************************************** ;功能:延时子程序 ;*********************************************************** DELAY0:MOV R5, #0A0H DELAY1:NOP DJNZ R5,DELAY1 RET ;*********************************************************** ;功能:LCD显示接收数据子程序 ;*********************************************************** DISPREC:MOV CMD_BYTE, #89H ;设置DDRAM的地址 LCALL WRITE_CMD MOV DAT_BYTE,RECDATA LCALL WRITE_DAT RET END【项目实践】null/*实验名称:RS232通信实验 功能:接收电脑送过来的数据,并且显示16进制数,并将数据回传到电脑 作者:http://www.mcuprog.com 08-04-008 */ #include //LCD的口线 sbit E=P2^2; sbit RW=P2^1; sbit RS=P2^0; unsigned char recdata; //RS232收到的值 unsigned char bdata myflag; sbit recokbit = myflag^0; void Delay(unsigned int t); void SendCommandByte(unsigned char ch); void SendDataByte(unsigned char ch);【项目实践】5.C语言源程序nullvoid InitLcd(void); void disprec(void); void rs232(void); void main(void) { InitLcd(); myflag=0x00; SendCommandByte(0x80); Delay(2); SendDataByte('R'); SendDataByte('E'); SendDataByte('C'); SendDataByte('D'); SendDataByte('A'); SendDataByte('T'); SendDataByte('A'); SendDataByte(':'); TMOD=0x20;【项目实践】nullTH1=0xfd; TL1=0xfd; SCON=0x50; TR1=1; REN=1; IE=0x90; while(1) { if(recokbit==1) { recokbit=0; disprec(); } } } //以下为串口中断程序 void rs232(void) interrupt 4 { 【项目实践】nullif(RI==1) { RI=0; recdata=SBUF; SBUF=recdata; recokbit=1; } else { TI=0; } } void Delay(unsigned int t) // delay 40us { for(;t!=0;t--) ; } //============================================= void SendCommandByte(unsigned char ch)【项目实践】null{ RS=0; RW=0; P0=ch; E=1; Delay(1); E=0; Delay(100); //delay 40us } //------------------------------------------------------- void SendDataByte(unsigned char ch) { RS=1; RW=0; P0=ch; E=1; Delay(1); E=0; Delay(100); //delay 40us【项目实践】null} //------------------------------------------------- void InitLcd(void) {SendCommandByte(0x30); SendCommandByte(0x30); SendCommandByte(0x30); SendCommandByte(0x38); //设置工作方式 SendCommandByte(0x0c); //显示状态设置 SendCommandByte(0x01); //清屏 SendCommandByte(0x06); //输入方式设置 } void disprec(void) { SendCommandByte(0x89); SendDataByte(recdata); } 【项目实践】null 在PC机上打开串口调试软件——串口调试助手SSCOM3.2,设置串口号、波特率、校验位等参数(注意:这些参数应与单片机中串口参数设置一致),在字符输入框内要发送的ASCII码,点击发送,此时在LCD1602上显示出当前收到的ASCII码。同时在串口调试助手SSCOM3.2的接收窗口可以看到当前的回传ASCII码。串口与PC机通信系统调试过程如图7.8所示。 【项目实践】【活动四】系统仿真调试null图7.8 串口与PC机通信系统调试示意图【项目实践】null 在实际工作中,计算机的CPU与外部设备之间常常要进行信息交换;一台计算机与外界的信息交换称为数据通信。 数据通信方式有两种,即并行数据通信和串行数据通信。并行数据通信中,数据的各位同时传送,其优点是传递速度快;缺点是数据有多少位,就需要多少根传送线;串行通信中,数据字节一位一位串行地顺序传送,通过串行接口实现。它的优点是只需一对传送线(利用电话线就可作为传送线),这样就大大降低了传送成本,特别适用于远距离通信;其缺点是传送速度较低。在应用时,可根据数据通信的距离决定采用哪种通信方式,例如,在PC机与外部设备(如打印机等)通信时,如果距离小于30m可采用并行数据通信方式;当距离大于30m时,则要采用串行数据通信方式。 8051单片机具有并行和串行二种基本数据通信方式。图5-1(a)所示为8051单片机与外设间8位数据并行通信的连接方法。图5-1(b)所示为串行数据通信方式的连接方法。【相关知识】null下面主要介绍单片机串行通信技术: 图5-1 两种通信方式的示意图 (a)并行通信 (b)串行方式【相关知识】null一、串行通信分类 按照串行数据的时钟控制方式,串行通信分为异步通信和同步通信两类。 1、异步通信 在异步通信中,数据是以字符为单位组成字符帧传送的。发送端和接收端由各自独立的时钟来控制数据的发送和接收,这两个时钟彼此独立,互不同步。每一字符帧的数据格式如图5-2所示。 在帧格式中,一个字符由四个部分组成:起始位、数据位、奇偶校验位和停止位。 (1)起始位:位于字符帧开头,仅占一位,为逻辑低电平“0”,用来 通知 关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知 接收设备,发送端开始发送数据。线路上在不传送字符时应保持为“1”。接收端不断检测线路的状态 ,若连续为“1”以后又测到一个“0”,就知道发来一个新字符,应马上准备接收。 【相关知识】【第一部分】串行通信基础null (2)数据位:数据位(D0~D7)紧接在起始位后面,通常为5~8位,依据数据位由低到高的顺序依次传送。 (3)奇偶校验位:奇偶校验位只占一位,紧接在数据位后面,用来表征串行通信中采用奇校验还是偶校验,也可用这一位(I/O)来确定这一帧中的字符所代表信息的性质(地址/数据等)。 (4)停止位:位于字符帧的最后,表征字符的结束,它一定是高电位(逻辑“1”)。停止位可以是1位、1.5位、或2位。接收端收到停止位后,知道上一字符已传送完毕,同时也为接收下一字符作好准备(只要再收到“0”就是新的字符的起始位)。若停止位以后不是紧接着传送下一个字符,则让线路上保持为“1”。图5-2(a)表示一个字符紧接一个字符传送的情况,上一个字符的停止位和下一个字符的起始位是紧相邻的;图5-2(b)则是两个字符间有空闲位的情况,空闲位为“1”,线路处于等待状态。存在空闲位正是异步通信的特征之一。【相关知识】null 图5-2 异步通信一帧数据格式 (a)无空闲位字符帧 (b)有空闲位字符帧【相关知识】null 2.同步通信 同步通信时,字符与字符之间没有间隙,也不用起始位和停止位,仅在数据块开始时用同步字符SYNC来指示(常约定1~2个),然后是连续的数据块。同步字符的插入可以是单同步字符方式或双同步字符方式,如图5-3所示;同步字符可以由用户约定,也可以采用ASCII码中规定的SYN代码,即16H。通信时先发送同步字符,接收方检测到同步字符后,即准备接收数据。 在同步传输时,要求用时钟来实现发送端与接收端之间的同步。为了保证接收无误,发送方除了传送数据外,还要把时钟信号同时传送。【相关知识】null(a) (b) 图5-3 同步传送的数据格式 (a)单同步字符帧格式 (b)双同步字符帧格式 同步通信方式适合2400bps以上速率的数据传输,由于不必加起始位和停止位,传送效率较高,但实现起来比较复杂。【相关知识】null二、波特率 波特率,即数据传送速率,表示每秒钟传送二进制代码的位数,它的单位是位/秒(b/s),常用bps表示。波特率是异步通信的重要指标,表征数据传输的速度,波特率越高,数据传输速度越快, 在数据传送方式确定后,以多大的速率发送/接收数据,是实现串行通信必须解决的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 。 假设数据传送的速率是120字符/s,每个字符格式包含10个代码位(1个起始位、1个停止位、8个数据位),则通信波特率为: 120字符/s×10位/字符=1200b/s=1200波特 每一位的传输时间为波特率的倒数:Td=1/1200=0.833ms 三、串行通信的制式 在串行通信中按照数据传送方向,串行通信可分为单工、半双工和全双工三种制式。 1.单工制式 在单工制式中,只允许数据向一个方向传送,通信的一端为发送器,另一端为接收器。【相关知识】null2.半双工制式 在半双工制式中,系统每个通信设备都由一个发送器和一个接收器组成,允许数据向两个方向中的任一方向传送,但每次只能有一个设备发送,即在同一时刻,只能进行一个方向传送,不能双向同时传输。 3.全双工制式 在全双工制式中,数据传送方式是双向配置,允许同时双向传送数据。 在实际应用中,异步通信通常采用半双工制式,这种用法简单、实用。【相关知识】null【第二部分】串行通信总线标准 在进行串行通信接口设计时,必须根据需要确定选择标准接口、传输介质及电平转换等问题。和并行传送一样,现在已经颁布了很多种串行标准总线,如RS-232C,RS-422、RS-485和20mA电流环等。采用标准接口后,能够方便地把单片机和外设、测量仪器等有机地连接起来,从而构成一个测控系统。 一、RS-232C总线标准与应用 RS-232C是使用得最早、最多的一种异步串行通信总线标准。它由美国电子工业协会 (Electronic Industries Association)于1962年公布,1969年最后一次修订而成。其中RS是 Recommended Sandard的缩写,232是该标准的标识,C表示此标准已修改了三次。 RS-232C主要用来定义计算机系统的一些数据终端设备(DTE)和数据通信设备(DCE)之间接口的电气特性,目前已广泛用于计算机与终端或外设之间的近端连接,适合于短距离或带调制解调器的通信场合。【相关知识】 null (一)RS-232C的电气特性 RS-232C标准早于TTL电路的产生,与TTL、MOS逻辑电平规定不同。该标准采用负逻辑:低电平表示逻辑1,电平值为-3V~-l5V;高电平表示逻辑0,电平值为+3V一+l5V。因此,RS-232C不能直接与TTL电路连接,使用时必须加上适当的电平转换电路,否则将使TTL电路烧毁。 (二)RS-232C引脚功能 RS-232C标准总线有25条信号线,引脚名称见表5-1。 RS-232C信号分为两类,一类是DTE与DCE交换的信息:TxD和RxD;另一类是为了正确无误地传输上述信息而设计的联络信号。下面介绍这两类信号。 1.数据发送与接收线 发送数据TxD:通过TxD线,终端将串行数据由发送端(DTE)向接收端(DCE)发送。按串行数据格式,先低位后高位的顺序发出。 接收数据RxD:通过RxD线,终端接收从发送端DTE (或调制解调器)输出的数据。【相关知识】null 2.联络信号 这类信号共有6个: 请求传送信号RTS:用来表示DTE请求DCE发送数据,即当终端要发送数据时,该信号RTS=1。 清除发送信号CTS: 用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。 数据准备就绪信号DSR:这是DCE向DTE发出的联络信号。DSR将指出本地DCE的工作状态。当DSR=l时,表示DCE没有处于测试通话状态,这时DCE可以与远程DCE建立通道。 数据终端就绪信号DTR:这是DTE向DCE发送的联络信号。DTR=l时,表示DTE处于就绪状态,本地DCE和远程DCE之间建立通信通道;而DTR=0时,将迫使DCE终止通信工作。 数据载波检测信号DCD:这是DCE向DTE发出的状态信息。当DCD=1时,表示本地DCE接收到远程DCE发送。 振铃指示信号RI:这是DCE向DTE发出的状态信息。RI=1时,表示本地DCE接收到远程DCE的振铃信号。【相关知识】null表5-1 RS232各引脚信号说明 【相关知识】1* 2* 3* 4* 5* 6* 7* 8* 9,10 11 12 13 14 null续表5-1 RS232各引脚信号说明 【相关知识】15* 16 17* 18 19 20* 21* 22* 23* 24* 25null3.RS-232C与单片机的连接 RS-232C接口与单片机联接时需要进行电平转换,常用的电平转换芯片有MC1488、MC1489、MAX232,其中MAX232采用单5V电源供电,使用非常方便。 MAX232系列芯片由MAXIM公司生产,内含两路接收器和驱动器。其内部的电源电压变换器可以把输入的+5V电源电压变换成RS-232C输出所需的±10V电压。采用该芯片硬件接口简单、价格适中,所以被广泛使用。图5-4为该芯片引脚图,图5-5 为该芯片应用电路。图中电容C1、C2、C3、C4、C5均为1.0uF/16V。图5-4 MAX232引脚 【相关知识】null图7-5 MAX232应用电路二、RS-485总线标准 1.RS-485接口介绍 RS-485收发器采用平衡发送和差分接收,因此具有抑制共模干扰的能力,加上接收器具有高的灵敏度,能检测低达200mV的电压,故传输信号能在千米以外得到恢复。使用RS-485总线,一对双绞线就能实现多站联网,构成分布式系统,设备简单、价格低廉、能进行长距离通信的优点使其得到了广泛的应用。【相关知识】null RS-485支持半双工或全双工模式。组网时通常采用终端匹配的总线型结构,采用一条总线将各个节点串接起来,表5-2为一些常见芯片可联接的节点数。表5-2 常见芯片联接节点数 RS-485接口可连接成半双工和全双工两种通信方式。半双工通信的芯片有SN75176、SN75276、SN75LBC184、MAX485、MAX 1487、MAX3082、MAX1483等;全双工通信的芯片有SN75179、SN75180、MAX488~MAX491、MAX1482等。通常采用半双工方式组网应用。【相关知识】null 2.RS-485芯片介绍 图5-6为MAX485芯片引脚图,各引脚功能如下: (1)RO:接收器输出。A-B≥+0.2V时,RO=“1”;A-B≤-0.2V,RO=“0” (2):接收器输出使能。=“0”时,允许接收器输出;=“1”时,禁止接收器输出,RO为高阻。 (3)DE:驱动器输出使能。DE=“1”时,允许驱动器工作;DE=“0”时,驱动器被禁止,输出端A、B为高阻。 (4)DI:驱动器输入。DI=“1”时,A输出高电平,B输出低电平;DI=“0”时,A输出低电平,B输出高电平。 (5)GND:地。 (6)A:接收器同相输入和驱动器同相输出。 (7)B:接收器反相输入和驱动器反相输出。 (8)VCC:5V电源。 【相关知识】null图5-6 MAX485芯片引脚图 3.RS-485芯片应用介绍 图5-7为典型半双工RS-485通信网络。图中各驱动器分时使用传输线(不发送数据的驱动器应被禁止)。网络上可挂32个站。传输线通常采用双绞线,可以较大程度抑制共模干扰。在传输线的末端接120的电阻进行阻抗匹配,消除由于不匹配在线路上产生的信号反射。 在实际应用中,为减少误码率,通信距离越远,通信数率应取低一些。RS-485规定:通信距离为120m时,最大通信速率为1Mbps;若通信距离为1.2km,则最大通信速率为100kbps。 【相关知识】null RS-485与PC机间可采用RS232/485接口卡。RS-485芯片与单片机联接电路请参见相关部分内容。图5-7 485芯片联接电路【相关知识】null【第三部分】MCS-51单片机串行接口 MCS-51内部有一个可编程全双工串行接口,具有UART(通用异步接收和发送器)的全部功能,通过单片机的引脚RXD(P3.0)、TXD(P3.1)同时接收、发送数据,构成双机或多机通信系统。【相关知识】一、MCS-51串行口的内部结构 MCS-51串行口的内部结构,如图5-8所示:null图5-8 串行口结构框图 在图5-8中,与MCS-51串行口有关的特殊功能寄行器为SBUF、SCON、PCON,下面对它们分别讨论。【相关知识】null 1.串行口数据缓冲器SBUF SBUF是一个特殊功能寄存器,有两个在物理上独立的接收缓冲器与发送缓冲器。发送缓冲器只能写入不能读出,写入SBUF的数据存储在发送缓冲器,用于串行发送;接收缓冲器只能读出不能写入。两个缓冲器共用一个地址99H,通过对SBUF的读、写指令来区别是对接收缓冲器还是发送缓冲器进行操作。接收或发送数据,是通过串行口对外的两条独立收发信号线RXD(P3.0)、TXD(P3.1)来实现的。 2.串行口控制寄存器SCON SCON用来控制串行口的工作方式和状态,字节地址为98H,可以位寻址。SCON的格式如下所示: SCON(98H)【相关知识】null各位功能说明如下: SM0、SMl:串行口工作方式选择位,其定义如表5-3所示。表5-3 串行口工作方式设定【相关知识】null SM2:多机通信控制位,用于方式2和方式3中。在方式2和方式3处于接收方式时,若SM2=1,表示置多机通信功能。如果接收到的第9位数据RB8为1,则将数据装入SBUF,并置RI为1,向CPU申请中断;如果接收到的第9位数据RB8为0,则不接收数据,RI仍为0,不向CPU申请中断。若SM2=0,不论接收到的第9位RB8为0还是为l,TI、RI都以正常方式被激活,接收到的数据装入SBUF。在方式1,若SM2=1,则只有收到有效的停止位后,RI置1。在方式0中,SM2应为0。 REN:允许串行接收位。REN=l时,允许接收;REN=0时,禁止接收。 TB8:发送数据的第9位。在方式2和方式3中,TB8是第9位发送数据,可做奇偶校验位。在多机通信中,可作为区别地址帧或数据帧的标识位,一般约定发送地址帧时,TB8为1,发送数据帧时,TB8为0。 RB8:接收数据的第9位。在方式2和方式3中,RB8是第9位接收数据。 【相关知识】null TI:发送中断标志位。在方式0中,发送完8位数据后,由硬件置位;在其它方式,在发送停止位时由硬件置位。因此,TI是发送完一帧数据的标志,当TI=l时,向CPU申请串行中断,响应中断后,必须由软件清除TI。 RI:接收中断标志位。在方式0中,接收完8位数据后,由硬件置位;在其它方式中在接收停止位的中间点由硬件置位。接收完一帧数据RI=l,向CPU申请中断,响应中断后,必须由软件清除RI。 3.电源及波特率选择寄存器PCON PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,字节地址为87H。在HMOS的8051单片机中,PCON 只有最高位被定义,其它位都是虚设的。 PCON(87H) PCON的最高位SMOD为串行口波特率的倍增位。在方式1、2和3时,串行通信的波特率与SMOD有关。当SMOD=l时,通信波特率加倍,当SMOD=0时,波特率不变。其它各位为掉电方式控制位,在此不再赘述。【相关知识】null二、MCS-51串行口的工作方式 MCS-51的串行口有4种工作方式,通过SCON中的SMl、SM0位来决定,如表5-4所示。 1.工作方式0 在方式0下,串行口作同步移位寄存器用,其波特率固定为fOSC/l2。串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出。移位数据的发送和接收以8位为一帧,无需起始位和停止位。这种方式常用于扩展I/O口。 2.工作方式1 方式1为波特率可调的8位通用异步通信接口。发送或接收一帧信息为10位,分别为起始位0,8位数据位和1位停止位1。 (1)数据发送 发送时,数据从TXD端输出。当执行MOV SBUF,A指令时,数据被写入发送缓冲器SBUF,启动发送器发送。当发送完一帧数据后,置中断标志TI为1。【相关知识】null (2)数据接收 接收时,数据从RXD端输入。当允许接收控制位REN为l后,串行口采样RXD,当采样到由1到0跳变时,确认是起始位“0”,启动接收器开始接收一帧数据。当RI=0且接收到停止位为l(或SM2=0)时,将停止位送入RB8,8位数据送入接收缓冲器SBUF,同时置中断标志RI=1。所以,方式1接收时,应先用软件清除RI或SM2标志。 3.工作方式2、方式3 在工作方式2、方式3下,串行口为9位异步通信接口,发送、接收一帧信息为11位:即1位起始位(0)、8位数据位、1位可编程位和1位停止位(1)。传送波特率与SMOD有关。其数据帧格式如下所示。 (1)数据发送 串行口工作于方式2、方式3进行数据发送时,数据由TXD端输出,附加的第9位数据为SCON中的RB8(由软件设置)。用指令将要发送的数据写入SBUF,即可启动发送器。送完一帧信息时,TI由硬件置1。【相关知识】null (2)数据接收 当REN=1时,允许接收。与方式1相同,CPU开始不断采样RXD,将8位数据送入SBUF中,接收到的第9位数据送入RB8中,当同时满足RI=0,SM2=0或接收到第9位数据为1这三个条件都满足时,置RI=1,否则接收数据无效。 三、MCS-51串行口的波特率 在串行通信中,收发双方必须采用相同的数据传输速度,即采用相同的波特率。MCS-51单片机的串行口有4种工作方式,其中方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,由定时器T1的溢出率决定。 1.方式0和方式2 在方式0中,波特率为时钟频率的1/12,即fOSC/12,固定不变。 在方式2中,波特率取决于PCON中的SMOD值: 当SMOD=0时,波特率为fOSC/64; 当SMOD=l时,波特率为fOSC/32,即波特率=2SMOD×fOSC/64。 2.方式1和方式3 在方式l和方式3下,波特率由定时器Tl的溢出率和SMOD共同决定, 即:波特率=2SMOD/32×n【相关知识】null 式中 n为定时器T1的溢出率。定时器T1的溢出率取决于定时器T1的预置值。通常定时器选用工作模式2,即自动重装载的8位定时器,此时TLl作计数用,自动重装载值存在THl内。设定时器的预置值 (初始值)为X,那么每过256-X个机器周期,定时器溢出一次, 此时应禁止T1中断。溢出周期为: 12/fOSC×(256一X) 溢出率为溢出周期的倒数,所以波特率为:波特率 =【例1】通信波特率为2400bps,f0SC=11.0592MHz,T1工作在模式2,其SMOD=0,计算T1的初值X: 根据波特率=2SMOD/32×n 得n=76800 根据,n= fOSC/〔12×(256一X)〕 得X=244 即:X=F4H,相应的程序为: MOV TMOD,#20H MOV TLl,#0F4H MOV THl,#0F4H SETB TRl MCS-51串行口常用波特率如表5-4所示。【相关知识】null表5-4 MCS-51串行口常用波特率【相关知识】null续表5-4 MCS-51串行口常用波特率【相关知识】null【项目考核】
本文档为【串口中断2】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_804831
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2010-09-02
浏览量:13