




已阅读5页,还剩58页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理及应用 C语言版 第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 异步通信异步通信中 传送的数据可以是一个字符代码或一个字节数据 数据以帧的形式一帧一帧传送 7 1 2异步通信和同步通信 图7 3异步通信的一帧数据格式 2 同步通信在同步通信中 每一数据块发送开始时 先发送一个或两个同步字符 使发送与接收取得同步 然后再顺序发送数据 数据块的各个字符间取消起始位和停止位 所以通信速度得以提高 7 1 2异步通信和同步通信 图7 4同步通信数据帧格式 7 1 3波特率 在串行通信中 对数据传送速度有一定要求 波特率表示每秒传送的位数 单位为b s 记作波特 例如 数据传送速率为每秒钟10个字符 若每个字符的一帧为11位 则传送波持率为 11b 字符 10字符 s 110b s异步通信的传送速率一般在50 19200b s之间 7 1 4通信方向 单工方式 一对传输线只允许单方向传送数据 半双工方式 一对传输线允许向两个方向中的任一方向传送数据 但不能同时进行 全双工方式 用两对传输线连接在发送器和接收器上 发送和接收能同时进行 7 1 4通信方向 图7 5串行通信传输方式 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内部结构示意简图 7 2 2与串行口有关的特殊功能寄存器 1 控制状态寄存器SCON用于定义串行通信口的工作方式和反映串行口状态 其字节地址为98H 复位值为00000000B 可位寻址格式为 SM0和SM1 SCON 7 SCON 6 串行口工作方式选择位 7 2 2与串行口有关的特殊功能寄存器 SM2 SCON 5 多机通信控制位 在方式2或3中使用 REN SCON 4 允许接收控制位 由软件置1或清0 TB8 SCON 3 发送数据的第9位 RB8 SCON 2 接收数据的第9位 TI SCON 1 发送中断标志 RI SCON 0 接收中断标志 7 2 2与串行口有关的特殊功能寄存器 关于TI和RI 串行发送中断标志TI和接收中断RI是同一个中断源 CPU事先不知道是发送中断标志TI还是接收中断标志RI产生的中断请求 所以 在全双工通信时 必须由软件来判别 2 电源控制寄存器PCON电源控制寄存器PCON 地址为87H 中只有SMOD位与串行口工作有关 7 2 2与串行口有关的特殊功能寄存器 SMOD PCON 7 波特率倍增位 串行口工作于方式1 方式2和方式3时 当SMOD 1时 串行口波特率加倍 复位值为00000000B PCON寄存器不能进行位寻址 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 64 7 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串行口方式07 3 2串行口方式17 3 3串行口方式2和方式3 7 3串行口工作方式 7 3 1串行口方式0 方式0为同步移位寄存器输入 输出方式 常用于扩展I O口 RXD为数据输入或输出 TXD为移位时钟 作为外接部件的同步信号 方式0不适用于两个89C52之间的数据通信 可以通过外接移位寄存器来实现单片机的接口扩展 在这种方式下 收 发的数据为8位 低位在前 无起始位 奇偶校验位及停止位 波特率是固定的 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语言程序清单 includesbitP1 0 P1 0 sbitP1 1 P1 1 unsignedchardata1 voidmain SCON 0 x10 串行口方式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 数据做准备 汇编语言程序清单 ORG0000HSJMPMAINORG23HSJMPS SRV 串行口中断服务程序 7 4 1同步方式应用 MAIN MOVSCON 10H 串行口方式0初始化SETBESSETBEAMOVA 0CLRP1 0 关闭并行输出MOVSBUF A 开始串行输出SETBP1 1CLRP1 1SJMP 等待中断 7 4 1同步方式应用 S SRV JBCTI SENDCLRRIMOVA SBUFCLRP1 0CPLAMOVSBUF ASETBP1 1CLRP1 1RETISEND SETBP1 0RETI 7 4 1同步方式应用 7 4 2异步方式应用 串行口方式1与方式3很近似 波特率设置一样 不同之处在于方式3比方式1多了一个数据附加位 方式2与方式3基本一样 只是波特率设置不同 接收 发送11位信息 开始为1位起始位 0 中间8位数据位 数据位之后为1位程控位 由用户置SCON的TB8决定 最后是1位停止位 1 只比方式1多了一位程控位 例7 3将片内RAM50H 5FH中的数据串行发送 用第9个数据位作奇偶校验位 设晶振为11 0592MHz 波特率为2400b s 编制串行口方式3的发送程序 解 用TB8作奇偶校验位 在数据写入发送缓冲器之前 先将数据的奇偶位P写入TB8 这时 第9位数据作奇偶校验用 发送采用中断方式 7 4 2异步方式应用 C语言程序清单 includeunsignedchari 0 unsignedchararray 16 at 0 x50 发送缓冲区voidmain SCON 0 xc0 串行口初始化TMOD 0 x20 定时器初始化TH1 0 xf4 TL1 0 xf4 TR1 1 ES 1 EA 1 中断初始化ACC array i 发送第一个数据送TB8 P 累加器 目的取P位SBUF ACC 发送一个数据while 1 等待中断 7 4 2异步方式应用 voidserver interrupt4 串行口中断服务程序 TI 0 清发送中断标志ACC array i 取下一个数据TB8 P SBUF ACC if i 16 发送完毕 ES 0 禁止串口中断 7 4 2异步方式应用 汇编语言程序清单 ORG0000HSJMPMAIN 上电 转主程序ORG23HSJMPSERVER 转中断服务程序MAIN MOVSCON 0C0H 串行口方式3初始化MOVTMOD 20H 定时器1工作在方式2MOVTH1 0F4HMOVTL1 0F4HSETBTR1SETBES 允许串行口中断SETBEA CPU开中断MOVR0 50HMOVR7 0FH 7 4 2异步方式应用 MOVA R0MOVC PMOVTB8 C 送奇偶标志位到TB8MOVSBUF A 发送第一个数据SJMP SERVER CLRTI 清除发送中断标志INCR0 修改数据地址MOVA R0MOVC PMOVTB8 CMOVSBUF A 发送下一个数据DJNZR7 ENDT 判断数据块是否发送完CLRES 否则 禁止串行口中断ENDT RETI 中断返回 7 4 2异步方式应用 例7 4编写一个接收程序 将接收的16字节数据送入片内RAM50H 5FH单元中 设第9个数据位作奇偶校验位 晶振为11 0592MHz 波特率为2400b s 解 RB8作奇偶校验位 接收时 取出该位进行核对 接收采用查询方式 7 4 2异步方式应用 C语言程序清单 includeunsignedchari unsignedchararray 16 at 0 x50 接收缓冲区voidmain SCON 0 xd0 串行口初始化 允许接收TMOD 0 x20 TH1 0 xf4 TL1 0 xf4 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异步方式应用 汇编语言程序清单 MAIN MOVTMOD 20H 定时器初始化MOVTH1 0F4HMOVTL1 0F4HSETBTR1MOVSCON 0D0H 串口初始化 允许接收MOVR0 50H 首地址送R0MOVR7 10H 数据长度送R7WAIT JNBRI 等待接收完成CLRRI 清中断标志MOVA SBUF 读数到累加器 7 4 2异步方式应用 JNBP PNP P 0 转PNPJNBRB8 ERROR P 1 RB8 0 转出错SJMPRIGHTPNP JBRB8 ERROR P 0 RB8 1 转出错RIGHT MOV R0 A 存数INCR0 修改地址指针DJNZR7 WAIT 未接收完 继续CLRF0 置正确接收标志F0 0RETERROR SETBF0 置错误接收标志F0 1RET 7 4 2异步方式应用 例7 5用第9个数据位作奇偶校验位 编制串行口方式3的全双工通信程序 设双机将各自键盘的按键键值发送给对方 接收正确后放入缓冲区 可用于显示或其它处理 晶振为11 0592MHz 波特率为9600b s 解 因为是全双工方式 通信双方的程序一样 发送和接收都采用中断方式 7 4 2异步方式应用 C语言程序清单 includechark unsignedcharbuffer voidmain SCON 0 xd0 串行口初始化 允许接收TMOD 0 x20 定时器初始化TH1 0 xfd TL1 0 xfd TR1 1 ES 1 开串行口中断EA 1 开总中断 7 4 2异步方式应用 while 1 k key 读取按键按下键值if k 1 无键按下返回 1 ACC k 将键值送累加器 取P位TB8 P 送TB8SBUF ACC 发送 display 显示程序 7 4 2异步方式应用 voidserial server interrupt4 if TI 发送引起 清TITI 0 else 否则 接收引起 RI 0 ACC SBUF 读取接收数据if RB8 P 校验正确 buffer ACC 存入缓冲区 7 4 2异步方式应用 汇编语言程序清单 ORG0000HSJMPMAIN 跳转到主程序ORG23HLJMPS SERV 跳转到串口中断服务程序MAIN MOVSP 0DFH 设置堆栈指针MOVSCON 0D0H 串口初始化MOVTMOD 20H 定时器初始化 T1方式2MOVTH1 0FDHMOVTL1 0FDH 定时器1赋初值 7 4 2异步方式应用 SETBTR1 启动定时器1SETBES 开中断SETBEALOOP LCALLKEY 读取按键 参看第9章 有键按下返回键值 CJNEA 0FFH SEND 无键按下返回0FFH 有键按下转发送NEXT LCALLDISPLAY 调用显示LJMPLOOP 主程序循环 7 4 2异步方式应用 SEND MOVC PMOVTB8 CMOVSBUF A 带校验位发送LJMPLOOP 循环S SERV JBCRI RECV 是接收中断转接收处理CLRTI 是发送中断 清TIRETI 7 4 2异步方式应用 RECV 接收处理程序MOVA SBUF 取接收值送AJBP ONE 校验位为1 转JBRB8 I END 校验错 转中断返回SJMPRIGHT 校验正确 正确处理ONE JNBRB8 I END 校验错 转中断返回RIGHT MOVBUFFER A 接收数据送缓冲区I END RETI 中断返回 7 4 2异步方式应用 7 5单片机与PC机通信的接口电路 主要内容7 5 1MAX232芯片简介7 5 2PC机与89C52串行通信的接口电路 利用PC机配置的异步通信适配器 可以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二人合作经营协议书
- 2025年沸腾干燥机项目立项申请报告
- 护理安全消防知识培训课件
- 2025年特种金属靶材项目立项申请报告模板
- 2025年硝基呋喃类药项目立项申请报告模范
- 2025年徽章项目申请报告
- 全警实战大练兵培训课件
- 光电仪器培训专业知识课件
- 护理员培训课件鼻饲
- 《现代电子装联质量管理》课件第6章
- 购买肉牛合同协议书
- 烟气参数在线监测系统(CEMS)培训课件
- 企业微信直播讲解课件
- 中国卒中患者高血压管理专家共识(2024)解读
- 2025年乡村全科医师考试真题及答案
- GB/T 45309-2025企业采购物资分类编码指南
- 通往未来之路课件
- 膜性肾病护理进展
- 2025年供暖锅炉安全技术托管协议书
- 特殊儿童美术治疗
- 安宁疗护服务规范
评论
0/150
提交评论