当前位置:首页 >> 信息与通信 >>

用c+builder60实现avr单片机与pc机的串行通讯_图文


2 设备设计与维修2

用 ! " " #$%&’()*+ , 实现 -./ 单片机与 0! 机的串行通讯
江海洋1 2 黄小文1 2 万2 兵3
摘要2 介绍工业应用中常用的基于 4%5’678 异步串行通讯程序开发方法。结合开发实践讨论用 ! " " #$%&’()*+ , 实现 基于 -./ 单片机与 0! 机的数据通讯方法, 并给出程序设计的一般步骤和详细解释。最后讨论了工程实践中常遇到的 通讯方式方法的选择、 初始化、 校验和数据的保存方法。 关键词: 串行通讯2 $ " " %&’()*+2 ,-. 单片机2 数据保存 中图分类号: 90:11+ 12 文献标识码: -2 文章编号: 1*;1 —:1:: ( 3,,< ) ,< —,11= —,:

/*+’0( 1233&4’105’24 6*57**4 ,-. 18’9 3’1+21239&5*+ 04) :$ &4)*+ $ " " %&’()*+* ; ,
<’04= >0’?04=, >&04= @’027*4, A04 %’4=
,6B5+015 2 >(?()@& A6BB65 B(CD6’8 6E @8F5AD)656$8 8()%@& A6BB$5%A@C%65 $5’() 4%5’678 %5 %5’$8C)F 7()( %5C)6’$A(’+ 9D( )(@&%G H@C%65 6E CD( 8()%@& A6BB$5%A@C%65 I(C7((5 -./ AD%J B%A)6A6BJ$C() @5’ A6BJ$C() 7%CD ! " " #$%&’()*+ , 7@8 ’%8A$88(’+ 0)6G K)@B8 @5’ ’(C@%& 56C(8 7()( K%?(5 6$C+ 0)6I&(B8 @I6$C CD( 8(&(AC%65 6E CD( A6BB$5%A@C%65 B6’(, ’@C@ 8@?(, CD( %5%C%@&%H@C%65 @5’ CD( ?()%E%A@C%65, 7()( @&86 ’%8A$88(’+ C*? 72+)B: /*+’0( 1233&4’105’242 $ " " %&’()*+2 ,-. 18’9 3’1+21239&5*+2 D050 B0E*

2 2 本文结合开发铁路转辙机实验台实例, 介绍用 ! " " #$%&’()*+ , 自 行 编 写 的 一 个 串 行 口 通 讯 控 件 9!LMM, 来实现数据采集时 -./ 单片机与 0! 机的通 讯。

2 2 本测控系统采用 0! 机作上层主机, 用 -9MB(& 公 司生产的 -./ 单片机作下层从机。上位机通过串行 口发送指令给下位机进行相关项目测试, 基于 ! " " #$%&’()*+ , 开发的上位机软件系统将上传的数据进行 数字滤波、 剔点等处理, 并用经过处理后的采样数据进 行曲线绘制和存储, 以提供给实验人员对实验数据进 行系统、 定性地分析, 为设备故障诊断和维修提供帮 助。系统原理结构如图 1 所示。

12 系统结构
本文研究的测控系统要求能对转辙机进行道岔转 换时的相关参数进行测定, 这些参数包括液压转辙机 转换时的液压力、 电流测试 ( 负载启动电流、 转换时最 大电流、 额定电流) 、 道岔转换时间、 绝缘电阻、 额定负 载力、 空载实验等项目的测试, 同时在测试过程中将采 样数据实时上传, 并通过上位机的控制软件将实验结 果用曲线或数字的形式显示出来, 在手动测试时能通 过 NOP 将测量结果在显示面板上直接显示出来。

32 9!LMM 通讯控件属性
! " " #$%&’() 中 组 件 的 创 建 一 般 按 照 属 性、 事 件、 方法这三个方面来进行, 很多论文和专著中有这方 面的详细介绍, 本文不再讨论。本文将直接利用创建 好的通讯组件 9!LMM 来实现通讯。首先将 9!LMM 安装在 ! " " #$%&’() 的组件面板上, 然后就可以像普 通组件一样取用。该组件安装在 ! " " #$%&’() 中的 视图如图 3 所示, 其中图标为 “ 1,1, ” 的组件就是笔者 创建的通讯组件。 通讯组件的属性一般包含了串行端口的号码设 置、 速度设置、 参数设置等方面, 下面将该组件的部分 属性作一介绍。 #@$’/@C(: 串行端口的传输速度, 必须与接收端的 速度一致。 0! 一般设置为 Q*,,IJ8, /> R 3:3 通讯方

图 12 系统原理结构

式最高传输速度可达到 11<3,,IJ8。

图 32 通讯组件安装视图

11=

万方数据  

现代制造工程 !""# (#)

! 设备设计与维修!
! ! "#$$%#&’: 通 讯 端 口 选 择。 计 算 机 上 一 般 有 "()* 、 "()+ 两个端口。 "()* 为 , 引脚, 用于异步 通讯模式, "()+ 为 +- 引脚, 一般用于同步通讯模式。 ./’/01’2: 数据位长度。欧美仪器一般采用 301’ 一 字节, 日本的采用 401’ 一字节的传输方式。 %/&1’5: 设置奇偶校验的种类, 有 6#78, 9:87、 (;; 三种。 <=</7;>?/@17A: 硬件握手设置。 B7CD’E87: 设置一次输入指令所读取的字节数。 F’?&82?#G;: 引发 (7F8H81:8./’/ 事件的阀值。 >’#C01’2: 停止位数, 有 *、 *I - 、 + 三种。 >=</7;>?/@17A: 软件握手设置。 中用数组将数据从缓冲区读取、 保留, 并将缓冲区清 空。
:#1;WK/2’H/GG! TX#&$’82’Y.Z : : "#$$*F8— H81:8./’/ ( T(S[8H’!>87;8&) { .57/$1HQ&&/5 R S5’8 L T8$C./’/; ! P P T8$C./’/ 为动态数组, 大小不限制 S5’8 F805’8 [ \-OO ] ; ! ! P P 采样数据接收数组 17’! ! ?; T8$C./’/ N "#$$* ] L F8/;B7CD’05’8 () ; K#& ( 17’ 1 N O ; 1 R T8$C./’/I E87A’?; 1^ ^) ! { ! F805’8 [ ? ^ 1]N T8$C./’/ [ 1] ; ! } }

J! 通讯程序设计与实现
JI *! 上位机通讯程序的编写 建立上、 下位机通讯之前, 必须正确选择通讯端 口。计算机一般有 "()* 和 "()+ 两个串行通讯端 口, 通讯之前, 必须选择未用的通讯端口。以下代码实 现通讯端口的选择。
BK ( &;"()— L B’8$G7;8M N N O ) "#$$* — L "#$$%#&’ N C7"()* ; ! ! P P 选择 "()* 口 8G28! "#$$* — L "#$$%#&’ N C7"()+ ; ! ! P P 选择 "()+ 口 ! ! 通讯端口选择之后, 在上、 下位机通讯握手建立之前先打开通讯端 ! ! ! ! ! ! 口并初始化缓冲区。 .57/$1HQ&&/5 R S5’8 L ! F8H81:8SDK; ! ! P P 定义动态接收数组 >’&17A! (D’;/’/, F8;/’/, 0DK; ! ! P P 定义发送、 接收数据为字符串变量 "#$$* — L %#&’(C87 N ’&D8; ! ! P P 打开通讯端口 "#$$* — L FT?&82?#G; N O ; ! ! P P 先不触发数据接收事件 "#$$* — L B7CD’E87 N O ; ! ! P P 设置为从缓冲区一次性读取数据 0DK N "#$$* — L B7CD’; ! ! P P 用读缓冲区的方式清空接收缓冲区

在进行采样时, 上传的数据以 Z 个字节为一组上 传一次, 每个信息用 + 个字节以高、 低位形式组成, 因 此每次上传的 Z 个字节中包含 J 个信息, 对于采样的 数据, 分别代表一个采样点的电流、 力矩、 液压值。因 此打开串口时需要将缓冲区门槛值设置为 Z , 表示 Z 字节一触发, 代码如下:
! ! ! "#$$* ] L FT?&82?#G; N Z ; ! P P 设定数据接收门槛值为 Z 字节

采样结束标志字符串加在这组比特流的最后, 当 接收到结束字符时表示采样结束, 数据传输正确与否 可以通过设置奇偶校验来检查, 如果数据正确就可以 做进一步的处理, 否则数据传输错误, 应该丢弃, 进行 重新采样。 JI +! 下位机通讯程序的编写 )"_ 采 用 QT)9E 公 司 的 QT,O>3-*- 单 片 机。 QT,O 系列单片机采用 </&:/&; 结构和精简指令集, 程 序存储器和数据存储器分开, 通过在单一周期内执行 功能强大的指令, 具有 *)B%> P )<‘ 的高速处理能力, 外接晶振可达 JJ)<‘, 功耗较低 ( !Q 级) , 片内集成了 3@0 的全速 XG/2? 程序存储器, 可擦写 *OOO 次以上, 省 程序高度保密, 避免非法窃取。该 去了外接 9%F(), 款芯片在嵌入式系统开发中应用尤其广泛。 汇编语言作为传统嵌入式系统的编程语言, 具有 执行效率高等优点, 但编程效率低下, 可移植性差。近 年来, 嵌入式系统开发开始采用高级语言编制 (如 "P " ^ ^ 语言) , 显示出更多的优点, 如无需精通单片机 指令集和具体硬件; 可实现软件结构化编程; 省去了人 工分配单片机资源的工作; 与其他高级语言的接口容 开 易等。本文采用 Q6>B" 语言编写下位机通讯程序, 发环境选择 B""QaFZI +Z" 。设置时钟频率为 3I O)<‘。
bC&/A$/ 17’8&&DC’W?/7;G8&2C1W12&: 1:W>%BW>T" bC&/A$/ ;/’/: H#;8 P P 设置数据区为程序存储器 bC&/A$/ ;/’/: ;/’/ P P 设置数据区为数据存储器

! ! 将代表不同含义的指令进行编码, 以字符串或字 节的形式发送 ( 这里采用字符串方式) 。上位机发送 指令后, 马上打开接收缓冲区, 准备接收下位机的反馈 信息, 由于中间需要一定的时间, 在程序代码中要加入 延时。
"#$$* — L (D’CD’>’&17A ( ‘ U V *O ’ ) ; ! ! P P 指令发出 .8G/5 ( -O ) ; ! ! P P 延时 -O$2 F8;/’/ N "#$$* — L B7CD’; ! ! P P 接收下位机反馈信息

! ! 这样反复三次握手, 当上位机三次都接收到下位 机的反馈信息后表明, 通讯成功建立, 可以发送操作指 令和接收采样数据。一般的串行通讯数据接收方式有 , 不断地探询是否有数据被 两种, 一种是轮询 ( %#GG17A) 接收或是事件发生, 适用于较简单的串行通讯; 另一种 则是创建线程, 由线程接收数据的送 P 收程序及事件的 检测。本文采用轮询的方式, 当缓冲区中数据达到设 定门槛值后触发一次 (7F8H81:8./’/ 事件, 在这个事件
万方数据   现代制造工程 !""# (#)

**-

B 设备设计与维修B
!"#$%&# ’()*+,-,).,*/011,+*’)2, 3 !"#$%&# ’()*’,45*/011,+*’)2, 3 [ ’()*+,-,.,*/011,+*’)2, ] : < < 定义接收 /011= 6789: ’()*+#7;/6$$ ,+ 6789: !’()*+#7;>#9": < < 接收指针 6789: ’()*’#&"/6$$ [ ’()*’,45*/011,+*’)2,] : < < 定义发送 /011,+ 6789: !’()*’#&">#9": < < 发送指针 …… < < 单片机内部初始化 ;?%" @76*%&%A ( ;?%") {B B C-0-+ D E F EE ; 55+G D E F $$; (H+IG D E F EE ; …… ’,) () ; < < 使能全局中断 } < < 串行同步传输初始化 ;?%" JK%*%&%A ( ;?%") {B < < 使能 ’() 接收中断 ’(-+ D E F 7E ; ’(5+ D E F $$; ’()*+#7;>#9" D ’()*+#7;/6$$; < < 接收指针指向接收 /011,+ 首 ’()*’#&">#9" D ’()*’#&"/6$$; < < 发送指针指向发送 /011,+ 首 } …… ;?%" @9%& ( ;?%") { B …… B @76*%&%A () ; B JK%*%&%A () ; B …… }

