- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于VB实现PC机与单片机的串行通讯
2010-05-21 23:39:03 作者:lazypeople 来源: 浏览次数:881 网友评论 0 条
摘要:本文介绍使用VB6.0开发工具实现PC机与单片机的串行通讯的基本原理和方法。并结合具体实例给出使用RS-232接口进行串行通信的基本程序。关键词:VB,单片机,串行通讯引言????随着计算机...
摘要:本文介绍使用VB6.0开发工具实现PC机与单片机的串行通讯的基本原理和方法。并结合具体实例给出使用RS-232接口进行串行通信的基本程序。关键词:VB,单片机,串行通讯
引言??? 随着计算机技术尤其是单片微型机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行检测和控制。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个),存在片内RAM20H~3DH区域,要求将这个数据块传送给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????????? ;等待发送完毕?
文档评论(0)