版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章MCS-51单片机串行口第7章MCS-51单片机串行口
目录7.1串行通信根本知识7.2串行口结构及控制7.3串行口工作方式7.4串行口应用举例7.5单片机与PC机通信的接口电路本章要点本章主要讲述MCS-51单片机串行口的结构、工作原理以及应用。 主要内容包括串行通信根本知识、MCS-51单片机串行口结构、串行口工作方式以及单片机与PC机通信的接口电路。7.1串行通信根本知识主要内容7.1.1数据通信7.1.2异步通信和同步通信7.1.3波特率7.1.4通信方向7.1.5串行通信接口种类7.1.1数据通信
计算机与外界的信息交换称为通信。根本的通信方法有并行通信和串行通信两种。 1.并行通信 单位信息〔通常指一个字节〕的各位数据同时传送的通信方法称为并行通信。 2.串行通信 单位信息的各位数据被分时一位一位依次顺序传送的通信方式称为串行通信。7.1.1数据通信图7-1并行通信示意图
从图中可以看出:并行通信连线多,速度快,适合近距离通信;串行通信连线少,速度慢,适合远距离通信。图7-1并行通信示意图图7-2串行通信示意图1、异步串行通讯★接收端是如何区分起始位与D0、D1、D2、D3、D4的?只需要一根数据线;不发送数据时,传输线呈现高电平(MARK状态)。字节按照固定的帧格式传送.采用不同的编码方案,发送字符可为5,6,7,或8位7.1.2异步通信和同步通信异步通信:指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。
2.同步通信 在同步通信中,每一数据块发送开始时,先发送一个或两个同步字符,使发送与接收取得同步,然后再顺序发送数据。数据块的各个字符间取消起始位和停止位,所以通信速度得以提高。7.1.2异步通信和同步通信图7-4同步通信数据帧格式共需要两根线,一根数据线DATA和一根时钟线CLK;按照时钟信号,从低到高逐个传送数据位.7.1.3波特率 在串行通信中,对数据传送速度有一定要求。波特率表示每秒传送的位数,单位为b/s〔bitpersecond,简写bps〕。 例如:数据传送速率为每秒钟10个字符,假设每个字符的一帧为11位,那么传送波持率为: 11b/字符×10字符/s=110b/s 异步通信的传送速率一般在50~19200b/s之间。在异步通讯中,接收设备和发送设备必须保持相同的波特率。7.1.4通信方向
单工方式:一对传输线只允许单方向传送数据;
半双工方式:一对传输线允许向两个方向中的任一方向传送数据,但不能同时进行;
全双工方式:用两对传输线连接在发送器和接收器上,发送和接收能同时进行。7.1.4单工、半双工、全双工通讯方式7.1.5串行通信接口种类 根据串行通信格式及约定〔如同步方式、通信速率、数据块格式等〕不同,形成了许多串行通信接口标准,如常见的: UART〔串行异步通信接口〕、 USB〔通用串行总线接口〕、 I2C〔集成电路间的串行总线〕、 SPI〔串行外设总线〕、 485总线、CAN总线接口等。7.2串行口结构及控制主要内容 7.2.1MCS-51串行口结构 7.2.2与串行口有关的特殊功能存放器 7.2.3波特率设计7.2.1MCS-51串行口结构图7-6串行口方式1、3内部结构示意简图8051的串行发送数据在8051里,假设要通过串行口发送数据,只要把8位数据放入串行缓冲器(SBUF)即可,8051就会帮我们把这些数据,一个位一个位送出去。8051的串行接收数据在8051里,假设要通过串行口接收数据,那么8051会自动接收串行数据,数据收集在串行缓冲器里,当8位数据到齐(串行缓冲器满了),8051就会中断,要我们把这笔数据提走。当单片机接收到一帧数据后,RI会置1,向CPU申请中断,假设之前有中断允许,那么产生了中断,进入中断效劳程序。
当然,单片机发送完一帧数据,TI也会置1,同样会产生中断!
一般我们在发送数据时要关中断,因为一般你不用在发送时不用处理数据;
接收数据时要开中断,以便你在中断效劳程序中将接收到的数据进行存储并处理。
补充:其实,不管你有没有允许中断,上位机〔此时即给单片机发送信息的机器〕只要给单片机发送数据,单片机就会自动接收数据,并把它放在数据缓冲器SBUF中,如果你之前有允许串行口中断,RI就会置1,向单片机CPU申请中断,并进入中断效劳程序,做完中断函数后就会自动返回断点。如果你没有允许中断,便不会产生串行中断。其实,别的中断都是某个I/O口电平变化产生。这只是外部中断产生条件,不过,你之前也需要用软件允许外部中断。7.2.2与串行口有关的特殊功能存放器 1.控制状态存放器SCON 用于定义串行通信口的工作方式和反映串行口状态,其字节地址为98H,复位值为00000000B,可位寻址格式为:D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRISM0和SM1〔SCON.7、SCON.6〕:串行口工作方式选择位。7.2.2与串行口有关的特殊功能存放器SM0SM1工作方式功能说明波特率00方式0同步移位寄存器fosc/1201方式18位数据UART可变(T1溢出率/32或/16)10方式29位数据UARTfosc/64或fosc/3211方式39位数据UART可变(T1溢出率/32或/16)SM2〔SCON.5〕:多机通信控制位,在方式2或3中使用。REN〔SCON.4〕:允许接收控制位,由软件置1或清0。9FH9EH9DH9CH9BH9AH99H98HSM0SM1SM2RENTB8RB8TIRISM2:允许方式2和方式3进行多机通讯控制位。在方式0、1中必须为0。〔不做要求〕REN:允许串行口接收控制位。写1允许接收,写0禁止接收。TB8:工作方式2和方式3下,发送的第9位数据,由软件写1或0。RB8:工作方式2和方式3下,接收到的第9位数据。TI:发送完毕中断标志位,发送SBUF内的数据发送出去后(SBUF由满变空),硬件自动置位TI。TI必须由软件清0。RI:接收完毕中断标志位,接收SBUF中接收到一个数据后(SBUF由空变满),硬件自动置位RI。RI必须由软件清0。7.2MCS-51单片机的串行通讯接口SFR:SCON串行接口控制器〔98H〕TB8〔SCON.3〕:发送数据的第9位。RB8〔SCON.2〕:接收数据的第9位。TI〔SCON.1〕:发送中断标志。RI〔SCON.0〕:接收中断标志。7.2.2与串行口有关的特殊功能存放器
关于TI和RI:串行发送中断标志TI和接收中断RI是同一个中断源,CPU事先不知道是发送中断标志TI还是接收中断标志RI产生的中断请求,所以,在全双工通信时,必须由软件来判别。SMODD7D0SMOD:波特率加倍位。在计算方式1、2、3的波特率时,为1波特率加倍,为0波特率不加倍。PCON不能位寻址。SFR:PCON〔87H〕 2.电源控制存放器PCON 电源控制存放器PCON(地址为87H)中只有SMOD位与串行口工作有关。 7.2.3波特率设计 方式0和方式2的波特率是固定的,方式1和方式3的波特率是由定时器T1的溢出率来决定的。在增强型单片机中,也可以使用T2作波特率发生器。 1.方式0的波特率 固定为振荡频率的1/12。并不受PCON存放器中SMOD位的影响。方式0的波特率=fosc/12 2.方式2的波特率 接收与发送的移位时钟由振荡频率fosc的第二节拍P2时钟〔fosc/2〕给出,所以,方式2波特率取决于PCON中SMOD位的值:当SMOD=0时,波特率为fosc的1/64;假设SMOD=1,那么波特率为fosc的1/32。即方式2的波特率=2SMOD×fosc/647.2.3波特率设计 3.方式1和方式3的波特率〔1〕T1作波特率发生器在最典型应用中,定时器T1选用定时器模式2,此时n=8,设定时器的初值为X:于是, X=256-
方式1、3的波特率=×〔T1溢出速率〕即波特率=××/〔2n-初值〕7.2.3波特率设计 〔2〕T2作波特率发生器 在增强型单片机中,还可以使用T2作为波特率发生器。当存放器T2CON的位TCLK=1和〔或〕RCLK=1时,允许串行口从T2获得发送和〔或〕接收的波特率。 串行口方式1、3的波特率=T2溢出率/16 定时器2作波特率发生器时,计数在每个状态周期递增。这样: 方式1、3的波特率=7.2.3波特率设计
主要内容
7.3.1串行口方式0
7.3.2串行口方式1
7.3.3串行口方式2和方式37.3串行口工作方式7.3.1串行口方式0 方式0为同步移位存放器输入/输出方式,常用于扩展I/O口。RXD为数据输入或输出,TXD为移位时钟,作为外接部件的同步信号。 方式0不适用于两个89C52之间的数据通信,可以通过外接移位存放器来实现单片机的接口扩展。 在这种方式下,收/发的数据为8位,低位在前,无起始位、奇偶校验位及停止位,波特率是固定的。工作方式0发送数据时,一般外接移位存放器(如74HC164)实现串并转换,用于扩展键盘和显示接口。74HC1648-bitserial-in,parallel-outshiftregisterRXDTXDP1.0D0D1D0D2D1D0D0D3D2D1D0D1D4D3D2D0D1D2D5D4D3D0D1D2D3D6D5D4D0D1D2D3D4D7D6D5实际应用中,工作方式0很少用于接收数据。7.3.1串行口方式0发送电路接收电路7.3.2串行口方式1 方式1真正用于串行发送或接收,为10位通用异步接口。TXD与RXD分别用于发送与接收数据。 收发一帧数据的格式为1位起始位、8位数据位〔低位在前〕、1位停止位,共10位。在接收时,停止位进入SCON的RB8,此方式的传送波特率可调。7.3.3串行口方式2和方式3 串行口工作在方式2和方式3均为每帧11位异步通信格式,由TXD和RXD发送与接收〔两种方式操作是完全一样的,不同的只是特波率〕。 每帧11位:即1位起始位、8位数据位〔低位在前〕、1位可编程的第9数据位和1位停止位。 发送时,第9数据位〔TB8〕可以设置为1或0,也可将奇偶位装入TB8; 接收时,第9数据位进入SCON的RB8。7.4串行口应用举例
主要内容
7.4.1同步方式应用
7.4.2异步方式应用7.4.1同步方式应用 MSC-51单片机的串行口在方式0时,以同步方式操作。外接串入/并出或并入/串出器件,可实现I/O口的扩展。 例7-2用89C52串行口外接164串入/并出移位存放器扩展8位并行输出口,外接165并入/串出移位存放器扩展8位并行输入口。8位并行输出口的每位都接一个发光二极管,要求从8位并行输入口读入开关的状态值,使闭合开关对应的发光二极管点亮。如图7-13所示。7.4.1同步方式应用图7-13方式0扩展输入输出电路解:数据的输入输出通过RXD接收和发送,移位时钟通过TXD送出,74HC164用于串/并转换,74HC165用于并/串转换。
C语言程序清单:#include<reg52.h>sbitP1_0=P1^0; sbitP1_1=P1^1;unsignedchardata1;voidmain(){ SCON=0x10; //串行口方式0,允许接收
ES=1; EA=1; //允许串行口中断7.4.1同步方式应用 P1_0=0; //关闭并行输出 P1_1=1; //并行置入数据 P1_1=0; //开始串行移位 SBUF=0; //送入串行数据 while(1); //等待中断}voids_srv()interrupt4 //中断效劳程序{ if(TI) //发送中断 { TI=0; P1_0=1; //翻开并行输出 }7.4.1同步方式应用
else //接收中断
{ RI=0; data1=SBUF; //读取接收的数据
P1_0=0; //关闭并行输出
SBUF=~data1; //送入串行数据
P1_1=1; //为接收下一次
P1_1=0; //数据做准备
}}
7.4.1同步方式应用7.4.2异步方式应用 串行口方式1与方式3很近似,波特率设置一样,不同之处在于方式3比方式1多了一个数据附加位。 方式2与方式3根本一样〔只是波特率设置不同〕,接收/发送11位信息:开始为1位起始位〔0〕,中间8位数据位.数据位之后为1位程控位〔由用户置SCON的TB8决定〕,最后是1位停止位〔1〕。只比方式1多了一位程控位。定时器T1产生的常用波特率
例7-3
将片内RAM50H~5FH中的数据串行发送,用第9个数据位作奇偶校验位,设晶振为11.0592MHz,波特率为2400b/s,编制串行口方式3的发送程序。
解:用TB8作奇偶校验位,在数据写入发送缓冲器之前.先将数据的奇偶位P写入TB8,这时,第9位数据作奇偶校验用,发送采用中断方式。7.4.2异步方式应用 C语言程序清单:#include<reg52.h>unsignedchari=0;unsignedchararray[16]_at_0x50; //发送缓冲区voidmain(){ SCON=0xc0; //串行口初始化
TMOD=0x20; //定时器初始化
TH1=0xf4; TL1=0xf4; TR1=1; ES=1; EA=1; //中断初始化
ACC=array[i]; //发送第一个数据送
TB8=P; //累加器,目的取P位
SBUF=ACC; //发送一个数据
while(1); //等待中断}7.4.2异步方式应用P(PSW.0)奇偶标志位:
P=1,A中“1〞的个数为奇数
P=0,A中“1〞的个数为偶数
voidserver()interrupt4 //串行口中断效劳程序{ TI=0; //清发送中断标志 ACC=array[++i]; //取下一个数据 TB8=P; SBUF=ACC; if(i==16) //发送完毕, ES=0; //禁止串口中断}7.4.2异步方式应用
例7-4
编写一个接收程序,将接收的16字节数据送入片内RAM50H~5FH单元中。设第9个数据位作奇偶校验位,晶振为11.0592MHz,波特率为2400b/s。
解:RB8作奇偶校验位,接收时,取出该位进行核对,接收采用查询方式。7.4.2异步方式应用 C语言程序清单:#include<reg52.h>unsignedchari;unsignedchararray[16]_at_0x50; //接收缓冲区voidmain(){ SCON=0xd0; //串行口初始化,允许接收
TMOD=0x20; TH1=0xf4; TL1=0xf4; TR1=1;7.4.2异步方式应用 for(i=0;i<16;i++) //循环接收16个数据
{ while(!RI); //等待一次接收完成
RI=0; ACC=SBUF; if(RB8==P) //校验正确
array[i]=ACC; else //校验不正确
{ F0=1; break; } } while(1);}7.4.2异步方式应用 例7-5用第9个数据位作奇偶校验位,编制串行口方式3的全双工通信程序,设双机将各自键盘的按键键值发送给对方,接收正确后放入缓冲区〔可用于显示或其它处理〕,晶振为11.0592MHz,波特率为9600b/s。 解:因为是全双工方式,通信双方的程序一样。发送和接收都采用中断方式。7.4.2异步方式应用 C语言程序清单:#include<reg52.h>chark;unsignedcharbuffer;voidmain(){ SCON=0xd0; //串行口初始化,允许接收
TMOD=0x20; //定时器初始化
TH1=0xfd; TL1=0xfd; TR1=1; ES=1; //开串行口中断
EA=1; //开总中断7.4.2异步方式应用 while(1) { k=key(); //读取按键按下键值
if(k!=-1) //无键按下返回-1 { ACC=k; //将键值送累加器,取P位
TB8=P; //送TB8 SBUF=ACC;//发送
} display(); //显示程序
}}7.4.2异步方式应用voidserial_server()interrupt4{ if(TI) //发送引起,清TI TI=0; else //否那么,接收引起 { RI=0; ACC=SBUF; //读取接收数据 if(RB8==P) //校验正确, buffer=ACC; //存入缓冲区 }}7.4.2异步方式应用7.5 单片机与PC机通信的接口电路主要内容7.5.1MAX232芯片简介7.5.2PC机与89C52串行通信的接口电路
利用PC机配置的异步通信适配器,可以很方便地完成PC机与单片机的数据通信。
PC机与89C52单片机最简单的连接是零调制3线经济型,这是进行全双工通信所必须的最少数目的线路。
7.5单片机与PC机通信的接口电路RS-232接口标准简述目前RS-232是PC与通信工业中应用最广泛的一种串行接口,其中EIA〔ElectronicIndustryAssociation〕代表美国电子工业协会,RS代表推荐标准,232是标识号。RS-232被定义为一种在低速率串行通信中增加通信距离的单端标准。一个完整的RS-232接口有22根线,采用标准的25芯插头座〔DB25〕。除此之外,目前广泛应用的还有一种9芯的RS-232接口〔DB9〕。 串行通信电平:由于89C52单片机输入、输出电平为TTL电平,而PC机配置的是RS-232C标准串行接口,二者的电气标准不一致。 数字值: 1 0 TTL电平: +5V 0V 232电平: -3V~-15V+3V~+15V 串行通信电平转换:要完成PC机与单片机的数据通信.必须进行电平转换。MAX232单芯片可实现89C52单片机与PC机的RS-232C之间的电平转换。7.5单片机与PC机通信的接口电路7.5.1MAX232芯片简介
MAX232芯片:是MAXIM公司生产的、包含两路接收器和驱动器的IC芯片,适用于各种EIA-232C和V.28/V.24的通信接口。
MAX232芯片的功能:
MAX232内部有一个电源电压变换器,可以把输入的+5V电源电压变换成为RS-232C输出电平所需的±10V电压。所以,采用此芯片接口的串行通信系统只需单一的+5V电源就可以了。对于没有±12V电源的场合,其适应性更强。
7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年山东省德州市中考物理试卷真题(含答案及详解)
- 2025届四平市三年级数学第二学期期末统考模拟试题(含答案)
- 2025届四川省眉山市东坡区三下数学期中监测试题含答案解析
- 2026年电动汽车电池安全防护技术报告
- 2026年体育用品行业专利布局与转化分析报告
- 2026年AI直播技术在企业培训中的应用报告
- 2026年农业行业报告:区域农业品牌与全国农业品牌竞争态势
- 2026年量子通信市场品牌战略研究报告
- 2026年区块链技术应用行业分析报告:金融与供应链
- 2026年在线教育行业未来五年发展与品牌竞争力报告
- 2026广东河源市龙川县恩波药械有限公司招聘8人考试备考试题及答案解析
- 2026年党支部书记党务工作培训练习题及答案
- 2026年中石化笔试题库(含答案)
- 高中美术必修《中国书法和中国画的密切关系》教学设计
- 2026秋沪科版(五四学制)八年级物理上册全册每课知识点清单
- 2026中银数字服务(南宁)有限公司招聘笔试模拟试题及答案详解
- RoHS 3.0 指令 2024-1020-EU 中文版(完整译文 + 新旧对比 + 2027 年实施时间表)
- 交管12123学法减分题库500题(含标准答案+解析2026全国)
- 高中入团积极分子考试题库
- 思想政治教育方法论考题
- 免疫规划知识普及课件
评论
0/150
提交评论