单片机串行口课件_第1页
单片机串行口课件_第2页
单片机串行口课件_第3页
单片机串行口课件_第4页
单片机串行口课件_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

1、第六章 MCS-51的串行口,6.1 串行通信基础知识 6.2 串行口的结构 6.3 串行口的 4 种工作方式 6.4 多机通讯 6.5 串行口的编程和应用,异步通信方式,0,1,停止位,起始位,低位,高位,7位数据位,奇偶校验,停止位,第N个字符,第N-1个字符,同步通信方式(Synchronous Data Communication),串行通信的波特率,波特率(band rate)是异步通信中每秒钟传送的二进制数码的位数(比特数),单位是位/秒。 作用:1、反映串行通信的速率; 2、反映对传输通道的要求:波特率越高,要求的传输 通道的频带宽度就越宽。 异步通信:波特率为每秒传送的字符数和

2、每个字符位数的乘积。,6.2 MCS-51串行口的结构,MCS-51有一个可编程的全双工串行通信接口,可作为通用异步收发器(UART),也可作为同步移位寄存器。它的帧格式有8位、10位和11位,可以设置为固定波特率和可变波特率,给使用者带来很大的灵活性。,串行口内部结构示意简图,串行口控制寄存器SCON,(1)SCON(98H),(2)PCON(87H) 电源控制寄存器PCON中只有SMOD位与串行口工作有关,如下图所示。,电源控制寄存器PCON,6.3 串行口的 4 种工作方式,方式的选择由SM0 、 SM1实现。 四种方式的比较:,1.串行口方式0 同步移位寄存器方式,方式0以8位数据为一

3、帧,不设起始位和停止位,先发送或接收最低位。其帧格式如下:,串行数据通过RXD输入或输出,而TXD用于输出移位时钟,作为外接部件的同步信号。 这种方式不适用于两个8051之间的串行通信,但可以通过外接移位寄存器来实现单片机的I/O接口扩展。,串行口方式0的应用(P150,P169),串行口扩展显示器 【例1】用8位串入并出移位寄存器74HC164扩展显示器。,功能:把数据从显示缓冲区送到数码管。 入口;要显示的数放在以DIS0为首的8个单元中。 出口:把预置的数输出以更新原有的显示。,编写程序实现:,MOV R7,08H ;显示8个数码管 MOV R0,DIS0 ;显示缓冲区未地址送入R0 D

4、L0:MOV A,R0 ;取要显示数作查表偏移量 MOV DPTR,TAB ;指向字形表首 MOVC A,ADPTR;查表得字形码 MOV SBUF,A ;发送显示 DL1:JNB T1,DL1 ;等待发送完一帧 CLR TI ;清中断标志,准备继续发送 DEC R0 ;更新显示单元 DJNZ R7,DL0 ;重复显示所有数码管 RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H;0,1,2,3,4, DB 92H,82H,0F8H,80H,90H;5,6,7,8,9, DB 88H,83H,0C6H,0A1H,86H;A,B,C,D,E, DB 8EH,0BFH,8CH,

5、0FFH;F,P,暗,74LS165,其中A ,B,C,D,E,F,G,H 并行输入端。 QH串行输出端。 CLOCK:时钟输入端。 CLOCK INHIBIT:时钟禁止端。当时钟禁止端CLK2为低电平时,允许时钟输入。 SHIFT/LOAD:移位与置位控制端。 SER:扩展多个74LS165的首尾连接端。,74LS165是一个并行输入串行输出的移位寄存器。,图(b) 方式 0 接收电路及时序,串行口方式0的应用(P150,P169),串行口扩展的键盘,ORG 0100H START: CLR P1.0 ;载入数据 NOP; NOP; SETB P1.0;数据输出 CLR P1.1;允许时钟输

6、入 RCVI: MOV SCON,10H JNB RI,$ CLR RI MOV A,SBUF ;判断键值,散转 OPR0: LJMP START,TAB: AJMP OPR0 AJMP OPR1 AJMP OPR7,2.串行口方式1 10位UART,方式1以10位为一帧传输,设有1个起始位(0),8个数据位和1个停止位(1)。其帧格式为:,方式1真正用于串行发送或接收,为10位通用异步接口。TXD(P3.1)引脚发送数据,RXD(P3.0)引脚接收数据。 数据传输波特率由T1的溢出率决定,可用程序设定。 在接收时,停止位进入SCON的RB8。 串行口方式1的发送和接收时序如图(a)和(b)所

