您的当前位置:首页正文

用VC和MFC实现与单片机的串口通讯

2021-02-24 来源:我们爱旅游


本文由质与感贡献

pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。

第5卷第2期

2005年6月

CH州GS姒AERONAI玎℃AI.、叼C加ONAL

长沙航空职业技术学院学报

AND TEC}玎ⅥCAL COII_EGE JOURNAL

V01.5 No.2

Jun.2005

用Vc++和MFc实现与单片机的串口通讯

罗建辉

(湖南省国税局信息中心,湖南长沙410007)

摘要:介绍基于VC++的和MFc上位机和多个单片机的通讯系统,给出系统的通讯

原理及实现方法.结果 表明系统运行稳定,可靠性和可扩张性强。 关键词:单片机;VC++;MFC;通讯系统

中图分类号:1粥68.1

文献标识码:A

文章编号:167l一9654(2005)02一035一03

Implementation of Senal

Port

Commullication稍th

one—cllip Computer by

Using VC++and M咂C LUO Jian—hui

(觋e仉加肌n渤n cemer旷^k胍n

s£口£e

z钒口£io凡Adm讯厶£m£ion,C^口凡伊地厶kM凡

410007)

Abstract:This paper intmduces山e communications system between host computers and multiple

one—chip computers

by

11Jns

using

VC++and MFC and pIDposes its communication principle.

to

Results

show that the system

stably and is easy

extend.

Key wor(1s:one—chip computer;VC++;MFC;

communication system

1概述 在工控系统中,通常会遇到通讯问题。串口通 讯是一种实用的通讯方式。单片机与上位机的通 讯通常是通过串口进行的。在windows环境下开

制简单。但基于VC++的windows平台开发却更 受人喜欢。Vc++是微软公司推出的一个面向对

象的、功能丰富的可视化重量级的开发工具。它虽

然复杂,但功能非常强大。它在图形处理和数据库 管理等方面都有较大的优势。因此,我们利用VC ++6.0提供的通讯控件MSComm,以MFC来设 计界面编制程序,实现与单片机的通讯系统。

发与单片机的通讯系统,可以利用c并借助win—

dows

sDK提供的应用程序接口函数来完成软件的

设计,但这样开发的程序很复杂;也可以利用Visu—

al

Basic提供的通讯控件来开放通讯程序,这样编

图1通讯示意图

收稿日期:2005一03—3l

作者简介:罗建辉(1958一),湖南长沙人,工程师,研究方向:计算机网络安全。

万 方数据

·35·

长沙航空职业技术学院学报

第5卷

2系统的通讯原理 系统的单片机选用8051。图l是上位机与下 位机的通讯示意图,上位机的串口是Rs232,而单

3系统的软件设计

3.1

系统的控制流程

本系统为多机通讯。图2和图3分别是上位

片机的串口输入输出通过RS232电平转换器,用

普通串口线把单片就和上位机连接起来。 单片机选用串行口工作方式1,即作为8位通

机和单片机的通信流程图。通信从上位机开始。

上位机发送欲呼叫的下位机的联络地址、下位机要

接收的数据个数信息以及数据信息等。而下位机

收到开始标志以后,继续接收地址信息,而后判断 是否呼叫自己,如是,则继续接收其他信息。

用异步接收器/发送器,波特率可变。一帧信息由

10位组成:一个起始位,8个数据位,一个停止位。

上位机初始化

t出通信开始标志l

Bl

镑 ◇

下位机初始化

....................j[一 —————1●一

允许通信方式1 I

发出呼叫下位机的地址

,.............j:一 ————1—一

l 继续接收

盟<磊翕≥

怯生本次欲发送字节个数的信息|

陡续发m显示数羽

作其他处理

图2上位机通信流程图

图3单台下位机通信流程图

3.2上位机软件设计 上位机的软件部分使用VC++提供的通讯控 件MSComm,以MFC为基础编制。MSCoⅡ衄控件 在串口编程时使用方便,使编程者不用花时间去了 解复杂的API函数。它只有一个事件,即Oncomm 事件。通过事件驱动,对时间的发生进行跟踪和处 理,从而检测和处理通讯错误以及进行对数据的处 理显示等。程序设计如下: (1)启动Vc++6.O,利用MFc

Appwizard

“Project———+Add’ro Project——+Components controls”菜单命令,在弹出的Components

trols

and

and Con—

Gallery对话框的Registered Activex文件夹中

Communications Controls.Version 6.

选中“Microsoft

o”选项,单击“Insert”按钮就可以完成添加 Mscomm控件操作了。

(2)在对话框内添加MSComm控件,设置其变 量为m—Com,然后对串口进行初始化。在OnInit—

Dialog()添加以下代码: m—Com.SetCommPort(1);//选择COMl

(exe)建立一个基于对话框的应用程序,然后选择 万 方数据

.36·

第2期

罗建辉:用VC++和MFC实现与单片机的串口通讯

ES=1:

m—Com.SetIllBufferSize(1024);//设置输入缓 冲区的大小 m—com.SetOutBu虢rSize(512);//设置输出 缓冲区的大小

int pointer,count; unsigned ehar rec—times=O; unsigned char

bu虢r[16];

4 using 3

if(!m—Com.Ge曲rtOpen())//打开串口

m—Com.SetPortOpen(TRUE); m—Com.SetInputMode(1);//设置输人方 式为二进制方式 m—Com.Setsettings(“9600,n,8,1”);// 设置波特率等参数 m—Com.SetRThreShold(1);//为l表示 有一个字符引发一个事件 m—Com.SeⅡnputLen(0);//设置当前接收区 长度为O (3)发送信息:在对话框内添加多个按钮,使 按钮的触发函数为OnSendn(),其中n为1,2,3… 每个按钮对应一个单片机。然后添加以下发送数 据的代码:

char

pointer=rec—times=O;

void

receive(void)inteITupt

RI=0:

switch(rec—times){

case

O:if(SBUF==0x1B)rec—times++;

retum:

case

l:if(SBUF==NODE—ADDR)//收到地

址信息

Dec—times++:

retUm:

case

2:count=sBuF;//收到数据字节个数信

rec—times++;

retum:

TxData[100];

default:bu雎r[point++]=SBuF;//收到数据 if(poimer>=count){

recjimes=0;

TxData[O]=OxlB; TkData[1]=NODE—ADDREss;//NODE—AD- DR为下位机地址

int

pointer=0;}

) ].