字符串形式保存在数据库字段中。
G&J%’A:%&NB J9;#"9A9; < < 保存采样数据的变量设置为字符串形式 PQA# +#7#%;#/QA# [ RSEE ] ; < < 采样数据接收数组 $?: ( %&A % D E ; % T 8 < U; %M M) < < 8 为接收字节数 { J9;#"9A9 D J9;#"9A9 M )&AI?’A: ( +#7#%;#/QA# [ U ! % M O ]M +#7#%;#/QA# [U !% M V] , ” ; < < 一个信息由 V 字节组成 !VSU )M ” …… } …… G5HW6#:QO X Y )&J#:A () ; G5HW6#:QO X Y 1%#Z"/Q49@# ( “ 字段名” )X Y GJ’A:%&N D J9;#"9A9; ……

RB 结语
本文探讨了在 [%&"?\J 环境下的常用串行通讯开 发方式。在实例中以 GI]E’^SOS 单片机作为下位机 核心, 采用自带的全双工 0G+I 收发器构成的通讯终 端, 数据由 GI]E’^SOS 单片机串口经电平转换后送到 上位机 ( (- 机) 的串口, 形成一种串行数据传输的收 发 方式。 利 用 [%&"?\J 下 的 _0) 式 的 快 速 开 发 工 具 - M M /6%Z"#: 编 写 的 简 单 高 效 G7A%;# ‘ 通 讯 控 件 I-HCC 实现了 (- 机与 G.+ 单片机的串行通讯。通 讯过程中数据接收采用了轮询机制这种实时、 简洁的 处理模式。同时, 文中还提出了将一次采样的历史数 据以字符串的形式保存在数据库中, 使大量采样数据 能像一般字段值一样应用。笔者将以上这些串行通讯 开发思想运用在为南昌铁路局电务处开发转辙机实验 台的项目中, 取得了良好的效果。

