全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于VB实现PC机与单片机的串行通讯 随着计算机技术尤其是单片微型机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行检测和控制。PC机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS-232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。因此如何实现PC机与单片机之间的通讯具有非常重要的现实意义。本文将论述在VB环境下PC机与单片机之间实现串行通讯的软硬件方案。PC机的通讯程序使用Visual Basic编写,VB是Microsoft公司推出的Windows应用程序开发工具,因其具有界面友好,编程简便等优点而受到广泛的使用,而且 Visual Basic 6.0 版本带有专门实现串行通讯的MSCOMM控件。1、硬件原理 目前的PC机都有至少一个串行通讯端口RS-232,RS-232端口可用于两台计算机之间进行通讯,RS-232的逻辑电平用正负电压表示,且信号使用负逻辑,逻辑0的电压范围是+5V+15V,而逻辑1的电压范围是-5V -15V,RS-232端口是计算机与其他设备沟通的最常用的接口,不但实作简单,而且价格便宜。在8051单片机的内部有一个全双工的异步串行I/O 口,它的输入和输出使用5V逻辑而不是RS-232电压,如何进行两种信号的转换,是连接时需要解决的问题,事实上,解决的方法很简单,只需使用一个诸如 MAX232这样的专用芯片即可。电路结构见下图。 MAX232包含两个将TTL输入转换成RS-232输出的驱动器,还包含两个将RS-232输入翻译成CMOS输出的接收器,这些驱动器和接收器具有反向的功能。4个外置的电容大小为1uF,如果使用极化电容,注意极性,引脚6的电压为负,因此它的电容的正极连接到地,电容等级至少为15V。2、软件设计 本次通讯中,我们以一个测控系统的上位机和下位机之间的通信为背景,给出单片机部分和VB环境下的通信程序实例,系统中单片机负责数据采集、处理和控制,上位机进行现场可视化检测,通信协议采用半双工异步串行通信方式,通过RS232的RTS信号进行收发转换,传输数据采用二进制数据,上位机与下位机之间采用主从式通讯。 (1)单片机的串行通讯程序 8051单片机从外部采集到的一组数据(30个),存在片内RAM20H3DH区域,要求将这个数据块传送给PC机,为了保证传送的正确,传送前由单片机先向PC机发送数据# 55H(联络信号),PC机接收到后,向单片机回送数据# 0AAH(回应信号),经检验正确后,单片机才开始向PC机传送数据。对串行口的操作可分为以下几步进行:串行口初始化;发送联络信号;接收联络信号;发送数据。以下程序由汇编语言编写:ORG 0030HSTART:MOV SP,#60H MOV TMOD, #20H ;T1工作模式2 MOV TH1, #72H MOV TL1, #72H ;波特率110HZ SETB TR1 MOV PCON, #00H ;SMOD=0 MOV SCON, #50H ;串行方式1 MOV R0,#20H MOV R2,#30 ;数据个数XX1:MOV A,#55H MOV SBUF,A ;发送联络信号WAIT1:JBC TI,WAIT2 ;等待发送完毕 AJMP WAIT1WAIT2:JBC RI,READ ;等待接收完毕 AJMP WAIT2READ:MOV A,SBUF ;接收联络信号 CJNE A,# 0AAH,XX1 ;接收数据不正确,重新开始LOOP:MOV A,R0MOV SBUF,AWAIT: JBC TI, LOOP1 AJMP WAIT ;等待发送完毕LOOP1:INC R0 DJNZ R2,LOOPEND (2)计算机的串行通讯程序 为了更方便地实时了解数据采集的情况,我们把从单片机读来的数据分别赋给数组,然后描绘出波形曲线。 首先开启一个VB项目,并在窗体上安排一个MSCOMM控件,作为串行通讯的信道。按下F4调出属性窗口,变量COMPORT属性为2,另外将 Rthreshold属性设为1,意思就是只要外界传送任何字符串,随即引发事件。安排一个定时器,作为连续动作的执行控件,一旦一位数据发送完就引发中断,发送下一个数据。设置一个picturebox对象,把由单片机传送来的数据以线条方式绘制在此图片框控件上。按下F4调出属性窗口,其Name属性改为“Graph1”。 MSCOMM控件支持以文本和二进制格式传输数据,由于下位机是单片机,处理二进制数据较为方便。因此本例中以二进制格式发送和接受数据,VB支持字节变量类型来存储二进制数据,从串口读入的字节被保存在字节数组变量中,因此定义两个BYTE类型的动态数组来存放和接受数据,在接受数据时采用事件驱动法,当接受缓冲区有Rthreshold个数据时,引起ONCOMM事件。本程序接收从单片机发来的30个数据,当数据进入PC机的输入缓冲区后,程序会不断读取输入缓冲区的数据,并将这些读入的数据收在一起,赋给数组。 因为VB支持坐标格式,我们用SCALE函数作出坐标,定义X轴由0到30,表示有30个数据,Y轴由-20到+20,表示采集数据的范围是-20到+ 20,表达式为SCALE(0,+20)-(30,-20),为了实时采集数据,可以用定时器不断地更新曲线。这样就可以动态地显示被采集的数据。Private sub form_l oad()Comm1.portopen=trueTerval=1000 定时器时间间隔为1000sTimer.enabled=trueMpore=1 选择通讯口1Mscomm1.settings=“110,n,8,1” 波特率110,无奇偶校验,8个数据位,一个停止位Mscomm1. inputmode=1 通过input属性以二进制形式取回数据Mscomm1.inputlen=0 读取接收缓冲区全部内容Mscomm1.rthreshold=1 每收到一个字符位引发oncomm事件Graph1.scale(0,10)-(20,0) 定制坐标Grahp1.forecoclr=rgb(0,0,255)End subPrivate Sub Command1_Click()Dim a!(30), b!(30)num = MSComm1.InBufferCount 取输入缓冲区字节个数instring = MSComm1.Input 把输入缓冲区数据送给数组For i = 0 To num - 1a(i) = ib(i) = instring(i)GRAPH1.ClsIf i = 1 ThenGRAPH1.PSet (a(i), b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 双方达成协议解除合同
- 卧室地板租房合同范本
- 共同使用借款合同范本
- 合伙贷款协议合同范本
- 2026年一级注册建筑师之建筑经济、施工与设计业务管理考试题库300道含答案(考试直接用)
- 古董瓷器售卖合同范本
- 合同权利无偿转让协议
- 北京道路施工合同范本
- 农村厢房出售合同范本
- 厨房商品直销合同范本
- 测绘项目投标技术文件范例
- JAC300变频器使用说明书
- 化学运行班长主值岗位试题
- 《高分子与食品安全》
- MBA《创新管理》课件
- 少给父母添麻烦-课件
- 演讲与口才第二章口语表达课件
- 6078三菱帕杰罗v87v97v93维修手册原厂
- 创伤性凝血病课件
- (完整)公共卫生基本知识考试题题库及答案
- 装修材料燃烧性能等级表
评论
0/150
提交评论