基于vb实现pc机及单片机串行通讯

上传人:Bod****ee 文档编号:47548491 上传时间:2018-07-02 格式:DOC 页数:4 大小:76KB
返回 下载 相关 举报
基于vb实现pc机及单片机串行通讯_第1页
第1页 / 共4页
基于vb实现pc机及单片机串行通讯_第2页
第2页 / 共4页
基于vb实现pc机及单片机串行通讯_第3页
第3页 / 共4页
基于vb实现pc机及单片机串行通讯_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于vb实现pc机及单片机串行通讯》由会员分享,可在线阅读,更多相关《基于vb实现pc机及单片机串行通讯(4页珍藏版)》请在金锄头文库上搜索。

1、基于基于 VBVB 实现实现 PCPC 机与单片机的串行通讯机与单片机的串行通讯摘要摘要:本文介绍使用 VB6.0 开发工具实现 PC 机与单片机的串行通讯的基本原理 和方法。并结合具体实例给出使用 RS-232 接口进行串行通信的基本程序。 关键词:关键词:VB,单片机,串行通讯引言引言随着计算机技术尤其是单片微型机技术的发展,人们已越来越多地采用单 片机来对一些工业控制系统中如温度、流量和压力等参数进行检测和控制。PC 机具有强大 的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过 PC 机的 RS-232 串行接口与外部设备进行通信,是许多测控系统中常用的一种 通信解决方 案。因

2、此如何实现 PC 机与单片机之间的通讯具有非常重要的现实 意义。本文将论述在 VB 环境下 PC 机与单片机之间实现串行通讯的软硬件方案。 PC 机的通讯程 序使用 Visual Basic 编写,VB 是 Microsoft 公司推出的 Windows 应用程序开发工具,因其具有界面友好,编程简便等优点而受到广泛 的使用,而且 Visual Basic 6.0 版本带有专门实现串行通讯的 MSCOMM 控件。 1、硬件原理目前的 PC 机都有至少一个串行通讯端口 RS-232,RS-232 端口可用于两台 计算机之间进行通讯,RS-232 的逻辑电平用正负电压表示,且信号使用 负逻 辑,逻辑

3、 0 的电压范围是+5V+15V,而逻辑 1 的电压范围是-5V -15V,RS-232 端口是计算机与其他设备沟通的最常用的接口,不但实作简单,而且价格便宜。 在 8051 单片机的内部有一个全双工的异步串行 I/O 口,它的输入和输出使用 5V 逻辑而不是 RS-232 电压,如何进行两种信号的转换,是连接时需要解决的问 题,事实上,解决的方法很简单,只需使用一个诸如 MAX232 这样的专用芯片 即可。 电路结构见下图。2MAX232 包含两个将 TTL 输入转换成 RS-232 输出的驱动器,还包含两个将 RS- 232 输入翻译成 CMOS 输出的接收器,这些驱动器和接收器 具有反向

4、的功能。4 个外置的电容大小为 1uF,如果使用极化电容,注意极性,引脚 6 的电压为负, 因此它的电容的正极连接到地,电容等级至少为 15V。2 2、软件设计、软件设计本次通讯中,我们以一个测控系统的上位机和下位机之间的通信为背景, 给出单片机部分和 VB 环境下的通信程序实例,系统中单片机负责数据采集、处 理和控制, 上位机进行现场可视化检测,通信协议采用半双工异步串行通信方 式,通过 RS232 的 RTS 信号进行收发转换,传输数据采用二进制数据,上位机 与下位机之间 采用主从式通讯。(1)单片机的串行通讯程序8051 单片机从外部采集到的一组数据(30 个),存在片内 RAM20H3

5、DH 区 域,要求将这个数据块传送给 PC 机,为了保证传送的正确,传送前由单片 机 先向 PC 机发送数据# 55H(联络信号),PC 机接收到后,向单片机回送数据# 0AAH(回应信号),经检验正确后,单片机才开始向 PC 机传送数据。 对串行口的操作可分为以下几步进行:串行口初始化;发送联络信号;接 收联络信号;发送数据。以下程序由汇编语言编写: ORG 0030H START:MOV SP,#60HMOV TMOD, #20H ;T1 工作模式 2MOV TH1, #72HMOV TL1, #72H ;波特率 110HZSETB TR1MOV PCON, #00H ;SMOD=0MOV

6、 SCON, #50H ;串行方式 1MOV R0,#20HMOV R2,#30 ;数据个数 XX1:MOV A,#55H3MOV SBUF,A ;发送联络信号 WAIT1:JBC TI,WAIT2 ;等待发送完毕AJMP WAIT1 WAIT2:JBC RI,READ ;等待接收完毕AJMP WAIT2 READ:MOV A,SBUF ;接收联络信号CJNE A,# 0AAH,XX1 ;接收数据不正确,重新开始 LOOP:MOV A,R0 MOV SBUF,A WAIT: JBC TI, LOOP1AJMP WAIT ;等待发送完毕LOOP1:INC R0DJNZ R2,LOOP END(2

7、)计算机的串行通讯程序为了更方便地实时了解数据采集的情况,我们把从单片机读来的数据分别 赋给数组,然后描绘出波形曲线。首先开启一个 VB 项目,并在窗体上安排一个 MSCOMM 控件,作为串行通讯 的信道。按下 F4 调出属性窗口,变量 COMPORT 属性为 2,另外将 Rthreshold 属性设为 1,意思就是只要外界传送任何字符串,随即引发事件。安排一个定 时器,作为连续动作的执行控件,一旦一位数据发送完就引发中 断,发送下一 个数据。设置一个 picturebox 对象,把由单片机传送来的数据以线条方式绘制 在此图片框控件上。按下 F4 调出属性窗口,其 Name 属性 改为“Gra

8、ph1”。MSCOMM 控件支持以文本和二进制格式传输数据,由于下位机是单片机,处 理二进制数据较为方便。因此本例中以二进制格式发送和接受数据,VB 支持字 节变 量类型来存储二进制数据,从串口读入的字节被保存在字节数组变量中, 因此定义两个 BYTE 类型的动态数组来存放和接受数据,在接受数据时采用事件 驱动法, 当接受缓冲区有 Rthreshold 个数据时,引起 ONCOMM 事件。 本程序接收从单片机发来的 30 个数据,当数据进入 PC 机的输入缓冲区后,程 序会不断读取输入缓冲区的数据,并将这些读入的数据收在一起,赋给数组。因为 VB 支持坐标格式,我们用 SCALE 函数作出坐标

9、,定义 X 轴由 0 到 30,表示有 30 个数据,Y 轴由-20 到+20,表示采集数据的范围是-20 到+20, 表达式为 SCALE(0,+20)-(30,-20),为了实时采集数据,可以用定时器 不断地更新曲线。这样就可以动态地显示被采集的数据。 Private sub form_l oad() Comm1.portopen=true Timer.interval=1000 定时器时间间隔为 1000s Timer.enabled=true Mpore=1 选择通讯口 1 Mscomm1.settings=“110,n,8,1” 波特率 110,无奇偶校验,8 个数据位, 一个停止位

10、 Mscomm1. inputmode=1 通过 input 属性以二进制形式取回数据 Mscomm1.inputlen=0 读取接收缓冲区全部内容 Mscomm1.rthreshold=1 每收到一个字符位引发 oncomm 事件4Graph1.scale(0,10)-(20,0) 定制坐标 Grahp1.forecoclr=rgb(0,0,255) End sub Private Sub Command1_Click() Dim a!(30), b!(30) num = MSComm1.InBufferCount 取输入缓冲区字节个数 instring = MSComm1.Input 把输

11、入缓冲区数据送给数组 For i = 0 To num - 1 a(i) = i b(i) = instring(i) GRAPH1.Cls If i = 1 Then GRAPH1.PSet (a(i), b(i) Else GRAPH1.Line -(a(i), b(i) 将数组数据给绘图函数 End If Next i End Sub3 3、结束语、结束语利用 VB6.0 的事件驱动方式可以很方便地开发数据采集与监控系统,用单 台 PC 机可以测量和监控多路控制信号,整控制系统设计方便,对小型测控系统 的设计具有很大的实用性。参考文献:参考文献: 1、 何立民,单片机应用系统设计.北京:航空航天大学出版社,1992 2、 美 Jan Axelson 著,串行端口大全,精英科技译,2001.5

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号