3L 3B 数据的存储 如果测试中采样次数不多, 在 - < - M M 环境中采 样数据可以 - 磁盘文件的形式保存, 即用 $K6A7 () 函数 循环将数据写入文件以文本方式保存, 读取时用命令 $?K#& () 函数来打开文件并用 $N#A7 () 函数来读取数 据。由于 - 磁盘文件的读取以文件指针的形式来选 取文件, 当保存有采样数据的文件量太大时 ( 如磁盘 中保存有 OEEE 次采样的数据, 那么将用到 OEEE 个文 件来保存这些数据) , 读取将变得非常缓慢, 而且无法 与数据库连接, 这时用 - 磁盘文件的方式保存采样数 据就不可取了。本文采取了一种字符串的形式, 数据 库设计时将保存采样数据的字段类型设置为 “ 备注” 型数据, 保存数据的变量设置为字符串, 这样可以将大 量采样数据像普通的字段值一样的保存、 读取, 并可以 作图显示。要将采样数据从数据库的字段中读出并绘 制曲线也可以采用同样的方式循环读取, 并转换成数 字类型数据用以作图显示。以下代码为将采样数据以 OOU
万方数据  

参B 考B 文B 献 OB 范逸之, 陈立元L .%J69Z /9J%7 与 +’=V3V 串行通信控制 [ C] L 北京: 清华大学出版社, VEEV VB 中华人民共和国铁道部L 信号维护规则 [ C] L 北京: 中国铁 道出版社, VEEE 3B 范逸之, 江文贤, 陈立元L - M M /6%Z"#: 与 +’=V3V 串行通信 控制 [ C] L 北京: 清华大学出版社, VEEV

