版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机原理(yunl)及应用 (C语言版)第7章 MCS-51单片机串行口主 编:周国运本章制作(zhzu):鲁庆宾中国水利水电出版社共六十四页第7章 MCS-51单片机串行口 目 录7.1 串行通信基本知识7.2 串行口结构(jigu)及控制7.3 串行口工作方式7.4 串行口应用举例7.5 单片机与PC机通信的接口电路共六十四页本章要点 本章主要讲述MCS-51单片机串行口的结构、工作原理以及应用。主要内容(nirng)包括串行通信基本知识、MCS-51单片机串行口结构、串行口工作方式以及单片机与PC机通信的接口电路。共六十四页7.1 串行通信(tng xn)基本知识主要内容7.1.1 数
2、据通信7.1.2 异步通信和同步(tngb)通信7.1.3 波特率7.1.4 通信方向7.1.5 串行通信接口种类共六十四页7.1.1 数据通信 计算机与外界的信息交换称为通信。基本的通信方法有并行通信和串行通信两种。 1并行通信单位(dnwi)信息(通常指一个字节)的各位数据同时传送的通信方法称为并行通信。2串行通信单位信息的各位数据被分时一位一位依次顺序传送的通信方式称为串行通信。 共六十四页7.1.1 数据通信图7-1 并行(bngxng)通信示意图从图中可以看出:并行通信连线(lin xin)多,速度快,适合近距离通信;串行通信连线少,速度慢,适合远距离通信。图7-1 并行通信示意图图
3、7-2 串行通信示意图共六十四页1异步通信异步通信中,传送的数据可以是一个字符(z f)代码或一个字节数据,数据以帧的形式一帧一帧传送。 7.1.2 异步通信(tng xn)和同步通信(tng xn)图7-3 异步通信的一帧数据格式共六十四页2同步通信在同步通信中,每一数据块发送开始时,先发送一个或两个(lin )同步字符,使发送与接收取得同步,然后再顺序发送数据。数据块的各个字符间取消起始位和停止位,所以通信速度得以提高 。7.1.2 异步通信(tng xn)和同步通信(tng xn)图7-4 同步通信数据帧格式共六十四页7.1.3 波特率在串行通信(tng xn)中,对数据传送速度有一定要
4、求。波特率表示每秒传送的位数,单位为b/s(记作波特)。例如:数据传送速率为每秒钟10个字符,若每个字符的一帧为11位,则传送波持率为:11b/字符10字符/s110b/s异步通信的传送速率一般在5019 200b/s之间 。共六十四页7.1.4 通信(tng xn)方向单工方式:一对传输线只允许单方向(fngxing)传送数据;半双工方式:一对传输线允许向两个方向中的任一方向传送数据,但不能同时进行;全双工方式:用两对传输线连接在发送器和接收器上,发送和接收能同时进行。共六十四页7.1.4 通信(tng xn)方向图7-5 串行通信(tng xn)传输方式共六十四页7.1.5 串行通信接口种
5、类(zhngli)根据串行通信格式(g shi)及约定(如同步方式、通信速率、数据块格式(g shi)等)不同,形成了许多串行通信接口标准,如常见的:UART(串行异步通信接口)、USB(通用串行总线接口)、I2C(集成电路间的串行总线)、SPI(串行外设总线)、485总线、CAN总线接口等。共六十四页7.2 串行口结构(jigu)及控制主要内容7.2.1 MCS-51串行口结构7.2.2 与串行口有关的特殊功能(gngnng)寄存器7.2.3 波特率设计共六十四页7.2.1 MCS-51串行口结构(jigu)图7-6 串行口方式(fngsh)1、3内部结构示意简图共六十四页7.2.2 与串行
6、口有关的特殊(tsh)功能寄存器1控制(kngzh)状态寄存器SCON用于定义串行通信口的工作方式和反映串行口状态,其字节地址为98H,复位值为0000 0000B,可位寻址格式为:D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI共六十四页SM0和SM1(SCON.7、SCON.6):串行口工作(gngzu)方式选择位。 7.2.2 与串行口有关(yugun)的特殊功能寄存器SM0SM1工作方式功能说明波特率00方式0同步移位寄存器fosc/1201方式18位数据UART可变(T1溢出率/32或/16)10方式29位数据UARTfosc/64或 fosc/3211方
7、式39位数据UART可变(T1溢出率/32或/16)SM2(SCON.5):多机通信控制位,在方式2或3中使用。REN(SCON.4):允许接收控制位,由软件置1或清0。共六十四页TB8(SCON.3):发送数据的第9位。RB8(SCON.2):接收数据的第9位。TI(SCON.1):发送(f sn)中断标志。RI(SCON.0):接收中断标志。7.2.2 与串行口有关的特殊(tsh)功能寄存器关于TI和RI:串行发送中断标志TI和接收中断RI是同一个中断源,CPU事先不知道是发送中断标志TI还是接收中断标志RI产生的中断请求,所以,在全双工通信时,必须由软件来判别。共六十四页2电源控制寄存器
8、PCON电源控制寄存器PCON (地址为87H)中只有SMOD位与串行口工作(gngzu)有关。D7D6D5D4D3D2D1D0SMOD-GF1GF0PDIDL7.2.2 与串行口有关(yugun)的特殊功能寄存器SMOD(PCON.7):波特率倍增位。串行口工作于方式1、方式2和方式3时,当SMOD1时,串行口波特率加倍。复位值为0000 0000B。PCON寄存器不能进行位寻址。共六十四页7.2.3 波特率设计(shj)方式0和方式2的波特率是固定的,方式1和方式3的波特率是由定时器T1的溢出率来决定(judng)的。在增强型单片机中,也可以使用T2作波特率发生器。1方式0的波特率固定为振
9、荡频率的1/12。并不受PCON寄存器中SMOD位的影响。方式0的波特率=fosc/12共六十四页2方式2的波特率接收与发送的移位时钟由振荡(zhndng)频率fosc的第二节拍P2时钟(fosc/2)给出,所以,方式2波特率取决于PCON中SMOD位的值:当SMOD=0时,波特率为fosc的1/64;若SMOD=1,则波特率为fosc的1/32。即方式2的波特率= 2SMODfosc/647.2.3 波特率设计(shj)共六十四页3方式1和方式3的波特率(1)T1作波特率发生器在最典型(dinxng)应用中,定时器T1选用定时器模式2,此时n=8,设定时器的初值为X:于是,X=256 - 方
10、式(fngsh)1、3的波特率= (T1溢出速率)即波特率= /(2n -初值)7.2.3 波特率设计共六十四页(2)T2作波特率发生器在增强型单片机中,还可以使用T2作为波特率发生器。当寄存器T2CON的位TCLK=1和(或)RCLK=1时,允许串行口从T2获得发送和(或)接收的波特率。 串行口方式1、3的波特率=T2溢出率/16定时器2作波特率发生器时,计数在每个状态(zhungti)周期递增。这样:方式1、3的波特率=7.2.3 波特率设计(shj)共六十四页主要(zhyo)内容7.3.1 串行口方式07.3.2 串行口方式17.3.3 串行口方式2和方式37.3 串行口工作(gngzu
11、)方式共六十四页7.3.1 串行口方式(fngsh)0方式0为同步移位寄存器输入/输出方式,常用于扩展I/O口。RXD为数据输入或输出,TXD为移位时钟,作为外接部件的同步信号。方式0不适用于两个89C52之间的数据通信,可以通过外接移位寄存器来实现单片机的接口扩展。在这种方式下,收/发的数据为8位,低位在前,无起始位、奇偶校验位及停止(tngzh)位,波特率是固定的。共六十四页7.3.1 串行口方式(fngsh)0发送(f sn)电路接收电路共六十四页7.3.2 串行口方式(fngsh)1方式1真正用于串行发送或接收(jishu),为10位通用异步接口。TXD与RXD分别用于发送与接收数据。
12、收发一帧数据的格式为1位起始位、8位数据位(低位在前)、1位停止位,共10位。在接收时,停止位进入SCON的RB8,此方式的传送波特率可调。共六十四页7.3.3 串行口方式(fngsh)2和方式(fngsh)3串行口工作在方式2和方式3均为每帧11位异步通信格式,由TXD和RXD发送与接收(两种方式操作是完全一样的,不同的只是特波率)。每帧11位:即1位起始(q sh)位、8位数据位(低位在前)、1位可编程的第9数据位和1位停止位。发送时,第9数据位(TB8)可以设置为1或0,也可将奇偶位装入TB8;接收时,第9数据位进入SCON的RB8。 共六十四页7.4 串行口应用(yngyng)举例 主
13、要(zhyo)内容 7.4.1 同步方式应用 7.4.2 异步方式应用共六十四页7.4.1 同步方式(fngsh)应用MSC-51单片机的串行口在方式0时,以同步方式操作。外接串入/并出或并入/串出器件,可实现(shxin)I/O口的扩展。例7-2 用89C52串行口外接164串入/并出移位寄存器扩展8位并行输出口,外接165并入/串出移位寄存器扩展8位并行输入口。8位并行输出口的每位都接一个发光二极管,要求从8位并行输入口读入开关的状态值,使闭合开关对应的发光二极管点亮。如图7-13所示。共六十四页7.4.1 同步(tngb)方式应用图7-13 方式(fngsh)0扩展输入输出电路共六十四页
14、解:数据的输入输出通过RXD接收和发送,移位(y wi)时钟通过TXD送出,74HC164用于串/并转换,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 同步方式(fngsh)应用共六十四页P1_0=0;/关闭并行输出P1_1=1;/并行置入数据P1_1=0; /开始串行移位SBUF=0;/送入串行数据while(1);/等待中断(zhngdun)void s_srv
15、() interrupt 4/中断服务程序if(TI)/发送中断TI=0;P1_0=1;/打开并行输出7.4.1 同步(tngb)方式应用共六十四页else/接收中断(zhngdun)RI=0;data1=SBUF;/读取接收的数据P1_0=0;/关闭并行输出SBUF=data1;/送入串行数据P1_1=1;/为接收下一次P1_1=0;/数据做准备汇编语言程序清单:ORG 0000HSJMP MAINORG 23HSJMP S_SRV ;串行口中断服务程序7.4.1 同步(tngb)方式应用共六十四页MAIN: MOV SCON,#10H ;串行口方式0初始化SETB ESSETB EAMOV
16、 A,#0CLR P1.0;关闭并行输出MOV SBUF,A;开始串行输出SETB P1.1CLR P1.1SJMP $;等待(dngdi)中断7.4.1 同步(tngb)方式应用共六十四页S_SRV:JBC TI,SENDCLRRIMOV A,SBUFCLR P1.0CPL AMOV SBUF,ASETB P1.1CLR P1.1RETISEND:SETB P1.0RETI7.4.1 同步方式(fngsh)应用共六十四页7.4.2 异步方式(fngsh)应用串行口方式1与方式3很近似(jn s),波特率设置一样,不同之处在于方式3比方式1多了一个数据附加位。方式2与方式3基本一样(只是波特率
17、设置不同),接收/发送11位信息:开始为1位起始位(0),中间8位数据位数据位之后为1位程控位(由用户置SCON的TB8决定),最后是1位停止位(1)。只比方式1多了一位程控位。共六十四页例7-3 将片内RAM 50H5FH中的数据串行发送,用第9个数据位作奇偶校验位,设晶振为11.059 2MHz,波特率为2 400b/s,编制串行口方式3的发送程序(chngx)。解:用TB8作奇偶校验位,在数据写入发送缓冲器之前先将数据的奇偶位P写入TB8,这时,第9位数据作奇偶校验用,发送采用中断方式。7.4.2 异步方式(fngsh)应用共六十四页C语言程序清单:#includeunsigned ch
18、ar i=0;unsigned char array16 _at_ 0 x50;/发送缓冲区void main()SCON=0 xc0;/串行口初始化TMOD=0 x20;/定时器初始化TH1=0 xf4;TL1=0 xf4;TR1=1; ES=1; EA=1; /中断初始化ACC=arrayi;/发送第一个数据送TB8=P; /累加器,目的取P位SBUF=ACC;/发送一个(y )数据while(1);/等待中断7.4.2 异步方式(fngsh)应用共六十四页void server() interrupt 4/串行口中断服务程序TI=0;/清发送中断标志(biozh)ACC=array+i;
19、/取下一个数据TB8=P;SBUF=ACC;if(i=16) /发送完毕,ES=0;/禁止串口中断7.4.2 异步方式(fngsh)应用共六十四页汇编语言(hu bin y yn)程序清单:ORG0000HSJMPMAIN ;上电,转主程序ORG23HSJMPSERVER ;转中断服务程序MAIN:MOVSCON,#0C0H;串行口方式3初始化MOVTMOD,#20H;定时器1工作在方式2MOVTH1,#0F4HMOVTL1,#0F4HSETBTR1SETBES;允许串行口中断SETBEA;CPU开中断MOVR0,#50HMOVR7,#0FH7.4.2 异步方式(fngsh)应用共六十四页MO
20、VA,R0MOVC,PMOVTB8,C ;送奇偶标志(biozh)位到TB8MOVSBUF,A ;发送第一个数据SJMP$SERVER:CLRTI ;清除发送中断标志INCR0 ;修改数据地址MOVA,R0MOVC,PMOVTB8,CMOVSBUF,A ;发送下一个数据DJNZR7,ENDT ;判断数据块是否发送完CLRES ;否则,禁止串行口中断ENDT:RETI ;中断返回7.4.2 异步方式(fngsh)应用共六十四页例7-4 编写一个接收程序(chngx),将接收的16字节数据送入片内RAM 50H5FH单元中。设第9个数据位作奇偶校验位,晶振为11.059 2 MHz,波特率为2 4
21、00b/s。解:RB8作奇偶校验位,接收时,取出该位进行核对,接收采用查询方式。7.4.2 异步方式(fngsh)应用共六十四页C语言程序清单:#includeunsigned char i;unsigned char array16 _at_ 0 x50; /接收缓冲区void main()SCON=0 xd0; /串行口初始化,允许(ynx)接收TMOD=0 x20;TH1=0 xf4;TL1=0 xf4;TR1=1;7.4.2 异步方式(fngsh)应用共六十四页for(i=0;i16;i+) /循环接收(jishu)16个数据while(!RI); /等待一次接收完成RI=0;ACC=
22、SBUF;if(RB8=P) /校验正确arrayi=ACC; else /校验不正确F0=1;break;while(1);7.4.2 异步方式(fngsh)应用共六十四页汇编语言程序清单:MAIN:MOV TMOD,#20H;定时器初始化MOV TH1,#0F4HMOV TL1,#0F4HSETB TR1MOV SCON,#0D0H;串口初始化,允许接收MOV R0,#50H;首地址送R0MOV R7,#10H;数据长度(chngd)送R7WAIT:JNB RI,$;等待接收完成 CLR RI;清中断标志 MOV A,SBUF;读数到累加器7.4.2 异步方式(fngsh)应用共六十四页J
23、NBP,PNP;P=0,转PNPJNBRB8,ERROR;P=1,RB8=0,转出错SJMP RIGHTPNP:JBRB8,ERROR;P=0,RB8=1,转出错RIGHT:MOV R0,A;存数INCR0;修改地址指针DJNZ R7,WAIT;未接收完,继续CLRF0;置正确(zhngqu)接收标志F0=0RETERROR:SETB F0;置错误接收标志F0=1RET7.4.2 异步方式(fngsh)应用共六十四页例7-5 用第9个数据位作奇偶校验位,编制串行口方式3的全双工通信程序,设双机将各自键盘的按键键值发送给对方,接收正确后放入缓冲区(可用于显示或其它处理),晶振为11.059 2
24、MHz,波特率为9 600b/s。解:因为是全双工方式,通信双方的程序一样。发送(f sn)和接收都采用中断方式。7.4.2 异步方式(fngsh)应用共六十四页C语言程序清单:#includechar k;unsigned char buffer;void main()SCON=0 xd0; /串行口初始化, 允许(ynx)接收TMOD=0 x20; /定时器初始化TH1=0 xfd;TL1=0 xfd;TR1=1;ES=1; /开串行口中断EA=1; /开总中断7.4.2 异步方式(fngsh)应用共六十四页while(1)k=key(); /读取按键按下键值if(k!=-1) /无键按下
25、返回(fnhu)-1ACC=k; /将键值送累加器,取P位TB8=P; /送TB8SBUF=ACC; /发送display(); /显示程序7.4.2 异步方式(fngsh)应用共六十四页void serial_server() interrupt 4if(TI) /发送引起,清TITI=0;else /否则(fuz),接收引起RI=0;ACC=SBUF; /读取接收数据if(RB8=P) /校验正确, buffer=ACC; /存入缓冲区7.4.2 异步方式(fngsh)应用共六十四页汇编语言程序清单:ORG 0000HSJMP MAIN ;跳转到主程序ORG 23HLJMP S_SERV
26、;跳转到串口中断服务程序MAIN:MOV SP,#0DFH ;设置堆栈指针(zhzhn)MOV SCON,#0D0H ;串口初始化MOV TMOD,#20H ;定时器初始化,T1方式2MOV TH1,#0FDHMOV TL1,#0FDH ;定时器1赋初值7.4.2 异步方式(fngsh)应用共六十四页SETB TR1 ;启动定时器1SETB ES ;开中断SETB EALOOP:LCALL KEY;读取按键(参看第9章), ;有键按下返回(fnhu)键值,CJNE A,#0FFH,SEND ;无键按下返回0FFH,;有键按下转发送NEXT:LCALL DISPLAY ;调用显示LJMP LOO
27、P ;主程序循环7.4.2 异步方式(fngsh)应用共六十四页SEND:MOV C,PMOV TB8,CMOV SBUF,A;带校验位发送LJMP LOOP;循环S_SERV:JBC RI,RECV ;是接收(jishu)中断转接收(jishu)处理CLR TI; 是发送中断,清TIRETI 7.4.2 异步方式(fngsh)应用共六十四页RECV: ;接收处理程序MOV A,SBUF;取接收值送AJB P,ONE;校验位为1,转JB RB8,I_END;校验错,转中断(zhngdun)返回SJMP RIGHT;校验正确,正确处理ONE:JNB RB8,I_END;校验错,转中断返回RIGH
28、T:MOV BUFFER,A;接收数据送缓冲区I_END:RETI ;中断返回7.4.2 异步方式(fngsh)应用共六十四页7.5单片机与PC机通信(tng xn)的接口电路主要内容7.5.1 MAX232芯片简介(jin ji)7.5.2 PC机与89C52串行通信的接口电路共六十四页利用PC机配置的异步通信适配器,可以很方便(fngbin)地完成PC机与单片机的数据通信。PC机与89C52单片机最简单的连接是零调制3线经济型,这是进行全双工通信所必须的最少数目的线路。7.5 单片机与PC机通信的接口(ji ku)电路共六十四页串行通信电平:由于89C52单片机输入、输出电平为TTL电平,而PC机配置的是RS-232C标准串行接口,二者的电气规范不一致。数字(shz)值: 1 0TTL电平: +5V 0V232电平:-3V-15V +3V+15V串行通信电平转换:要完成PC机与单片机的数据通信必须进行电平转换。MAX232单芯片可实现89C52单片机与PC机
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新疆乌鲁木齐市2024-2025学年高二上学期期末英语B试卷(无答案)
- 2024男方公司经营权离婚协议书3篇
- 2024琴行钢琴出租合同含钢琴租赁与品牌合作服务3篇
- 2024贴牌合作:家居用品定制生产合同协议3篇
- 2024计划内安全生产职责明确协议版B版
- 2024物品抵押企业经营贷款合同3篇
- 2024年小学安全工作总结范文
- 2024年车辆安全责任协议
- 2025年度不良资产证券化项目尽职调查与合规审查合同3篇
- 2024版过路顶管施工合同
- GB/T 2423.17-2024环境试验第2部分:试验方法试验Ka:盐雾
- 无脊椎动物课件-2024-2025学年人教版生物七年级上册
- 2024AI Agent行业研究报告
- 华为质量回溯(根因分析与纠正预防措施)模板
- GB/T 23587-2024淀粉制品质量通则
- 法人贷款免责说明范文
- 中国急性缺血性卒中诊治指南(2023)解读
- 2024-2029年盐酸咪达唑仑行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 南方的耕作制度
- 2024年成都温江兴蓉西城市运营集团有限公司招聘笔试冲刺题(带答案解析)
- 手术器械生锈的原因分析
评论
0/150
提交评论