51单片机串口通信编程

发布时间:2023-06-13  

51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。


一、 pc机上的 串口通信编程过程如下:

1.建立项目

打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点);


2.在项目中插入MSComm控件

选择Project菜单下Add To Project子菜单中的 Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX控件出现在列表框中。 选择Microsoft Communications Control, version 6.0,,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。(如果你在控件列表中看不到Microsoft Communications Control, version 6.0,那可能是你在安装VC6时没有把ActiveX一项选上,重新安装VC6,选上ActiveX就可以了),

这时在ClassView视窗中就可以看到CMSComm类了,(注意:此类在ClassWizard中看不到,重构clw文件也一样),并且在控件工具栏Controls中出现了电话图标(如图1所示),现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。

本51单片机串口通信编程

3.利用ClassWizard定义CMSComm类控制对象

打开ClassWizard-》Member Viariables选项卡,选择CSCommTestDlg类,为IDC_MSCOMM1添加控制变量:m_ctrlComm,这时你可以看一看,在对话框头文件中自动加入了//{{AFX_INCLUDES() #include “mscomm.h” //}}AFX_INCLUDES (这时运行程序,如果有错,那就再从头开始)。


4.在对话框中添加控件

向主对话框中添加两个编辑框,一个用于接收显示数据ID为IDC_EDIT_RXDATA,另一个用于输入发送数据,ID为IDC_EDIT_TXDATA,再添加一个按钮,功能是按一次就把发送编辑框中的内容发送一次,将其ID设为IDC_BUTTON_MANUALSEND。别忘记了将接收编辑框的Properties-》Styles中把Miltiline和Vertical Scroll属性选上,发送编辑框若你想输入多行文字,也可选上Miltiline。

再打开ClassWizard-》Member Viariables选项卡,选择CSCommTestDlg类, 为IDC_EDIT_RXDATA添加CString变量m_strRXData, 为IDC_EDIT_TXDATA添加CString变量m_strTXData。说明: m_strRXData和m_strTXData分别用来放入接收和发送的字符数据。


5.添加串口事件消息处理函数OnComm()

打开ClassWizard-》Message Maps,选择类CSCommTestDlg,选择IDC_MSCOMM1,双击消息OnComm,将弹出的对话框中将函数名改为OnComm,(好记而已)OK。

这个函数是用来处理串口消息事件的,如每当串口接收到数据,就会产生一个串口接收数据缓冲区中有字符的消息事件,我们刚才添加的函数就会执行,我们在OnComm()函数加入相应的处理代码就能实现自已想要的功能了。请你在函数中加入如下代码:

void CSCommTestDlg::OnComm()

{

// TODO: Add your control notification handler code here

VARIANT variant_inp;

COleSafeArray safearray_inp;

LONG len,k;

BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.

CString strtemp;

if(m_ctrlComm.GetCommEvent()==2)//事件值为2表示接收缓冲区内有字符

{////////以下你可以根据自己的通信协议加入处理代码

variant_inp=m_ctrlComm.GetInput();//读缓冲区

safearray_inp=variant_inp;//VARIANT型变量转换为ColeSafeArray型变量

len=safearray_inp.GetOneDimSize();//得到有效数据长度

for(k=0;k《len;k++) 《/len;k++)

safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组

for(k=0;k《len;k++) p=“” 将数组转换为cstring型变量

{

BYTE bt=*(char*)(rxdata+k);//字符型

strtemp.Format(“%c”,bt);//将字符送入临时变量strtemp存放

m_strRXData+=strtemp;//加入接收编辑框对应字符串

}

m_strRXData+=“rn”; //换行

}

UpdateData(FALSE);//更新编辑框内容

}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    51单片机编程环境搭建方法;前言 本教程将向大家介绍KEIL C51软件的安装,通过本教程的学习,我们可以在电脑上安装一个KEIL C51 软件,为后面学习程序的开发做好铺垫。 一、KEIL......
    模式也是日新月异,如基于传统51单片机C 语言编程技巧探讨,介绍了编程特点与技巧及模块化编程设计;张华林老师在单片机编程模块化设计研究中详细讲述了模块化编程方法;黎民山老师的基于流程图编程的单片机软件系统开发,将程......
    另一个初衷是它的程序完全可以无须改动或者需要极少的改动就可以在proteus运行,这样不用开发板我们也可以先开始学习单片机编程中文版规格书下载链接:https://www.stcmcudata.com/datasheet/STC89C52.pdf 一、时钟......
    keil单片机编程软件的使用方法说明;单片机编程软件的使用尤为必要,每一款单片机编程软件都有各自特色。大家在选用单片机编程软件时,可依据自身情况而定。本文对单片机编程软件的介绍基于Keil,主要......
    一般起跟要实现的功能相同的英文缩写代替。 比如说我要存储一个电压值,那你可以定义一个变量,名字叫VoltageValue,或者这两个词的缩写VoltVal。 所以,大家不要把这个想得这么神秘和高大上。 而从事单片机编程,需要的编程水平比做纯软件......
    M60 单片机的在线仿真与步进、日志调试;我们对M40 定时器0的代码进行步进调试,掌握调试技巧... 一、前期准备: 安装好keil C51 51单片机编程推荐软件,熟悉它,后续stm32同样......
    能学会又是另外一个话题,如果你是0基础,如果你愿意多花点时间去学习,学会单片机是没有问题的。 0基础学员怎么学习单片机单片机学习需要掌握那些知识? 1.C语言 现在C语言已经成为了单片机编程......
    当你学会51单片机,会非常快速入门其它单片机学习。这就和我们小时候学习数学都是从1+1开始学习加法的,简单+坚持我们就能学习下去,就能更好的理解。 四、学习单片机编程的准备 学习单片机,始终包含两个部分软件......
    如何创建51单片机KEIL工程步骤;1. 什么是Keil软件 Keil软件是一款专为嵌入式系统开发而设计的集成开发环境(IDE),常用于51、STM32单片机软件开发的编程软件。Keil编程软件......
    单片机如何使用?51单片机C语言编程实例有哪些?;单片机如何使用,我们要知道单片机在哪里使用? 单片机是很多电子产品的核心器件,它具有一定的逻辑判断和事件处理能力的芯片。 可以对单片机编程......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>