作者简介: 江海洋, 武汉理工大学机电工程学院 VEEV 级硕士研究 生, 研究方向: 机电一体化, -G5 < -G(( < -GC < ,+(。 黄小文, 留英归国学者, 获英国格拉斯哥大学博士学位, 武汉理工大学教授。 万兵, 武汉讯康电子技术有限公司高级工程师。研究方 向: 嵌入式系统开发, 单片机技术。 O B 武 汉 理 工 大 学 马 房 山 校 区 西 院 a^ ! 信 箱 作者通 讯 地 址: ( R3EEaE ) VB 武汉讯康电子技术有限公司 ( 武汉 R3EEOV ) 收稿日期: VEEROOE3

现代制造工程 !""# (#)

用C++ Builder6.0实现AVR单片机与PC机的串行通讯
作者: 作者单位: 刊名: 英文刊名: 年,卷(期): 引用次数: 江海洋, 黄小文, 万兵, Jiang Haiyang, Huang Xiaowen, WAN Bing 江海洋,黄小文,Jiang Haiyang,Huang Xiaowen(武汉理工大学马房山校区西院78#信箱,430070) , 万兵,WAN Bing(武汉讯康电子技术有限公司,武汉,430012) 现代制造工程 MODERN MANUFACTURING ENGINEERING 2005,(5) 1次

参考文献(3条) 1.范逸之.陈立元 Visual Basic与RS-232串行通信控制 2002 2.中华人民共和国铁道部 信号维护规则 2000 3.范逸之.江文贤.陈立元 C++ Builder与RS-232串行通信控制 2002

相似文献(0条)

引证文献(1条) 1.林益平 基于LCD的晶体管特性曲线图示仪[期刊论文]-电子测量技术 2008(02)

本文链接:http://d.g.wanfangdata.com.cn/Periodical_jxgys200505046.aspx 下载时间:2010年1月3日


相关文章:
基于AVR单片机--Atmega16的串口通信使用
标签: 信息通信| 串口通信| 单片机|基于AVR单片机--Atmega16的串口通信使用_信息与通信_工程科技_专业资料。改程序可实现AVR单片机与PC机之间进行通信 ...
AVR单片机TWI读写过程实例_图文
TWI: 是一种全双工的串行通讯协议,与 I2C 工作方式相同,由一条数据传输线 SDL,一 条时钟线 SCL 组成,对应单片机的外部引脚 PC1,PC0。 由于只有两条总线,...
AVR单片机中断寄存器及中断函数格式_图文
简介:中断的概念, ATmega16 中断向量表, 中断寄存器 SREG, avr MCU 控制和...内部中断源由单片机内部的功能单元如定时 器, 串行通讯产生的中断。 按是否可...
avr单片机中使用MODBUS协议的方法
Avr 单片机使用 modbus 协议的方法 有幸做了个项目,其中使用到了单片机和上位机通讯的程序,上位机用组态实现功能, 探索了些方法,写出来和大家分享一下,这些知识...
AVR单片机JTAG接口的使用方法
AVR c 语言优秀编程 风格|LM73 测温度芯片的完整...“串行通讯电缆”一头 与仿真器 de“串行通讯口”...PC 目标板间 de 通信正常 AVR 单片机 JTAG 接口...
AVR单片机经典使用经验
AVR单片机经典使用经验_电子/电路_工程科技_专业资料...开发环境与工具:PC+下载线+实际的系统板 PC 上的...现在的高级语言编译器 (如 C 编译器) 已可以产生...
AVR单片机2015年试题
AVR单片机2015年试题_信息与通信_工程科技_专业资料...利用 C 语言编写程序,编译器为 ICCAVR,实现: 当 ...线制串行扩展总线,这两根线是( )()(A) SCM ...
avr单片机USART串口通讯初始化配置说明
单片机通用同步和异步串行接收器和转发器 (USART) 是一个高度灵活的串行通讯设备...用c+builder60实现avr单... 4页 免费 PC机与AVR单片机之间串行... 3页 免...
AVR单片机与上位机的通信系统毕业设计报告
AVR单片机与上位机的通信系统毕业设计报告_工学_...串行通信接口把数据传输 到电脑上显示和接受电脑...RS-232-C)是目前最常 用的一种串口通讯接口...
基于AVR单片机的485通信系统设计
我们利用的是单片机的串行通讯端口, 以完成两个终端...时间这是使用 AVR 内 部的 RC 看门狗定时器实现的...C 语言编译器、评估板和仿真器以及程序调试器/ ...
更多相关标签: