RS232串行通讯相关_第1页
RS232串行通讯相关_第2页
RS232串行通讯相关_第3页
RS232串行通讯相关_第4页
RS232串行通讯相关_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、RS232串行通信相关异步串行通讯数据格式:一帧异步通讯的数据格式主要包含一下几个部分:(1) 起始位:起始位以一位低电平开始,表示发送端开始发送一帧数据。(2) 数据位:数据位即要传递的数据信息,一般低位在前,高位在后,数据位长度一 般为510位,常见为8位。(3) 奇偶校验位:用于校验数据的正确性,可用奇校验,或偶校验。(4) 停止位:用于向接收端表示一帧信息已经发送完毕,长度一般为12位。(5) 空闲位:空闲位一般用高电平表示,用于通知接受端等待数据传输。图一 串行通信数据格式波特率:在异步通信(收发设备各自使用自己的时钟)中,除了规定好数据传输格式外,还要有规定好的波特率:1 波特=1

2、bps (位 /秒)在系统设计中,需根据通信需求选择波特率:例,设计的数据传输率为 300字节每秒,而每帧数据长度为11位,需要的波特率如下:300 帧/秒 *11 位 /帧=3300 位 /秒=3300bpsRS232接口设计:1. RS232接口定义:(1 )载波检测(DCD)(2 )接受数据(RXD) V(3) 发出数据(TXD) V(4 )数据终端准备好(DTR)(5 )信号地线(SG) V(6) 数据准备好(DSR)(7 )请求发送(RTS)(8 )清除发送(CTS)(9)振铃指示(RI)2. RS232接口针脚:图二.RS232接头针脚定义四.51的串行口通信:1. 串行口控制寄存

3、器 SCON (98H):(1) SM0 , SM1 :用于设置串口的工作方式,进行工作方式的选择;(2) SM2 :多机通信控制位,应用于方式2与方式3中;在方式0中,SM2应为0;在方式1处于接收时,若 SM2=1,则只有收到有效的停止位后,RI置1;在方式2,3处于接收方式时:SM2=0,收至U RB8( 0或1)既可使收到的数据进入 SBUF,也可以激活 RI。SM2=1,收到的RB8 = 0时,收到的信息丢弃,不激活 RI ;若收到的RB8 = 1时, 收到的数据进入 SBUF,并激活RI,进而在中断服务中将数据从SBUF读走。(3) REN :允许串行接收位;REN=0,禁止串行接

4、收;REN=1,允许串行接收。(4) TB8 :在方式2,3中,是发送机要发送的第九位数据;可做奇偶校验位,由软件置位或复位。在多机通信中,可作为区别地址帧或数据帧的标识位,一般约定地址帧时,TB8为1,数据帧时,TB8为0。(5) RB8 :在方式2, 3中,接收来自发送机的第 9位数据(TB8);(6) TI :发送中断标志,发送一帧结束,TI=1,必须软件清零;(7) RI :接收中断标志,接收一帧结束,RI=1,必须软件清零。2. 电源功能寄存器 PCON ( 87H):SMOD,波特率倍增位,在方式 1、2、3时,波特率与 SMOD有关:SMOD=1时,波特率提高一倍;复位时,SMO

5、D=0。3. 串行口的四种工作方式:(1)方式0: 8位同步移位寄存器(用于 I/O扩展);为同步工作方式,不能用于双机通 信,只能与外界的同步移位寄存器配套进行工作;如果想进行异步串行通信,只能使用方式1,2,3进行。使用方式0实现数据的移位输入输出时,实际上是把串行口变成为并行口使用。 串行口作为并行输出口使用时,要有串入并出”的移位寄存器(例如 CD4094或74LS164、74HC164等)配合。一帧8位,无起、停位。RXD :数据输入/输出端。TXD :同步脉冲输出端,每个脉冲对应一个数据位。波特率 B = fosc/12,女口 :fosc=12MHz,B=1MHz,每位数据 1 微

6、秒。发送过程:写入 SBUF (启动发送),一帧发送完,Tl=1。接收过程:REN=1且RI=0,启动接收,一帧接收完,Rl=1。方式0发送时序方式0接收时序图三 方式0串口通信电路连接装入RB8,使RI=1 ;否则丢弃接收数据,不置位 RI。一帧10位:起位+8位数据位+停位。波特率:用T1作波特率发生器,B=(2SMOD/32) XT1溢出率。发送:写入SBUF (启动发送),一帧发送完,Tl=1。接收:REN=1,Rl=0且停止位为1 (或SM2=0 ),将接收数据装入 SBUF,停止位装入RB8,并使Rl=1 ;否则丢弃接收数据,不置位 RI。图四方式1传输数据帧格式方式1发送数据帧时

