ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:59.89KB ,
资源ID:3079252      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3079252.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(RS232串行通讯相关.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

RS232串行通讯相关.docx

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

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

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

4、的第九位数据;可做奇偶校验位,由软件置位或复位。在多机通信中,可作为区别地址帧或数据帧的标识位,一般约定地址帧时,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时,波特率提高一倍;复位时,SMOD=0。3.串行口的四种工作方式:(1)方式0:8位同步移位寄存器(用于I/O扩展);为同步工作方式,不

5、能用于双机通信,只能与外界的同步移位寄存器配套进行工作;如果想进行异步串行通信,只能使用方式1,2,3进行。使用方式0实现数据的移位输入输出时,实际上是把串行口变成为并行口使用。串行口作为并行输出口使用时,要有“串入并出”的移位寄存器(例如 CD4094或74LS164、74HC164等)配合。一帧8位,无起、停位。RXD:数据输入/输出端。 TXD:同步脉冲输出端,每个脉冲对应一个数据位。波特率B = fosc/12,如:fosc=12MHz,B=1MHz,每位数据1微秒。发送过程:写入SBUF(启动发送),一帧发送完,TI=1。接收过程:REN=1且RI=0,启动接收,一帧接收完,RI=1

6、。方式0发送时序方式0接收时序 图三 方式0串口通信电路连接(2)方式1: 10位数据的异步通信一帧10位:起位+8位数据位+停位。波特率:用T1作波特率发生器,B=(2SMOD/32)T1溢出率。发送:写入SBUF(启动发送),一帧发送完,TI=1。接收:REN=1,RI=0且停止位为1 (或SM2=0),将接收数据装入SBUF,停止位装入RB8,并使RI=1;否则丢弃接收数据,不置位RI。图四 方式1传输数据帧格式方式1 发送数据帧时序方式1 接收数据帧时序(3)方式2 ,3 :11位数据的异步通讯一帧11位:起位+9位数据位+停位。第9位数据位在TB8/RB8中,常作校验位或多机通讯标识

7、位波特率: 方式2:B=(2SMOD/64)fosc 。 方式3:B=(2SMOD/32)T1溢出率 发送:先填写TB8,写入SBUF(启动发送),发送完TI=1。接收:REN=1,RI=0且第9位为1 (或SM2=0),将接收数据装入SBUF,第9位装入RB8,使RI=1;否则丢弃接收数据,不置位RI。图五 方式2,3传输数据帧格式方式2,3发送数据帧时序方式2,3接收数据帧时序4.波特率的计算:5.串口初始化的具体步骤:(1)串口初始化的一般步骤包括:确定T1的工作方式(编程TMOD寄存器);计算T1的初值,装载TH1、TL1;启动T1(编程TCON中的TR1位);确定串行口控制(编程SC

8、ON寄存器);串行口在中断方式工作时,还要进行中断设置(编程IE、IP寄存器)。6.51串口通信相关例程:(1)串口初始化,晶振为11.0592M,方式1,波特率30057600。void InitCom(unsigned char BaudRate)unsigned char THTL;switch (BaudRate)case 1: THTL = 64; break; /波特率300case 2: THTL = 160; break; /600case 3: THTL = 208; break; /1200case 4: THTL = 232; break; /2400case 5: TH

9、TL = 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;TL1 = THTL;PCON = 0x80; /波特率加倍控制,SMOD位RI = 0; /清收发标志TI = 0;TR1 = 1; /启动定时器(2)向串

10、口输出一个字符(非中断方式)void ComOutChar(unsigned char OutData)SBUF = OutData; /输出字符while(!TI); /空语句判断字符是否发完TI = 0; /清TI(3)向串口输出一个字符串(非中断方式)void ComOutStr(unsigned char *Str)while(*Str != 0x00) /判断是否到了字符串的尾部SBUF = *Str; /输出字符while(!TI); /空语句判断字符是否发完TI = 0; /清TIStr+; /字符串指针加一(4)从串口接收一个字符(非中断方式)unsigned char Com

11、InChar()unsigned char InData;while(!RI); /空语句判断字符是否收完InData = SBUF; /保存COM缓冲字符RI = 0; /清RIreturn (InData); /返回收到的字符(5)从串口接收一个定长字符串(非中断方式,只用于字符需有一个的idata字符串数组)/如unsigned char *Str;/unsigned char i=abcd;/InHandStr = &i;void ComInStr(unsigned char *Str)while(*Str != 0x00) /判断是否到了字符串的尾部while(!RI); /空语句判

12、断字符是否收完*Str = SBUF; /保存字符RI = 0; /清RIStr+; /字符串指针加一(6)向串口输出一个回车换行void ComOutEnter(void)SBUF = 0x00;while(!TI);TI = 0;SBUF = 0x0A;while(!TI);TI = 0;7. 51串口通信初始化程序自动生成(自动生成初始化程序,复制即可):(1)下载链接:(2)软件运行界面:8.串口工作在工作方式0例程:(1)电路原理图:基本电路有51单片机和74LS164组成,51的RXD接164的AB管脚,TXD接164的CLK管脚,P32接164的CLEAR管脚。电路实现的功能是5

13、1通过串口发送0至255的数值,164通过译码,将收到的数值并行通过LED进行输出。基本51的串口工作方式0,也仅用于如下的这种工作方式。(2)驱动程序:*includereg51.h*define uchar unsigned charsbit P32=P32;void Mode0_init();void Mode0_work();void delay();void main() Mode0_init(); Mode0_work();void Mode0_init() SCON=0x00; /SM0,SM1都为0,设定串口工作方式为0 ES=0; /禁止串口中断 P32=0; /P20的设置及输出时序是为了对74LS164进行寄存器清零 P32=1;void Mode0_work() uchar k=0; while(1) for(k=0;k=255;k+) SBUF=k; while(!TI) /等待数据传送完毕。一帧数据传送完毕后,TI自动变为1, TI=0; delay(); /设置的延时函数 if(k=255) k=0; void delay() uchar i=0; uchar j=0; for(i=0;i250;i+) for(j=0;j250;j+);9.串口工作在工作方式1例程:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1