PC机与单片机之间的串口通信程序的设计与实现

发布者:谁与争锋1最新更新时间:2014-10-15 来源: dzsc关键字:PC机  单片机  串口通信 手机看文章 扫描二维码
随时随地手机看文章

  1.引言

  在众多集成可视化开发环境中,VisualC++是编程环境的最佳选择,VC++应用程序的开发主要有两种模式,一种是WIN API方式,另一种是MFC方式,传统的WIN API方式比较繁琐,而MFC是对WIN API再次封装,MFC相对于WIN API开发更具备效率优势,开发者只要在局部做简单地修改,即可处理大部分窗口事物。MFC封装了200多个类并且提供了友好的界面环境,具有类管理灵活方便、代码编写和界面设计集成交互操作、可移植性强等优点,与各种数学手段和数据处理、分析算法相结合还可以实现海量数据分析,智能、快速、灵活数据处理,使便携现场检测仪器功能强,灵活度高,速度快,扩展性好。

  串口通信具有连续简单、使用灵活方便、数据传递可靠等优点,在数据采集系统、监控系统和通信系统中,得到广泛的应用。在Win32下,用来实现串口通信的编程方式有两种:其一可以调用Windows的API函数,其二可以使用ActiveX控件。调用Windows提供的API函数,可以实现用户自定义功能,自由度高,缺点是这种方法编写复杂,需要清楚地掌握串口通信机制;使用ActiveX控件可以屏蔽底层的通信协议,只需对控件的属性进行设置并添加响应的响应处理函数即可实现串口通信中的数据收发,缺点是不支持用户对属性的修改,只能使用控件提供的功能,在使用时有一定限制本文要实现RS232协议的串口通信,采用ActiveX控件即可满足需求。

  2.通信原理

  PC机给单片机发送一个55(发其他的数据单片机不响应),单片机通过串口将返回三个数据传给PC:第一个是AA(作为数据包开包的用的);第二个数据是一个随机数,第三个数据时EE(作为数据包结束的标志)。

  点击接收数据就会在PC机上以16进制、ASCII码、10进制方式显示出来。指示灯LED:红色的是电源灯,单片机处于待机状态时:绿灯亮,黄灯不亮;到单片机收到55数据时,单片机要返回数据的过程中:绿灯亮,黄灯会一闪(指示在发送数据)。

  3.硬件

  单片机和PC机的波特率都设置为9600kbps.上位机的串口是COMl,其电平是RS232电平,而下位机的电平是T T L电平,所以需要电平转换芯片MAX3232进行电平转换,实现PC机和单片机的通信。在MAX3232芯片上,选用其中一路发送/接收,R20UT接PIC16f877的RX,T2IN接PIC16f877的TX,T20UT接PC机的RD,R2IN接PC机的TD,这样就能实现单片机与计算机互联通信。图1为单片机与PC的连接示意图。

  

  4.软件

  MSComm通信控件是最常用的ActiveX串口控件之一,它提供了一系列标准协议的通信接口,可以连接到其他通信设备(如单片机,以及本系统使用的FPGA),而且在VC++、VB等语言中使用[8].通过建立串行通信,完成命令发送、数据发送/接收、监视和响应在通信过程中可能发生的各种事件和错误。本文选用MSComm控件采用事件驱动机制。一般情况下,事件发生时将产生通知,MSComm控件提供的OnComm事件可以用来捕获并处理这些通信事件。可以通过在OnComm事件处理函数中加入读取串口程序代码和处理数据代码来提高程序响应度及可靠性。图2为本文设计的软件界面。

  

  (1)建立应用工程

  启动VC++6.0,新建工程名为“TEST”

  的对话框应用程序,这时在Resource View的Dialog树状文件夹中会自动生成IDD_TEST_DIALOG对话框。

  (2)在当前的Workspace中插入MSComm控件

  选择Project菜单下Add to Project子菜单中的Components and Controls选项,在弹出的对话框中双击R e g i s t e r e dA c t i v e X C o n t r o l s项,选择M i c r o s o f tCommunications Control version 6.0,单击insert按钮即可将通信控件插入该工程,这时添加了类CMSComm及相应文件:MSComm.h和MSComm.cpp.[page]

  (3)添加MSComm控件

  在I D D _ T E S T _ D I A L O G对话框内添加MSComm控件,通过class wizard添加成员变量m_Com.

  (4)串口初始化

  在初始化对话框进行串口初始化,包括端口号、波特率、输入方式等。

  (5)捕捉串口事件

  双击I D D _ T E S T _ D I A L O G对话框内的MSComm控件,这时在TESTDlg.h中,添加了TESTDlg类消息响应、在TESTDlg.cpp中映射了MSComm控件事件。

  (6)串口读写

  当用户输入“55”后,使用函数Set-Output()向串口写入数据,点击“手动发送”按钮,点击一次发送一次。点击“自动发送”按钮,则设置一个Timer定时,1s发送一次。

  

  在进行读操作时,当接收缓冲区有数据时,使用GetInput()将缓冲区的数据保存到COleSafeArray类型的变量里,以便后续的数据处理。

  (7)存储数据

  使用MFC提供的文件操作,将数据保存在TestData.txt文本文件中。CStdioFile是CFile的派生类,适用于文本文件的读写,可以按行读取写入。同时在文件写入数据之前写入本次保存数据的时间,为数据的正确保存提供保障。如图3所示。

  

  5.程序测试及结果

  程序测试过程中,首先利用串口调试助手进行演示,确保单片机能正常工作,串口可以自由接收和发送。然后使用本文设计的软件实现数据的发送显示,结果如图2所示。

  6.结论

  本文利用VC++6.0中的MSComm控件便捷地实现了PC机与单片机之间的串口通信,显示了ActiveX技术充分的灵活性和易用性。

  在Windows环境下开发上位机的串口通信程序,软件界面友好,操作简单,软件设计简单可靠,降低了工作量,准确、有效地实现了数据的采集显示保存。

