串行通讯已经成为核算机与其他设备进行数据交换最广泛的通讯手法。首要介绍了运用MSP430 单片机的串口通讯模块和VB6.0 供给的串行通讯控件MSComm 完结PC 机与MSP430 单片机的串行通讯,并侧重论述了在VB6.0 环境下完结的首要进程。
1 导言
跟着核算机技能的不断开展,核算机运用在其开展进程中逐步形成两大分支,一是通用核算机,PC 机为代表,着眼于高速数值运算和数据处理,但实时测控才能较弱。二是嵌入式微机,以单片机为代表,侧重开展测控技能,但其数值运算和数据处理才能较弱。现在,在工业操控以及数据收集和数据处理的大型体系中,因为PC 机软件资源丰厚,人机交互便利等长处。以PC 机作为上位机,以单片机组成的操控单元作为下位机,较好地完结测控及显现,又能较快地完结数据收集和处理。逐步成为现代工业操控范畴的一个优化计划。
故提出了根据VB6.0 的PC 机与MSP430 单片机串行通讯的完结办法。以RS485接口为根底,以PC 机为上位机,以MSP430 系列单片机为下位机。经过VB6.0 完结了对各个下位机操控参数的实时监控和办理,处理了长期以来单片机与PC机互连中编程难度大,运转功率低的瓶颈。
2 MSComm 控件与MSP430 单片机
2.1 MSComm 控件
核算机编程言语中,Visual Basic 6.0 是Microsoft 公司推出的面向对象的可视化开发编程东西,具有丰厚的数据类型和结构化程序结构,开发功率高,界面制造漂亮便利等长处,且运用日益广泛,故Visual Basic 6.0 言语做到了真实的面向对象编程。其间,MSComm 控件全称为Microsoft CommunicationControl, 是微软公司供给的ActiveX 控件, 意图是为了简化Windows 下串行通讯编程。经过对此控件的特色和事情进行编程, 然后完结数据的发送和接纳。
MSComm 控件经过串行端口传输和接纳数据, 为运用程序供给串行通讯功用。MSComm 控件供给下列两种处理通讯的办法: 事情驱动办法和查询办法。
(1) 事情驱动办法
事情驱动通讯是处理串行端口交互作用的一种十分有用的办法。在许多情况下, 在事情发生时需求得到告诉, 例如, 在串口接纳缓冲区中有字符, Carrier Detect 或Request To Send 线上的一个字符抵达或一个改变发生时。在这种情况下可以运用MSComm 控件的OnComm 事情捕获并处理这些通讯事情。
OnComm 事情还可以查看和处理通讯过错, 以及一切通讯事情和通讯过错的列表。
(2) 查询办法
查询办法实质上仍是事情驱动, 但在有些情况下, 这种办法显得更为快捷。在程序的每个要害功用之后, 可以经过查看CommEvent 特色的值来查询事情和过错。假如运用程序较小,而且是自坚持的, 这种办法可能是更可取的。经过比较故选用的是事情驱动办法。
2.2 MSComm 控件特色
CommPort 特色:用于设置或回来串标语衔接的串行端标语,Windows 将会运用该串口和外界通讯。默认值为1,即对COM1 进行操作,最大值为16.
Settings 特色:以字符串的办法设置或回来串口通讯参数。包含串口通讯的比特率,奇偶校验,数据位长度、中止位等。其默认值是“9600,N,8,1”,表明串口比特率是9600bit/s,不作奇偶校验,8 位数据位,1 个中止位。
PortOpen 特色:设置或回来串口状况。值为True 时翻开串口,值为False 时封闭串口。
InPut 特色:从接纳缓冲区中读取数据并清空该缓冲区,该特色规划时无效,运转时只读。寄存器的特性是先进先出。
OutPut 特色:向发送缓冲区发送数据,该特色规划时无效,运转时只读。
InBufferSize 特色:设置或回来接纳缓冲区的巨细,缺省值为1024 字节。
Inputlen 特色:设置或回来一次从接纳缓冲区中读取字节数。
Input Mode 特色:设置或回来接纳数据的类型。若值为0时则表明以文本办法读取;若值为1 时则表明以二进制办法读取。一般PLC 和PC 构成的通讯体系都选用二进制接纳办法。
InBuffer Count 特色:设置或回来接纳缓冲区中等候核算机接纳的字符数。当将其值设为0 时,则输入寄存器将被清空。
OutBufferSize 特色:设置或回来发送缓冲区的巨细,缺省值为512 字节。
OutBufferCount 特色:设置或回来发送缓冲区中等候核算机发送的字符数。当将其值设为0 时,则输出寄存器将被清空。
Rthreshold 特色:该特色为一阀值。当接纳缓冲区中字符数到达该值时, MSComm 控件设置Commevent 特色为ComEvReceive,并发生OnComm 事情。用户可在OnComm 事情处理程序中进行相应处理。若Rthreshold 特色设置为0,则不发生OnComm 事情。
SThreshold 特色:在发生OnComm 事情之前传输缓冲区中的最小字符数。MSComm1.SThreshold = 0 数据传输事情不发生OnComm 事情;若设MSComm1.RThreshold = 1 则表明传输\ 缓冲区全空时, MSComm 控件发生OnComm 事情。
Handshaking 特色:设置或回来硬件握手协议, 0 表明没有握手协议, 不考虑流量操控;1 表明在数据流中嵌入操控符来进行流量操控; 2 表明由信号线RTS 主动进行流量操控; 3 表明1、2 两者皆可。
通讯初始化程序如下:
If MSComm1.PortOpen <> True Then
MSComm1.PortOpen=True
End If
MSComm1.CommPort = 1
MSComm1.Settings=“ 9600,N,8,1”
MSComm1.InputLen=0
MSComm1.InBufferCount=0
MSComm1.InputMode=comInputMode Binary
MSComm1. RThreshold =1
MSComm1.Handshaking=comNone
2.3 MSP430 单片机
就现在来看,高性能16 位单片机首要有凌阳系列、飞思卡尔系列、美国德州仪器(TI) 公司的MSP430 系列等类型的单片机。本文引荐选用美国德州仪器(TI) 公司的MSP430 系列单片机,MSP430 系列单片机是美国德州仪器(TI) 1966 年开端推向市场的一种16 位超低功耗的混合信号处理器(Mixed signal Processor) 称之为混合信号处理器,首要是因为其针对实际运用需求,把许多模仿电路、数字电路和微处理器集成在一个芯片上,以供给“单片”处理计划。跟着Flash技能的迅速开展,在2001 年7 月到2002 年又推出了带LCD操控器的Flash 单片机F41X、F43X、F44X 系列。本体系所选的MSP43OF449 是一个16 位的、具有精简指令集的、超低功耗的混合型单片机,自面世以来,因为它具有极低的功耗,丰厚的片表里设和便利灵敏的开发手法,得到广泛的运用。
(1) 低电压超低功耗作业电压为1.8~3.6V,1MHz 的时钟条件下运转,耗电电流因不同的作业形式而不同。活动形式为280uA,待机形式为1.1uA,掉电形式为0.1uA.具有16 个中止源,而且可以恣意嵌套,运用灵敏便利。用中止请求将CPU 唤醒只需6us,可编制出实时性特别高的源代码;5 种节电形式;可将CPU 置于省电形式,用中止形式唤醒程序。
(2) 强壮的处理才能16 位精简指令结构,15Ons 指令周期,具有丰厚的寻址办法,简练的27 条内核指令以及很多的模仿指令;很多的寄存器以及片内数据存储器都可参与多种运算;还有高效的查表处理办法。
(3) 丰厚的片表里设将很多的外围模块集成到片内,称之为片表里设。不同类型器材的片表里设不同,但其相同模块的作业原理根本相同,首要的片表里设有:时钟模块、I/O 端口、守时器、通讯模块、液晶驱动模块、模数转化器、硬件乘法器、模仿比较器和Flash 存储器等。MSP430 单片机的时钟由高速晶体、低速晶体、数字操控振荡器DCO、锁频环FLL 以及锁频环增强版别FLL+等构成。
2.4 串口通讯模块
通用串行同步异步通讯接口USART (Unversal SynchronousAsynchronous Receive/Transmit ) 是一个串行通道,它答应7或8 位串行位流经预先编程的速率或外部时钟确认的速率移入、移出MSP430.
USART 可进行装备,以便一起支撑同步( SPI) 与异步(UART) 操作,而且可从几个内部及外部时钟源(与CPU 时钟无关) 中进行挑选,所用的是异步(UART) 操作。在UART 形式下,速率也可到达2Mbps.在UART 形式下,完结牢靠通讯至少要求每位3 或4 个时钟。例如, 8MHz 时钟除以4 可以支撑高达2Mbps 的速率。波特率发生器是用波特率挑选寄存器和调整操控寄存器来发生串行数据位守时。
波特率的核算:波特率=BRCLK/(UBR+ ( M7+M6+M5+M4+M3+M2+M1+M0)) ;其间BRCLK 为晶振频率,UBR 为分频因子的整数,即晶振频率除以波特率的整数部分,而M7,M6,M5,M4,M3,M2,M1,M0 别离为调整位,是别离写在UMCTL 中的,假如置位,则对应的时序时刻只能波特率分频器的输入时钟扩展一个时钟周期,每承受或发送一位,在调整操控寄存器的下一位被用来决议当时位的守时时刻。
3 MSP430 单片机与PC 机串口通讯
规划MSP430 系列单片机的通讯软件,实际上是对MSP430 系列单片机的串行口的规划,这儿选用Visual Basic 6.0 言语来规划,在PC 机上运转的界面如图1 所示。
在发送数据文本框中输入一个“0~255”之间的整数,并单击发送数据按钮,单片机将接纳到该数据并显现这个数据, 然后作除4 处理,成果再经串口回来到PC 机端。例如当发送数据160 时,单片机电路中数码管上显现160,一起单片机对160 作除4 处理,得到40 返送回PC 机上显现。
因为PC 机端的RS232 电平与MSP430 单片机端的TTL 电平不匹配, 故有必要进行电平转化,这儿选用美信MAX232 芯片完结。电路其他部分为单片机惯例电路。以下是MSP430 单片机与PC 机串口通讯VB6.0 程序代码如下:
(1) PC 机端VB 程序代码初始化部分代码:
发送功用代码:
Private Sub Form_load ()
MSComm1.CommPort = 1 ‘ 设置1 号串口
MSComm1.Settings =“9600,N,8,1”‘ 设置参数
MSComm1.PortOpen = True ‘ 翻开串口
End Sub
发送功用代码:
Private Sub Command1_Click ()
Dim Number As Integer ‘ 发送的数据变量
Dim OutByte (0) As Byte ‘ 发送字节数组
Number = Val (Text1.text) ‘ 类型转化
OutByte (0) =CByte (Number) ‘ 转化为二进制
MSComm1.OutBufferCount=0′ 清空发送缓冲
MSComm1.Output = OutByte ‘ 发送数据
End Sub
接纳功用代码:
Private Sub MSComm1_OnComm ()
Dim InData As Variant ‘ 变体变量
Dim Arr (0) As Byte ‘ 接纳字节数组
Select Case MSComm1.CommEvent
Case comEvReceive ‘ 触发接纳事情
InData = MSComm1.Input ‘ 接纳数据
Arr (0) = AscB (InData) ‘ 类型转化
Text2.text = Arr (0) ‘ 显现数据
MSComm1.InBufferCount = 0 ‘ 清空接纳缓
End Select
End Sub
(2) MSP430 单片机的部分程序
单片机的编程包含: 设置串行口的作业办法; 波特率的设置; 发送数据并接纳数据。以下为串行口的初始化程序:
CKCSH MOV1B # SWRST, & U 1CT L; 先在SWRST= 1 时,
设置串口
BIS. B # CHAR, &U 1CTL
MOV. B # SSEL1+ SSEL0, & U 1TCTL;
MOV. B # 045H, & U1BR0; 波特率为9600
MOV. B # 00H, & U1BR1;
MOV. B # 055H, & U1MCT L;
BIS. B # U TXE1+ U RXE1, & ME2;
BIC. B # SWRST, & U1CTL;
4 结语
串口通讯是一项广泛运用到各个范畴的通讯技能, 尤其是单片机与PC 机间的通讯。在实践中VB6.0 以其好学易用性得到广泛的运用,MSP430 系列单片机以低功耗等特色被运用在测控体系中,两者结合可以快速构筑以单片机收集数据和核算机快速处理的体系。