7、示。,方式 1 发送和接收时序,只有当REN=1时,才能对RXD进行检测。,RI=0。即上一帧数据接收完成时,RI=1发出的中断请求已被响应,SBUF中数据已被取走。由软件使RI=0,以便提供“接收SBUF已空”的信息。 SM2=0或收到的停止位为1(方式1时,停止位进入RB8)。 满足上述两个条件,将接收到的数据装入串行口的SBUF和RB8(RB8装入停止位),并置位RI,通知CPU取数据;如果不满足,接收到的数据不能装入SBUF,这意味着该帧信息将会丢失。,接收有效的两个条件:,两个单片机之间的通信,通信协议:数据格式、校验方式 波特率 硬件连接,2. 串行口方式1的应用,例:通过MCS-

8、51串行口发送带存放在片内RAM 20H3FH中的数据,要求传送的波特率为1200bps。编写有关的通信程序。 fosc=11.0592MHz。 分析:,取SMOD0 (TH1)2320E8H,设串行口为方式1,定时器/计数器T1为方式2作为串行口的波特率发生器。可以避免计数溢出后用软件重装定时初值的工作。,ORG 0100H MOV TMOD,#20H ;设T1为方式2 MOV TL1,#0E8H ;T1定时常数 MOV TH1,#0E8H SETB TR1 ;启动T1 MOV SCON,#01000000B;设串行口为方式1 MOV R0,#20H ;设发送数据区首址 MOV R7,#32

9、 ;发送32个ASCII码数据LOOP:MOV A,R0 ;取ASCII码数据 ACALL SP_OUT ;调用串行口发送子程序 INC R0 ;未发送完,则继续 DJNZ R7,LOOP ,主程序:,SP_OUT:MOV SBUF,A ;带校验位发送 JNB TI,$ ;发送等待 CLR TI ;清TI标志 RET,串行口发送子程序:,例:B机由串行口接收数据块。 解:采用查询方式,本例与上例相呼应,接收器把接收到的32个数据存放在20H3FH单元内,波特率同上。,MOV SCON,#01010000B ;设串口方式1,允许接收 MOV TMOD,#20H ;设置定时器T1为方式2 MOV

10、TL1,#0E8H ;初值,波特率为1200b/s MOV TH1,#0E8H SETB TR1 ;启动T1运行 MOV R0,#20H ;数据存放首地址 MOV R7,#32 ;数据块长度 LOOP: ACALL SP_IN ;调用接收一帧子程序 MOV R0,A ;存放接收的数据 INC R0 DJNZ R7,LOOP ,主程序:,SP_IN: JNB RI,$ ;RI由硬件置位 CLR RI ;软件清除RI MOV A,SBUF RET,接收一帧子程序:,3.串行口方式2和3 11位UART,方式2和方式3以11位为1帧传输,设有1个起始位(0),8个数据位,1个附加第9位和1个停止位(

11、1)。其帧格式为: 附加第9位(D8)由软件置1或清0。发送时在TB8中,接收时送RB8中。 方式2的波特率是固定的,为振荡器频率的1/32或1/64。 方式3的波特率则由T1的溢出率决定,可用程序设定。 方式2和方式3的发送、接收时序如图所示。其操作与方式1类似。,方式2、方式3发送和接收时序,只有当REN=1时,才能对RXD进行检测。,发送前,先根据通信协议由软件设置TB8(如作奇偶校验位或地址/数据标志位), 然后将要发送的数据写入SBUF,即可启动发送过程。 串行口能自动把TB8取出,并装入到第9位数据位的位置,再逐一发送出去。发送完毕,使TI=1。,发送过程,接收时,使SCON中的R

