主题:求教: VFP 控制 COM 外围电路的方案
琅拿度
[专家分:2820] 发布于 2009-05-05 15:29:00
或许汇编更合适,但如果外围电路成本不差钱的情况下,用VFP...探讨一下。
我想用VFP控制外围电路的16个开关,可行吗?(如果要求每个开关都有一次动作,总时间能控制在4秒内吗)
最后更新于:2009-05-05 15:32:00
回复列表 (共19个回复)
沙发
琅拿度 [专家分:2820] 发布于 2009-05-05 19:05:00
RS-232穿串行通信与单片机接口简介
在这一课里,我们一起来学习RS-232C串行通信相关标准及单片机和电脑的RS-232C串行通信接口技术简介,为学习和开发单片机串口通信应用系统打好基础,希望大家在看完这篇文章后对串行通信有初步的认识。
【通信基本概念】
什么是通信?简单地说,不同的系统经由线路相互交换数据,就是通信。通信的主要目的是将数据从一端传送到另一端,达到数据交换的目的。例如,从人与人之间的对话、计算机与设备之间的数据交换到计算机与计算机间的数据传送,乃至于广播或卫星都是通信的一种,一个完整的通信系统包括发送端、接收端、转换数据的接口及传送数据的实际信道。
【通信的种类】
按照通信的形式可以分为两种,其中一种为并行传输的通信,即并行通信(Parallel Communication),另一种则为串行通信(Serisl Communication)。这两种通信方式的区别是,并行通信一次的传输数据量为8位(1个字节);而串行通信则一次只能传输1位,传输1字节数据(8位)数据就需要8次才能传出去,因此,它们两者之间的数据传输速度就相差8倍。看到这里,估计有些朋友会问,既然并行通信的速度是串行通信的8倍,是不是串行通信就不好了?!其实不能这么认为,两种通信方式各有特点,串行通信之所以存活了这么长时间,自然有它的长处。
串行通信一次只传输1位,相对来说,要处理的数据电压只有一个,因此比较不容易漏失数据,通信时候再加上一些校验防范措施后,串行通信的出错就更不容易了,串行通信端口(Serisl Communication Port)在系统控制的范畴中一直占有极其重要的角色,不仅没有因为时代的进步而被淘汰,反而失在规格上愈来愈向其极限挑战,下面我们重点来介绍RS-232C串行通信。
并行通信虽然可以在一次的数据传输中传送8位,但是数据电压在传送的过程中,容易因为线路及干扰因素使得电压准电位发生变化(主要为电压衰减和信号间相互干扰问题),因而使得传输数据发生错误,通信距离越长,问题越明显,因此并行通信主要用于传输距离较短的场合,如电脑主板的并口LPT1,主要和并行打印机通信。
【RS-232串行通信】
一、RS-232C标准介绍
RS-232C是由美国电子工业协会(EIA)正式公布的,在异步串行通信中应用最广泛的标准总线。RS-232C 标准(协议)的全称是EIA-RS-232C 标准,其中EIA(Electronic Industry Association)代表美国电子工业协会,其中RS是Recommended Standard的缩写,代表推赠标准,232是标识符,C代表RS-232的最新一次修改(1969年),在这之前,有过RS-232A、RS-232B标准,它规定连接电缆和机械、电气特性、信号功能及传送过程。现在,计算机上的串行通信端口(RS-232)是标准配置端口,已经得到广泛应用,计算机上一般都有1~2个标准RS-232C串口,即通道COM1和COM2。下图为计算机主板上的两个RS-232通信端口图片及端口属性,我们一般可以从计算机后面查看到本机的通信端口。
计算机的RS-232串行通信接口图片
如左图所示,我们可以从操作系统的设备管理器中查看电脑的通信端口属性,进入计算机的:控制面板 -> 系统 -> 硬件 -> 设备管理器 -> 端口,就可以看到自己电脑通信端口,在图中显示了这台计算机有1个ECP打印机并行通信端口LPT1和2个RS-232串行通信端口COM1和COM2。只要显示的端口名称前面没有黄色的惊叹号的话,就表示这个端口是可以使用的。
二、RS-232C电气特性
EIA-RS-232C对电器特性、逻辑电平和各种信号线功能都作了明确规定。
在TXD和RXD引脚上电平定义:逻辑1(MARK) = -3V~-15V
逻辑0(SPACE) = +3~+15V
在RTS、CTS、DSR、DTR 和DCD等控制线上电平定义:
信号有效(接通,ON状态,正电压)=+3V~+15V
信号无效(断开,OFF状态,负电压)=-3V~-15V
以上规定说明了RS-232C 标准对逻辑电平的定义。对于数据(信息码):逻辑“1”的传输的电平为-3V~-15V,逻辑“0”传输的电平为+3V~+15V;对于控制信号;接通状态(ON)即信号有效的电平为+3V~+15V,断开状态(OFF)即信号无效的电平为-3V~-15V,也就是当传输电平的绝对值大于3V 时,电路可以有效地检查出来;而介于-3~+3V之间的电压即处于模糊区电位,此部分电压将使得计算机无法准确判断传输信号的意义,可能会得到0,也可能会得到1,如此得到的结果是不可信的,在通信时候体现的是会出现大量误码,造成通信失败。因此,实际工作时,应保证传输的电平在±(3~15)V 之间。
三、RS-232C机械连接器及引脚定义
目前,大部分计算机的RS-232C通信接口都使用了DB9连接器,如上面图中所示,主板的接口连接器有9根针输出(RS-232公头),也有些比较旧的计算机使用DB25连接器输出,下面我们来介绍DB9和DB25输出接口的引脚定义。
RS-232C串口引脚定义表
9针RS-232串口(DB9) . 25针RS-232串口(DB25)
引脚 简写 功能说明 引脚 简写 功能说明
1 CD 载波侦测(Carrier Detect) 8 CD 载波侦测(Carrier Detect)
2 RXD 接收数据(Receive) 3 RXD 接收数据(Receive)
3 TXD 发送数据(Transmit) 2 TXD 发送数据(Transmit)
4 DTR 数据终端准备(Data Terminal Ready) 20 DTR 数据终端准备(Data Terminal Ready)
5 GND 地线(Ground) 7 GND 地线(Ground)
6 DSR 数据准备好(Data Set Ready) 6 DSR 数据准备好(Data Set Ready)
7 RTS 请求发送(Request To Send) 4 RTS 请求发送(Request To Send)
8 CTS 清除发送(Clear To Send) 5 CTS 清除发送(Clear To Send)
9 RI 振铃指示(Ring Indicator) 22 RI 振铃指示(Ring Indicator)
四、RS-232C的通信距离和速度
RS-232规定最大的负载电容为2500pF,这个电容限制了传输距离和传输速率,由于RS-232C的发送器和接收器之间具有公共信号地(GND),属于非平衡电压型传输电路,不使用差分信号传输,因此不具备抗共模干扰的能力,共模噪声会耦合到信号中,在不使用调制解调器(MODEM)时,RS-232能够可靠进行数据传输的最大通信距离为15米,对于RS232远程通信,必须通过调制解调器进行远程通信连接。
现在个人计算机所提供的串行端口的传输速度一般都可以达到115200bps甚至更高,标准串口能够提供的传输速度主要有以下波特率:1200bps、2400bps、4800bps、9600bps、19200bps、38400bps、57600bps、115200bps等,在仪器仪表或工业控制场合,9600bps是最常见的传输速度,在传输距离较近时,使用最高传输速度也是可以的。传输距离与传输速度的关系成反比,适当地降低传输速度,可以延长RS-232的传输距离,提高通信的稳定性。
五、RS-232电平转换芯片及电路
RS-232C 规定的逻辑电平与一般微处理器、单片机的逻辑电平是不同的,例如:RS-232的逻辑“1”是以-3~-15V来表示的,而单片机的逻辑“1”是以+5V来表示的,两者完全不同。因此,单片机系统要和电脑的RS-232接口进行通信,就必须把单片机的信号电平(TTL电平)转换成计算机的RS-232C电平,或者把计算机的RS-232C电平转换成单片机的TTL电平,通信时候必须对两种电平进行转换。实现这种转换的方法可以使用分立元件,也可以使用专用RS-232电平转换芯片。目前较为广泛地使用专用电平转换芯片,如MC1488、MC1489、MAX232等电平转换芯片来实现EIA到TTL电平的转换。下面来介绍MAXIM公司的单电源电平转换芯片MAX232及接口电路。
如下面图中所示,MAX232是单电源双RS-232发送/接收芯片,采用单一 +5V电源供电,外接只需4个电容,便可以构成标准的RS-232通信接口,硬件接口简单,所以被广泛采用, 其主要特性如下:
主要特点:
1、符合所有的RS-232C技术规范
2、只要单一 +5V电源供电
3、片载电荷泵,具有升压、电压极性反转能力,能够产生 +10V 和 -10V电压V+、V-
4、低功耗,典型供电电流5mA
5、内部集成2个RS-232C驱动器
6、内部集成2个RS-232C接收器
MAX232CPE 引脚结构
MAX232芯片实物图片
MAX232芯片引脚排列
单片机和计算机RS-232接口电路如下图所示,图中的C1、C2、C3、C4是电荷泵升压及电压反转部分电路,产生V+、V-电源供EIA电平转换使用,C5是VCC对地去耦电容,其值为0.1UF,电容C1~C5安装时必须尽量靠近MAX232芯片引脚,以提高抗干扰能力。
采用MAX232CPE 芯片的PC机与MCS-51单片机串行通信接口电路
下图是一个采用分立元件构成的简易RS-232串行通信接口电路,使用三极管进行电平转换,能够由于简单的通信,对于通信稳定性要求较高的应用,不建议使用分立元件,分立元件电路的稳定性,误码率较高,不能完全满足RS-232C的全部技术指标。优点是成本低廉,网上也可以看到部分网站产品使用分立元件构成。
采用分立元件的简易RS-232C通信接口电路
通过对前面的学习,我们对RS-232C串行通信标准已经有了初步的了解,同时也掌握了单电源双RS-232发送/接收芯片MAX232CPE的应用。有了这些基础,我们开发单片机和电脑RS232串口通信系统的接口设计也就简单了。只要给我们单片机实验板增加RS232电平转换电路,即可实现与计算机的串行通信,下面是采用MAX232CPE专用串口电平转换芯片的S51增强型单片机实验板和电脑通信的图片。
板凳
cbl518 [专家分:57140] 发布于 2009-05-05 20:38:00
这个课题好!
也是我最近想攻关的课题!
想不到小老弟又研究该课题了,真是佩服!
不知这些硬件,是否容易购买!
望老弟多多指教!
3 楼
cbl518 [专家分:57140] 发布于 2009-05-05 20:40:00
最近太忙!
我的qq号也没了!
等我找到,联系你
希望和得到老弟的帮助!
4 楼
zfh630528 [专家分:130] 发布于 2009-05-05 21:59:00
本人是单片机、Vfp爱好者。
Vfp控制单片机是完全可行的。上位机(计算机)用ole(Mscomm.ocx)控件,通过rs232与单片机串行通信,本人曾经获得成功。
5 楼
foxdb [专家分:1830] 发布于 2009-05-05 22:02:00
老狐狸:
你想攻关的课题也太落后点了吧,RS-232串行通信?现在新出的电脑串口和并口越来越少,即将淘汰。
前年我还为我的新买的本本没串口和并口去为客户调试发愁呢,去年客户升级买了DELL机竟然没有串并口,只有USB口。我面对复杂的USB底层协议我晕死了,后来好彩国内出了USB接口可编程控制模块才彻底解决了我的问题!根据厂家提供的DLL函数及详细说明,几条VFP命令搞掂。我还忽悠客户说我“攻关”解决了的,得了一大笔“新技术进步奖”。
呵呵!他们那知道比我原来调COM口时在COM调试窗里10进制到16进制到二进制的算,一个一个字节的调,不知多少个不眠之夜后才看到曙光!
哎,我还是建议你去搞USB口的应用吧,毕竟那是捷径!
参考一下吧:
[url=http://www.99114.com/Corp/SjInfo_1148071_provide.html]http://www.99114.com/Corp/SjInfo_1148071_provide.html[/url]
6 楼
foxdb [专家分:1830] 发布于 2009-05-05 22:37:00
既然说到rs232和COM口的问题,我还是要告诉新手们要注意的一个问题:
那就是VFP在处理发送或接收“字符”和“字符串”时碰到的“低级”问题。要知道VFP只支持可打印的字符内码!对控制码如“零字符”和“超字符”等不是“丢”掉就是“乱”掉,要不就让程序“死”掉让你一开始就一头“雾水”。。。。。
呵呵!对新手来说还有一段路要走呢............
7 楼
琅拿度 [专家分:2820] 发布于 2009-05-06 09:37:00
老狐狸,终于知道点连你都不精通的东西了,不过我只看需要,不管落后与否,至于RS-232,存在也有道理的,当然是USB好,都研究一下,自己没什么时间啊现在,偶尔看看而已。
zfh630528朋友:可以把 ole(Mscomm.ocx)控件发给我吗?邮箱:Panzilun@126.com
谢谢!
8 楼
琅拿度 [专家分:2820] 发布于 2009-05-06 09:46:00
[quote]建议你去搞USB口的应用吧,毕竟那是捷径!
参考一下吧:
[url=http://www.99114.com/Corp/SjInfo_1148071_provide.html]http://www.99114.com/Corp/SjInfo_1148071_provide.html[/url][/quote]
兄弟,有多余的吗?贵不贵?卖几个给我研究一下也好...谢谢!
9 楼
foxdb [专家分:1830] 发布于 2009-05-06 15:33:00
楼主:
Mscomm.ocx 在VFP60是自带的是在安装目录\PVFP60\OS\SYSTEM\下面全名是 MSCOMM32.OCX VFP60安装后即可调用,(的客户现在都一直在用,都很正常。。。。)VFP90没调成因时间关系我就没再搞,一直在用VFP60。至于USB接口可编程控制模块你可以直接和厂家联系购买!这样会得到他们更快捷的售后服务,另外他们的“USB虚拟串口转换模块”也很好用,我的老客户都是用他。。。。祝顺!
10 楼
琅拿度 [专家分:2820] 发布于 2009-05-06 15:41:00
查了一下淘宝,需要200多块,还是研究简易的吧,要是电路效率上不去再考虑了。
谢了!
我来回复