您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机与PC机的串行通信设计解析
文章编号:100320794(20020120010203单片机与PC机的串行通信设计李德玉,李兵,段雄(中国矿业大学机电工程学院,江苏徐州221008摘要:主要讲述在工业控制现场,如何实现单片机与PC机之间的数据传送。在分析硬件接口连接的基础上,详细探讨了如何利用VB来开发串行通信程序。关键词:串行通信;MCS—51;VisualBasic;编程;RS—232C中图号:TP36811文献标识码:A1前言现代的工业控制现场,常常采用分布式控制系统。分布式控制系统主要由上位机和下位机组成,下位机采用运行性能较为可靠的单片机(如MCS—51系列,直接对所控制的系统进行实时数据的采集、抽样、平滑、发送和接收、控制;而上位机则多采用PC机(如Pentium系列,主要负责对各单片机进行综合管理,以实现测控系统的自动检测与控制。随着PC机的迅速发展,PC机的性能越来越可靠,再加上PC机应用程序的友好性及易开发性,使得PC在工业控制现场得到了广泛应用。单片机收集到信息后发送给PC机,PC机处理后再发出相应的指令给单片机,控制外围电路工作。这就涉及到一个单片机与PC机间的串行通信的问题。以下以MCS—51系列中的8031芯片如何与PentiumMMX机进行通信加以阐述。2硬件部分设计2118031芯片的串行口8031芯片内有一个全双工的串行口,它有4种工作方式:方式0,串行接口为移位寄存器I/O方式;方式1,串行口被控制为8位的异步通信接口传送一帧信息为10位,其中1位为起始位,8位为数据位,1位停止位,波特率可变;方式2和3,则被定义为9位的异步通信接口。传送一帧信息为11位,其中1位起始位,8位数据位,1位是附加的可程控为1或0的第9位数据,1位停止位。其工作方式的选择由片内的特殊功能寄存器SCON(串行口控制寄存器的设置完成。212PC机的RS—232C串行接口通常,PC机的主板会提供一个打印机输出并行端口(LPT,两个串行口(COM1、COM2,并行口主要进行短距离的数据传送,至少需要8根数据线同时进行数据的传送,因而传送速率较快。而长距离的数据传送只能采用串行口,串行口只需要一根数据线进行数据传送,传送距离较长,投资较少,但传送速率较低。RS—232C也是人们常用的网络通信接口。此处,PC机与单片机的通信便采用该接口。213接口电路为了能使单片机与PC机之间通信,必须使二者遵循相同的通信协议。由于下位机的8031芯片串行口,输入输出为TTL逻辑电平,高电平为318V左右,低电平为013V左右,这种以TTL电平传送数据的方式,抗干扰性较差。而上位机的RS—232C串行口则采用+12V和-12V电平方式,使0信号和1信号的电平差别增大,从而增强了抗干扰性。为了解决这一矛盾,可采用一个RS—232C电平转换器。它由发送器1488和接收器1489组成(见图1。图1串行口连接电路Fig.1Connectingcircuitofserialmouth3软件部分设计311上位机的通信程序设计由于PC机的开发环境较多,如:VC++、Delphi、VB等等,这些较为优秀的软件开发环境为上位机的通信程序的开发提供了极大的方便。本文主要讲述如何用VB来进行程序设计。VisulBasic是微软公司开发的软件开发环境,利用其提供的MSComm.ocx专用通信控件容许通过串口发送和接收数据,再利用一个定时器控件(Timer,可简单地实现串行通信。MSComm控件介绍(主要属性,只有VB企业版才提供该控件:CommPort:设置并返回通信端口号。可取1~16;Settings:以字符串的形式设置或返回波特率、奇偶校验、数据位和停止位;Input:返回并删除接收缓冲区中的数据流。・01・煤矿机械2002年第1期PortOpen:设置或返回通信端口的状态,也可以打开和关闭端口。Output:将字符串写入发送缓冲区。CommEvent:返回最近的通信事件或错误。该属性在设计时不可用,在运行时是只读的。Rthreshold:设置或返回在MSComm控件,将CommEvent属性设置为comEvReceive并在产生OnComm事件之前接收的字符数。Sthreshold:设置或返回在MSComm控件,将CommEvent属性设置为comEvSend并产生OnComm事件之前发送缓冲区中允许的最少字符数。OnComm事件:当CommEvent属性值改变时产生该事件,表明产生了通信事件或通信错误。查询与中断方式的选择:在发送和接收数据时,可选择查询和中断方式,这通过设置VB的Rthreshold和Sthreshold属性做到。Rthreshold=0时,接收数据不产生OnComm事件,通信事件必须定时主动查询接收缓冲区以检测是否有新数据接到。Rhreshold=1或大于1时将产生OnComm事件,则为中断方式。事件驱动通信提供了对串口交互通信强有力的支持,而与之相对应的即为中断方式。程序清单:通用变量声明DimRec(512AsInteger’接收字节数组定义;DimREcVAsInteger’字节存储的地址指针定义;Dimsent(AsByte’发送的可变数组定义;‘上位机通信初始化程序:PrivateSubFormLoad(MSComm1.CommPort=1’选择COM1端口MSComm1.Settings=”4800,n,8,1”’设置波特率为4800,无奇偶校验,8位数据位,’1位停止位;MSComm1.InputLen=0’读取接收缓冲区的全部内容;MSComm1.InBufferSize=1024’输入缓冲区长度设定为1024;MSComm1.OutBufferSize=512’输出缓冲区长度设定;MSComm1.Sthreshold=0’使用查询方式发送数据;MSComm1.Rthreshold=1’使用中断方式接收数据;MSComm1.PortOpen=1’打开通信端口1;EndSub’定时器事件PrivateSubTimer1Timer(Timer1.Interval=500’设置时间间隔为015s;Rec(REcV=AscB(MSComm1.Input’从接收缓冲区中取一个字节并赋给数组Rec(;REcV=REcV+1’地址指针加1;IfREcV512ThenREcV=0’地址指针清0;Timer1.Interval=0’停止定时器;EndSubOnComm(事件处理程序:PrivateSubMSComm1OnComm(SelectCaseMSComm1.CommEventCasecomEvReceive’发生收到数据事件执行以下命令;MSComm1.Rthreshold=0’不准后续接收字节引起OnComm(事件;……’可根据具体问题,在此处添加相应的处理程序;CasecomEventBreak’发生错误时执行以下命令;……’可根据具体问题,在此处添加相应的处理程序;EndSub’发送事件DimIAsIntegerMSComm1.RTSEnable=1’请求发送;ReDimsent(256’重新定义数组sent(;ForI=0To255sent(I=INextIMSComm1.Output=sent’数组数据装入发送缓冲区启动发送;MSComm1.RTSEnable=False’发送完毕,撤消请求发送信号;312下位机通信程序设计对于单片机的通信程序,可能采用汇编语言进行编写,由于这部分的程序设计已经相当成熟,在此不再进行详细的阐述。在所提供的参考文献[2]中,已列出了详细的程序清单,在处理具体的实际问题时,读者可进行查阅、引用,而无需重复编程。参考文献:[1]徐淑华,等1单片微型机原理及应用[M]1哈尔滨:哈尔滨工业大学出版社,1994,61[2]MCS—51系列单片机通信工具程序[J]1电脑开发与应用,1992,(11:441[3]〔美国〕微软公司1VB610控件参考手册[M]1北京:北京希望电子出版社,19991作者简介:李德玉,1976年生,现在中国矿业大学机电工程学院攻读硕士学位,主要从事流体机械方面的研究工作。收稿日期:2001210216・11・2002年第1期煤矿机械文章编号:100320794(20020120012202扩张式自激超越弹簧离合器强度可靠性优化设计潘承怡(哈尔滨理工大学,黑龙江哈尔滨150080摘要:以强度可靠度为约束,对扩张式自激超越弹簧离合器进行了优化设计,在满足强度可靠度的同时,采用计算机可迅速求得一组最佳结构参数。关键词:离合器;自激;超越;可靠性;优化设计中图号:TH13314文献标识码:A1引言扩张式自激超越弹簧离合器(以下简称离合器结构简单、重量轻、弹性好、操纵方便,高速条件下接合平稳,适于具有自动挂合、自动脱开的机械传动。文献[1]对离合器的结构原理进行了理论分析。由于离合器弹簧所受应力及其强度均呈一定分布状态,且具有很大变异性,如采用常规设计法显然比较粗糙;而只采用可靠性设计虽然比较接近工程实际,但又不能取得最佳结构参数。为此提出对离合器进行强度可靠性优化设计,使设计的离合器在满足强度可靠性指标的同时,取得一组最佳结构参数。2离合器弹簧受载情况与应力和强度分布离合器结构如图1所示,主要结构参数为弹簧丝直径d、弹簧中径D、弹簧与主动壳体和被动壳体的接触圈数为N。工作时,主动轴1通过键2带动主动壳体3连着弹簧旋向旋转,使弹簧圈扩张扭开,与两壳体胀紧接触,离合器自动接合,此时弹簧丝所受应力为压应力。由文献[2]知,弹簧丝所受应力及强度均为正态分布,其强度可靠度的确定应按正态分布进行计算。为了求得最佳结构参数,故采用强度可靠性优化设计。3建立数学模型311建立目标函数离合器的体积或重量取决于弹簧的主要结构参数,为使离合器的重量最轻,取设计变量X=[x1,x2,x3]T=[d,D,N]T,建立如下目标函数基金项目:机械工业部教育司科技基金项目(98250612minF(X=π4d2(πD(2Nγ=π22x21x2x3γ(1式中γ———弹簧丝材料的比重。图1扩张式自激超越弹簧离合器结构简图Fig.1Schematicdiagramofstructureforself-energizingoverrunningspringclutch11主动轴21键31主动壳体41弹簧51密封圈61被动壳体71被动轴312建立约束条件(1强度可靠度约束条件由文献[1]得,弹簧丝所受压应力的数学期望μs=4(D/d-14(D/d-432T(e2πNf-1πd3+8Tπd2D(2式中T———离合器所传递的扭矩;f———弹簧与两壳体间的摩擦系数。为了计算弹簧的可靠度,首先需求出可靠度系数ZR=μc-nμsσ2c+σ2s(3式中μc———弹簧丝承载能力的数学期望;σc———弹簧丝承载能力均方差;σs———弹簧丝所受压应力均方差;n———强度储备系数,一般取n=111~1125。SerialcommunicationdesignbetweenSCMandPCLIDe-yu,LIBing,DUANXiong(MechanicalandElectronicEngineeringCollegeofChinaUniversityofMining&Technology,Xuzhou221008,ChinaAbstract:ThepapermainlypresentshowtorealizethedatatransferbetweenSCMandPContheindustrialcontrolspot.Onthebasisofanalyzingtheconnectionofhardwareinterfaces,itdiscusseshowtowriteserialcommunicationprogrammewithVB.Keywords:serialcommunication;MCS-51;VisualBasic;programming;RS—232C・21・煤矿机械2002年第1期
本文标题:单片机与PC机的串行通信设计解析
链接地址:https://www.777doc.com/doc-4712171 .html