《多片单片机与计算机之间串行通信的实现.pdf》由会员分享,可在线阅读,更多相关《多片单片机与计算机之间串行通信的实现.pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、多片单片机与计算机之间串行通信的实现毛玉蓉多片单片机与计算机之问串行通信的实现R e a l i z e dS e r i a lC o m m u n i c a t i o nB e t w e e nM i c r o c o m p u t e r sa n dC o m p u t e r毛玉蓉(长江大学电子与信息工程学院湖北荆州4 3 4 0 2 3)摘要文章介绍了基于w i n d o w s,利用V B,通过串口依照R S 一2 3 2 标准实现多片单片机与计算机之间的通信。具体介绍了V B 环境下串行通讯程序的编制,并给出了主要的程序代码,结合岩芯渗透率测试系统,介绍了测试系
2、统与P C 机通讯的串口设计,给出了通信模块流程图。该串行通信程序的设计具有线路简洁、性能良好、成本低、可靠性高等特点,值得推广。关键词 单片机V B串行通信 中图分类号 T P 3 6 8 2 文献标识码 B在采用以P C 机为控制中心的数据采集自动化控制系统中,通常需要单片机采集数据,然后用异步串行通讯方式传给P C 机,P C 对单片机进行定时控制,需要多个单片机协同工作。如果系统不很复杂,可通过定时器控件控制收发过程,在必要的地方启用自动接收装置,使定时控制和通讯过程完美地结合起来。这样,可以免去“握手”协议的繁琐过程,简化编程,提高速度。本文结合岩芯渗透率测试系统的数据采集部分,介绍
3、利用V B 实现多片单片机与计算机之间的串行通信。1V B 环境下串行通迅程序的编制本系统设计的数据处理程序将在W I N D O W S平台上,可以借助微软公司的V i s u a lB a s i c 开发了上位机的应用程序。V B 具有面向对象的设计方法,友好的用户界面、简单方便的串行通讯和实用性强等优点,无须借用其他语言就可以开发出优秀的控制系统通讯软件。本文介绍在W i n d o W S2 0 0 0 环境下,利用V B 来实现P C 机与多个A T M E L 公司的A T 8 9 C 5 1 单片机之间的串行通讯。1 1 系统初始化V i s u a lB a s i c 提供
4、了一个具有串行通信功能的M S C O M M 组件,运用它非常方便口q J。V i s u a lB a s i c采用事件驱动模式,程序员只需要对V i s u a lB a s i c提供组件的属性、事件进行编程,然后再由这些组件对相应的事件进行响应。这样就使得各个事件彼此完全独立,减少事件间的耦合性,可以大大提高程序的稳定性和可靠性,同时简化了程序编码过程。我们将使用的串口通信组件的名称定义为M S C o m m l,通信时,需要给它设置如下几个属性:(1)选择串口号M S C o m m l C o m m P o r t 一1*选择串口1*(2)打开串行口M S C o m m
5、l P o r t O p e n=T r u e*打开串口*当要准备关闭端口时,只需将P o r t O p e n 属性设置为F a l s e 即可。(3)建立通信握手信号M S C o m m1 H a n d s h a k i n g c o m N o n e*选择握手信号*(4)指定输入方式M S C o m m l I n p u t M o d e c o m I n p u t M o d e T e x tf*设置串口输入方式*(5)数据格式选择M S C o m m l S e t t i n g s 一”2 4 0 0,n,8,1”*设置波特率、奇偶校验位、数据位、
6、停止位*(6)开辟输出缓冲器的长度M S C o m m l O u t B u f f e r C o u n t 一1*开辟1 个字节的输出缓冲区*(7)开辟输入缓冲器的长度M S C o m m l I n B u f f e r C o u n t 一4 8*开辟4 8 个字节的输入缓冲区*(8)每完成一次通信事件,在程序结束之前,都需要关闭打开的串行口,否则其他应用程序将无法调用该通信口。一3 一一 万方数据仪器仪表与分析监测2 0 0 7 年第1 期M S C o m m l P o r t O p e n F a l s e*关闭串口*。完成以上初始化工作,就可利用M S C o
7、 m m 组件的一些属性和事件来处理通信事件。利用O n C o m m 事件可以通过通信组件跟踪每个事件的过程,利用C o m m E v e n t 属性可检测所发生的事件。为了保证数据更新的及时性,我们采用V i s u a lB a s i c 自带的定时器组件T i m e r,由定时器定时处理接收的数据。设置定时器定时间隔以后,在允许定时器触发的情况下,定时器组件会定时响应定时事件。将通信组件的收发数据事件放在定时器的定时事务中,就可以满足实时反映现场数据的要求了。定时器用于定时接收数据的程序流程图如图1 所示。堑塑j _ 一串口初始化二二二二王二二输入缓冲区清空发送参数设定值和命
8、令收蠢鎏凶J 读输入缓冲区数据l囱蓟l 关闭串口ff 处理接收到的数据lL时器就可以自动退出等待状态,并为下次通讯做好准备。根据V i s u a lB a s i c 对变量范围的规定,用于报警的标志位必须定义为全局布尔变量。这样就可以保证添加时间越限报警功能后,应用程序在通讯出现故障时仍然可以继续运行,这样就提高了应用程序的稳定性和可靠性。1 2 上位机程序的实现为实现通讯程序,须在V B 开发环境下设置一个用做控制通讯的窗体。窗体上主要有一个通讯控件M s c o m m l 和两个T i m e r 控件。V B 的特点是事件驱动,定时器控件会定时触发相应事件的驱动程序。通过T i m
9、 e r 控件来控制通讯中的发送命令和接收数据过程,在通讯程序中设置两个T i m e r 控件,T i m e r l 用来控制发送单片机命令和接收单片机数据,控件T i m e r 2 用来判断是否通讯超时,确保系统安全。为了实现一台P C 机和多单片机之间的通讯,可在一个T i m e t 控件的过程中,在发送命令之前设定命令参数和要接收数据的单片机号,然后发送单片机命令。P r i v a t eS u bT i m e r 2 一T i m e r()c u m 超时一T r u eE n dS u b P r i v a t eS u bT i m e r l T i m e r(
10、)i n t f l a g 一0I fi n t f l a g l 一0T h e n 单片机选择标志i n t f l a g l=1E l s ei n t f l a 9 1=0E:n dI fI fi n t f l a g l 一1T h e ni n t f l a g=i n t f l a g+4s t r o u t p u t=7 7A 7L e n g t h=2 8E l s es t r o u t p u t 一”B”&T r i m(S t r(i n t f l a g)&T r i m(s t r P)T r i m(s t r Q)T r i m(s t
11、 r T)L e n g t h=6E n dI fM S C o m m l I n p u t L e n=o i n p u t 将读取接收缓冲区的全部内容M S C o m m l O u t B u f f e r C o u n t 一0 清除发送缓冲区数据M S C o m m l I n B u f f e r C o u n t 一0 清除发送缓冲区数据 万方数据多片单片机与计算机之间串行通信的实现毛玉蓉M S C o m m1 P o r t O p e n T r u es t r i n p u t M S C o m m1 I n p u tM S C o m m l
12、 O u t p u t=T r i m(s t r o u t p u t)T i m e r 2 E n a b l e d T r u ec u m 超时一F a l s eD OD o E v e n t sL o o pU n t i lM S C o m m l I n B u f f e r C o u n t 一L e n g t hO rC U r e 超时一T r u es t r i n p u t M S C o m m l I n p u tM S C o m m1 P o r t O p e n F a l s eE n dS u b2测试系统与P C 机通讯的串口
13、设计2 1串口传输功能串行通讯在仪器设计中运用得比较多,在这里是用它来传输硬件所采集的数据,再通过上位机进行处理显示。8 9 C 5 1 单片机虽然可以胜任部分数据处理,但处理数据的能力十分有限。为此,我们将数据处理任务交给上位机来完成,一方面可以充分利用上位机强大的数据处理能力,另一方面也可以节约下位机的C P U 时间,更好地跟踪采样岩芯压力的变化情况。在这里我们采用8 9 C 5 1 的串口传输功能,再利用现有的微型计算机监测数据。在数据采集系统中,一般把用于监测的上位微机称为上位机,把采集端称为下位机。上位机与下位机实现通信时,它们两者必须遵守一定的协议。对于本系统的设计,必须遵守串口
14、通信协议。在下位机中,主要是8 9 C 5 1 单片机。8 9 C 5 1 单片机内部有一个可编程的全双工串行接口 4 ,它在物理结构上分为两个独立的发送缓冲器和接收缓冲器S B U F,这两个缓冲器占用一个特殊的功能寄存器地址。对外有两条独立的收、发信号线R X D(P 3 0)和T X D(P 3 1),因此它可以同时接收和发送数据,实现全双工传送。接收和发送缓冲器不能互换使用,对外它们占用一个地址,究竟是发送缓冲器还是接收缓冲器工作,这要靠软件指令来决定。在串口发数时,8 9 C 5 1 有两个特殊功能寄存器S C O N 和P C O N,用它们来参与对串行口的控制,使用串行口时,定时
15、器1 作为波特率发生器。串口控制器S C O N 包含有串口的工作方式选择位,接收发送的状态标志,其格式如下:S(:()N:D 7D 6D 5D 4D 3D 2D 1D 0S M 0S M l S M 2R E NT B 8 R B 8T IT I其中,S M 0 和S M l 为工作方式选择如下:S M OS M l方式OOO移位寄存器方式(用于I O 口扩展)O118 位U A R T,波特率可变(T 1 溢出率n)1O29 位U A R T,波特率为或1139 位U A R T,波特率可变(T 1 溢出率n)表中n 为1 6 或为3 2,这取决于P C O N 中的S M O D 位的值
16、:当S M O D 为1 时,n 一1 6;S M O D 为0 时,n 一3 2。U A R T 表示通用异步收发器。在S C O N 中,T I 为发送中断标志,由硬件在方式0 发送完数据的第8 位时置位,或在其他方式下,串行发送完停止位的开始时置位,该位必须由软件清“0”。R I 为接收中断标志,由硬件在方式0 接收到第8 位结束时置位,或在其他方式串行接收停止位的中间时置位,该位必须由软件清“0”。2 2 系统硬件设计我们所研究的岩芯渗透率测试系统数据采集部分就是借助上位微机和8 9 C 5 1 微处理器提供的串口来实现两者之间的数据交换和传输,其接口的硬件连接如图2 所示。8 9 C
17、 5 1 单片机的串行口线T X D、R X D 经M A X 2 3 2 电平转换后分别与上位机串行口的2(接收端)、3(发送端)相连。图2 单片机与上位微机接口图2 3 通讯协议在本系统中,8 9 C 5 1 串口采用方式1,以中断方式收发数据。方式1 是8 位异步接收发送。一帧数据有1 0 位,包括1 位起始位(o),8 位数据位和1 位停止位(1)。单片机在发数时由硬件自动插入起始位和停止位,接收完毕后会将数据依次移入移位寄存器,构成完整的数据。发送的数据格式如下:I 起始位8 位数据位停止位00 1 o 1 o 1o 10 1 0 1 0 10 11 万方数据仪器仪表与分析监测2 0
18、 0 7 年第l 期通讯模块流程图如图3 所示。图3 通讯模块流程图为确保通信的可靠性和有效性,必须严格定义上、下位机之间的通信握手协议,以免数据混乱。上位机与下位机的具体通信协议定义如下:(3)需要通信时,上位机发一个信号,比如说上位机发一个字符0,然后下位机接收。当下位机接收到数据后,就将R I 标志置1,下位机就要向上位机发送A S C I I 码,一个A S C I I 码的数据发送完后,也要将T I 标志置1。3结束语串行通信在工业过程控制及仪表中应用十分广泛,我们研制的多个单片机与P C 机的串行通信系统,具有线路简洁、性能良好、成本低、可靠性高等特点,在岩芯渗透率测试仪应用中取得
19、了良好效果,通信的安全性和可靠性都得到了很好的验证。参考文献-1 1 赵建敏,郭庆V i s u a IB a s i c6 o M 北京:航空工业出版社,1 9 9 91-2 1 宜晨V i s u a lB a s i c6 O E M 北京:电子工业出版社,1 9 9 8 3 李光明V i s u a lB a s i c6 0 编程实例大制作 M 北京:冶金工业出版社,2 0 0 1(1)上、下位机之间的传输波特率为24 0 0p s;E 4 1 齐维贵单片微型机原理接口通信控制(2)发送和接收的数据形式为A S C I I;M 哈尔滨:黑龙江科学技术出版社,1 9 9 7(上接第2
20、页)图2 从站程序流程图解析应答模块流程如图3 所示。图3 解析应答模块4 结束语本文介绍了使用W I N D O W S 串口通信技术通一6 一过M o d b u s 协议实现D C S 与P C 机之间的通信过程。采用V C 6 0 开发的通信软件已成功应用于山东某电厂的改造工程,这种通信方式对硬件要求简单经济,软件编程容易,可靠性高,完全达到了预期的要求。本案例的成功,有力的说明了M o d b u s 通信协议在控制系统改造过程中的可靠性和低成本性,这种方式完全能够满足发电厂实时控制的需要。随着现阶段一大批新兴电厂的建设和新技术的应用,老机组将会越来越面临生产成本过高的难题,因此本论
21、题提出的这种方法将会有非常广阔的应用前景。参考文献 1 M o d i c o nM o d b u sP r o t o c o lR e f e r e n c eG u i d e J u n e1 9 9 6,M O D I C O NI n c 2 谭思亮,邹超群V i s u a lC+串口通信工程开发实例导航 M 北京:人民邮电出版社,2 0 0 3-3 3 李现勇V i s u a lC+串口通信技术与工程实践 M 北京:人民邮电出版社,2 0 0 3E 4 3 新华控制工程有限公司X D P S 一4 0 0 工程师手册 Z 上海:新华控制工程有限公司,2 0 0 0 5 Q
22、 L CU s e r SG u i d e ,Z 1 S e p 1 9 9 6,W e s t i n g H o s 万方数据多片单片机与计算机之间串行通信的实现多片单片机与计算机之间串行通信的实现作者:毛玉蓉,Mao Yurong作者单位:长江大学电子与信息工程学院,湖北荆州,434023刊名:仪器仪表与分析监测英文刊名:INSTRUMENTATION ANALYSIS MONITORING年,卷(期):2007,(1)引用次数:2次 参考文献(4条)参考文献(4条)1.赵建敏.郭庆 VisuaI Basic 6.0 19992.宜晨 Visual Basic 6.0 19983.李光
23、明 Visual Basic 6.0编程实例大制作 20014.齐维贵 单片微型机原理接口通信控制 1997 相似文献(10条)相似文献(10条)1.期刊论文 樊京.李向江.FAN Jing.LI Xiang-jiang 一种VB和单片机进行串行通信的可靠协议-信息技术2006,30(7)单片机通信的可靠性很大程度上依赖于是否有一个好的通信协议.为了确保通信的可靠性,特别设计了一种以单片机为主控机的基于帧的通信协议,计算机端使用VB,单片机端使用KEILC.本通信协议适用于单片机和计算机点对点通信的情况,共分为三部分:握手帧、数据帧和应答帧.对通信错误的处理,在单片机和VB程序中都给出了详细的
24、错误处理程序,能迅速定位通信错误原因,并有针对性地修改协议.2.期刊论文 马壮.吴铮.王永强.MA Zhuang.WU Zheng.WANG Yong-qiang 基于VB的PC机与单片机串行通信系统研究与实现-唐山学院学报2008,21(4)串行通信已经成为计算机与其他设备进行数据交换的最广泛的途径之一.文章简要介绍了在VB环境下单片机与PC机之间实现串行通信的硬件组成;软件系统主要有由VB提供的MsComm控件,并由其完成PC机与单片机之间的数据交换.3.期刊论文 刘宏.梁贵强.吴志荣 利用VB实现PC机与多单片机通讯的一种方法-南方冶金学院学报2004,25(4)在采用以PC机为控制中心
25、的数据采集自动化控制系统中,通常需要单片机采集数据,然后用异步串行通讯方式传给PC机.VB具有面向对象的设计方法,友好的用户界面,简单方便的串行通讯和实用性强等优点,本文探讨了在Windows环境下如何利用VB来实现PC机与多个单片机之间串行通讯的一种方法.4.期刊论文 王建成.谈士力.王永贞 VB与单片机串行通信在球面移动机器人控制中的应用-计算机测量与控制2003,11(3)对球面移动机器人控制技术的研制是提高我国机器人关键技术的迫切需求.上海大学研制成功的球面机器人控制系统采用了基于VB与单片机的串行通信的两级计算机控制.通过理论分析、制定正确的通信协议并结合大量试验最终实现了机器人控制
26、中的串行通信.试验的结果表明了VB与单片机的串行通信是机器人控制系统研制成功的关键.文章详细描述了串行通信程序的设计和实现.5.期刊论文 季华.肖兴明.李占芳.陈旭忠.张淼 基于VB与单片机串行通信的数据采集系统设计-煤炭工程2007(12)设计了基于单片机的罐道倾角数据采集系统,介绍了系统的构成、工作原理和流程图,给出了单片机AT89S52与外围器件的硬件接口电路.使用汇编语言和Visual Basic设计了PC机与单片机间的串行通信程序,并提出了数据趋势曲线的绘制方法.设计的数据采集系统具有易实现、易编程、可移植、体积小、功耗低等优点.6.期刊论文 罗红萍.彭云柯.LUO Hong-pin
27、g.PENG Yun-ke 基于VB的单片机与PC机串行通信程序设计-机械工程与自动化2005(3)随着现代控制系统要求的不断提高,如何实时、准确地在单片机和上位计算机之间传递数据已经成为系统设计中的一个重要组成部分.以压桩机智能测控系统中的基本通信模块为例,介绍了在Visual Basic环境下利用MSComm通信控件开发Windows环境下单片机与普通微机进行串行通信的方法;并提出了一种利用单片机P3口中的模拟异步通信控制信号来解决通信中同步问题的新方法.7.期刊论文 刘燕.夏建全.明正峰 基于VB实现的组态王与单片机间通讯-自动化与仪器仪表2006(5)以羰基合成模式评价装置控制系统为研
28、究对象,讨论了上位PC机中的组态王监控软件与单片机组成的下位机智能化仪表间的通讯问题.给出了组态王与自制的智能仪表之间的动态数据交换力式,闸述了以VB编制的服务程序与组态王之间通过DDE方式、与单片机之间通过串行通讯方式实现的上下位机间的数据通讯.8.期刊论文 谈士力.王建成.沈俊杰.苏建良 基于VB与单片机串行通信的球面机器人控制系统-机电一体化2002,8(5)上海大学成功研制了一种能在球面或类球面上移动的机器人.本文介绍了球面移动机器人中基于VB与单片机串行通信的控制系统的研制.机器人采用两级计算机控制,上位PC机通过RS232接口与下位单片机进行通信.文中详细描述了控制系统硬件、软件的
29、设计以及串行通信中的协议.9.期刊论文 王圆妹.许劲.李涛.Wang Yuanmei.Xu Jin.Li Tao 基于VB实现PC机与单片机的串行通信-中国科技信息2006(22)应用VB中的MSComm控件实现了在工业控制领域中常用的PC机与单片机的异步串行通信.使用MSComm控件编程简单,能够满足串行通信的要求,对于工业监控系统和数据采集系统都是非常有用的参考.10.期刊论文 宋玲.施云波.修德斌.胡敏.王立权 基于MSP430的气体传感器批量测试系统-电子测量技术2009,32(10)设计了一种基于MSP430单片机的气体传感器批量测试系统,该系统以MSP430F149单片机作为控制和处理核心,阐述了用VB6.0实现数据采集和处理的软件设计.该系统一次能测试8个通道的气体传感器,能实时绘制传感器的响应特性曲线,实现了对气敏元件性能参数的高效测试.引证文献(2条)引证文献(2条)1.林永兴.李春锋 基于计算机串口的远程数据传输期刊论文-福建电脑 2009(5)2.邓波.黄劼.吴金蔓 基于电话网的远程数据传输系统设计期刊论文-中国测试技术 2008(02)本文链接:http:/