7、序方式1接收数据帧时序(3) 方式2,3 : 11位数据的异步通讯一帧11位:起位+9位数据位+停位。第9位数据位在TB8/RB8中,常作校验位或多机通讯标识位波特率:方式 2: B=(2SMOD/64) Xfosc。方式 3: B=(2SMOD/32) XT1 溢出率发送:先填写TB8,写入SBUF (启动发送),发送完Tl=1。接收:REN=1 , RI=0且第9位为1 (或SM2=0),将接收数据装入 SBUF,第9位图五方式2,3传输数据帧格式方式2,3发送数据帧时序方式2,3接收数据帧时序4. 波特率的计算:5. 串口初始化的具体步骤:(1)串口初始化的一般步骤包括:确定T1的工作方

8、式(编程 TMOD寄存器); 计算T1的初值,装载 TH1、TL1 ;启动T1 (编程TCON中的TR1位);IE、IP寄存器)。57600。确定串行口控制(编程 SCON寄存器);串行口在中断方式工作时,还要进行中断设置(编程6. 51串口通信相关例程:(1) 串口初始化,晶振为 11.0592M,方式1,波特率300void In itCom (un sig ned char BaudRate)un sig ned char THTL;switch (BaudRate)case 1: THTL = 64; break; / 波特率 300case 2: THTL = 160; break;

9、 /600case 3: THTL = 208; break; /1200case 4: THTL = 232; break; /2400case 5: THTL = 244; break; /4800case 6: THTL = 250; break; /9600case 7: THTL = 253; break; /19200case 8: THTL = 255; break; /57600default: THTL = 208;SCON = 0x50; /串口方式1,允许接收TMOD = 0x20; /定时器1定时方式2TCON = 0x40; /设定时器1开始计数TH1 = THTL;

10、TL1 = THTL;PCON = 0x80; /波特率加倍控制,SMOD位RI = 0; /清收发标志TI = 0;TR1 = 1; /启动定时器(2) 向串口输出一个字符(非中断方式)void ComOutChar( un sig ned char OutData)SBUF = OutData; / 输出字符while(!TI); /空语句判断字符是否发完TI = 0; / 清 TI(3 )向串口输出一个字符串(非中断方式)void ComOutStr(u nsig ned char *Str)while(*Str != 0x00) /判断是否到了字符串的尾部SBUF = *Str; /输

11、出字符while(!TI); /空语句判断字符是否发完TI = 0; / 清 TIStr+; /字符串指针加一(4) 从串口接收一个字符(非中断方式)un sig ned char Comln Char()un sig ned char In Data;while(!RI); /空语句判断字符是否收完In Data = SBUF; /保存COM缓冲字符RI = 0; / 清 RIreturn (InData); /返回收到的字符idata字符串数组)(5) 从串口接收一个定长字符串(非中断方式,只用于字符需有一个的/女口 unsigned char *Str;un sig ned char i

12、=abcd;/I nHan dStr = &i;void ComlnStr(un sig ned char *Str)while(*Str != 0x00) /判断是否到了字符串的尾部while(!RI); /空语句判断字符是否收完*Str = SBUF; /保存字符RI = 0; / 清 RIStr+; /字符串指针加一(6) 向串口输出一个回车换行void ComOutE nter(void)SBUF = 0x00;while(!TI);TI = 0;SBUF = 0x0A;while(!TI);TI = 0; 7. 51串口通信初始化程序自动生成(自动生成初始化程序,复制即可)(1) 下

13、载链接:(2) 软件运行界面:8. 串口工作在工作方式 o例程:(1) 电路原理图:基本电路有51单片机和74LS164组成,51的RXD接164的AB管脚,TXD接164 的CLK管脚,P32接164的CLEAR管脚。电路实现的功能是 51通过串口发送 0至255 的数值,164通过译码,将收到的数值并行通过LED进行输出。基本51的串口工作方式0,也仅用于如下的这种工作方式。(2) 驱动程序:#i ncludereg51.h#defi ne uchar un sig ned charsbit P32=P3A2;void Mode0_i ni t();void Mode0_work();void delay();void mai n()Mode0_i nit();Mode0_work();void Mode0_i nit()SC0N=0x00; SM0, SM1都为0,设定串口工作方式为0ES=0;禁止串口中断P32=0;/P20的设置及输出时序是为了对74LS164进行寄存器清零P32=

温馨提示

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

评论

0/150

提交评论