




已阅读5页,还剩71页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020 2 1 1 项目6单片机的串行口及其应用 串行口的结构串行口控制寄存器单片机串行口的设计方法 本章主要内容 本章目录 6 1任务1认识串行通信与串行口6 2任务2单片机的双机通信6 3任务3单片机与PC串行通信6 4任务4远程控制交通灯的设计 2020 2 1 3 6 1任务1认识串行通信与串行口 6 1 1串行通信的概念 通信的基本方式分为并行通信和串行通信两种 并行通信是构成数据信息的各位同时进行传送的通信方式 例如8位数据或16位数据并行传送 优点是传输速度快 缺点是需要多条传输线 当距离较远 位数又多时 导致通信线路复杂且成本高 串行通信是数据一位接一位地顺序传送 特点是通信线路简单 只要一对传输线就可以实现通信 如电话线 从而大大地降低了成本 特别适用于远距离通信 缺点是传送速度慢 串行通信可分为异步传送和同步传送两种基本方式 1 串行通信的分类 1 异步通信 异步传送的特点是数据在线路上的传送不连续 在传送时 数据是以字符为单位组成字符帧进行传送的 在异步通信中 接收端是依靠字符帧 CharacterFrame 格式来判断发送端是何时开始发送 何时结束发送的 字符帧格式是异步通信的一个重要指标 是CPU与外设之间事先的约定 字符帧也叫数据帧 由起始位 数据位 奇偶校验位和停止位4个部分组成 图6 2串行异步传送的字符格帧式 在串行通信中 两相邻字符帧之间 可以没有空闲位 也可以有若干空闲位 这由用户来决定 图6 2 a 为无空闲位的字符帧 图6 2 b 表示有3个空闲位的字符帧格式 2 同步通信 同步通信是一种连续串行传送数据的通信方式 1次通信只传输一帧信息 即1次传送1组数据 这里的信息帧和异步通信的字符帧不同 通常有若干个数据字符 如图6 3所示 图6 3 a 为单同步字符帧结构 图6 3 b 为双同步字符帧结构 图6 3同步通信的字符帧格式 2 串行通信的制式 在串行通信中数据是在两个站之间进行传送的 按照数据传送方向 串行通信可分为单工 半双工和全双工三种制式 1 单工制式 在这种制式下 通信线的一端接发送器 另一端接接收器 数据只能按照一个固定的方向传送 2 半双工制式 数据可实现双向传送 但不能同时进行 3 全双工制式 全双工通信系统的每端都有发送器和接收器 可以同时发送和接收 3 串行通信的接口电路 串行接口电路的种类和型号很多 能够完成异步通信的硬件电路称为UART 即通用异步接收器 发送器 能够完成同步通信的硬件电路称为USRT 既能够完成异步又能同步通信的硬件电路称为USART 从本质上说 所有的串行接口电路都是以并行数据形式与CPU接口 以串行数据形式与外部逻辑接口 它们的基本功能都是从外部逻辑接收串行数据 转换成并行数据后传送给CPU 或从CPU接收并行数据 转换成串行数据后输出到外部逻辑 6 1 2串行通信的接口 异步串行通信接口标准主要有三类 RS 232C接口RS 449 RS 422和RS 485接口20mA电流环 1 RS 232C接口 1 RS 232C信息格式标准 2 RS 232C总线规定及其电平转换器 RS 232C采用的是负逻辑 即 逻辑 0 5V 15V逻辑 1 5V 15V因此 RS 232C不能和TTL电平直接相连 使用时必须进行电平转换 常用的电平转换集成电路是传输线驱动器MC1488和传输线接收器MC1489 图6 6接收器和发送器电平转换集成电路 3 RS 232C总线规定 RS 232C标准总线为25根 采用标准的DB 25或DB 9的D形插头座 目前计算机上只保留有两个DB 9插头 即COM1和COM2两个串行接口 图6 8RS 232C引脚图 表6 1DB 9连接器各引脚各引脚定义 在最简单的全双工系统中 仅用发送数据 接收数据和信号地三根线即可 对于MCS 51单片机 利用其RXD 串行数据接收端 线 TXD 串行数据发送端 线和一根地线 就可以构成符合RS 232C接口标准的全双工通信口 在远距离通信时 一般要加MODEM 调制解调器 当计算机与MODEM连接时 只要将编号相同的引脚连接起来即可 图6 9RS 232 C DB9 与调制解调器的连接图 在距离较近 小于15m 的情况下进行通信时 不需要使用MODEM 两个计算机的RS 232 C接口可以直接互连 图6 10两个RS 232C DB9 终端设备的连接图 2 RS 449 RS 422A RS 485标准接口 RS 449标准除了与RS 232C兼容外 在提高传输速率 增加传输距离 改善电气性能等方面有了很大改进 1 RS 449标准接口 RS 449在很多方面可以代替RS 232C使用 RS 449与RS 232C的主要差别在于信号在导线上的传输方法不同 RS 232C是利用传输信号与公共地的电压差 RS 449是利用信号导线之间的信号电压差 在1219 2m的24 AWG双铰线上进行数字通信 RS 449规定了两种接口标准连接器 一种为37脚 一种为9脚 RS 449可以不使用调制解调器 它比RS 232C传输速率高 通信距离长 且由于RS 449系统用平衡信号差传输高速信号 所以噪声低 又可以多点或者使用公共线通信 故RS 449通信电缆可与多个设备并联 2 RS 422A接口 RS 422A输出驱动器为双端平衡驱动器 如图6 11所示 如果其中一条线为逻辑 1 状态 另一条线就为逻辑 0 比采用单端不平衡驱动对电压的放大倍数大一倍 RS 422A传输速率 90Kbps 时 传输距离可达1200米 图6 11RS 422A接口 2 RS 485接口 RS 485的信号传输采用两线间的电压来表示逻辑1和逻辑0 如图6 12所示 由于发送方需要两根传输线 接收方也需要两根传输线 传输线采用差动信道 所以它的干扰抑制性极好 又因为它的阻抗低 无接地问题 所以传输距离可达1200米 传输速率可达1Mbps 图6 12RS 485接口 6 1 3单片机串行口的结构与控制寄存器 MCS 5l单片机的串行口主要由两个独立的数据缓冲器SBUF 一个输入移位寄存器PCON 9位 一个串行控制寄存器SCON和一个波特率发生器T1等组成 其结构见图6 13 图6 13串行口结构框图 1 串行口数据缓冲器SBUF SBUF是两个在物理上独立的接收 发送寄存器 是可以直接寻址的专用寄存器 一个用于存放接收到的数据 另一个用于存放欲发送的数据 可同时发送和接收数据 两个缓冲器共用一个地址99H 通过对SBUF的读 写指令来区别是对接收缓冲器还是发送缓冲器进行操作 CPU在写SBUF时 就是修改发送缓冲器 读SBUF 就是读接收缓冲器的内容 接收或发送数据 是通过串行口对外的两条独立收发信号线RXD P3 0 TXD P3 1 来实现的 因此可以同时发送 接收数据 其工作方式为全双工制式 串口的接收 发送端具有缓冲的功能 由SBUF特殊功能寄存器实现该功能 接收缓冲器是双缓冲的 发送缓冲器为单缓冲 2 串行口控制寄存器SCON 该专用寄存器的主要功能是选择串行口的工作方式 接收和发送控制以及串行口的状态标志指示等 可以位寻址 字节地址为98H 收发双方都有对SCON的编程 单片机复位时 SCON的所有位全为0 SCON的各位含义如图6 14所示 1 SM0 SM1 SCON 7 SCON 6 串行口的工作方式选择位 其定义如表6 2所示 表6 2串行方式的定义 2 SM2多机通信控制位 用于方式2和方式3中 在方式2和方式3处于接收时 若SM2 1 且接收到的第9位数据RB8为0时 则不激活RI 若SM2 1 且RB8 1时 则置RI 1 若SM2 0 不论接收到第9位RB8为0还是为1 TI RI都以正常方式被激活 在方式1处于接收时 若SM2 1 则只有当收到有效的停止位后 RI才置1 在方式0中 SM2应为0 3 REN允许串行接收控制位 由软件置位或清零 REN 1时 允许接收 REN 0时 禁止接收 4 TB8发送数据的第9位 在方式2和方式3中 由软件置位或复位 一般用做奇偶校验位 在多机通信中 可作为区别地址帧或数据帧的标识位 一般约定地址帧时TB8为1 数据帧时TB8为0 5 RB8接收数据的第9位 功能同TB8 6 TI发送中断标志位 在方式0中 发送完8位数据后 由硬件置位 在其它方式中 在发送停止位之初由硬件置位 因此TI是发送完一帧数据的标志 可以用指令来查询是否发送结束 TI 1时 也可向CPU申请中断 响应中断后必须由软件清除TI 7 RI接收中断标志位 在方式0中 接收完8位数据后 由硬件置位 在其它方式中 在接收停止位时由硬件置位 因此RI是接收完一帧数据的标志 也可以通过指令来查询是否接收完一帧数据 RI 1时 也可向CPU申请中断 响应中断后也必须由软件清除RI 3 电源和波特率控制寄存器PCON PCON是一个特殊功能寄存器 其字节地址为87H 只能进行字节寻址 不能按位寻址 其格式如下图6 15所示 PCON的最高位D7位作为SMOD 是串行口波特率的选择位 在工作方式1 2 3时 串行通信的波特率与SMOD有关 当SMOD 1时 波特率加倍 当SMOD 0时 波特率不变 系统复位后 SMOD位为0 其他各位用于电源管理 6 1 4单片机串行口的工作方式 MCS 51的串行口有4种工作方式 通过SCON中的SM1 SM0位来决定 1 方式0 在方式0下 串行口作同步移位寄存器用 以8位数据为一帧 无起始位和停止位 其波特率固定为fosc 12 串行数据从RXD P3 0 端输入或输出 同步移位脉冲由TXD P3 1 送出 这种方式常用于扩展I O口 外接移位寄存器实现数据并行输入或输出 2 方式1 当SM0 0 SM1 1时 串行口被定义为方式1 在方式1下 串行口为波特率可调的10位通用异步接口UART 发送或接收的一帧信息 包括1位起始位0 8位数据位和1位停止位1 图6 18方式1下10位数据帧格式 3 方式2 当SM0 1 SM1 0时 串行口被定义为方式2 方式2下 串行口为11位通用异步接口UART 这种方式可接收或发送11位数据 传送波特率与PCON的最高位SMOD有关 发送或接收的一帧数据包括1位起始位0 8位数据位 1位可编程位 D8 和1位停止位1 共11位 第9个数据位即D8位可以通过软件来控制它 图6 19方式2下11位数据帧格式 4 方式3 方式3为波特率可变的11位UART通信方式 除了波特率以外 方式3和方式2完全相同 串行口工作于方式2和方式3时 与方式1不同之处是 进入RB8的是第9位数据 而不是停止位 接收到的停止位的值与SBUF RB8或RI是无关的 这一个特点可用于多机通信 注意 6 1 5串行口的波特率 串行口通过编程可以有4种工作方式 其中 方式0和方式2的波特率是固定的 方式1和方式3的波特率可变 由定时器1的溢出率决定 1 方式0和方式2 在方式0中 波特率为时钟频率的1 12 即 固定不变 在方式2中 波特率取决于PCON中的SMOD值 当SMOD 0时 波特率为 当SMOD 1时 波特率为 即波特率 2 方式1和方式3 在方式1和方式3下 波特率由定时器T1的溢出率和SMOD共同决定 即 波特率 表6 3定时器T1产生的常用波特率 6 2任务2单片机的双机通信 采用两台AT89C51单片机甲和乙进行双机串行通信设计 单片机甲的按键K1产生控制码 通过串行口TXD端将控制码以方式1的方式发送至单片机乙的RXD端 乙机再利用该控制码分别实现LED1闪烁 LED2闪烁 LED1和LED2同时闪烁 关闭所有LED功能 通过本任务的学习 使读者掌握MCS 51系列单片机串行通信的基本原理及控制方法 波特率设计等串行口应用知识 6 2 1硬件电路与软件程序设计 1 硬件电路设计 根据单片机双机通信距离 抗干扰性等要求 可以选择直接TTL电平传输 RS 232 C RS 422A等串行接口方法 本设计采用标准RS 232接口芯片MAX232进行通信 硬件电路如图6 20所示 图6 20单片机串行口双机通信硬件电路 2 程序设计 程序设计时 首先需要进行串口初始化 主要任务是设置定时器1 串口控制和中断控制等 本任务中 两片单片机的串口均工作在方式1下 所以甲机程序中设置SCON 0X40 乙机程序中设SCON 0X50 两者都设为方式1 但乙机还将REN位设为1以允许接收 需要说明的是 本例甲机不接收数据 因此两机的SCON都设成0X50也不影响运行结果 程序中设TH1 TL1 0XFD 即253 PCON 0X00 PCON的最高位SMOD 0 波特率不倍增 本例中两单片机均使用查询方式 甲机通过循环查询TI标志判断是否发送完毕 乙机通过查询RI判断是否接收到数据 每一次收发前都需要通过程序将TI和RI清零 甲机程序代码 include defineucharunsignedchar defineuintunsignedintsbitLED1 P0 0 sbitLED2 P0 3 sbitK1 P1 0 延时voidDelayMS uintms uchari while ms for i 0 120 i 向串口发送字符voidPutc to SerialPort ucharc SBUF c while TI 0 TI 0 主程序voidmain ucharOperation No 0 SCON 0 x40 串口模式1TMOD 0 x20 T1工作模式2PCON 0 x00 波特率不倍增TH1 0 xfd TL1 0 xfd TI 0 TR1 1 启动T1while 1 if K1 0 按下K1时选择操作代码0 1 2 3 while K1 0 Operation No Operation No 1 4 switch Operation No 根据操作代码发送A B C或停止发送 case0 LED1 LED2 1 break case1 Putc to SerialPort A LED1 LED1 LED2 1 break case2 Putc to SerialPort B LED2 LED2 LED1 1 break case3 Putc to SerialPort C LED1 LED1 LED2 LED1 break DelayMS 100 乙机程序代码 include defineucharunsignedchar defineuintunsignedintsbitLED1 P0 0 sbitLED2 P0 3 延时voidDelayMS uintms uchari while ms for i 0 i 120 i 主程序voidmain SCON 0 x50 串口模式1 允许接收TMOD 0 x20 T1工作模式2PCON 0 x00 波特率不倍增TH1 0 xfd 波特率9600TL1 0 xfd RI 0 TR1 1 LED1 LED2 1 while 1 if RI 如收到则LED闪烁 RI 0 switch SBUF 根据所收到的不同命令字符完成不同动作 case A LED1 LED1 LED2 1 LED1闪烁break case B LED2 LED2 LED1 1 LED2闪烁break case C LED1 LED1 LED2 LED1 双闪烁 elseLED1 LED2 1 关闭LEDDelayMS 100 6 2 2调试与仿真运行 图6 21单片机串行口双机通信仿真图 6 3任务3单片机与PC串行通信 6 3 1任务与计划 1 单片机接收PC机发来的数字串 并逐个显示在数码管上 为了显示接收到的数据 在单片机的P0口连接数码管 2 当按下单片机系统的按键时 会有一串中文字符由单片机串口发送给PC机 并显示在接收窗口 6 3 2硬件电路与软件程序设计 1 硬件电路设计 图6 22单片机与PC之间串行通信硬件电路 2 程序设计 1 PC机控制程序PC主机的通信程序可以采用TurboC VC VB Delphi等高级语言编写 也可以直接借助于现有的 串口调试助手 应用软件完成 用户要由PC机向单片机发送数据 只要把波特率参数设置好就行了 无须自己编程 2 单片机串口通信程序使用Keil软件建立 receive 工程项目 建立源程序文件 receive c 输入如下源程序 include defineucharunsignedchar defineuintunsignedintucharReceive Buffer 101 接收缓冲ucharBuf Index 0 缓存空间 数码管编码ucharcodeDsy code 0 x3F 0 x06 0 x5B 0 x4F 0 x66 0 x6D 0 x7D 0 x07 0 x7F 0 x6F 0 x00 延时voidDelay uintx uchari while x for i 0 i 120 i voidmain 主函数 uchari P0 0 x00 Receive Buffer 0 1 SCON 0 x50 串口模式1 允许接收TMOD 0 x20 T1方式2PCON 0 x00 TH1 TL1 0 xFD 波特率 9600EA 1 EX0 1 IT0 1 允许外部中断0 下降沿触发ES 1 允许串口中断IP 0 x01 外部中断0为高优先级TR1 1 启动定时器while 1 for i 0 i 100 i if Receive Buffer i 1 break 有 1结束显示P0 Dsy code Receive Buffer i Delay 200 Delay 200 接收中断函数voidSerial INT interrupt4 ucharc if RI 0 return ES 0 关闭串口中断RI 0 清除接收标志位c SBUF 读字符if c 0 允许串口中断 外部中断0voidEX INT0 interrupt0 uchar s 单片机发送的字符串 r n uchari 0 while s i 0 SBUF s i while TI 0 TI 0 i 6 3 3调试与仿真运行 图6 23单片机与PC通信仿真图 图6 24串口调试助手 6 4任务4远程控制交通灯的设计 6 4 1任务要求 设计并实现单片机交通灯控制系统 实现以下三种情况下的交通灯控制 1 正常情况下双方向轮流点亮 交通灯的状态如表6 4所示 2 特殊情况时A道运行 3 有紧急车辆通行时 AB道均为红灯 紧急情况优先级高于特殊情况 表6 4交通灯显示状态 本任务实现用PC作为控制主机 单片机控制信号灯为从机的远程控制系统 主 从机双方除了要有统一的数据格式 波特率外 还要约定一些握手应答信号 即通信协议 如表6 5所示 表6 5交通灯控制系统PC与单片机通信协议 6 4 2电路及元器件 表6 6交通灯控制端口线分配及控制状态 表6 7交通灯控制电路元器件清单 6 4 3程序设计 1 程序设计流程图 图6 27正常情况程序流程 图6 28中断情况下交通状态流程 图6 29通信程序流程 2 源程序 include defineucharunsignedchar defineuintunsignedintucharled 0 x3F 0 x06 0 x5B 0 x4F 0 x66 0 x6D 0 x7D 0 x07 0 x7F 0 x6F ucharDispX 0 x04 0 x0c 0 x04 0 x0c 0 x14 0 x20 0 x21 0 x20 0 x21 0 x22 voidAFangXing void 函数声明voidShanShuo uchar PTR voidJingGao uchar PTR voidBFangXing void voiddelay 5ms void 5ms定时 uchari for i 0 i 5 i T0方式1 定时1毫秒 循环5次即实现5毫秒定时 TH0 0 xfc TL0 0 x18 TR0 1 T C0开始工作while TF0 TF0 0 voidint 0 interrupt0 uinti x y l m EA 0 关中断i P1 l TH1 m TL1 EA 1 P1 0 x24 for x 10 x 0 x for y 100 y 0 y P2 0 x01 P0 led x 10 delay 5ms P2 0 x02 P0 led x 10 紧急情况倒计时delay 5ms EA 0 P1 i TH1 l TL1 m EA 1 voidint 1 interrupt2 特殊情况中断 uinti l m x y EA 0 关中断i P1 l TH1 m TL1 EA 1 P1 0 x21 for x 10 x 0 x for y 100 y 0 y P2 0 x01 P0 led x 10 delay 5ms P2 0 x02 P0 led x 10 特殊情况倒计时delay 5ms EA 0 P1 i TH1 l TL1 m EA 1 voidmain 主函数 uchar PTR 外部中断0的中断请求信号为边沿触发 IT1 1 外部中断1的中断请求信号为边沿触发while 1 AFangXing A道绿灯 B道红灯 计时55秒 ShanShuo PTR A绿灯闪烁4次 2秒 B道红灯ShanShuo PTR ShanShuo PTR ShanShuo PTR JingGao PTR A道黄灯 2秒 B道红灯BFangXing B道绿灯 A道红灯 计时55秒 ShanShuo PTR B绿灯闪烁4次 2秒 A道红灯ShanShuo PTR ShanShuo PTR ShanShuo PTR JingGao PTR B道黄灯 2秒 A道红灯PTR 重新给PTR指针赋值 开始新的一轮 voidAFangXing void A向通行函数 uchari j P1 0 x0c A道绿灯B道红灯for i 55 i 0 i for j 50 j 0 j P2 0 x01 P0 led i 10 显示A方向秒个位delay 5ms P2 0 x02 P0 led i 10 显示A方向秒十位delay 5ms P2 0 x04 P0 led i 10 显示B方向秒个位delay 5ms P2 0 x08 P0 led i 10 显示B方向秒十位delay 5ms voidShanShuo uchar PTR 绿灯闪烁函数 uchari j for i 1 i 0 i P1 PTR for j 25 j 0 j P2 0 x01 P0 led i 10 显示A方向秒个位delay 5ms P2 0 x02 P0 led i 10 显示A方向秒十位delay 5ms P2 0 x04 P0 led i 10 显示B方向个位delay 5ms P2 0 x08 P0 led i 10 显示B方向十位delay 5ms voidJingGao uchar PTR 黄灯警告函数 uchari j P1 PTR for i 2 i 0 i for j 50 j 0 j P2 0 x01 P0 led i 10 显示A方向秒个位delay 5ms P2 0 x02 P0 led i 10 显示A方向秒十位delay 5ms P2 0 x04 P0 led i 10 显示B方向个位delay 5ms P2 0 x08 P0 led i 10 显示B方向十位delay 5ms voidBFangXing void B向通行函数 u
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初任法官考试题库及答案
- 广告设计师备考的步骤试题及答案
- 安居人性测试题及答案
- 测绘考试题库及答案解析
- 女孩口红测试题及答案
- 内蒙古天津试题及答案
- 2024广告设计师考试设计创新方法题及答案
- 机床基础知识试题及答案
- 生日蛋糕制作试题及答案
- 汉语考试题目及答案
- 康复医学科疾病损伤急性期康复指南规范
- 部编版语文初一(下)期末复习:词语成语运用检测卷
- 《字体设计》模块四 具象性变化设计技巧的训练
- 《Unit 4 Using Language》第2课时教学课件【高中英语选择性必修第二册人教版】
- 四川省地震灾区重大地质灾害治理工程资料全套表格
- 自然辩证法概论智慧树知到答案章节测试2023年哈尔滨工业大学
- 小型临时工程建设实用标准化
- 中小学实验室危化品安全管理使用检查记录表
- 《试种一粒籽》第1课时公开课教学课件【部编人教版二年级道德与法治下册】
- 零星工程结算审定单
- 幼儿园绘本:《超级细菌王国》
评论
0/150
提交评论