12、EN=1,允许接收。 当检测到RXD(P3.0)端有10的跳变(起始位)时,开始接收9位数据,送入移位寄存器(9位)。 当满足RI=0且SM2=0,或接收到的第9位数据为1时,前8位数据送入SBUF,附加的第9位数据送入SCON中的RB8,置RI为1;否则,这次接收无效,也不置位RI。,接收过程,例:编制一个发送程序,将片内RAM中50H5FH的数据串行发送。串行口设定为工作方式2,TB8作奇偶校验位。发送波特率375 kb/s,晶振为12 MHz, SMOD=1。 解:在数据写入发送SBUF之前,先将数据的奇偶标志P写入TB8,此时,第9位数据便可作奇偶校验用。可采用查询和中断两种方式发送。

13、,ORG 0000H AJMP MAIN ;上电,转向主程序 ORG 0100H ;主程序 MAIN: MOV SCON,#80H ;设工作方式2 MOV PCON,#80H ;取波特率为fosc/32 MOV R0,#50H ;首址50H送R0 MOV R7,#10H ;数值长度送R7 LOOP: MOV A,R0 ;取数据 MOV C,P ;PC MOV TB8,C ;奇偶标志送TB8 MOV SBUF,A ;发送数据 WAIT: JBC TI,CONT AJMP WAIT ;等待中断标志TI=1 CONT: INC R0 DJNZ R7,LOOP ;数值尚未发送完, 继续发送下一个数据

14、SJMP $ END,例:编制一个接收程序,将接收的16B数据送入片内RAM的50H5FH单元中。设串行口工作在方式2,波特率为375bps。 解:,源程序如下: MAIN: MOV SCON ,#080H ;串行口工作于方2;REN=1,可接收 MOV PCON ,#80H ;设SMOD=1 MOV R0,#50H ;首址50H送R0 MOV R7,#10H ;数值长度送R7 SETB REN ;启动接收 WAIT: JBC RI ,PR1 ;接收完一帧数据,清RI, 转PR1 SJMP WAIT ;否则等待 PR1: MOV A ,SBUF ;读入数据 JNB P ,PNP ;P=0,转P

15、NP JNB RB8 ,ERR ;P=1,RB8=0,转出错处理 SJMP RIGHT PNP: JB RB8 ,ERR ;P=0,RB8=1,转出错处理 RIGHT: MOV R0 ,A ;数据送内存 INC R0 ;修改地址指针 DJNZ R7 ,WAIT ;数据未接收完, ;继续接收下一个数据 CLR F0 ;置正确接收完毕标志F0=0 SJMP ENDT ERR: SETB F0 ENDT: SJMP $,4.波特率的设定,在串行通信中,要求收发双方接收和发送数据的波特率必须一致。通过软件对MCS-51串行口编程可约定四种工作方式。其中,方式0和方式2的波特率是固定的;而方式1和方式3

16、的波特率是可变的,由定时器T1的溢出率来决定(T1每秒溢出的次数)。 串行口的四种工作方式对应着三种波特率。由于输入的移位时钟来源不同,因此,各种方式的波特率计算公式也不同。,(1)方式 0 的波特率 由下图可见,方式0时,每个机器周期产生一个移位时钟,发送或接收一位数据。因此,波特率固定为振荡频率的1/12,并不受PCON寄存器中SMOD位的影响。,串行口方式 0 波特率的产生,(2)方式 2 的波特率 方式2波特率取决于PCON中SMOD位的值: SMOD=0时,波特率为fosc的1/64; SMOD=1时,波特率为fosc的1/32。 即: 方式2波特率(2SMOD/64)fosc fo

17、sc=12MHz, SMOD=0,187.5kbps SMOD=1,375kbps,(3)方式1和方式3的波特率 方式1和方式3的移位时钟脉冲由定时器T1产生,如图所示。因此,MCS-51串行口方式1和方式3的波特率由定时器T1的溢出率与SMOD值共同决定。 即 方式1、方式3波特率(2SMOD/32)T1溢出率,串行口方式1、方式3波特率的产生,其中,T1溢出速率取决于T1的计数速率(计数速率fosc/12)和T1预置的初值。,其中,k 为定时器T1的位数 定时器方式0,k=13; 定时器方式1,k=16; 定时器方式2,k=8。,例:若定时器T1工作于方式1,采用11.059MHz的晶振,

