📄 ——基于usb和多线程的实时数据采集系统.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0063)http://www.21ic.com/new_info/news/files/news/20031123230402.asp -->
<HTML><HEAD><TITLE>——基于USB和多线程的实时数据采集系统</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TD {
FONT-SIZE: 12px
}
INPUT {
FONT-SIZE: 12px; font-fammily: verdana,宋体
}
A:link {
FONT-SIZE: 12px; COLOR: #0000ff; LINE-HEIGHT: 16px; TEXT-DECORATION: underline
}
A:visited {
FONT-SIZE: 12px; COLOR: #660066; LINE-HEIGHT: 16px; TEXT-DECORATION: underline
}
A:hover {
FONT-SIZE: 12px; COLOR: #ff0000; TEXT-DECORATION: underline
}
.unnamed1 {
FONT-SIZE: 12px; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"
}
.white {
FONT-SIZE: 12px; COLOR: #ffffff; LINE-HEIGHT: 16px
}
.b:link {
FONT-SIZE: 12px; COLOR: #3366cc; LINE-HEIGHT: 18px; TEXT-DECORATION: underline
}
.b:visited {
FONT-SIZE: 12px; COLOR: #813f1b; LINE-HEIGHT: 18px; TEXT-DECORATION: none
}
.b:hover {
FONT-SIZE: 12px; COLOR: #ffa037; LINE-HEIGHT: 18px; TEXT-DECORATION: underline
}
.148xg {
FONT-SIZE: 14px; COLOR: #0000ff; LINE-HEIGHT: 14pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: underline
}
.128dt {
FONT-SIZE: 14px; COLOR: #9999cc; LINE-HEIGHT: 14pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.heigh150 {
LINE-HEIGHT: 150%
}
</STYLE>
<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY text=#000000 bgColor=#ffffff leftMargin=0 topMargin=5>
<TABLE cellSpacing=0 cellPadding=0 width=768 align=center border=0>
<TBODY>
<TR>
<TD align=middle width=168 height=80><IMG
src="——基于USB和多线程的实时数据采集系统.files/21ic.gif"></TD>
<TD width=472>
<SCRIPT language=javascript
src="——基于USB和多线程的实时数据采集系统.files/ads.htm"></SCRIPT>
</TD>
<TD height=80>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=b12 align=middle height=30><FONT
face="Arial, Helvetica, sans-serif" color=#000000>
<SCRIPT language=JavaScript
src="——基于USB和多线程的实时数据采集系统.files/date.js"></SCRIPT>
</FONT></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=1 width=768 align=center border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=3 width=766 align=left border=0>
<TBODY>
<TR bgColor=#d8d6ba>
<TD width=3 height=20></TD>
<DIV id=Position></DIV>
<TD width=378>
<FORM name=email
action=http://www.21icsearch.com/buzi/mail2/chkemail.asp method=post
target=_blank><B>电子工程周刊:</B> <INPUT class=main
style="BORDER-RIGHT: #0097cf 1px solid; BORDER-TOP: #0097cf 1px solid; BORDER-LEFT: #0097cf 1px solid; BORDER-BOTTOM: #0097cf 1px solid; BACKGROUND-COLOR: #ffffff"
maxLength=255 size=30 value=输入您的Email name=email> <INPUT class=jbutton type=submit value=订阅> </TD></FORM>
<DIV></DIV>
<DIV id=Time></DIV>
<DIV id=Image></DIV>
<DIV id=Title></DIV>
<TD width=418>
<MARQUEE onmouseover=this.scrollDelay=99000
onmouseout=this.scrollDelay=80 scrollAmount=2 scrollDelay=80
width="80%"><FONT color=#cc0000><IMG height=12
src="——基于USB和多线程的实时数据采集系统.files/xilan_arrow.gif"
width=16>每周自动接收行业新闻,技术资料,设计文章</FONT></MARQUEE></TD>
<DIV></DIV>
<TD width=9></TD></TR></TBODY></TABLE>
<DIV></DIV>
<DIV id=Time></DIV>
<DIV id=Image></DIV>
<DIV id=Title><TD< td></DIV></TD></TR></TBODY></TABLE></TD></TR></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width=768 align=center border=0>
<TBODY>
<TR>
<TD vAlign=top width=617 height=2>
<TABLE cellSpacing=0 cellPadding=0 width=583 align=center border=0>
<TBODY>
<TR>
<TD align=middle height=31><FONT size=4><B>基于USB和多线程的实时数据采集系统
</B></FONT></TD></TR>
<TR>
<TD align=middle height=15>文章作者:刘 滨 孙 睿<BR>文章类型:设计应用
文章加入时间:2003年11月23日23:4</TD></TR>
<TR>
<TD align=right><FONT color=#cc0000>文章出处:单片机及嵌入式系统应用</FONT> </TD></TR>
<TR>
<TD height=15>
<HR width="100%" noShade SIZE=1>
</TD></TR>
<TR>
<TD height=15>
<TABLE cellSpacing=0 cellPadding=0 align=center border=0>
<TBODY>
<TR>
<TD></TD></TR></TBODY></TABLE><BR></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=530 align=center border=0>
<TBODY>
<TR>
<TD class=heigh150 height=15>
<DIV id=Content>
<P class=MsoNormal><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
<B>摘要:</B></SPAN>说明基于USB技术的实时数据采集系统的硬件、软件实现;重点介绍PDIUSBD12带并行总线的USB接口器件以及基于多线程思想设计应用程序的方法。</P>
<P class=MsoNormal><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
<B>关键词:</B></SPAN>USB PDIUSBD12 多线程 实时数据采集</P>
<P style="TEXT-INDENT: 0px"><B>1 问题的提出</B></P>
<P
style="TEXT-INDENT: 30px">随着信息技术的飞速发展,各种数据的实时采集和处理在现代工业控制中已成为必不可少的。这就为我们的设计提出了两个方面的要求:一方面,要求接口简单灵活且有较高的数据传输率;另一方面,由于数据量通常都较大,要求主机能够对实时数据做出快速响应,并及时进行分析和处理。</P>
<P
style="TEXT-INDENT: 30px">传统的外设与主机的通信接口难以满足上述第一个方面的要求。这些接口一般采用PCI部线或RS-232串行总线。PCI总线虽然有很高的传输率(可达132Mbps),还能“即插即用”,但是它们的扩充槽相当有限,且插拔并不方便。<IMG
height=175 hspace=1 src="——基于USB和多线程的实时数据采集系统.files/15a.gif"
width=338 align=right vspace=1
border=0>RS-232串行总线虽然连接方便,可是它的带宽非常有限,传输速度太慢,而且1条RS-232串口通信电缆只能连接1个物理设备。USB技术正是顺序这一要求提出的,它集PCI和RS-232的优点于一身:具有较高的传输速率(USB协议1.1支持最高传输速度达12Mbps,USB协议2.0支持最高传输速度可达148Mbps),实现了真正意义上的“即插即用”(Plug
& Play),同时USB上最多可以连接127个外设。因此,将USB技术应用于数据的实时采集是非常适合的。</P>
<P
style="TEXT-INDENT: 30px">实时系统对多任务的要求比较普遍。往往在后台采集数据、进行数据显示的同时,还要在前台界面对用户的操作做出响应。在实时系统中,对实时数据做出及时而准确的反应是十分重要的。由于受A/D采集速度等因素的限制,从硬件上采用USB接口技术的确可以提高速度,但毕竟潜力有限,因此在现有硬件设计基础上充分发挥软件的作用就能进一步提升速度。使用传统的单线程编程技术效率较低,无法及时处理,必须充分利用Windows的多任务处理功能,采用多线程编程技术来处理数据。</P>
<P
style="TEXT-INDENT: 30px">在这个实时采集系统的设计上,我们将这两种技术结合起来:在硬件上采用USB技术;软件用VC++进行开发,采用多线程编程,使系统的效率从这两方面都得到提升。</P>
<P style="TEXT-INDENT: 0px"><B>2 系统体系结构</B></P>
<P style="TEXT-INDENT: 30px">2.1 硬件结构</P>
<P style="TEXT-INDENT: 30px">整个系统硬件结构如图1所示。</P>
<P
style="TEXT-INDENT: 30px">实时数据采集系统主要由多路选择开关、A/D转换、单片机系统、PDIUSBD12、微机组成。多路选择开关对多路信号进行选择,使其分时输入;A/D转换实现模拟信号的数字化;单片机系统主要完成信号采集、数据通信;PDIUSBD12实现USB接口;微机完成数据接收、存入数据库、数据处理、计算、显示等功能。</P>
<P
style="TEXT-INDENT: 30px">其中PDIUSBD12是系统USB技术得以实现的关键。它是Philips公司的一个带并行总线的USB接口器件,支持本地的DMA传输。它完全符合USB1.1版的规范,同时集成了SIE(串行接口引擎)、FIFO存储器、收发器以及电压调整器。其主端点的双缓冲配置增加了数据吞吐量并轻松实现实时数据传输,功能框图如图2所示。<BR><IMG
height=355 hspace=10 src="——基于USB和多线程的实时数据采集系统.files/15b.gif"
width=549 vspace=10 border=0><BR><FONT size=3>
</FONT><SPAN
class=main1>在这个系统中,单片机采用的是80C52。PDIUSBD12与80C52的接口有2种方式:多路地址/数据总线方式、单地址/数据总线方式。我们采用的是前一种方式:使用了80C52的INT0、ALE、WR、RD和P0口,当PDIUSBD12接收到主机的有效信息时,会产生一个中断通知80C52进行处理。在此种方式下,PDIUSBD12在ALE下降沿的时候,对单片机的输出地址进行锁存。若输出地址为奇数,则表示对PDIUSBD12发送指令;若输出地址为偶数,则表示对PDIUSBD12进行数据传输。接口电路如图3所示。</P>
<P
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -