用VB 编程语言实现PC机与AVR 单片机的通信

发布者:oplndctkl出最新更新时间:2013-12-09 来源: eefocus关键字:VB编程语言  PC机  AVR单片机 手机看文章 扫描二维码
随时随地手机看文章
0  引 言
在当今,网络技术越来越多地应用在各个领域,微机技术及单片机也不断发展,因此,目前大多数小型计算机监控系统都采用以PC 机和单片机构成的串行通信网络来完成监控任务。其中,单片机主要进行对数据的实时采集、处理,再通过串口将数据送入PC 机的缓冲区,然后由PC 机对数据进行进一步处理,以便得到所需的图形、图像及实验结果。采用VB 语言中的通信控件能够很好地完成二者之间的通信功能。
1  系统简介
本系统是一个小型的人体心电监测系统,将心电信号采出后经过A/ D 转换,由PC 机绘制出心电图形,进行实时显示,便于医护人员观察和诊断,系统原理如图1 所示。系统的下位机即单片机系统,将现场采集的信号经A/ D 转换送入系统上位机。系统上位机由一台PC 机构成,采用Vi2sual Basic 编程,做出友好的界面风格,可实时观察心电信号。
图1  系统原理图
2  MSCOMM 控件功能介绍
VB 提供了一个基本通信控件MSCOMM32.OCX ,它具备串行通信的能力,可以通过串口接收
和传输数据。
CommPort :端口号,用于选择通过哪个端口进行通信。
InBufferCount :返回接收缓冲区中等待的字符数,可以通过置0 来清空缓冲区。
InBufferSize :设置并返回接收缓冲区的字节数。
Settings :设置并返回波特率、奇偶校验、数位、停止位参数。通常设置为:“9 600 , n ,8 ,1”。
PortOpen :设置并返回通讯端口的状态(开或关) 。端口打开后,可以直接读写数据流。
Input :返回并删除接收缓冲区中的数据流。
InputLen :设置并返回Input 属性从接收缓冲区读取的字符数。
InputMode :设置或返回Input 属性取回的数据的类型。
Output :往传输缓冲区写数据流。
3  通信协议
1) 上位机与下位机通信的数据格式均为起始位,命令码,帧长,信息段,校验和,停止位。
起始位与停止位标定一次发送,起始位以前和停止位以后的数据均视为干扰信号。
帧长记录了信息段和校验和总共的字节数。
2) 所有的数据均按ASCII 码(十六进制) 操作。
3) 具体定义如下
信息中的每8 位(1 字节) 作为2 个字符发送。每8 位表示成16 进制数,高4 位、低4 位分
别对应一个ASCII 字符0~9 、A~F。
本协议以“:”(ASCII 值为0X3A) 开始,其次为命令码:8 位、信息段:长度由待发数据而定、校验和:8 位,最后以“回车”或“换行”(ASCII值分别为0X0D、0X0A) 结束。其中,校验和的计算方法为256 - [命令码+信息段长度] mod 256 (mod 表示求余) 。
根据功能不同设置了2 个命令码10 (ASCII值分别为0X31 、0X30) 和11 (ASCII 值分别为0X31 、0X31) 。在起始符后即为命令码,判断该值,以便转向相应的处理程序。
4  软件实现
MSCOMM 控件的使用使得用户不需要对通信底层进行操作,简便而有效。它有事件驱动和查询2 种通信方式,由于本系统只是一个小型的监测系统,因此,采用查询方式即可满足要求。放置一个定时器,参数设定为500 ms ,即每0. 5 s 检测一次缓冲区,将数据读入。[page]