Count=m—strSend.GetLeng山(); 4结束语

TxData[2]=Count;//要发送的字节数 for(int i=O;i<Count;i++) TkData[i+3]=m—strsend.GetAt(i);

本文运用Vc++和MFC开发了计算机和单片 机的通讯系统,利用VC++提供的MSComm控件, 给出了一种计算机和单片机的多机通讯方法。本系 统可以用于证券、广告屏的文本信息显示等方面。

参考文献: [1] 李国徽,等.Visual c++6.0编程实例技巧[M].武 汉:华中理工大学出版社,1999. [2]王福瑞,等.单片微机测控系统设计大全[M].北京: 北京航空航天大学出版社,1998. [3] [4] 黄天戍,李诗晗,等.Labwindows/cVI中串行通信的 实现[J].仪表技术,2004,(3). 曹保根.主从式RS485应用系统的设计与调试[J]. 电子技术,2000,(2).

amy; amy.RemoveAU();

CByteArray

array.SetSize(Count+3); fbr(i=O;i<Count+3;i++)

array.se认t(i,TxData[i]);

m—Com.SetOutput(C0leVariant(a玎ay)); //发送数据

3.3

单片机软件设计

单片机的程序可以使用集成开发环境,用c

语言进行编程。

SMOD=O:

SCON=0)(50;//通讯方式l TMOD=O](20;//Tl方式l THl=0xFD;//设置9600

TRl=l: bi∥s

[责任编辑肖贻杰]

万 方数据

·37·

用VC++和MFC实现与单片机的串口通讯

作者: 作者单位: 刊名: 英文刊名: 年,卷(期): 被引用次数: 罗建辉, LUO Jian-hui 湖南省国税局信息中心,湖南,长沙,410007 长沙航空职业技术学院学报 JOURNAL OF CHANGSHA AERONAUTICAL VOCATIONAL AND TECHNICAL COLLEGE 2005,5(2) 3次

参考文献(4条) 1.李国徽 Visual C++6.0编程实例技巧 1999 2.王福瑞 单片微机测控系统设计大全 1998 3.黄天戍.李诗晗 LabWindows/CVI中串行通信的实现[期刊论文]-仪表技术 2004(03) 4.曹保根 主从式RS485应用系统的设计与调试[期刊论文]-电子技术 2000(02)

相似文献(10条) 1.学位论文 王可宁 基于单片机的烘炉温度自动检测系统的研究与设

计 2004

该检测系统硬件设计以AT89C51单片机为核心,对4通道烘炉内工件表面温度及炉温进行检测、存储,并具有传感器故障报警及电池电量不足报警等功 能.用新型的铁电存储器代替传统了SDRAM,使系统对采集数据存储的可靠性得到保障.工作时把温度检测仪放入隔热装置中,可使仪器随工件在生产线移动 ,非常简便实用.单片机系统的软件编程采用单片机高级语言Franklin C51进行编程,它使程序结构化、可读性好且容易植入新程序从而便于系统扩展.上 位机应用软件采用VC++6.0高级语言编程实现,提供了良好的上下位机串行通讯、对数据的保存、显示及打印等功能,人机界面简单友好.该检测系统所采 用的主要技术有:数据采集及处理技术、计算机检测技术、Franklin C51编程技术.该文研制的烘炉温度自动检测系统是基于单片机的计算机检测技术的 软硬件开发和而向对象的高级可视化程序开发的有机结合.该产品国内尚无厂家生产,具有很好的市场前景,如果投入生产,不仅会创造良好的经济效益,还 可添补中国仪器仪表业的开发应用的一项技术空白.

2.期刊论文 唐国红.TANG Guohong 基于VC++的单片机编程器软件的设计 -现代电子技术2007,30(8)

单片机编程器是开发单片机系统的必备设备.为了减少编程器的硬件复杂程度,降低成本,可利用具备在线编程特性的单片机作为在线编程控制器,在 线编程过程由计算机软件实现.介绍单片机编程器软件的设计方案,该编程器支持51系列的单片机.设计采用VC++编写Windows串口,并口的底层控制程序 .利用AT89C51芯片在线编程的特性,不必拨除芯片即可实现对芯片进行快速烧录、擦除和实现对芯片的加密,有利于单片机的使用和发展.

3.学位论文 王松 基于VC的单片机软件式开发平台 2006

此文介绍的是“基于VisualC++的MCS51系列单片机软件式开发平台”的设计方法以及有关的技术问题。该平台为单片机仿真系统,提供了一个 MCS51单片机汇编语言的软件设计环境,能在计算机上实现对MCS51单片机的硬件模拟、指令模拟和运行状态模拟。用户在使用该软件的时候,就像是使 用真实的单片机一样。该平台可以为工程项目的完成设计出一个较完整的程序雏形,待硬件电路板开发完成后,只需对一些细节进行处理就可以完成项 目的设计,从而使一个工程项目的开发周期大大缩短。 “基于VisualC++的MCS51系列单片机软件式开发平台”的设计基于VisualC++的MFC编程机制。它向用户提供了一个可视化的汇编语言集成编译环境 ,提供了汇编语言的编辑、编译、电路显示和寄存器监控等功能。该平台的开发过程体现了VisualC++的MFC编程机制。文章着重讲解了如何实现MCS51系 统单片机内核的VisualC++编程方法。课题从单片机内部结构的仿真开始,依据数据结构理论针对单片机的结构特点,建立各个关键硬件模块的仿真载体 ,并通过这些载体进一步对单片机整个指令进行了全面的仿真,实现了所有汇编语句的仿真运行。因为指令系统、ROM和RAM是该仿真软件的精华,所以 文章对它们的仿真作了非常详细的讲解。 实验证明,VisualC++编程环境对单片机系统仿真软件的设计提供了有力的功能保证,并能够满足MCS51单片机仿真的快速性、实时性和算法复杂性 的要求。软件不仅实现了单片机的硬件仿真,还实现了软件系统的仿真,达到了取代绝大部分单片机系统功能的目的,运行效果令人满意,使用户不必 担心仿真系统是否有限制而可以随意编辑汇编语句,并能顺畅运行。

4.期刊论文 许宜申.朱欣华 基于VC++6.0的PC机与单片机之间的串行通信 -现代电子技术2003,\"\"(5)

介绍了在Windows系列(Windows 98/2000/XP)环境下,如何利用VC++6.0的通信控件MSComm来实现PC机与单片机之间的串行通信.硬件电路中,采用 MAX232AESE芯片解决了PC机与单片机之间通信连接电平的不一致问题;软件部分,分别利用VC6++6.0和汇

编语言,给出了他们之间的通信程序.

5.学位论文 宋向荣 智能温室计算机集散系统的研究与开发 2002

该文首先提出了智能温室环境计算机集散系统的总体设计方案,该系统是由PC机和多台8031单片机组成的总线型主从式计算机系统.该文通过对智能 温室计算机集散系统中的单片机应用系统的研究,提出了单片机嵌入式自开发的思想,对单片机应用系统中的微处理器系统进行了硬件设计及部分软件的 设计.该文以8031单片机最小系统为基础,对单片机系统进行扩展.由于8031单片机的CPU无片内RAM,其程序存储器和数据存储器又是分开编址的,因此,为 了达到自开发的目的、实现单片机应用系统的自开发功能,需要对程序存储器和数据存储器进行统一编址,使程序存储器可读写,以便在程序调试、修改、 下装过程中修改程序存储器.整个单片机应用系统的设计,包括微处理器部分的设计、应用部分的设计及电源部分的设计等.其中,微处理器的设计是关键 .在微处理器部分的设计中,主要包括以下内容:单片机及存储器电路设计、译码器电路设计、译码器电路设计、参数区电路设计、中断控制电路设计、 看门狗电路设计、串行通信接口电路设计等.文中对上位PC机与下位单片机之间的串行通信接口进行设计,上位PC机通信软件运用Visual C++6.0编写,下 位机通信软件运用汇编语言进行编写,从而实现了上、下位机之间的数据串行通信.

6.期刊论文 田晓梅.王月姣.Tian Xiaomei.Wang Yuejiao VC++中内嵌汇编实现PC机与单片机的并行通信 -中南民 族大学学报(自然科学版)2005,24(4)

介绍了在VC++6.0中内嵌汇编语言的一些技巧,针对PC机与单片机并行通信的硬件电路,给出了内嵌汇编语言以及通信程序的实现方法.

7.学位论文 雷之光 基于VC的太阳能光伏系统之监控系统的研究与设计 2007

能源是人类经济及文化活动的动力来源。能源的利用水平折射出人类文明的步伐。目前,我国一次能源供应主要依赖煤炭、石油、天然气等化石能 源,但化石能源的资源有限性和开发利用带来的环境问题严重地制约着经济和社会的可持续发展。而太阳能资源在我国资源丰富,其应用具有很好的前 景。 太阳能光伏系统是通过太阳能电池阵列将太阳能转化为电能,并通过逆变器将直流电变为与市电同频同相位的交流电,并回馈电网。若在阳光充足

的情况下,太阳能光伏系统发出的电已可资使用,在阳光不充足或光伏发电量达不到使用量时,可由控制部分自动调节,通过引入市电给予补充。 本文对蓄电池充电主回路、逆变器主回路及以单片机为核心的控制回路进行了功能分析,阐述了芯片的特点及选择的原因,并对逆变器的控制进行 了初步研究。本文对于光伏电池的最大功率跟踪(MPPT)技术作了阐述并提出了用软件实现的方案。在上位机的监控软件方面,研制了以数据库技术与网 络技术为基础的光伏系统之监控系统,将各个监控站组网,使监测中心可以及时掌握各个独立光伏系统的运行状况。 在本文中,主要从以下几个方面来完成对基于VC的光伏系统之监控系统的研究和设计: (1)研究了光伏电池的基本发电原理和输出特性,由于其发电输出是非线性的,存在输出最大功率跟踪问题。本文阐述了常用的最大功率跟踪方法 ,并结合本设计提出了改进方法。 (2)搭建了光伏系统的硬件电路,包括buck主电路及对应的以单片机为核心的控制电路,boost升压电路及对应的控制电路,逆变电路及对应的控制 电路。 (3)在监控站的上位机方面,用VC开发出PC机与单片机的串口通讯,并使用文件操作完成数据存储功能,并且可以通过网络接口把数据定时传送到远 端的服务器中。

8.学位论文 陈明克 基于VC软件开发平台的集散式数据采集系统 2002

该文基于串行通信的数据采集系统由单片机与微机组成,综合了单片机和微机的优点.单片机具有集成度高、控制功能强、系统结构简单、价格优廉 等优点.但是它的存储器容量太小,无法存储大量的采集数据;速度较慢,无法完成海量高速数值计算.而微机充分利用了其在

数据处理、模拟仿真、网络通 信方面的强大功能,既可以通过软件对单片机进行控制,又能利用Microsoft的Office系列工具对采集数据进行存储、处理和分析.系统软件主要具有以下 几个特点:1.微机可以控制单片机的运行,可以任意选择采集通道.2.用户可选择波特率、奇偶校验、数据位等通信格式,适应采集系统不同的串行通信要 求.3.可以动态显示采集数据的曲线图,为用户监控被采集对象提供一个有力的工具.4.数据库存储数据的时间可以任意选择.5.既适合于近距离数据采集 ,又适合远距离数据采集.6.具有很好的可移植性.

9.期刊论文 徐兴元.沈宪章.瓮嘉民 基于VC++6.0和C51的PC机与单片机串行通信仿真 -河南机电高等专科学校学报 2004,12(6)

本文利用MSComm控件和Keil uVision2.0相结合实现了VC++6.0和单片机串行通信仿真实验的方法、步骤、及其仿真实验结果.

10.学位论文 王垚 模糊PID控制在振动式谷物烘干机控制系统中的应用 2006

本论文选题主要是结合吉林省科学技术委员会“九五”期间重点科技攻关项目“谷物烘干机自动监测系统的研究”而进行的。谷物烘干处理是粮食 加工中的一个重要环节。无论是粮食还是种子贮存都必须降到各自的安全水分,因而烘干机得到广泛的应用。但是迄今为止,谷物烘干在我国农业生产 中还是个比较薄弱的环节。烘干机的结构虽然简单,但烘干过程是非线性、时变性和多变量的,传统的模拟形式控制系统在许多方面难以满足这些要求 。目前在实际烘干过程中,还有一些是靠人工测量水分的方法,然后再进行控制,生产效率低,出粮水分偏差大。 该论文主要是将模糊PID控制理论应用到谷物烘干机控制系统中,在数字单片机上用模糊控制的方法取代原来的传统控制方式.根据模糊控制规则编 制软件程序来实现烘干过程中粮食水份、温度的自动控制,提高烘干粮食的质量和烘干机械的效率,有利于节约能源。 谷物烘干机的温度水分自动检测,它是谷物烘干自动监测系统的技

术难点。目前的烘干机的检测系统多单纯的采取PID技术或模糊技术.常规的PID控 制是最早发展起来的控制策略之一,由于其算法简单、鲁棒性好且可靠性高,因此被广泛应用于工业控制领域,尤其适用于可建立精确数学模型的确定 性控制系统。而烘干过程是一个大滞后、非线性的、时变性、变结构、多变量的,难于建立精确的数学模型,应用传统的控制理论和现代控制方法难以 取得满意的效果。模糊控制技术虽然能够在一定的范围内解决上述问题,但模糊控制的稳态控制精度差,难以达到较高的控制精度。模糊控制没有积分 环节,并且对输入量的处理是离散而有限的,即控制曲线是阶梯型而非平滑的,因而必然存在稳态误差,即可能在平衡点附近出现小振幅的振荡现象 ;而PID控制在小范围调节效果是较理想的,其积分作用可消除积分误差。采用模糊PID技术有利于解决控制系统的稳态性和准确性的矛盾,又能增强系 统对确定因素的适应性,可以实现水分的在线测量。 本论文在下述方面有所创新:1、模糊PID控制算法应用于谷物烘干控制中,采用汇编语言进行编写,时空性能较佳,能满足实时控制要求;2、采用 PC机作为上位机监控系统,运用VC++编程语言设计良好的人机界面,提出了基于VC++的单片机时时监控系统的框架思想,可以实现谷物水分和温度的动 态显示.

引证文献(3条) 1.庄尚志.郑建彬 基于多线程技术实现PLC与PC的串行通信[期刊论文]-武汉理工大学学报(信息与管理工程版) 2008(6) 2.杜梅.贾辉然 基于VC的PC机与单片机无线串行通信的实现[期刊论文]-电脑知识与技术(学术交流) 2006(7) 3.柯金虎 工业过程实时建模仿真系统的设计与实现[学位论文]硕士 2005

本文链接:

http://d.g.wanfangdata.com.cn/Periodical_cshkzyjsxyxb200502011.aspx 授权使用:李建平(wfnchkdx),授权号:63c5390a-340a-427b-aeb0-9de10100401a 下载时间:2010年8月29日

因篇幅问题不能全部显示,请点此查看更多更全内容