18、要求利用定时器1产生1200bps的波特率,则 令SMOD=0,可算得初值为 那么,TH1的初值为0FFH,TL1的初值为0E8H。,有关的程序如下: MAIN: MOV TMOD,#10H ;置定时器T1为方式1 MOV TL1,#0E8H ;装入初值 MOV TH1,#0FFH MOV PCON,#00H ;SMOD=0 SETB EA ;开放CPU中断 SETB ET1 ;开放定时器T1中断 SETB TR1 ;启动T1运行 如果定时器T1工作于方式1,T1作为波特率发生器,需在T1溢出中断服务程序中重装初值。 T1溢出中断服程序: MOV TL1,#0E8H ;重新装入初值 MOV T

19、H1,#0FFH RETI ;中断返回,由于T1方式2是定时器自动重装载的操作模式,当定时器T1工作在方式2时,可直接用作串行口的波特率发生器。 与上例相同,算得初值和重装载值为:,有关程序: MOV TMOD,#20H ;置T1为方式2 MOV TL1,#0E8H ;装入初值 MOV TH1,#0E8H MOV PCON,#00H ;SMOD=0 SETB TR1 ;启动T1运行 MOV SCON,#01000000B ;设置串行口为方式1 ,串行口方式1、方式3常用波特率及其初值,6.4 多机通讯,多机通讯原理,问题1:多机通信时主机如何寻找从机? 问题2:如何区分地址和数据信息? 串行口

20、控制寄存器SCON中的SM2为多机通讯控制位。串行口工作于方式2或3。 SM2多机通讯位; TB8/RB8地址/数据标志位;,SM2、RB8与从机动作关系,多机通信过程,所有从机的SM2=1,处于只接收地址帧状态;,主机发地址信息,以第9位TB8=1表示发送的是地址帧;,从机接收到地址帧后与本机地址比较;,被寻址从机SM2=0,其它从机SM2=1不变;,主机发送数据(TB8=0),对已被寻址的从机因SM2=0,可以接收主机发来的信息。其余从机因SM2=1不接收主机数据;,被寻址的从机SM2置1,主机可另发地址帧与其它从机通信。,6.5 串行口的编程和应用,编程注意事项 设置串行口工作方式 设置

21、波特率(SMOD,若是方式1、3,设置TI初值) 若串行口接收数据,REN必须赋值为1 TI和RI标志,须由软件清0 第9位,18051单片机片内有一个全双工的异步串行口(UART)。 2MCS-51串行口可设置为4种工作方式,由特殊功能寄存器SCON的SM0、SM1位定义。 3串行口4种工作方式的特点 方式0:同步移位寄存器 方式1:10位UART(波特率可变) 方式2:11位UART 方式3:11位UART(波特率可变) 4波特率的设置 方式0:仅与fosc相关; 方式2:与fosc和PCON的SMOD位相关; 方式1和方式3:与SMOD及T1的溢出率相关。 5. 串行口的编程:查询和中断

22、。,本章总结,电子音响,设计要求:单片机演奏音乐 实现基本方法 (1)音符音调(音高) 客观:音符的频率 (2)音符节拍 音符的长度 程序设计,电子音响(1),(1)音符音调(音高):音符的频率 音名: C D E F G A B 标准音高 A :每秒振动440次,即f=440Hz 相邻的音组中相同音名的两个音,包括变化音级,称之为八度。 八度音阶由12个音集合而成,音阶的分度以对数关系划分 21/12=1.059463 若f1距f2 n个半音,则运算公式:n个半音 = 12 * log2(f1/f2) 例:C比A低9个半音,计算C的頻率f,-9 = 12 * log2(f/440) 得f =

23、261.6 唱名: 1 2 3 4 5 6 7 1 do, re, mi, fa, so, la, ti, do C调音阶do, re, mi, fa, so, la, ti, do, 為261.6, 293.7, 329.6, 349.2, 392.0, 440.0, 493.9, 523.2。其中第一个do为261.6Hz,第二个do为523.2Hz是第一个do的2倍。,电子音响(1),(1)音符音调(音高):音符的频率 程序设计 产生一个音符:C调音阶do 产生C调音阶do, re, mi, fa, so, la, ti, do,每一个音阶持续100ms 261.6, 293.7, 32

