• 单片机diy电压表头 > 基于89c2051 单片机的热表通讯模块的开发
  • 基于89c2051 单片机的热表通讯模块的开发

    免费下载 下载该文档 文档格式:PDF   更新时间:2009-08-01   下载次数:0   点击次数:1
    文档基本属性
    文档语言:Traditional Chinese
    文档格式:pdf
    文档作者:user
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    1994-2006 China Academic Journal Electronic Publishing House. All rights reserved.
    313 通信协议 单片机的串行口工作于方式 2 或方式 3 时 , 数据 帧由 11 位数据组成 :1 位起始位 , 位数据位 , 位停 9 1 止位 .在这两种方式下 , 第 9 位数据是可控的标志 位 ,只有第 9 位的数据是 1" 代表地址帧 ) 时 , 串行口 " ( 接口电路才会在接收完 1 个数据后 , 向 CPU 请求中 断 .因为 PC 机的异步通信功能没有这样的通信格 式 ,所以这种方式只适合单片机之间的多机通信 .一 般情况下 ,实现两种异型机之间的通信常采用以下几 种方式 : ( 1) 用 1 台单片机作为上位 PC 机和下位单片 机之间的 "桥梁" 实现数据格式的转换 ; ( 2 ) 在 PC 机 , 内安装异步通信适配卡 ,通过设计可编程芯片的运行 方式 ,使之与单片机的多机通信方式一致 ; ( 3) 设置上 位机编程环境提供的串行通讯控件的属性来区分寻 址指令和数据传送指令 , 进而实现通讯 .方法 1 和方 法 2 硬件结构复杂 ,方法 3 软件代码编写繁琐 .在系
    http://www.cnki.net
    32
    Instrument Technique and Sensor
    统不复杂 , 任务不重 , 通信数据量不大的情况下 ,这些 方法还不会有明显的缺陷 ,否则方法 1 中的 "桥梁" 单 片机和方法 2 中的通信异步适配器将会成为通信信 迈的版颈 ,而方法 3 中数据帧中的奇偶校验位通常用 作发送地址码 ( 通道号) 或数据的特征位 ,这样数据通 信的校核会采用累加和校验的方法 ,采用这种方法不 但软件开销和进行通信的数据量增加了 ,而且实时性 也受到影响 . 根据实际情况 ,采用了通信信息帧不区分数据帧 和地址帧的方法 , 这样做不必使单片机工作在 11 位 异步收发方式下 , 使单片机和 PC 机的串口工作方式 一致 .受到通信格式的启发 , 设计信息帧见图 6 , 用 1 ~3 个字节作为数据通信的 "报头"起同步作用 ; 用 1 , 个或多个字节作为单片机的地址区别码来标识某个 单片机 ( 根据系统中下位机的个数决定) ; 用来标志下 位机工作性质的信息码可根据实际的情况在信息帧 中灵活设置 .
    图6 信息帧一般格式
    源后存入数据库并通过人机界面显示 . 按照上述通信协议 ,综合串口模拟过程对通讯模 块 ( 下位机 ) 进行编程 .编写的程序主要包括主程序 和中断程序 ; 中断程序有模拟串口中断接收程序和串 行中断程序 .其中主程序完成各个特殊寄存器及通 信参数 , 格式的初始化工作 ,分析判断串行中断 ,接受 信息向热表发出相应的指令 ; 模拟串口中断程序具体 完成热表数据的接收 ; 串行中断程序完成对上位机发 出信息帧的接收 .另外 ,考虑到实际应用当中各种随 机干扰 ,在编写程序时作了适当的纠错处理 , 即通讯 模块收到上位机指令后对热表进行操作 ,若在一定时 间内没有收到回应 ,则使程序复位 . 每台热表对应的通讯模块地址的标识方法如图 8 所示 .充分利用了该型号单片机的硬件资源 , 以跳线 的方式设定 P1 端口各个管脚的电平作为地址标识 ,8 个管脚不同的通断组合可以表示不同的地址 .
    上位机发送信息帧时 ,下位机全部收到上位机的 信息帧 ,然后判断信息帧中的地址码 , 如果是自己的 地址码 ,则根据数据帧中的信息码内容作出相应的反 应 .信息帧的长度不限 ( 根据系统中下位机的个数以 及信息码的形式决定 ) , 是多个字节的 .在这种通信 格式中还可以用软件的方式进行一些通信数据的校 验. 工控机与下位机通讯模块之间的通信协议 , 如图 7 所示 .
    图8 通信模块地址标识
    图7 工控机与下位机通讯模块间的通信协议
    上位机工控机向下位机发出的信息帧中应包含 地址和控制指令信息 ,以便下位机的通讯模块能辨识 出是否及如何应答 ; 通讯模块 , 向上位机回复的信息 帧中应包含自身地址及对应控制指令的数据 ; 同步字 和结束字是完成异步通讯必须的 ,因此无论上位机信 息帧还是下位机信息帧都不可少 .具体的信息帧格 式如下 ( 括号里标注为字节数 ,未标出的字节数为 1) :
    通讯模块的编程都是利用仿真器提供的环境进 行模拟并调试成功的 . 4 与上位机软件接口 通过通讯模块最终实现工控机对热表数据的读 取还需要对上位机进行通讯接口程序的编写 .上位 机通讯程序的编写也同样有多种方法 : ( 1) 通过调 用 WINDOWS 提供的 API 函数实现 ; ( 2) 采用汇编语 言和 C 语言混合编写动态连接库函数实现 ; ( 3) 利 用 VB 语言及其提供的串行通信控件实现 .第 3 种方 法最简单 , 开发周期短 , 经济实用 .只需在工程中 添加 MSCOMM 控件 , 然后进行相应的属性设置 , 便 可完成数据的收发 .但 VB 中的数据收发分为二进制 形式和文本形式 .若发送文本 , 单片机收到的文本 是 ASC Ⅱ码 , 在 VB6. 0 中使用的是 Unicode 字符 , 即用 2 个字符来表示 1 个字符 , 当发送 1 个字符时单 片机收到 2 个字节 .因此大多情况下 PC 机与单片机 通讯交换的是二进制数据 .所以利用 MSCOMM 控件 来发送二进制数据时 , 必须将变量声明为 Byte 形式 .

    上一页下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PDF格式下载
  • 您可能感兴趣的
  • 单片机diy  lcd数字电压表头  电压表数显表头  数字电压表头  电压表头  交流电压表  高精度数字电压表  数显电压表  指针电压表