图2  程序流程图
以下是加载窗体时对MSCOMM 控件的初
始化设置
Private Sub Form  Load ()
With MSComm1
. CommPort = 1 ’设置通讯端口
. InBufferCount = 0 ’清空缓冲区
. InBufferSize = 5 000
’设置通讯波特率等
. Settings = “9 600 , n ,8 ,1”
If (PortOpen = False) Then
PortOpen = True
End if’将取出的数据设置为二进制
. InputMode = comInputModeBinary
End With
End Sub
接收按钮按下时,定时器启动,开始检查缓冲区中是否有数据。本系统定义了2 个定时器,一个用于对通讯协议中起始符和命令码的检测,另一个用于控制信息段的数据流。
接收数据时,定义一个变体(Variant) 类型的变量tempbuf ,将缓冲区内的数据赋给此变量tempbuf = MSComm1. Input ,同时还要定义一个字节(Byte) 型的数组变量indate () ,再次赋值indate = tempbuf ,这样就可以操作indate () 中的数据了。
由于Input 属性在取出数据后会自动清空缓冲区,因此不再需要用其他代码强制清空。
为了解决传输干扰的问题,还要求上位机给下位机发送数据,以通知下位机接收的数据是否无误,从而使下位机决定是否重新发送数据。
发送数据时,定义一字符串(St ring) 类型的数组变量outdate ( ) ,将需要发送的数据赋给变量,然后用下面语句发送MSComm1. Output = CVar (outdate)
5  硬件实现
实现电路如图3 所示。
AT90 系列单片机带有一个全双工的通用串行异步收发器(UART) ,数据传送通过把被传送的数据写入UART I/ O寄存器UDR 来初始化,在波特率时钟加载到移位寄存器的传送操作时,起始位从TXD 引脚移出,然后是数据,低位在先。当停止位被移出时UDR 寄存器中没有新的数据,UDRE 标志位将保
持为1 直到UDR 被重写。而在数据接收时,接收器前端的逻辑以16 倍波特率采样RXD 引脚的信号。如果一个有效的起始位被发现,就开始起始位之后的数据位的采样,在采样的同时,这些位被移入传送移位寄存器。当停止位到来时,3 个采样中的大数应为1 才能接收该停止位。
图3  硬件实现电路
6  结束语
本系统试运行已经成功,说明MSCOMM 控件完全可以实现各种高速复杂的串行通信协议,具有很高的实用价值。
参 考 文 献
[1 ]  耿德根,宋建国,马潮. AVR 高速嵌入式单片机原理与应用[M] . 北京:北京航空航天大学出版社,
2001.
[2 ]  东箭工作室. Visual Basic 5. 0 中文版程序设计[M] . 北京:清华大学出版社,1997.InBufferSize :设置并返回接收缓冲区的字节数。
关键字:VB编程语言  PC机  AVR单片机 引用地址:用VB 编程语言实现PC机与AVR 单片机的通信

上一篇:AVR 单片机实现直流电机PWM 的速度调整
下一篇:AVR串口多机通讯过程的解答

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

基于AVR单片机PWM功能的数控恒流源研制
随着电子技术的深入发展,各种智能仪器越来越多,涉及领域越来越广,而仪器对电源的要求也越来越高。现今,电源设备有朝着数字化方向发展的趋势。然而绝大多数数控电源设计是通过高位数的A/D和D/A芯片来实现的,这虽然能获得较高的精度,但也使得成本大为增加。本文介绍一种基于AVR单片机PWM功能的低成本高精度数控恒流源,能够精确实现0~2A恒流。 系统框图 图1为系统的总体框图。本系统通过小键盘和LCD实现人机交流,小键盘负责接收要实现的电流值,LCD 12864负责显示。AVR单片机根据输入的电流值产生对应的PWM波,经过滤波和功放电路后对压控恒流元件进行控制,产生电流,电流再经过采样电阻到达负载。同时,对采样电阻两端信号进行差分和
[单片机]
基于<font color='red'>AVR单片机</font>PWM功能的数控恒流源研制
TMS320F24x与PC机串行通信接口设计及应用
引言 tms320f24x是美国ti公司tms320系列定点数字信号处理器(dsp)之一,tms320f240是f24x系列面向数字控制芯片的典型代表。由于tms320f240并不具备人机界面,在实际使用过程中,需要为它提供一个人机接口或上层控制接口,以便于观察控制效果或传递必要的控制信息。因此,实现tms320f240与pc之间串行通信接口的设计方法,具有较高的实用价值。 串行通信接口的硬件设计 f240芯片内部集成了一个串行通信接口(sci)模块,该模块是一个标准的通用异步接收/发送(uart)通信接口,通信接口有scitxd(sci发送输出引脚)和scirxd(sci接收输入引脚)两个外部引脚,引脚的信号电平为ttl
[应用]
PC机与PIC单片机主从式多机通讯及其在数据检测系统
简介:主要针对煤气报警器检测系统的数据传输问题,提出一种PC机与多台PIC单片机主从式串行异步通讯的方式,给出硬件电路图、通信协议、软件流程图及其在实际的数据检测系统中应用时的注意事项。 在煤气报警器的出厂检验中,需要对其关键部件气体传感器的工作情况进行监测。系统框图如图1所示。 在这个气体传感器监测系统中,使用了多台PIC单片机作为下位机采集气体传感器的工作状态数据及环境参数(环境温度,环境湿度等参数),并按照上位机的要求将采得的数据传送给PC机。上位机与各下位机之间采用主从式的异步串行通讯方式,即下位机接到上位机的通讯信号时才做出响应,否则将一直做采集数据的工作。所采用的下位机型号为PIC16C711,它体积小,功能强
[单片机]
<font color='red'>PC机</font>与PIC单片机主从式多机通讯及其在数据检测系统
基于AT89C51的操控键盘的设计
引 言 在一些自动化测量或智能设备中,微机作为控制中枢,对多个功能单元进行控制与管理,以实现仪器设备的系统功能。键盘是人机通信的基本设备,操作者通过它完成对设备的操控。PC机通用键盘是与主机分开的独立设备,其结构外形已经固定,需要较大的安装空间。但在所研制的产品设备中,系统上电运行后,往往只需通用键盘中的少量按键即可完成人机通信或控制,如数字键O~9、 、 、 、 、Esc等按键。在这种情况下,因为结构尺寸的限制,并为了使操控方便、设备简化等,不便采用通用键盘,而需使通用键盘小型化,并且与产品设备融为一体。因此需要研制小型一体化专用键盘。 采用小型一体化专用键盘不但可完成按键的功能,而且要求根据仪器外形进行一体化优化设计,使
[单片机]
基于AT89C51的操控键盘的设计
AVR单片机专辑——定时器
第二讲:AVR单片机的定时器 ATmega128有两个8位定时器0和2,两个16位定时器1和3。下面主要说一下定时器的不同用法。 1. T/C0可以外接32768Hz的晶振,实现RTC(实时时钟)。 2. T/C2 外部事件计数器(T2)。 3. 16位的T/C可以实现精确的程序定时、波形产生和信号测量。功能非常强。 本文主要以16位的T/C1为例介绍定时器的应用,其它的定时器可以依葫芦画瓢。 1. 采用T/C1的溢出中断实现电子钟的设计 定时器工作在普通模式,用数码管显示时间。这里问题是如何得到1s的定时。若晶振采用12M,256分频,则计数初值应设为X,0xFFFF-X=12M/256 ==〉X=0
[单片机]
ATmega16与PC机的移动机器人定位系统研究
引言   移动机器人定位系统的可靠性决定机器人工作的可靠度。目前,机器人定位系统的通信多使用串口通信的方式。串口通信速度较慢,通信正确率波动较大,且易受干扰。所以定位系统以CAN总线作为桥梁,使AVR与PC机能快速通信,有机结合,功能互补。AVR单片机ATmega16做底层数据采集有它简单性与廉价性的特点。ATmega16与PC连为一体的系统设计又使系统有较好的兼容性,基于PC平台的机器人其他程序可以较好地融合进来,通用性较好。定位系统所用定位航迹算法是用光纤陀螺仪感应机器人角度变化,被动光电码盘计算机器人坐标位置;超声波传感器在有标记位置消除定位误差,起辅助定位作用。 1 传感器数据传输系统设计  光纤陀螺仪、被动光电码盘
[单片机]
ATmega16与<font color='red'>PC机</font>的移动机器人定位系统研究
AVR单片机串口通信程序
  单片机的串口在很多时候都是一个有用的通信接口,比如要修改单片机内部的一些变量,就可以直接使用串口通信,将参数发送到单片机,就省去了重新编译下载的麻烦。     AVR单片机的串口通信功能可谓强大啊,下面就简单说下我在学习时的一些经验。     实验板是AVR-ATMEGA128A单片机,晶振8MHz。   1、初始化:设置波特率前,要关闭 USART0 的所有使用,包括使能和中断。   2、设置 UCSR0A: UCSR0A 能写的有 Bit0,Bit1,Bit6,其他 5 位为状态位.我们一般使用的有 Bit1-U2X0,当这一位为 1 时,波特率的分频因子从 16 降到 8,能够有效的将异步通信模式的传输速率加倍,
[单片机]
avr单片机atmega16自动浇花器Proteus仿真+源程序
单片机源程序如下: #include iom16v.h #include macros.h #define key_bz 0b00000111 #define uchar unsigned char #define uint_16 unsigned short char smg_zx ={0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f,0x37};// 全局变量 char smg_wx ={0B00000001,0B00000010,0B00000100,0b00001000}; char smg_oFF ={0x3f,0X71,0X71}; unsigned i
[单片机]
<font color='red'>avr单片机</font>atmega16自动浇花器Proteus仿真+源程序
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • Linux内核移植
    实验步骤:(1)准备工作(2)修改顶层Makefile(3)修改falsh 分区(4)配置编译内核下面以Linux2 6 30 4内核移植到gec2440为例:一、准备 ...
  • S5PV210 PWM定时器
    第一节 S5PV210的PWM定时器S5PV210共有5个32bit的PWM定时器,其中定时器0、1、2、3有PWM功能,定时器4没有输出引脚。PWM定时器使用PCLK_PS ...
  • S5PV210 NAND Flash
    NAND Flash关于NAND FlashS5PV210的NAND Flash控制器有如下特点:1) 支持512byte,2k,4k,8k的页大小2) 通过各种软件模式来进行NAND Fl ...
  • S5PV210串口
    串口设置之输入输出字符S5PV210 UART相关说明 通用异步收发器简称UART,即UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER,它用来 ...
  • S5PV210按键控制LED
    原理图如图所示:查询用户手册得到:程序例子:(完整代码见“代码下载链接”)1、轮询的方式查询按键事件 *main c* 核心代码如下:while(1 ...
  • S5PV210控制蜂鸣器
  • S5PV210的启动过程
  • S5PV210点亮LED
  • S5PV210启动过程详解
何立民专栏 单片机及嵌入式宝典

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

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