24、9.6, 349.2, 392.0, 440.0, 493.9, 523.2。,电子音响(2),(1)音符音调(音高):音符的频率 程序设计,电子音响(2),(2)音符节拍:音符的持续时间 在简谱中,1、2、3、4、5、6、7这七个基本音符,不仅表示音的高低,而且还是表示时值长短的基本单位,称为四分音符,其他音符均是在四分音符的基础上,用加记短横线“-”和附点“”表示。,相邻两种音符之间的时值比例为21,电子音响(2),(2)音符节拍:音符的持续时间 在简谱中,1、2、3、4、5、6、7这七个基本音符,不仅表示音的高低,而且还是表示时值长短的基本单位,称为四分音符,其他音符均是在四分音符的基础

25、上,用加记短横线“-”和附点“”表示。 在简谱中,如果音符时值的长短用短横线 -表示,就称为单纯音符,电子音响(2),(2)音符节拍:音符的持续时间 在简谱中,加记在单纯音符的右侧的、使音符时值增长的小圆点,称为附点。加记附点的音符称为附点音符。 附点本身并无一定的长短,其长短由前面的单纯音符来决定。附点的意义在于增长原音符时值的一半,常用于四分音符和小于四分音符的各种音符之后。,电子音响(2),(2)音符节拍:音符的持续时间 歌曲被划分成小节:一个普通歌曲的长度大约有100小节。 在音乐中,时间被分成均等的基本单位,每个单位叫做一个“拍子”或 称一拍。 表示每小节中基本单位拍的时值和数量的记

26、号,称拍号。 拍号通常用分数来标记,分子表示每小节中单位拍的数目,分母表示单位拍的音符时值,例如3/4,它的含义是 “每小节有三拍,每拍是四分音符”,或简单地说“每小节有三个四分音符”。 节拍是按拍号要求相隔一定时间反复出现重音的模式,或者说,它是固定的强弱音。,电子音响(2),(2)音符节拍:音符的持续时间 下面是一些常见的拍子:偶数类,有2/2(每小节有两个二分音符)、2/4、4/4、4/8(每小节有四个八分音符)等,这些偶数节拍是对称的,带有行进的特点;奇数类,有3/2(每小节有三个二分音符)、3/4、3/8、6/4、6/8、9/8等;它们听上去带有旋转性,因此常常和舞曲有关。,电子音响

27、(2),(2)音符节拍:音符的持续时间 歌曲被划分成小节:每个小节都是确定的拍长;节拍具体在乐谱中指的是每一小节的音符总长度。 那么一拍到底该唱多长呢?速度是指节拍的速率。它大致可以分为三大类:慢、快和适中。 拍子的时值是一个相对的时间概念,比如当乐曲的规定速度为每分钟 60 拍时,每拍占用的时间是一秒;当规定速度为每分钟 120 拍时,每拍的时间是半秒,依此类推。拍子的基本时值确定之后,各种时值的音符就与拍子联系在一起。,电子音响(2),(2)音符节拍:音符的持续时间 那么一个音符到底该唱多长呢? 拍号通中的分母表示单位拍的音符时值 拍子的时值可以是四分音符、二分音符,也可以是八分音符。 例如,当以四分音符为一拍时,一个全音符相当于四拍,一个二分音符相当于两拍, 八分音符相当于半拍,十六分音符相当于四分之一拍;如果以八分音符做为 一拍,则全音符相当于八拍,二分音符是四拍,四分音符是两拍,十六分音 符是半拍。,电子音响(2),(2)音符节拍:音符的持续时间 一般说来,如果乐曲没有特殊说明,一拍的时长大约为400500ms 。 我们以一拍的时长为400ms为例,则当以四分音符为节拍时,四分音符的时长就为400ms,八分音符的时长就为200ms,十六分音符的时长就为100ms。,电子音响(2),(1)音符音调(音高):音符的频率 程序设计 产生C调音阶do, r

温馨提示

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

最新文档

评论

0/150

提交评论