(14)--8 串行通信单片机原理与接口技术.ppt
-
资源ID:96451609
资源大小:786.42KB
全文页数:61页
- 资源格式: PPT
下载积分:15金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
(14)--8 串行通信单片机原理与接口技术.ppt
第 8 章 STC单片机串行异步收发器原理及实现 1n串行通信简介nSTC单片机串口模块概述n串行通信程序设计本章主要内容238.1 串行通信简介 8.1.1.并行通信和串行通信并行通信 将数据的各位用多条数据线同时进行传输。优点:传输速度相对较快;缺点:占用引脚多、成本高。4 8.1.1.并行通信和串行通信串行通信 将数据分成一位一位的形式在一条线上逐个的传送。优点:占用引脚少、成本低;缺点:传输速度相对较慢。56 8.1.2.串行通信的分类(按同步时钟)同步通信 同步通信需要发送方与接收方建立同步时钟,使用时钟同步信号控制数据 的发送与接收。发送数据前要先发送同步字符,再连续的发送数据。举例:SPI、I2C 8.1.2.串行通信的分类(按同步时钟)异步通信 发送方发送数据给接收方的时候,并不需要传输时钟信号。发送方和接收方在各自的本地时钟的控制下保持相同的数据传输速率。举例:UART(通用异步收发器)7 8.1.2.串行通信的分类(按传输方向)单工半双工 举例:IIC全双工 举例:SPI、UART 89 8.1.3.异步串行通信的数据格式(以UART协议为例)对于发送方来说,需将并行的原始数据,进行封装,然后转换成 一位一位的串行数据进行发送;对于接收方来说,当接收到串行数 据后,对接收到的数据进行解析,从数据中找到原始数据,将其转 换成并行数据 接收方本地时钟发送方本地时钟原始字节数据封装后的字节数据去掉封装后的比特流数据恢复后的字节数据串行电缆10 8.1.3.异步串行通信的数据格式(以UART协议为例)字符帧 字符帧也叫数据帧,由起始位、数据位(纯数据或数据加校验位)和停止位等三部分组成。11 8.1.3.异步串行通信的数据格式(以UART协议为例)l奇偶校验用来验证接收数据的正确性。可以选择设置为奇校验或选择设置为偶校验。在偶校验中,要求所有发送数据的比特(包括校验位在内)1的个数是偶数。在奇校验中,要求所有发送数据的比特(包括校验位在内)1的个数是奇数。12 8.1.3.异步串行通信的数据格式(以UART协议为例)在该数据格式中:l首先有一个逻辑0标识的起始位,该位标识新的一帧数据的开始。l在起始位后面紧跟7或者8 位数据 数据比特的开始位对应于原始字节数据的最低位,数据比特的结束位对应 于原始字节数据的最高位。l数据位后面跟随可选的奇偶校验位。l最后是以逻辑1标识的12个停止比位。l在一个异步起停数据格式中,发送一个字节数据至少需要10个比特位。13 8.1.3.异步串行通信的数据格式(以UART协议为例)l在从发送方发送数据给接收方的时候,并不需要传输时钟信号。l当接收方接收到串行数据的时候,会使用其本地的时钟对接收到 的数据进行采样和解码,然后将数据恢复出来。l在协议中,每一个比特位持续的时间和发送时钟有关。一个时钟周期发送一个比特位。将这个时钟称为波特率时钟,用波特率表示。8.1.3.异步串行通信的数据格式波特率 波特率为每秒传输二进制代码的位数,单位bit/s ,即位/秒。波特率用于表征数据传输的速度,波特率越高,数据传输速度越快。典型可选择的波特率有300、1200、2400、9600、19200、115200 等。158.2 STC单片机串口模块概述 8.2.1.串口寄存器组lSTC15系列单片机串口具有两个数据缓冲区;每个串行接口的数据缓冲区由两个独立的接收缓冲区和发送缓冲区构成。这两个缓冲区可以同时收发数据。用户只能向发送缓冲区写入数据;而从接收缓冲区 读取数据。两个缓冲区共用一个地址 串口名称串口名称缓冲区名称冲区名称缓冲区地址冲区地址串口1SBUF0 x99串口2S2BUF0 x9B串口3S2BUF0 xAD串口4S3BUF0 x85 8.2.1.串口寄存器组l一个移位寄存器;l一个串行控制寄存器;l一个波特率发生器。注:对于串口1来说有四种工作方式(模式0、1、2、3),其中两种工作方式的波特率可变,另外两种是固定的;串口2/串口3/串口4都只有两种工作模式(模式0和模式1),这两种方式的波特率都是可变的。8.2.1.串口寄存器组串口1 1可用的引脚lSTC15W4K32S4系列单片机串口1对应的引脚是TxD和RxD。l串口1可以在3组引脚之间进行切换。l设置AUXR1(P_SW1)寄存器中的S1_S1比特位和S1_S0比特位pRxD/P3.0,TxD/P3.1pRxD_2/P3.6,TxD_2/P3.7pRxD_3/P1.6/XTAL2,TxD_3/P1.7/XTAL1 8.2.1.串口寄存器组串口2可用的引脚lSTC15W4K32S4系列单片机串口2对应的引脚是TxD2和RxD2。l串口1可以在2组引脚之间进行切换。l设置P_SW2寄存器中的S2_S1比特位pRxD2/P1.0,TxD/P1.1pRxD2_2/P4.6,TxD_2/P4.7 8.2.1.串口寄存器组串口3可用的引脚lSTC15W4K32S4系列单片机串口2对应的引脚是TxD3和RxD3。l串口1可以在2组引脚之间进行切换。l设置P_SW2寄存器中的S3_S1比特位pRxD3/P0.0,TxD/P0.1pRxD3_2/P5.0,TxD_2/P5.1 8.2.1.串口寄存器组串口4可用的引脚lSTC15W4K32S4系列单片机串口2对应的引脚是TxD4和RxD4。l串口1可以在2组引脚之间进行切换。l设置P_SW2寄存器中的S4_S1比特位pRxD4/P0.2,TxD/P0.3pRxD4_2/P5.2,TxD_2/P5.3 8.2.1.串口寄存器组串口1 1控制寄存器SCONSCONl地址0 x98;复位值“00000000”。串口串口1 1控制寄存器控制寄存器SCONSCON各位的含义各位的含义比特B7B6B5B4B3B2B1B0名字SM0/FESM1SM2RENTB8RB8TIRISM0/FESM0/FEl当PCON寄存器中SMOD0比特位为1时,该位用于检测侦错误。当检测到一个无效的停止位时,通过UART接收器将该位置1。该位由软件清零。l当PCON寄存器中SMOD0比特位为0时,该位和SM1位一起指定串口1的通信方式。8.2.1.串口寄存器组串口1 1控制寄存器SCONSCONl地址0 x98;复位值“00000000”。串口串口1 1控制寄存器控制寄存器SCONSCON各位的含义各位的含义比特B7B6B5B4B3B2B1B0名字SM0/FESM1SM2RENTB8RB8TIRISMSM1l该位和SM0位一起确定串口1的通信方式。SM1SM1和和SM0SM0各位的含义各位的含义SM0SM1工作模工作模式式功能说明功能说明波特率波特率00模式0同步移位串行方式:移位寄存器当UART_M0 x6=0时,波特率为SYSclk/12当UART_M0 x6=1时,波特率为SYSclk/201模式18位UART,波特率可变当串口1用定时器1作为其波特率发生器且定时器工作于模式0或串行口用定时器2作为其波特率发生器时,波特率=(定时器1的溢出率或者定时器T2的溢出率)/4当串口1用定时器1作为其波特率发生器且定时器1工作于模式2(8位自动重加载模式)时,波特率=(2SMOD/32)(定时器1的溢出率)10模式29位UART波特率=(2SMOD/64)SYSclk系统工作时钟频率11模式39位UART,波特率可变当串口1用定时器1作为其波特率发生器且定时器工作于模式0或串行口用定时器2作为其波特率发生器时,波特率=(定时器1的溢出率或者定时器T2的溢出率)/4当串口1用定时器1作为其波特率发生器且定时器1工作于模式2时,波特率=(2SMOD/32)(定时器1的溢出率)8.2.1.串口寄存器组串口1 1控制寄存器SCONSCONl地址0 x98;复位值“00000000”。串口串口1 1控制寄存器控制寄存器SCONSCON各位的含义各位的含义比特B7B6B5B4B3B2B1B0名字SM0/FESM1SM2RENTB8RB8TIRISMSM2l允许方式2或者方式3多机通信控制位。在方式2或者方式3接收数据时,如果SM2位为1,则接收机处于地址帧选状态。此时可以利用接收到的第9位(即RB8)来筛选地址帧 8.2.1.串口寄存器组串口1 1控制寄存器SCONSCONl地址0 x98;复位值“00000000”。串口串口1 1控制寄存器控制寄存器SCONSCON各位的含义各位的含义比特B7B6B5B4B3B2B1B0名字SM0/FESM1SM2RENTB8RB8TIRIRENl允许/禁止串行接收控制位。当该位为1时,允许串行接收状态,可以启动串行接收器RxD,开始接收信息;当该位为0时,禁止串行接收状态,禁止串行接收器RxD。8.2.1.串口寄存器组串口1 1控制寄存器SCONSCONl地址0 x98;复位值“00000000”。串口串口1 1控制寄存器控制寄存器SCONSCON各位的含义各位的含义比特B7B6B5B4B3B2B1B0名字SM0/FESM1SM2RENTB8RB8TIRITB8l当选择方式2或者方式3时,该位为要发送的第9位数据,按需要由软件置1或者清0。例如:可用作数据的校验位或者多机通信中表示地址帧/数据帧的标志位。8.2.1.串口寄存器组串口1 1控制寄存器SCONSCONl地址0 x98;复位值“00000000”。串口串口1 1控制寄存器控制寄存器SCONSCON各位的含义各位的含义比特B7B6B5B4B3B2B1B0名字SM0/FESM1SM2RENTB8RB8TIRIRB8l当选择方式2或者方式3时,该位为接收到的第9位数据,作为奇偶校验位或者地址帧/数据帧的标志位。l多机通信时,当RB8=1时,说明该帧为地址帧;当RB8=0时,说明该帧为数据帧。8.2.1.串口寄存器组串口1 1控制寄存器SCONSCONl地址0 x98;复位值“00000000”。串口串口1 1控制寄存器控制寄存器SCONSCON各位的含义各位的含义比特B7B6B5B4B3B2B1B0名字SM0/FESM1SM2RENTB8RB8TIRITIl发送中断请求标志位。在方式0时,当串行发送数据第8位结束时,由硬件自动将该位置1,向CPU发出中断请求。当CPU响应中断后,必须由软件将该位清0。在其它方式中,则在停止位开始发送时由硬件置1,向CPU发出中断请求。同样的,当CPU响应中断后,必须由软件将该位清0。8.2.1.串口寄存器组串口1 1控制寄存器SCONSCONl地址0 x98;复位值“00000000”。串口串口1 1控制寄存器控制寄存器SCONSCON各位的含义各位的含义比特B7B6B5B4B3B2B1B0名字SM0/FESM1SM2RENTB8RB8TIRIRIl接收中断请求标志位。在方式0时,当串行接收数据第8位结束时,由硬件自动将该位置1,向CPU发出中断请求。当CPU响应中断后,必须由软件将该位清0。在其它方式中,则在接收到停止位的中间时刻由内部硬件置1,向CPU发出中断请求。同样的,当CPU响应中断后,必须由软件将该位清0。8.2.1.串口寄存器组电源控制寄存器PCONPCONl地址0 x87;复位值“00110000”。电源控制寄存器电源控制寄存器PCONPCON各位的含义各位的含义比特B7B6B5B4B3B2B1B0名字SMODSMOD0LVDFPOFGF1GF0PDIDLSMSMODl波特率选择位。当该位为1时,则使串行通信方式1、2和3的波特率加倍;当该位为0时,则使各工作方式的波特率不加倍。8.2.1.串口寄存器组电源控制寄存器PCONPCONl地址0 x87;复位值“00110000”。电源控制寄存器电源控制寄存器PCONPCON各位的含义各位的含义比特B7B6B5B4B3B2B1B0名字SMODSMOD0LVDFPOFGF1GF0PDIDLSMSMOD0l帧错误检测有效控制位。当该位为1时,SCON寄存器中的SM0/FE比特位用于FE(帧错误检测)功能;当该位为0时,SCON寄存器中的SM0/FE比特用于SM0功能,该位和SM1比特位一起用来确定串口的工作方式。8.2.1.串口寄存器组串口数据缓冲寄存器SBUFl地址0 x99,该地址实际是两个缓冲寄存器。l一个缓冲寄存器用于保存要发送的数据;另一个缓冲寄存器用于读取已经接收到的数据。8.2.1.串口寄存器组辅助寄存器AUXRAUXRl地址0 x8E;复位值“00000000”。电源控制寄存器电源控制寄存器PCONPCON各位的含义各位的含义比特B7B6B5B4B3B2B1B0名字T0 x12T1x12UART_M0 x6T2RT2_C/TT2x12EXTRAMS1ST2T1x12l定时器1速度控制位。当该位为0时,定时器1是传统8051的速度,12分频;当该位为1时,定时器1的速度是传统8051的12倍,不分频。8.2.1.串口寄存器组辅助寄存器AUXRAUXRl地址0 x8E;复位值“00000000”。电源控制寄存器电源控制寄存器PCONPCON各位的含义各位的含义比特B7B6B5B4B3B2B1B0名字T0 x12T1x12UART_M0 x6T2RT2_C/TT2x12EXTRAMS1ST2UART_M0 x6l串口1模式0的通信速率设置位。当该位为0时,串口1模式0的速度是传统8051单片机串口的速度,即12分频;当该位为1时,串口1模式0的速度是传统8051单片机速度的6倍,即2分频。8.2.1.串口寄存器组辅助寄存器AUXRAUXRl地址0 x8E;复位值“00000000”。电源控制寄存器电源控制寄存器PCONPCON各位的含义各位的含义比特B7B6B5B4B3B2B1B0名字T0 x12T1x12UART_M0 x6T2RT2_C/TT2x12EXTRAMS1ST2S1ST2l串口1选择定时器2作波特率发生器的控制位。当该位为0时,选择定时器1作为串口1的波特率发生器;当该位为1时,选择定时器2作为串口1的波特率发生器。8.2.1.串口寄存器组中断允许寄存器IEIEl地址0 xA8;复位值“00000000”。中断允许寄存器中断允许寄存器IEIE各位的含义各位的含义比特B7B6B5B4B3B2B1B0名字EAELVDEADCESET1EX1ET0EX0ESl串口1中断允许位。当该位为1时,允许串口中断;当该位为0时,禁止串口中断。8.2.1.串口寄存器组中断优先级控制寄存器IPIPl地址0 xB8;复位值“00000000”。中断允许寄存器中断允许寄存器IEIE各位的含义各位的含义比特B7B6B5B4B3B2B1B0名字PPCAPLVDPADCPSPT1PX1PT0PX0ESl串口1中断优先级控制位。当该位为0时,串口1中断为最低优先级中断(优先级为0);当该位为1时,串口1中断为最高优先级中断(优先级1)。8.2.2.串口1工作模式内部总线内部总线读加载移位采样定时器2溢出定时器1溢出写到SBUFTx控制Rx控制串口中断位检测模式1l当串口1用定时器1作为其波特率发生器且定时器工作于模式0(16位自动重加载模式)或串行口用定时器2作为其波特率发生器时,波特率=(定时器1的溢出率或者定时器T2的溢出率)/4l当串口1用定时器1作为其波特率发生器且定时器1工作于模式2(8位自动重加载模式)时,波特率=(2SMOD/32)(定时器1的溢出率)8.2.2.串口1工作模式内部总线内部总线读加载移位采样定时器2溢出定时器1溢出写到SBUFTx控制Rx控制串口中断位检测模式1 8.2.2.串口1工作模式内部总线内部总线读加载移位采样定时器2溢出定时器1溢出写到SBUFTx控制Rx控制串口中断位检测模式1 8.2.2.串口1工作模式内部总线内部总线读加载移位采样定时器2溢出定时器1溢出写到SBUFTx控制Rx控制串口中断位检测模式1 8.2.2.串口1工作模式内部总线内部总线读加载移位采样定时器2溢出定时器1溢出写到SBUFTx控制Rx控制串口中断位检测模式1l写SBUF信号将1加载到发送移位寄存器的第九位 8.2.2.串口1工作模式内部总线内部总线读加载移位采样定时器2溢出定时器1溢出写到SBUFTx控制Rx控制串口中断位检测模式1l数据移出SBUF后左侧用0进行填充000000001 8.2.2.串口1工作模式内部总线内部总线读加载移位采样定时器2溢出定时器1溢出写到SBUFTx控制Rx控制串口中断位检测模式1468.3 STC单片机串口通信实例 8.3.1.矩阵键盘原理本节将检测STC学习板上按键开关的状态,并通过串口将按键状态显示到主机串口调试主手界面上。8.3.1.矩阵键盘原理在STC学习板上提供了16个按键,按44形式排列。1.确定有无按键按下2.确定按了哪个按键 8.3.1.矩阵键盘原理在STC学习板上提供了16个按键,按44形式排列。输入输出 8.3.1.矩阵键盘原理在STC学习板上提供了16个按键,按44形式排列。默认拉高设置为低 8.3.1.矩阵键盘原理在STC学习板上提供了16个按键,按44形式排列。111111100111即16进制E即16进制7 8.3.1.矩阵键盘原理在STC学习板上提供了16个按键,按44形式排列。111111101011即16进制D即16进制7 8.3.1.矩阵键盘原理在STC学习板上提供了16个按键,按44形式排列。111111101101即16进制B即16进制7 8.3.1.矩阵键盘原理在STC学习板上提供了16个按键,按44形式排列。111111101110即16进制7即16进制7 8.3.1.矩阵键盘原理在STC学习板上提供了16个按键,按44形式排列。111111010111即16进制E即16进制B56开始驱动P0.0P0.3为0000有按下按键?否是有相应按键?驱动P0.0P0.3为1110否是有相应按键?驱动P0.0P0.3为1101是否有相应按键?驱动P0.0P0.3为1011是否给出按键信息驱动P0.0P0.3为0111结束给出按键信息给出按键信息给出按键信息57 8.3.1.矩阵键盘原理工作模式1:串口1波特率=SYSclk/(65536-RL-TH1,RL_TH2)/4因此,RL-TH1,RL_TH2=65536-SYSclk/(串口1波特率*4)双 机 通 信例:编制程序,使甲、乙双方单片机能够进行通信,要求:甲机从P3.2、P3.3引脚输入开关信号,并发送给乙机,乙机根据接收到的信号,做出不同的动作,甲机 乙机当P3.2、P3.3引脚输入为00时,点亮P1.7控制的LED灯;当P3.2、P3.3引脚输入为01时,点亮P1.6控制的LED灯;当P3.2、P3.3引脚输入为10时,点亮P4.7控制的LED灯;当P3.2、P3.3引脚输入为11时,点亮P4.6控制的LED灯。反之,也是如此。设串口1工作在方式1,选用定时器T1作为波特率发生器,晶振频率为11.0592MHz,数据传输波特率为9600。串行发送采用查询方式,串行接收采用中断方式。P3.2P3.3GNDVCCVCC甲机P3.0P3.1乙机P1.6P1.7P4.6P4.7GNDGNDVCCP1.6P1.7P4.6P4.7P3.0P3.1P3.2P3.3VCCGND谢 谢61