单片机与PC机的串行通讯实践

  • 格式:pdf
  • 大小:106.53 KB
  • 文档页数:1

SCIENCE&下E自于长兀OGYI刊FORMAT10闪T技术单片机与pC机的串行通讯实践①周劲辉(中国石油大学(北京〕石油工程教育部孟点实验室北京国平102249)摘要:本文详细介绍了如何利用visualC++6.0中的ActiveX通讯控件实现单片机与PC机的通讯,给出了8位单片机与MAX232芯片的通讯接口电路,编制了通讯程序。关键词:串行通讯ActiveX控件单片机中图分类号:TD4文献标识码:A文章编号:1672一3791(2007)06(a卜0130一01单片机与PC机的串行通讯充分利用了单片机与PC机的各自优点,在数据采集、自动控制等领域发挥着重要的作用。微软的Vi一suaiC++系列软件已成为Windows环境下开发应用软件的主要开发工具,利用VisualC十+6.0开发串行通讯软件的方法主要有两种,第一种是利用Visua1C十+6.0应用程序开发向导建立应用程序框架,再利用多线程编程技术,调用API函数。这种方法比较复杂,必须熟悉一系列API函数和掌握多线程编程技术。第二种方法是禾Ij用VisualC++6.0提供的A比veX通讯控件,利用该控件丰富的方法和属性开发通讯程序。为了更好地阐述其应用,以一实例说明如何实现PC机向8031单片机发送数据,单片机响应并将接收到的数据发送给PC机。,单片机通讯电路的设计由于PC机的串行口RS一232信号电平与8031单片机的串口信号电平不一致,因此必须进行二者之间的电平转换。采用MAX232芯片配接四个1”F电解电容完成RS232/TTL电平之间的转换,转换电路如图1所示。加mP,messent;if(!m一orn们。.GetPortopen())m-comm.SetPortop吧n(TRUE),m_comm.SetoutPut(ColeVariant(temp));U冈ateData(FALSE);}3.3串口事件当串口接到数据时,将产生OnC0mm事件,在相应的消息映射函数ononCommMSCD们nrn1o中编写代码,同样要注意数据类型的转换。voidCCommDlg::ononCommMsco功ml(){U冈ateData(true)。VARIANTtemp。intcount=0。CStringstr=一(””).if(m多omm.GetCommEvent()==2){count=m-Corn〔n.GetlnB盯ferCount()。m-corn们n.挽tl即utL£n(count);temp=m-comm.Getlnput(),str=加mP.加trVal;m~recv+二str,IU环拍teDa切(faise).}2设计通讯界面利用VisualC++6.0应用程序开发向导建立一名为CommTest的应用程序,接收ActiveX控件支持项,在资源中加入一对话框,取名为IDD_COMM_DIALOG,并为该对话框建立新类,类名为CC0mmDlg,从基类CDiatog派生;并添加两个编辑框控件,分别为发送和接收,加入一个发送和退出按扭。再向对话框加入通讯控件MicrosoftCOm刀以u一〔比cationsControf。3visualC++程序设计3.1通讯控件的属性配t要正确地进行通讯控件的属性设置,在初始化对话框oulnitD通09()函数中编写如下代码进行设置:BOOLCC0rn〔。D址::OnlnitDtalog(){CD泊1娘::onlnitDla10g()。UlxlateDa切(TRUE).mee阳nt=”a”.//发送编辑框字符初值为‘,a”m-comm.5改CommPort(1).//选择串口1if(!m一omm.GetPorto少n())m-comm.跳tPortopen(TRUE).//打开串口m_comm.SetsettingS(”1200,n,8.1“);//串口参数设置m-comm.SetlnPutLen(1),//当串口接收缓冲区内接收字符多于或等于1将触发OnC0mm事件m-comm.SetRThreshold(1).U冈ateData(FALSE),returnTRUE,}3.2发送数据当用户按下发送按扭时,将产生OnsentButton事件,在相应的消息映射函数中编写发送代码,需要注意的是ActiveX控件一般只接收VARIANT型数据,而VISUa1C++6.0中的MFC类C01eVariant封装了VARIANT型数据类型,因此先将编辑框中要发送的数据进行转换后再发送。voidCC0mmD址::On决ntButtonO{U冈ateData(true);CSt山艰temP。48031单片机汇编语言程序设计单片机接收并发送给PC机的MCS一51汇编语言程序如下:MOVMOVMOVMOVSETBMOVLoop:MOVCLRMOVJNBCLRSJMPTMOD,#20HTLI,#OF3HTHI,#0F3PCONTRI,#00H:1方式波特率波特率。SMOD=0SCON,#50HJNBRI,$A,SBUFRl.SUBF,ATl,$TILOOP,启动TI,串口方式1,接收.等待接收.读串口数据.发送数据。等待发送5体会在编程实践中Vlsua1C++6.0中的ActiveX通讯控件为在Windo,犷5环境下开发串行通讯程序提供了极大的方便,熟练掌握它可编制出功能强大的串行通讯程序。图IRS一232/了1,L电平转换原理参考文献【1宋培义,刘立新.单片机原理m接口技术及应用.中国广播电视出版社,1999,1.[2]1美IDAVIDJ.KRUGLINSKI著,王国印译,VlsUALC+十技术内幕.清华大学出版社,1994,11.①教育部“创新团队”项目(IRT04ll)资助130SCIENCE&TECHNOLOOYINFORMAT!ON