关键字:PC机  单片机  串口通信 引用地址:PC机与单片机之间的串口通信程序的设计与实现

上一篇:基于C8051F020的多路无线温度采集系统的设计方案
下一篇:基于51单片机的数字测速系统的设计方案

推荐阅读最新更新时间:2024-03-16 13:43

S5PV210串口通信编程实战-2
1、串口Tx、Rx对应的GPIO初始化 给GPA0CON的相应bit位赋值为相应值,用C语言位操作完成。 void uart_init( void ) { //初始化Tx、Rx对应的GPIO引脚 rGPA0CON &= ~( 0xff 0 ); //把寄存器的bit0 ~ bit 7全部清零 rGPA0CON |= 0x00000022; //0b0010, Rx、Tx } 2、UCON、ULCON、UMCON、UFCON等主要控制寄存器 依据上节中分析的值进行依次设置即可 void uart_init( void ) { //初始化Tx、Rx对应的GPIO引脚 rGPA0CON &= ~( 0xff 0 ); //把寄存
[单片机]
S5PV210<font color='red'>串口通信</font>编程实战-2
MSP430F5529-基于ATK-IMU901角度传感器在UART的串口通信于数据显示
角度传感器型号:ATK-IMU901 UART串口:P4.5、P4.4 (即MSP430F5529的USB烧录部分的短路冒所接的引脚) 主要分为两部分: 一、串口通信 二、数据的运算 先上代码: 这是一些所用到的变量和声明 /* Gyroscope.c Created on: 2021年10月8日 Author: feidao */ #include msp430f5529.h #include Gyroscope.h #include Oled.h #define int16_t short unsigned int Data_Gyroscope; int count2_Gyroscope=0; unsi
[单片机]
MSP430F5529-基于ATK-IMU901角度传感器在UART的<font color='red'>串口通信</font>于数据显示
单片机控制多个步进电机C语言程序设计
//程序说明:烧好程序,连接好控制线(步进电机1的控制线I1-I4连接到P2.0-P2.3,步进电机2的控制线I1-I4连接 // 到P2.4-P2.7。按S19可控制步进电机1的转动停止、加减速和正反转,按S20可控制步进电机2的转动停 // 止、加减速和正反转。 //**************************************************************************************************************** #include reg51.h //#include stdio.h sbit A1=P2^0; //步进电机1输出脚定义 sbi
[单片机]
51单片机12分频 ----- 学习笔记
51单片机12分频的原因 由于初期设计硬件技术缺陷,使执行指令时需要子时钟,就把12个振荡周度期规定为1个机器周期。 51单片机是12M晶振,如果是单指令周期的语句,刚好是1us,其他语句好似1us的整数倍,便于计算指令时间。 AT公司的AT89系列51单片机,工艺上存在不足,分频后频率降低,程序得以稳定执行,不易跑飞。 AT新出的单片机和一些公司出的新单片机不一定要用问12M的晶振,11.05925M也行,18M也行,即35M以内的无源晶振(两脚的)都可以的。 图片素材来源于网络 晶振频率为12MHz定时器/计数器计算 一个计算脉冲所用的时间=一个机器周期 一个机器周期=1
[单片机]
51<font color='red'>单片机</font>12分频 ----- 学习笔记
STC8单片机硬件SPI通信例程W25Q16
SPI全双工通信使用起来相当方便,最常见的是W25Q16存储颗粒的使用了,当重新上电时,存储再W25Q16中的数据不会丢失,仍然可以读取出来,下面就简单讲一下如何使用W25Q16存储芯片。 本篇讲的是使用硬件SPI让单片机和W25Q16进行通信,模拟SPI通信将会在下一篇讲。使用W25Q16的步骤如下: 1.配置与SPI有关的寄存器 SPI的数据寄存器配置起来很简单,清零即可。 SPI的状态寄存器,SPI的中断标志位SPIF和写冲突标志位WCOL都需要写1清0,即将SPIF,WCOL位都置1即可。 SPI的控制寄存器,设置主机模式时,将SSIG和MSTR位都置1即可,使能SPI将SPEN位置1即可,相位和极性的
[单片机]
STC8<font color='red'>单片机</font>硬件SPI通信例程W25Q16
用51单片机控制RTL8019AS实现以太网通讯
摘要:介绍以太网的帧协议和以太网控制芯片RTL8019AS的结构特性;介绍51单片机控制RTL8019AS实现以太网通讯的硬件设计方案;采用C51语言实现ARP协议(地址解析协议),并进行了系统的调试与验证。 关键词:RTL8019AS Ethernet 51单片机 TCP/IP协议 互联网络硬件、软件的迅猛发展,使得网络用户呈指数增长,在使用计算机进行网络互联的同时,各种家电设备、仪器仪表以及工业生产中的数据采集与控制设备在逐步地走向网络化,以便共享网络中庞大的信息资源。在电子设备日趋网络化的背景下,利用廉价的51单片机来控制RTL8019AS实现以太网通讯具有十分重要的意义。 1 以太网(Ethernet)协议 一个标
[应用]
单片机协处理器在电力系统中的应用
摘要:单片机协处理器能分担主处理器的部分工作,使电力测控系统在运行速度、功能需求等性能上有明显的改善。 关键词:单片机协处理器 硬件略图 软件 前言 在电力测量及保护系统中,通常是由单片机构成数个乃至数十个前端处理器。它们通过串行通信与微机构成的中央处理器相连接,形成一个完整的系统,以实现对电力系统的遥测、遥信、遥调、遥控等功能。 前端处理器的核心就是单片机,从目前的情况来看,以Intel公司的16位单片机80C196系列(KB、KC等)应用最广。单片机要处理的问题很多。如I/O量、A/D模数转换、键盘、通信、显示等,处理一圈所花费的时间常称之为前端处理器的运行周期。在整个系统中,前端处理器的数量较多,中央处理器对其进行巡
[单片机]
AD574与8031单片机及前置电路的一种实用接口电路
  AD574是美国核拟器件公司Analog Devices) 生产的12 位逐次逼近型快速A/D 转换器。其转换35us,转换误差为土0.05%,是前我国应用广泛,价格适中的A/D转换器。其内部含三态电路,可直接与各种微处理器连接,且无须附加逻辑接口电路,便能与CMOS 及TTL 电平兼容。内部配置的高精度参考电压源和时钟电路,使它不需要任何外部电路和时钟信号,就能实现A/D转换功能,应用非常方便。   许多文献有关于AD574与8031单片机接口技术的介绍, 但其控制功能引线基本局限于单一的AD574与8031的连接。由于8031无内部程序存贮器, 其内部数据存贮器也有限, 因而8031构成的测控系统, 往往都需外扩存贮器
[单片机]
AD574与8031<font color='red'>单片机</font>及前置电路的一种实用接口电路
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved