0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用89C51单片机和MAX485实现数据远程采集系统的设计

电子设计 来源:单片机与嵌入式系统应用 作者:张雄希,何嘉斌 2021-03-19 15:04 次阅读

工业生产和科学技术研究过程的各行业中,常常要对各种数据进行采集,现在常用的采集方式是在PC机或工控机内安装数据采集卡,如A/D卡及 422卡、485卡、采集卡不仅安装麻烦,易受机箱内环境的影响,而且由于受计算机插槽数量和地址、中断资源的限制,不可能挂接很多设备;而用串行总线 USB(Universal Serial Bus)能很发地解决以上这些冲突。

利用89C51设计基于USB总线的数据采集设备,还可与MAX485结合起来实现数据的远程采集。该系统具有可靠性高、性价比高和多点采集等优点。

1 系统硬件设计

USB数据采集系统硬件模块主要由串行A/D转换器、89C51芯片、USB接口芯片和多路模拟开关等组成。硬件总体结构框图如图1所示。

利用89C51单片机和MAX485实现数据远程采集系统的设计

USB接口芯片采用National Semiconductor公司的一种专用芯片USBN9602。该芯片内部集成微处理器接口、FIFO存储器、时钟发生器、串行接口引擎(SIE)、收发器和电压转换器,支持DMA微波接口。

多路模拟输入信号经多路模拟开关控制将其中的一路接入串行A/D转换器,A/D转换器经光电隔离后串行输出到移位寄存器,移位寄存器将此结果转为8位并行数据。89C51系统通过8位的并行接口传送A/D转换器采集的数据,存储在FIFO存储器中;一旦FIFO存满,SIE立刻对数据进行处理,然后89C51系统将数据从FIFO存储器中读出,由收发器通过数据线(D+、D-)送至主机。USBN9602与89C51的具体接口电路如图2所示。

图中USBN9602的CLKOUT与89C51的XTAL1相连,即USBN9602的时钟输出为89C51提供时钟输入。USBN9602的复位端接 RC电路,以保证复位电路可靠地工作。由于晶振频率较高,结合USBN9602内部网络,在XOUT端串接100μF电容及470μF电感,起稳定内部振荡频率的作用。

2 系统软件设计

系统软件包括设备固件、USB设备驱动程序和应用程序。

2.1 设备固件(firmaware)设计

此处固件是指固化到89C51 Flash中的程序。其主要功能是:①控制A/D转换器的采样;②控制芯片USBN9602接受并处理USB驱动程序的请求及应用程序的控制指令。现主要介绍89C51系统如何控制USB控制器(USBN9602)与主机的通信

89C51系统对USB控制器的操作是严格按照USB协议1.1进行的。按照USB协议1.1的规定,USB传输方式分为4种:控制传输、块传输、同步传输和中断传输。在实际开发中使用了控制传输和块传输。控制传输主要完成主机对设备的各种控制操作,也就是实现位于主机上的USB总线驱动程序(USBD.SYS)以及编写的功能驱动程序对设备的各种控制操作。块传输主要完成主机和设备间的大指数据传输以及对传输数据进行错误检测(若发生错误,它支持“重传”功能)。

89C51系统控制USB控制器的工作工程可以简单地概括为:当USB控制器从USB总线检测到主机启动的某一传输请求后,USB控制器通过中断方式将此请求通知89C51系统;89C51系统通过访问USB控制器的状态寄存器和数据寄存器,获得与此次传输有关的各种参数,并根据具体的传输参数,对USB控制器的控制寄存器和数据寄存器进行相应的操作,以完成主机的传输请求。理解了以上的工作过程就可以进行相应的固件设计。

2.2 USB设备驱动程序设计

USB系统驱动程序的设计是基于驱动程序模型WDM(Window Driver Model)的。WDM采用分层驱动程序模型:较高级的USB设备驱动程序和较低级的USB函数层。其中USB函数层由两部分组成:较高级的通用串行总线模块(USBD)和较低级的主控制器驱动程序模块(HCD)。

目前,Windwos98提供了多种USB设备驱动程序,但并不针对数据采集设备,因此需用DDK(设备驱动程序开发包)开发工具设计专用的 USB设备驱动程序。目前,写USB驱动程序的软件也很多,它们均提供用于生成USB驱动的代码生成器,用户按照提示可以定义设备的配置和功能,然后做功能的修改即可。利用软件中提供的例子进行修改也是一个比较好的捷径。可以把USB设备驱动程序的功能划分成4个不同的模块来实现:初始化模块、即插即用管理模块、电源管理模块以及I/O功能实现模块。

初始化模块提供1个入口函数DriverEntry(),整个驱动程序的入口点为DriverEntry例程。在DriverEntry中,需要提供一个AddDevice例程,把驱动程序添加到驱动程序堆栈中去。另外,所有对各种IRP(I/O请求包,如:IRP_MJ_CREATE,IRP_MJ_WRITE,IRP_MJ_CLOSE,IRP_MJ_READ,IRP_MJ_DEVICE_CONTROL 等)的处理例程都在此入口

函数中作为定义,如:

DriverEntry(IN PDRIVER_OBJECT DriverObject,…) //驱动程序入口

{

DriverObject-》DriverExtension-》AddDevice=USBAddDevice;

DriverObject-》DriverUnload=USBUnload;

DriverObject-》MajorFunction[IRP_MJ_READ]=USBRead;

DriverObject-》MajorFunction[IRP_MJ_WRITE]=USBWrite;

}

即插即用管理模块用来实现USB设备的热插拔及动态配置。当硬件检测到有USB设备接入时,Windows98查找响应的驱动程序,并调用它的 DriverEntry例程。PnP(即插即用)管理器调用驱动程序的AddDevice例程,告诉它添加了一个设备。在此处理过程中,驱动程序收到一个设备启动请求(IRP_MN_START_DEVICE)的IRP。同理,当要拔除时,PnP管理器会发出一个设备删除请求(IRP_MN_REMOVE_DEVICE)的IRP,由驱动程序进行处理。通过对这些PnP请求的处理,可支持设备的热插拔和即插即用功能。

电源管理模块负责设备的挂起与唤醒。

I/O功能实现模块完成I/O请求的大部分工作。若应用程序想对设备进行I/O操作,它便使用Windows API函数,对WIN32子系统进行WIN32调用。此调用由I/O系统服务接收并通知I/O管理器,I/O管理将此请求构造成一个合适的I/O请求包(IRP)并把它传递给USB设备驱动程序。USB设备驱动程序接收到这个IRP以后,根据IRP中包含的具体操作代码,构造相应的USB请求块并把此 URB(USB请求块)放到一个新的IRP中。然后,把此IRP传递到USB总线驱动程序,USB总线驱动程序根据IRP中所含的URB执行相应的操作(如从USB设备读取数据等),并把操作结构通过IRP返还给USB设备驱动程序。USB设备驱动程序接收到此IRP后,将操作结果通过IRP返还给 I/O管理器。最后,I/O管理器将此IRP中操作结果返还给应用程序,至此应用程序对USB设备的一次I/O操作完成。

2.3 应用程序设计

用户态的应用程序是数据采集系统的中心,其主要功能为:开启或关闭USB设备、检测USB设备、设置USB数据传输管道、设置A/D状态和数据采集端口、实时从USB接口采集数据、显示并分析数据。

由于USBN9602提供的FIFO不超过64字节,当它存满后,USBN9602自动将数据打包即时请求读入数据,由SIE自动发送数据包。另外,当系统启动A/D模块后,便会创建两个线程:采样线程和显示存盘线程。采样线程负责将采集数据写到应用程序提交的内存;而显示存盘线程负责给应用程序发送显示和存盘消息。当应用程序接收到此消息后,便从它提交的内存读取数据并显示和存盘。此处需要注意的是,采样线程和显示存盘线程在读写应用程序提交的内存时要保持同步。

3 远程数据采集系统设计

传输距离是限制USB在工业现场应用的一个障碍,即使增加了中继或Hub,USB传输距离通常也不超过几十m,这对工业现场而言显然太短了。现在,工业现场有大量采用RS-485传输数据的采集设备,其优点主要为传输距离可达到1200m以上,并且可以挂接多个设备;但传输速度慢,且需要板卡支持,安装麻烦。将RS-485与USB结合起来,可以优势互补,产生一种快速、可靠、低成本的远程数据采集系统。

设计这样一个系统的关键设备是RS-485~USB转换器,可以采用USBN9602+89C51+MAX485实现这一功能。整个系统的基本思想是:将传感器采集到的模拟量数字化以后,利用RS-485协议将数据上传。RS-485~USB转换器在主机端接收485的数据。并通过USB接口传输到主机处理;而主机向USB发送数据时,数据通过RS-485~USB转换口转换为485协议向远端输送,从而实现远程数据的双向传输如图3所示。软件方面的设计与上面所述类似。

结语

目前,基于USB外设的应用在国外处于高速发展阶段,在国内的应用也已经日见扩大;利用USB进行数据采集和工业控制已得到成功应用,特别是随着USB协议2.0的推出,数据传输速率高这480Mbps。如此高的传输速率,必将使USB在数据采集中的优势更加充分地体现出来,同时会使其在更广阔的领域得到更深层次的应用。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 转换器
    +关注

    关注

    27

    文章

    8191

    浏览量

    141721
  • usb
    usb
    +关注

    关注

    59

    文章

    7421

    浏览量

    258031
  • 总线
    +关注

    关注

    10

    文章

    2702

    浏览量

    87204
收藏 人收藏

    评论

    相关推荐

    利用MAX485实现PC单片机之间的串行通讯

    摘    要 介绍一种RS-485接口芯片MAX485利用此芯片可以很方便地实现PC
    发表于 03-27 12:25

    89C51 单片机I/O 口模拟串行通信的实现方法 ·严天峰·

    DEL833DJNZ R3,OUT ; 接收8 位数据JNB RXD ,$ ; 判断是否有停止位出现RET本文介绍的用 89C51 单片机I/O 口模拟实现串行通信的方法,已成功地应
    发表于 06-07 15:17

    max260与单片机89c51怎么连接

    max260与单片机89c51怎么连接。还有就是:当max260供电时,为什么他会发烫。而且越来越热
    发表于 10-17 15:15

    两个单片机之间通过max485进行通信的问题

    各位大神,我最近在做一个实验,关于单片机之间用max485通信的问题,请问一下具体的程序怎样写?感觉好麻烦啊,谁有这方面的资料和例程,麻烦给提供一下,谢谢啦!要求:利用max485模块
    发表于 06-26 16:16

    max485单片机是怎么连接的?

    是不是485的DI,RO直接与单片机的RXD,TXD连接,那MAX485上的A、B和/RE、DE又接在哪呢?
    发表于 01-27 10:45

    有没有基于单片机控制的图像采集的电路图?单片机89c51

    有没有基于单片机控制的图像采集的电路图?单片机89c51
    发表于 10-21 11:13

    怎么实现基于89C51单片机的喷油校泵台调速系统设计?

    本文采用89C51单片机设计了一种新型的校泵台调速系统,能够实时控制主轴转速测试和调节,并将相关测量数据传输给上位PC进行显示,从而提高测
    发表于 05-18 06:14

    89c51是什么

    近来无事想写点东西,想要把自己以前学的都总结一遍,写的不好请大家见谅。89c51是一款很大众化的入门级单片机,ATMEL、NXP、STC、和SST等公司生产的与80c51兼容低功耗、高性能8位
    发表于 07-13 06:42

    基于89C51单片机的软件与硬件设计

    单片机系列一--基于89C51单片机的软件与硬件设计 此次我将对单片机一些简单的理解及应用写下是为了以后自己复习的时候有据可循,,同时简单回忆一下
    发表于 07-20 06:17

    89c51单片机的引脚及功能有哪些

    89c51/s51单片机芯片内包括哪些?89c51单片机的引脚及功能有哪些?
    发表于 09-24 09:30

    89C51单片机的主要特性

    第2章89C51单片机的结构与原理2.189C51单片机的主要特性89C51具有如下特性:(1)面向控制的8位CPU;(2)一个片内振荡器和
    发表于 11-18 06:49

    如何利用89C51实现OLED屏的显示

    作业题目:通过单片机的四个按键,能画出四种图形(蜂鸣器提示);单片机型号89C52,0.96寸I2C通信 128*64OLED液晶屏模块;题目可拆分为:
    发表于 12-02 08:19

    89c51单片机模拟i2c总线怎么实现一主多从呢?

    在i2c总线上,连接多个89C51,把一个89C51做为主控器,其他的作为被控器,能否实现一个单片机控制多个
    发表于 05-08 18:05

    80C51单片机89C51单片机具体有什么不同?

    80C51单片机89C51单片机具体有什么不同
    发表于 11-01 08:01

    89C51单片机系统进行温度实时采集与控制

    89C51单片机系统进行温度实时采集与控制:摘要:用89C51单片机
    发表于 09-29 11:29 213次下载