在各种单片机应用系统的设计中,常常遇到单片机与pc的通信问题,在速度要求不高、传送距离不远的场合一般采用rs 232标准串行接口实现,在传送距离较远的场合,也有学者研究通过网络实现pc间的通信。但是,要同时满足高速度和远距离pc与单片机通信这是一个迫切需要解决的问题。随着信息技术的发展,计算机和网络越来越普及,对单片机的远程控制与测量的要求也越来越多。本文在结合现有研究的基础上,对相关的设计进行一定的改进和创新,设计一个远程通信系统,他由3部分构成:远端pc、本地端pc和单片机系统。通过vb可视化编程,远端pc利用局域网向本地端pc发出命令,本地端pc接到命令后,自动与单片机通过打印机接口以epp1.9协议进行通信(串行接口作为备用通信口),并将接到的单片机数据实时传送给远端 pc,以实现高速远程情况下pc与单片机通信的要求。
1、系统结构与设计
系统构成如图1所示,远端pc通过局域网和本地pc通信,在通信中使用winsock控件和tcp/1p协议;本地端pc通过并行通信接口或串行通信接口与单片机通信,在并口通信中使用winio并口通信驱动程序、epp协议和lpt打印机接口,在串口通信中使用mscomm控件、rs 232c协议和com口。在此结构中,本地pc端起到中继的作用,当本地端pc接收到从远端pc传送过来的命令,在选择通信方式后,与单片机通信,使单片机向远端pc传送数据。
2 、远端pc与本地端pc通信设计
tcp/ip是目前在网络通信中广泛采用的一组完整的网络协议,该协议的核心是tcp,ip和udp协议。tcp/ip网络环境下应用程序通过网络系统编程界面套接字(socket)实现与内核的交互。利用socket通信编程接口编写程序,其目的是在tcp/ip所组建网络的不同机器之间利用客户/服务器模式建立通信连接,开发人员只要提供一些基本的连接信息,其余由操作系统内核完成。winsock(windows socket)是windows操作系统下的通用的tcp/ip应用程序的网络编程接口,通过调用winsock的接口函数来调用tcp/ip的各种功能。在vb 6.0中,winsock控件对windows sockets api进行封装,使用程序员可以不必了解tcp/ip或调用底层winsock api的具体细节,只要设置好相应属性,在触发的事件过程中作好相应处理,就能编写出网络应用程序。
远端pc与本地端pc通信通过vb 6.0调用winsock控件实现,图2(a),(b)分别为其控制界面。需说明以下几点:远端pc选择好要连接的本地端pc的ip地址和网络传送端口后,再发起联机申请;本地端pc网络传送端口必须和远端pc传送端口一致,串行端口选择是com1/com2,并行端口输入并口地址(378h);远端 pc在命令输入区输入命令后,发送命令按钮才有效;回传数据区存放单片机传送回来的实时数据并可保存成文本文件,信息区存放网络工作状态、远端pc的命令,及单片机数据传送情况。其工作过程如图2(c)所示。
3 、本地端pc与单片机通信设计
3.1 本地端pc与单片机并口通信设计
3.1.1 并行通信接口及协议
在速率要求较高的场合,可以利用pc机上的打印机接口(centronics标准,db-25芯针座,ttl电平)实现。并口通信有spp、epp和ecp三种工作模式。本文采用epp协议。
(1)epp协议
增强型并行接口协议epp(enhanced parallel port),为pc和外设之间定义了并行双向通信的标准,该协议通过硬件自动握手,能达到500 kb/s~2 mb/s的通信速率,适合大量数据传输的外设进行告诉通信。epp分为epp1.7和epp1.9,二者之间的区别是:epp1.9需要判断超时(避免出现“死循环”)以及nwait信号是否有效,而epp1.7不需要判断,传输速度更快。epp协议支持4种操作,包括数据写出、地址写出、数据读取和地址读取。
(2) epp协议的寄存器地址及一些主要的引脚定义,如表1,表2所示。
3.1.2 winio并口通信驱动程序
在vb中无法直接使用输入/输出指令来完成对端口的访问,尤其是windows 2000/xp系统对端口的保护更加严格。要对端口进行访问,一般有2种方法:第一种是通过c/c++等编程软件开发一些动态链接库(dll)或 activex控件用于在vb中调用来完成对底层硬件的控制;第二种更为简便的方法是到互联网上去寻找一些免费的dll或activex控件,本系统使用的是网络上免费的动态链接库文件winio.dll(适用于windows 2000/xp),主要实现了对底层并行端口使用的方法。winio是一个绿色环保软件,他不需要向注册表中添加任何信息,只要把 winio.vxd,winio.sys,winio.dll放在应用程序所在的文件夹下就可以。在使用的时候,直接将winio.bas引用到工程中,就可以实现对端口的控制和访问。
3.1.3 并口通信设计
如图3所示,打印机口通过单片机的p1口传送数据,nwait和ndstorbe通过p2.0和p2.1与单片机连接。并行接口与单片机相连一般有两种方式:一种是直接连接,另一种是使用双向驱动器或锁存器的总线方式。本系统采用第一种方式,能最大限度发挥epp速度快的优势,但单片机易受到不稳定信号的干扰。epp模式为双向传输协议,为了简化设计,只进行采用单片机向pc传送数据的单向读传送,并口采用epp1.9模式,支持超时和 nwait判断。
本地端pc通过并口与单片机通信的vb源程序如下:
3.2 本地端pc与单片机串口通信设计
mscomm控件是microsoft公司提供的简化windows下串行通信编程的activex控件,他为应用程序提供通过串行接口收发数据的简便方法。该控件具有完善的串口数据的发送和接收功能。通过此控件,pc机可以利用串行口与其他设备实现轻松连接,简单高效地实现设备之间的通讯。
pc串行接口com1/com2信号符合rs 232c电气标准,而单片机串行接口采用ttl逻辑电平,实现二者之间的异步串行通信需要电平转换芯片。单片机串行接口有一个全双工串行接口,经过max 232芯片可方便地转换成rs 232电气标准。
本系统以串行通信为备用通信方式,本地端pc通过串口与单片机通信的vb源程序如下:
3.3 单片机程序设计
单片机部分可进行并口和串口2种方式的通信,用汇编语言编写通信子程序。在这里分别给出2种方式的程序流程图。如图4(a),(b)所示。
本系统有如下特色:本地端pc起到中继作用;这里使用局域网(如果要使用internet,必须为本地端pc提供固定的ip地址),当网络连接中断时,可自动重新连接;本地端pc采用并口和串口2种方式与单片机通信。并口采用epp1.9模式,单片机也可判断超时;远端pc可实时读取单片机中的数据。
本文利用了vb面向对象和可视化编程的特点,将网络、并口、串口通信方式相结合实现了远程pc与单片机系统的通信,并在大功率开关电源控制系统上测试,可完全正常运转。本系统给出的方法,对其他pc通信场合亦有一定参考价值。
Xilinx生成的读写函数
MySQL支持的三种数据类型
微生物BOD传感器的工作原理及特点
真菌毒素荧光定量检测仪 产品功能介绍
Karma宣布即将推出的纯电动版Revero的起售价为8万美元
基于VB可视化编程实现远程通信系统的设计
同样不到3000元,荣耀V9和小米6评测对比,你选哪一款?
苹果宣布到2030年将实现100%的碳中和目标
小康助手的优势有哪些?高效便捷的家庭健康管理机器人
工程师创业:智能隐形眼镜领域前景看好
激光跟踪仪的功能是什么?
PIC32MZ系列MCU的定时器测试学习教程
全球5G深度融合势不可挡,我国5G在国际上都处于引领地位
英特尔押注4nm制程,将与台积电展开合作
多协议蓝牙和Zigbee怎样连接更多的设备
时间继电器型号有哪些 延时继电器的工作原理
滤波电容怎么测量好坏_滤波电容越大越好吗
全新LED架构—ISELED
伺服传动主要会涉及到哪些产品部件?
电蜂分享高压连接器插头需做哪些测试