单片机LED三维动态信息显示系统 第9页

单片机LED三维动态信息显示系统 第9页
24
以上规定说明了RS-232标准对逻辑电平的定义。对于数据(信息码):逻辑“1”(信
号)的电平低于-3V,逻辑“0”(信号)的电平高于+3V;对于控制信号:接通状态(ON)
即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输
电平的绝对值大于3V时,电路可以有效地检查出来,介于-3V~+3V之间的电压无意义,低
于-15V或高于+15V的电压也认为无意义。因此,实际工作时,应保证电平在±(5~15)V之
间[28]。
c.连接器的机械特性
连接器:由于RS-232并未定义连接器的物理特性。因此,出现了DB-25、DB-15和DB-9
各种类型的连接器,其引脚的定义也各不相同。下面主要介绍常用的DB-9型的连接器。
由于286以上的微机串行口不支持20mA电流环界面,因此使用DB-9连接器,作为提
供多功能I/O卡或主板上COM1和COM2两个串行接口的连接器。它只提供异步通信的9个
信号。DB-9型连接器的引脚分配与DB-25型引脚信号完全不同。因此,若与配接DB-25型
连接器的DCE设备连接,必须使用专门的电缆线
[28]

电缆长度:在通信速率低于20kb/s时,RS-232所直接连接的最大物理距离为15m(50
英尺)。
最大直接传输距离说明:RS-232标准规定,若不使用MODEM,在码元畸变小于4%
的情况下,DTE和DCE之间最大传输距离为15m(50英尺)。可见这个最大的距离是在码
元畸变小于4%的前提下给出的。为了保证码元畸变小于4%的要求,接口标准在电气特性
中规定,驱动器的负载电容应小于2500pF
[29]
。DB-9的引脚定义如表4-1所示。
Table4-1 Pin definition of DB-9
表4-1 DB-9的引脚定义
针脚功能
1载波检测
2接收数据
3发送资料
4资料终端准备就绪
5信号地线
6数据准备就绪
7发送请求
8发送清除
9振铃指示
4.1.2 Mscomm控件介绍
一般情况下,PC机中采用Visual Basic(VB)或者是Visual C++编写通信程序和接口。4 PC机和单片机之间的串行通信
25
在上述的编程工具中,VB则以其高效、简单易学及功能强大等特点为广大程序设计人员
特别是初学者所青睐。VB支持面向对象的程序的设计,具有结构化的事件驱动编程模式,
而且可以十分简单地做出良好的人机界面[30]。下面就简单介绍其通信控件MSComm。
MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。
MSComm控件在串口编程时使用非常方便,程序员不必去花时间去了解较为复杂的API
函数,而且在VC、VB、Delphi等语言中均可使用。Microsoft Communications Control(以
下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,
它为应用程序提供了通过串行接口收发数据的简便方法[31]。
a.MSComm控件两种处理通讯的方式
MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。
(1)事件驱动方式
事件驱动方式是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事
件发生时需要得到通知,例如:在串口接收缓冲区中有字符,或者Carrier Detect(CD)
或Request To Send(RTS)在线一个字符到达或一个变化发生时。在这些情况下,可以
利用MSComm控件的OnComm事件捕获并处理这些通讯事件。OnComm事件还可以
检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅CommEvent属性。在编
程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程
序响应及时,可靠性高。每个MSComm控件对应着一个串行端口。如果应用程序需要访
问多个串行端口,必须使用多个MSComm控件。
(2)查询方式
查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的
每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。如果应用
程序较小,并且是自保持的,这种方法可能是更可取的。例如:如果写一个简单的电话拨
号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调
器的“确定”响应[30]。
b.MSComm控件的常用属性
MSComm控件有很多重要的属性,但首先必须掌握以下几个属性:
CommPort设置或返回通信端口号
Settings设置或返回波特率、奇偶校验、数据位和停止位
PortOpen设置或返回通信端口的状态。也可以打开和关闭端口
Input返回和删除接收缓冲区中的字符
Output将字符串写入发送缓冲区
OnComm当CommEvent属性值改变时产生该事件,表明产生了通信事件
或通信错误
InputLen设置Input属性从接收缓冲区中读取的字符数西安理工大学硕士学位论文
26
InputMode设置和返回Input属性所获取数据的类型
Rthreshold设定为某一个值,每当接收缓冲区收到该设定个数字符时,都会
使Mscomm控件产生OnComm事件
Sthreshold设定为某一个值,每当发送缓冲区的字符个数少于这个值时,
Mscomm控件产生OnComm事件
CommEvent返回最近的通信事件或错误
InBufferSize设置或返回接收缓冲区大小的字节数
[31]
c.MSComm控件的通信步骤
通常以这样的步骤来使用MSComm控件,从而完成上下位机通信的控制。
(1)加入通信控件,也就是MSComm控件。
(2)设计通信端口号码,即CommPort属性。
(3)设置通信协议。
(4)设置传输速度等参数,即Settings属性。
(5)设计其它参数。
(6)打开通信埠,即PortOpen属性设为True。
(7)送出或读入字符串,使用Input和Output属性。
(8)关闭通信埠,即PortOpen属性设为Flase。
4.1.3具体的软件实现
VB通信控件设计程序如下:
/*串口初始化*/
Global comm_time As Integer
Global data(1000)As Integer
Global Receive(1000)As Integer
Private Sub Form_Load()
Comml.CommPort=1`设置串口1
Comml.Settings=“9600,N,8,1”`波特率:9600,奇校验,8位数据,1位停止位
Comml.InputLen=0`读取接收缓冲区的所有字符
Comml.InBufferSize=256`设置接收缓冲区为256字节
Comml.OutBufferSize=256`设置发送缓冲区为256字节
Comml.PortOpen=True`打开串口1
Comml.SThreshold=1`发送缓冲区空触发发送事件
Comml.RThreshold=1`每一个字符到接收缓冲区都触发接收事件
End Sub4 PC机和单片机之间的串行通信
/*发送n个数据*/
Public Sub send-data()
For i=0 To n
Comml.Output=Chr(data(i))
Next i
End Sub
/*接收数据并触发OnComm()事件*/
Public Sub Comml_OnComm()
Select Case Comml.CommEvent`在CommEvent中接收数据
Case comEvReceive
Receive(comm_time)=Asc(Comml.Input)`将接收数据放在Receive(comm_time)数组中
Comm_time=comm_time+1
End Select
End Sub
4.2 MAX232的简介
RS-232是用正负电压来表示逻辑状
态,与TTL以高低电平表示逻辑状态的规
定不同。因此,为了能够使计算机接口与
TTL器件终端连接,必须在RS-232与TTL
电路之间进行电平和逻辑关系的变换。和
其它的单片机器件一样,作为单片机的标
准外围电路,实现这种变换的方法可用分
立组件,也可用集成电路芯片[32]。在这里,
主要采用专用芯片进行电平转换的方法。
目前较为广泛的是使用集成电路芯片,如
MC1488、SN75150芯片可完成TTL电平到
EIA电平的转换,而MC1489、SN75154可
实现EIA电平到TTL电平的转换。但
MAX232芯片可完成TTL电平和EIA电平
的双向转换,在这里就以MAX232为例进
行讨论[33]。其内部原理图如图4-1所示。
根据图4-1对MAX232的引脚简要介绍如下:
(1)外接电容:有5个外接电容,进行电压的匹配和电源的去耦。
图4-1 MAX232的内部原理图
Fig4-1 Internal principle figure of MAX232

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有