基于RS-485的单片机通信系统设计_第1页
基于RS-485的单片机通信系统设计_第2页
基于RS-485的单片机通信系统设计_第3页
基于RS-485的单片机通信系统设计_第4页
基于RS-485的单片机通信系统设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

专业 课课程程设设计计任任务务书书 20132013 20142014 学年学年 第第 2 2 学期学期 第第 1616 周 周 1919 周周 注 1 此表一组一表二份 课程设计小组组长一份 任课教师授课时自带一份 备查 2 课程设计结束后与 课程设计小结 学生成绩单 一并交院教务存 档 题目题目基于 RS 485 的单片机通信系统设计 内容及要求内容及要求 1 利用 RS485 实现单片机的双向通讯 2 通过键盘实现从机的选择 发送数据的输入 3 主机显示发送的数据及从机编号 4 提高要求 通过键盘实现循环工作模式 指定从机这 2 种工作方式的切换 进度安排进度安排 16 周 查找资料 进行系统硬件设计 软件方案设计 周 查找资料 进行系统硬件设计 软件方案设计 17 周 硬件制作 软件的分模块调试 周 硬件制作 软件的分模块调试 19 周 系统联调 周 系统联调 19 周 设计结果验收 报告初稿的撰写 周 设计结果验收 报告初稿的撰写 学生姓名 万娇万娇 赵佳慧赵佳慧 指导时间 周一 周三 周五指导地点 E 楼 610 室 任务下达2014 年 6 月 3 日任务完成2014 年 6 月 27 日 考核方式1 评阅 2 答辩 3 实际操作 4 其它 指导教师张小林系 部 主任 摘要摘要 串口通信是一种广泛应用于各个领域的通信方式 在远距离数据传输和控 制系统中 可以根据 RS 485 协议实现远距离传输 此次课设即利用 MAX485 芯片实现半双工串行通信的双向通信系统 系统 主要由主机控制模块 通信模块 数据输入模块 数据显示模块和模数转换模 块五个部分组成 实现了 利用 RS 485 实现单片机的双向通信 通过键盘实现 从机的选择 发送数据 主机显示发送的数据及从机编号 通过键盘实现循环 工作模式 指定从机这两种工作方式的切换 此系统具有使用方便 操作简单 便于实现 成本低 可靠性高 可拓展 性强 易于维护等特点 具有较广泛的应用前景 关键字关键字 单片机 RS 485 总线 串行通信 数模转换 目录 前言前言 1 第一章第一章 设计内容及要求设计内容及要求 2 1 1 设计内容 2 1 2 设计要求 2 第二章第二章 系统组成及工作原理系统组成及工作原理 3 2 1 系统组成 3 2 2 工作原理 3 第三章第三章 硬件电路方案设计硬件电路方案设计 4 3 1 主机控制模块 4 3 2 数据显示模块 5 3 3 模数转换模块 6 3 4 键盘输入模块 7 3 5 通信模块 8 3 5 1 RS485 通信协议 8 3 5 2 RS485 通信格式 9 3 6 从机控制模块 10 3 6 1 单片机最小系统 10 3 6 2 显示模块 11 第四章第四章 软件设计软件设计 12 4 1 通信协议 12 4 1 1 串行通信协议的比较 RS232 RS422 RS485 12 4 1 2 通信过程 14 4 2 主机程序 14 4 2 1 主程序流程图 14 4 2 2 矩阵键盘输入子程序 15 4 2 3 数码管显示子程序 16 4 2 4 传输模块子程序 17 4 3 从机程序 17 4 3 1 从机总流程图 17 4 3 2 接收并显示子程序 18 第五章第五章 实验调试和测试结果与分析实验调试和测试结果与分析 19 第六章第六章 结论结论 20 第七章第七章 参考文献参考文献 21 附录一附录一 电路图电路图 22 附录二附录二 程序代码程序代码 23 0 前言前言 单片机是一种集成电路芯片 是采用超大规模集成电路技术把具有数据处 理能力的中央处理器 CPU 随机存储器 RAM 只读存储器 ROM 多种 I O 口 和中断系统 定时器 计数器等功能 可能还包括显示驱动电路 脉宽调制电路 模拟多路转换器 A D 转换器等电路 集成到一块硅片上构成的一个小而完善 的微型计算机系统 而在以单片机为基础的数据采集和实时控制中 通过计算机中的 RS 232 接 口进行计算机与单片机之间的命令和数据传送 就可以对现场进行监测和控制 由于计算机上的 RS 232 所传送的距离不超过 30m 所以在远距离数据传送和控 制时 可以利用 MAX485 的接口芯片将 RS232 协议转换成 RS 485 协议进行远 距离传送 RS 485 是双向 半双工通信协议 允许多个驱动器和接收器挂接在总线上 其中每个驱动器都能够脱离总线 接收器输入灵敏度为200mV 这就意味着 若要识别符号或者间隔状态 接收端电压必须高于 200mV 或者低于 200mV 最小接收器输入阻抗为 12K 驱动器输出电压为1 5V 最小值 5V 最大值 1 第一章第一章 设计内容及要求设计内容及要求 1 11 1 设计内容设计内容 设计一个基于 RS 485 的单片机通信系统 1 21 2 设计要求设计要求 1 通过键盘输入数据和显示要传输的数据 2 通过串口利用 RS 485 总线 将数据发给单片机主机 并显示 图 1 1 系统设计方案图 单片机 1 RS 485 RS 485 单片机 2 2 第二章第二章 系统组成及工作原理系统组成及工作原理 2 12 1 系统组成系统组成 系统主要由主机控制模块 通信模块 数据输入模块 数据显示模块和数 模转换模块五个部分组成 其系统框图如下 图 2 1 系统框图 在本系统中 通信主机是核心部分 主要完成对数据的处理 操作和运算 数据输入模块主要完成数据的输入 所有人机交换的数据都从该模块中输入 数据显示模块完成了通信双方的数据显示 通信模块即完成数据的接受和发送 实现数据远距离传输 2 22 2 工作原理工作原理 基于 RS 485 的单片机通信系统设计的原理是 利用数模转换模块或者键盘 输入模块通过 P3 口或者 P1 口将数据输入到 C51 单片机主机里 C51 单片机主 机通过程序来控制共阴数码管显示数据并利用 MAX485 芯片将数据传输到 C51 单 片机从机中 C51 单片机从机再通过程序控制另一个共阴数码管显示传输过来 的数据 通 信 主 机 数据输入 数据显示 通信 模块 键 盘 数模 转换 通 信 从 机 数 据 显 示 3 第三章第三章 硬件电路方案设计硬件电路方案设计 3 13 1 主机控制模块主机控制模块 图 3 1 主机控制模块 89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器 FPEROM Falsh Programmable and Erasable Read Only Memory 的低电压 高性能 CMOS8 位微处理器 俗称单片机 单片机的可擦除只读存储器可以反复擦除 100 次 该器件采用 ATMEL 高密度非易失存储器制造技术制造 与工业标准的 MCS 51 指令集和输出管脚相兼容 由于将多功能 8 位 CPU 和闪烁存储器组合在单个 芯片中 ATMEL 的 89C51 是一种高效微控制器 a 数据存储器 片内为 128 个字节 片外最多可外扩至 64k 字节 用来存储程序在运行期 间的工作变量 运算的中间结果 数据暂存和缓冲 标志位等 所以称为数据 存储器 b 程序存储器 4 由于受集成度限制 片内只读存储器一般容量较小 如果片内的只读存储 器的容量不够 则需用扩展片外的只读存储器 片外最多可外扩至 64k 字节 c 中断系统 具有 5 个中断源 2 级中断优先权 d 定时器 计数器 片内有 2 个 16 位的定时器 计数器 具有四种工作方式 e 串行口 1 个全双工的串行口 具有四种工作方式 可用来进行串行通讯 扩展并 行 I O 口 甚至与多个单片机相连构成多机系统 从而使单片机的功能更强且 应用更广 P1 口 P2 口 P3 口 P4 口为 4 个并行 8 位 I O 口 f 特殊功能寄存器 共有 21 个 用于对片内的个功能的部件进行管理 控制 监视 实际上是 一些控制寄存器和状态寄存器 是一个具有特殊功能的 RAM 区 g 微处理器 该单片机中有一个 8 位的微处理器 与通用的微处理器基本相同 同样包 括了运算器和控制器两大部分 只是增加了面向控制的处理功能 不仅可处理 数据 还可以进行位变量的处理 由于集成度的限制 最小应用系统只能用作一些小型的控制单元 其应用 特点 1 有可供用户使用的大量 I O 口线 2 内部存储器容量有限 3 应用系统开发具有特殊性 3 23 2 数据显示模块数据显示模块 本次课设采用八段共阴极数码管显示 利用 51 单片机程序来控制数码管的 显示 5 图 3 2 数据显示模块 3 33 3 模数转换模块模数转换模块 本次课设利用 ADC0832来实现数模转换 图3 3 模数转换模块 6 ADC0832 是美国国家半导体公司是生产的一种 8 位分辨率 双通道 A D 转换芯片 其分辨率可达256级 芯片转换时间仅为32 S 转换速度快且稳定性 强 其芯片如下图所示 图 3 4 ADC0832 芯片 其中各管脚功能为 片选使能 低电平芯片使能 CS CH0 模拟输入通道0 或作为 IN 使用 CH1 模拟输入通道1 或作为 IN 使用 GND 芯片参考0 电位 地 DI 数据信号输入 选择通道控制 DO 数据信号输出 转换数据输出 CLK 芯片时钟输入 Vcc REF 电源输入及参考电压输入 复用 3 43 4 键盘输入模块键盘输入模块 图 3 5 键盘输入模块 7 本次课设采用矩阵式键盘 其突出优点是 I O 端口利用率高 可循环操作 而且扫描键盘时占用 CPU 时间少 操作灵活 矩阵键盘控制状态多 编写程序较 方便 故此模块采用矩阵式键盘 3 53 5 通信模块通信模块 图3 6 通信模块 MAX485 接口芯片是 Maxim 公司的一种 RS 485 芯片 MAX485 是用于 RS 485 与 RS 422 通信的低功耗收发器 器件中都具有一个驱动器和一个接收器 其驱 动器摆率不受限制 可以实现最高 2 5Mbps 的传输速率 采用单一电源 5 V 工作 额定电流为 300 A 采用半双工通讯方式 它 完成将 TTL 电平转换为 RS 485 电平的功能 MAX485 芯片的结构和引脚都非常简单 内部含有一个驱动器和接收器 RO 和 DI 端分别为接收器的输出和驱动器的输入端 与单片机连接时只需分别与单 片机的 RXD 和 TXD 相连即可 和 DE 端分别为接收和发送的使能端 当RE 为逻辑 0 时 器件处于接收状态 当 DE 为逻辑 1 时 器件处于发送状态 RE 因为 MAX485 工作在半双工状态 所以只需用单片机的一个管脚控制这两个引脚 即可 A 端和 B 端分别为接收和发送的差分信号端 当 A 引脚的电平高于 B 时 代表发送的数据为 1 当 A 的电平低于 B 端时 代表发送的数据为 0 在与单片 机连接时接线非常简单 只需要一个信号控制 MAX485 的接收和发送即可 同时 将 A 和 B 端之间加匹配电阻 一般可选 100 的电阻 两个 RS485 的 1 脚和 4 脚接在对应的单片机上以实现功能 3 5 13 5 1 RS485RS485 通信通信协议协议 由于 RS 485 通讯是一种半双工通讯 发送和接收共用同一物理信道 在 任意时刻只允许一台单机处于发送状态 因此要求应答的单机必须在侦听到总 8 线上呼叫信号已经发送完毕 并且没有其它单机发出应答信号的情况下 才能 应答 半双工通讯对主机和从机的发送和接收时序有严格的要求 如果在时序 上配合不好 就会发生总线冲突 使整个系统的通讯瘫痪 无法正常工作 要 做到总线上的设备在时序上的严格配合 必须要遵从以下几项原则 1 复位时 主从机都应该处于接收状态 SN75176 芯片的发送和接收功能转换是由芯片的 RET DE 端控制的 RET 1 DE 1 时 SN75176 发送状态 RET 0 DE 0 时 SN75176 处于接收状态 一般使用单片机的一根口线连接 RET DE 端 在上电复位时 由于硬件电路稳 定需要一定的时间 并且单片机各端口复位后处于高电平状态 这样就会使总 线上各个分机处于发送状态 加上上电时各电路的不稳定 可能向总线发送信 息 因此 如果用一根口线作发送和接收控制信号 应该将口线反向后接入 SN75176 的控制端 使上电时 SN75176 处于接收状态 另外 在主从机软件上也应附加若干处理措施 如 上电时或正式通讯之 前 对串行口做几次空操作 清除端口的非法数据和命令 2 控制端 RET DE 的信号的有效脉宽应该大于发送或接收一帧信号的宽度 在 RS 232 RS 422 等全双工通讯过程中 发送和接收信号分别在不同的 物理链路上传输 发送端始终为发送端 接收端始终为接收端 不存在发送 接收控制信号切换问题 在 RS 485 半双工通讯中 由于 SN75176 的发送和接 收都由同一器件完成 并且发送和接收使用同一物理链路 必须对控制信号进 行切换 控制信号何时为高电平 何时为低电平 一般以单片机的 TI RI 信号 作参考 发送时 检测 TI 是否建立起来 当 TI 为高电平后关闭发送功能转为接收 功能 接收时 检测 RI 是否建立起来 当 RI 为高电平后 接收完毕 又可以转为发 送 3 5 23 5 2 RS485RS485 通信格式通信格式 RSS485 协议的信息格式如下 1 编码格式 二进制代码 2 波特率 9600 b s 3 通信方式 半双工 9 4 每个字符由 u 位组成 1 位 起始位 0 8 位 数据位 l 位 停止位 1 5 主机询问的一般格式如下 从机地址码命令码 数据个数数据 校验和 表 3 1 主机询问的一般格式 6 从机应答的一般格式如下 返回地址码命令码 数据个数数据校验和 表 3 2 从机应答的一般格式 按照要求 只需要实现双机通信即可 并无要求主从机特定地位 但是原 理是相同的 3 63 6 从机控制模块从机控制模块 3 6 13 6 1 单片机最小系统单片机最小系统 图3 7 单片机最小系统 单片机最小系统主要包括电源 复位电路和时钟电路等 10 单片机复位电路原理是在单片机的复位引脚 RST 上外接电阻和电容 实现 上电复位 当复位电平持续两个机器周期以上时复位有效 复位电平的持续时 间必须大于单片机的两个机器周期 具体数值可以由 RC 电路计算出时间常数 复位电路由按键复位和上电复位两部分组成 1 上电复位 STC89 系列单片及为高电平复位 通常在复位引脚 RST 上 连接一个电容到 VCC 再连接一个电阻到 GND 由此形成一个 RC 充放电回路保 证单片机在上电时 RST 脚上有足够时间的高电平进行复位 随后回归到低电平 进入正常工作状态 这个电阻和电容的典型值为 10K 和 10uF 2 按键复位 按键复位就是在复位电容上并联一个开关 当开关按下时 电容被放电 RST 也被拉到高电平 而且由于电容的充电 会保持一段时间的 高电平来使单片机复位 单片机时钟电路是由方向放大器构成 XTAL1 为时钟电路的输入端 XTAL2 为时钟电路的输出端 3 6 23 6 2 显示模块显示模块 从机的显示模块与主机原理一致 这里就不再次叙述 11 第四章第四章 软件设计软件设计 4 1 通信协议通信协议 4 1 14 1 1 串行通信协议的比较串行通信协议的比较 RS232RS232 RS422RS422 RS485RS485 RS 232 RS 422 与 RS 485 标准只对接口的电气特性做出规定 而不涉及 接插件 电缆或协议 在此基础上用户可以建立自己的高层通信协议 例如 视频服务器都带有多个 RS422 串行通讯接口 每个接口均可通过 RS422 通讯线 由外部计算机控制实现记录与播放 视频服务器除提供各种控制硬件接口外 还提供协议接口 如 RS422 接口除支持 RS422 的 Profile 协议外 还支持 Louth Odetics BVW 等通过 RS422 控制的协议 RS 232 RS 422 与 RS 485 都是串行数据接口标准 都是由电子工业协会 EIA 制订并发布的 RS 232 在 1962 年发布 RS 422 由 RS 232 发展而来 为改进 RS 232 通信距离短 速率低的缺点 RS 422 定义了一种平衡通信接口 将传输速率提高到 10Mbps 传输距离延长到 4000 英尺 速率低于 100Kbps 时 并允许在一条平衡总线上连接最多 10 个接收器 RS 422 是一种单机发送 多机接收的单向 平衡传输规范 被命名为 TIA EIA 422 A 标准 为扩展应用 范围 EIA 又于 1983 年在 RS 422 基础上制定了 RS 485 标准 增加了多点 双 向通信能力 即允许多个发送器连接到同一条总线上 同时增加了发送器的驱 动能力和冲突保护特性 扩展了总线共模范围 后命名为 TIA EIA 485 A 标准 1 RS 232 串行接口标准 目前 RS 232 是 PC 机与通信工业中应用最广泛的一种串行接口 RS 232 被 定义为一种在低速率串行通讯中增加通讯距离的单端标准 RS 232 采取不平衡 传输方式 即所谓单端通讯 收 发端的数据信号是相对于信号地 典型的 RS 232 信号在正负电平之间摆动 在发送数据时 发送端驱动器输出正电平在 5 15V 负电平在 5 15V 电平 当无数据传输时 线上为 TTL 从开始传 送数据到结束 线上电平从 TTL 电平到 RS 232 电平再返回 TTL 电平 接收器 典型的工作电平在 3 12V 与 3 12V 由于发送电平与接收电平的差仅为 2V 至 3V 左右 所以其共模抑制能力差 再加上双绞线上的分布电容 其传送距 离最大为约 15 米 最高速率为 20Kbps RS 232 是为点对点 即只用一对收 发设备 通讯而设计的 其驱动器负载为 3k 7k 所以 RS 232 适合本地设 备之间的通信 12 2 RS 422 与 RS 485 串行接口标准 1 平衡传输 RS 422 RS 485 与 RS 232 不一样 数据信号采用差分传输方式 也称作 平衡传输 它使用一对双绞线 将其中一线定义为 A 另一线定义为 B 通常 情况下 发送驱动器 A B 之间的正电平在 2 6V 是一个逻辑状态 负电平 在 2V 6V 是另一个逻辑状态 另有一个信号地 C 在 RS 485 中还有一 使 能 端 而在 RS 422 中这是可用可不用的 使能 端是用于控制发送驱动器 与传输线的切断与连接 当 使能 端起作用时 发送驱动器处于高阻状态 称作 第三态 即它是有别于逻辑 1 与 0 的第三态 2 RS 422 电气规定 由于接收器采用高输入阻抗和发送驱动器比 RS232 更强的驱动能力 故允 许在相同传输线上连接多个接收节点 最多可接 10 个节点 即一个主设备 Master 其余为从设备 Salve 从设备之间不能通信 所以 RS 422 支持 点对多的双向通信 RS 422 四线接口由于采用单独的发送和接收通道 因此不 必控制数据方向 各装置之间任何必须的信号交换均可以按软件方式 XON XOFF 握手 或硬件方式 一对单独的双绞线 实现 RS 422 的最大传 输距离为 4000 英尺 约 1219 米 最大传输速率为 10Mbps 其平衡双绞线的 长度与传输速率成反比 在 100Kbps 速率以下 才可能达到最大传输距离 只 有在很短的距离下才能获得最高速率传输 一般 100 米长的双绞线上所能获得 的最大传输速率仅为 1Mbps RS 422 需要一终接电阻 要求其阻值约等于传输 电缆的特性阻抗 在矩距离传输时可不需终接电阻 即一般在 300 米以下不需 终接电阻 终接电阻接在传输电缆的最远端 3 RS 485 电气规定 由于 RS 485 是从 RS 422 基础上发展而来的 所以 RS 485 许多电气规定 与 RS 422 相仿 如都采用平衡传输方式 都需要在传输线上接终接电阻等 RS 485 可以采用二线与四线方式 二线制可实现真正的多点双向通信 RS 485 总线 在要求通信距离为几十米到上千米时 广泛采用 RS 485 串行总线标准 RS 485 采用平衡发送和差分接收 因此具有抑制共模干扰的能力 加上总线收 发器具有高灵敏度 能检测低至 200mV 的电压 故传输信号能在千米以外得到 恢复 RS 485 采用半双工工作方式 任何时候只能有一点处于发送状态 因此 发送电路须由使能信号加以控制 RS 485 用于多点互连时非常方便 可以省掉 13 许多信号线 应用 RS 485 可以联网构成分布式系统 其允许最多并联 32 台驱 动器和 32 台接收器 RS 485 与 RS 422 的不同还在于其共模输出电压是不同的 RS 485 是 7V 至 12V 之间 而 RS 422 在 7V 至 7V 之间 RS 485 满足所有 RS 422 的规范 所以 RS 485 的驱动器可以用在 RS 422 网络中应用 RS 485 与 RS 422 一样 其最大传输距离约为 1219 米 最大传输速率为 10Mbps 平衡双 绞线的长度与传输速率成反比 在 100Kbps 速率以下 才可能使用规定最长的 电缆长度 只有在很短的距离下才能获得最高速率传输 一般 100 米长双绞线 最大传输速率仅为 1Mbps 4 1 24 1 2 通信过程通信过程 一次完整的通信过程分为 3 个阶段 发送机处理输入数据 通信和接收机 显示输入数据 第一阶段 发送机判断输入的键值 将其打包处理 通信阶段 把打包处理好的数值发送给寄存器 再从寄存器发送给接收机 接收机显示阶 段 把打包好的数据处理后还原原来的数据 通过查表以数码管的形式显示 此时接收机清除接收缓冲区及相关变量 准备与主机下次通信 任何一次完整 的通信过程都是由发送机方发起的 两个单片机在无键值输入的情况下都处在 接收状态 4 24 2 主机程序主机程序 4 2 14 2 1 主程序总流程图主程序总流程图 多级双向通信的软件设计主要分为 系统初始化 确定主从及关系 双方 进行握手 主机发送数据和从机接收数据等六大部分 每个功能米快快对于通 信双方都是必不可缺的 只有这样主机才能很好的对外部的信息进行采集 分 析和解决 系统初始化 系统初始化包括串口初始化和显示模块初始化 主要实现串 口中断的开启 总中断的开启 定时器的选择及其工作方式的选择 串口工作 方式的选择和显示模块初始化等功能 有键按下 通信双方进行通信时需确定双方的主从关系 然后通过键盘按 下 显示所传输的数据 键值处理 在该部分中 通信逐句会发送握手信号给从机 主机发送的数 据通过处理再传送给从机 送显数据 所发送的数据通过处理之后再发送给从机并显示 14 从机接收数据 此部分功能较简单 只需完成从机不断接受主机发送的数 据即可 N Y 图 4 1 主程序流程图 4 2 24 2 2 矩阵键盘输入子程序矩阵键盘输入子程序 初始化后程序不断检测矩阵键盘状况 一旦检测到有键按下 消抖后即时 开始处理输入的数据 先以行为单位确定按下的键在哪一行 然后再提取该行 的数据 以相与的方式确定是该行的第几个键按下了 由此确定按下的到底是 哪个键 确定了之后 用比较方便传输的 16 进制的数值来代替 初始化 有键按下 开始 键值处理 主机显示数据 发送数据给从机 机 从机显示数 据 15 N Y N Y 图 4 2 矩阵键盘程序流程图 4 2 34 2 3 数码管显示子程序数码管显示子程序 图 4 3 数码管显示子程序流程图 开始 有键按下 扫描行 确定按下键的行数 扫描列 确定按键值 转换成数值 按键释放 数据显示并传输 返回 接收数据 查表 得到对应的码 将对应的码发给 P2 P2 接共阴数码管 数码管显示数据 返回 开始 16 4 2 44 2 4 传输模块子程序传输模块子程序 所接收的数据经过处理之后发送给从机 图 4 4 传输模块子程序流程图 4 34 3 从机程序从机程序 4 3 14 3 1 从机总流程图从机总流程图 N Y 图 4 5 从机主流程图 开始 关闭串口中断 设置状态为发送 将要传输的数据给 SBUF 传输后 T1 0 打开串口中断 返回 初始化 数据传输 过来 键值处理 从机显示数据 开始 17 4 3 24 3 2 接收并显示子程序接收并显示子程序 从机接收到主机传来的信息 经过处理之后在从机的数码管上显示 显示 部分与主机显示部分相似 N Y 图 4 6 接收部分流程图 开始 打开接受 中断标志位 RI 0 读缓存区的值 调用显示子程序 返回 18 第五章第五章 实验调试和测试结果与分析实验调试和测试结果与分析 先利用 Proteus 进行仿真 看能否满足要求 若满足要求后 再将写好的 主机程序和从机程序分别烧录进两个单片机里 两个单片机的 P3 0 P3 1 控制 RS485 使能端 再接上数据输入输出两根导线 打开电源之后 两个单片机的 数码管显示模块都处于显示的状态 将采集电压开关闭合 按下其中任意一个 键时 在释放的瞬间两个单片机的数码管显示模块都全部显示了矩阵键盘输入 的键值 而改变滑动电阻器的阻值时 数码管显示模块的数值并不发生变化 当采集电压开关关闭时 改变滑动电阻器的阻值 两个单片机的数码管显示模 块都全部显示了滑动变阻器输入的阻值所对应的数值 但是按下任意矩阵键盘 的键值 数码管的显示模块的数值不改变 证明串行通信成功 通过几次按键 输入和模拟输入 确认单片机可以以半双工的方式串行通信 19 第六章第六章 结论结论 本次课设的内容是是 RS485 总线双机通信系统设计 本设计在单片机网络 的通信的基础上 实现单片机双机通信 用 RS485 接口来实现单片机与单片机 之间的通信 采用主从式 即在数个单片机中 有一个是主机 其余的是从机 从机要服从主机的调度 支配 利用 80C51 单片机的串行口方式来实现这种主 从式的通信结构 同时利用了 Keil 和 Proteus 软件来实现单片机的 C 语言编程 然后在 proteus 仿真软件中设计电路 本次课设整个过程包括通过理论设计 仿真软件仿真 确定具体方案 安 装实际电路 调试电路 测试结果等多个方面的内容 这就要求我们充分利用 所学的知识进行思考 借鉴 可以说 本次课设是针对前面所学的知识进行的 一次比较综合的检验 本次课设用时 3 个星期 成功的完成了任务 总结我这次课设之所以能成 功的原因主要就是做好了充分准备 即熟练地掌握课本上的理论知识 做好仿 真并打印出来和充分了解自己将要用到的芯片 这样才能对试验中出现的问题 进行分析和解决 虽然最后还是出现了正确的结果 但我这次的设计还是存在很大的不足 一是程序略有繁琐 二是其实没有很好的显示出 RS485 的特别的功能 忽略这些不足 本次设计基本达到了实验要求 20 第七章第七章 参考文献参考文献 1 谭浩强 C 程序设计 北京 清华大学出版社 2009 2 张先庭 单片机原理 接口与 C51 应用程序设计 北京 国防工业出版 社 2011 3 张毅刚 单片机原理及应用 M 高等教育出版社 2008 4 郭天祥 51 单片机 C 语言教程 电子工业出版社 2011 5 张涵芳 徐爱卿 单片微型计算机及其应用 M 北京 北京航空航天大 学出版社 1991 21 附录一附录一 电路图电路图 22 附录二附录二 程序代码程序代码 主机程序 函数功能 AD 转换子程序入口参数 CH 出口参数 dat include include define uchar unsigned char define uint unsigned int uchar code table 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 0 x77 0 x7c 0 x39 0 x5e 0 x79 0 x71 sbit anjia P3 2 sbit CS P3 4 sbit Clk P3 5 sbit DATI P3 3 uchar a key num uchar dat 0 x00 uchar CH uchar matrixkeyscan void put uchar void display uchar void delayms uint z uint i j for i z i 0 i for j 110 j 0 j unsigned char adc0832 unsigned char CH unsigned char i test adval 23 adval 0 x00 test 0 x00 Clk 0 初始化 DATI 1 nop CS 0 nop Clk 1 nop if CH 0 x00 通道选择 Clk 0 DATI 1 通道的第一位 nop Clk 1 nop Clk 0 DATI 0 通道的第二位 nop Clk 1 else Clk 0 DATI 1 通道的第一位 nop Clk 1 nop Clk 0 DATI 1 通道的第二位 24 nop Clk 1 Clk 0 DATI 1 for i 0 i 8 i 读取前位的值 adval 1 Clk 1 nop Clk 0 if DATI adval 0 x01 else adval 0 x00 for i 0 i 1 if DATI test 0 x80 else test 0 x00 nop Clk 1 nop Clk 0 25 if adval test 比较前位与后位的值 如果不相同舍去 若一直 出现显示为零 请将该行去掉 dat test nop CS 1 释放 ADC0832 DATI 1 Clk 1 return dat void put uchar c SBUF c while TI TI 0 void init TMOD 0X20 TH1 0XFD TL1 0XFD TR1 1 SCON 0X50 EA 1 ES 1 EX0 1 IT0 0 void ser interrupt 4 26 if RI 1 RI 0 a SBUF void display uchar num P2 table num 显示函数只送段选数据 uchar matrixkeyscan uchar temp P1 0 xfe temp P1 temp temp if temp 0 xf0 delayms 10 temp P1 temp temp if temp 0 xf0 temp P1 switch temp 27 case 0 xee key 0 break case 0 xde key 1 break case 0 xbe key 2 break case 0 x7e key 15 break while temp 0 xf0 等待按键释放 temp P1 temp temp display key P1 0 xfd temp

温馨提示

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

评论

0/150

提交评论