虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

cvi的dct数字水印cvi的dct数字水印cvi的dct数字水印cvi的dct数cvi的dct数字水cvi的dct数字水印印字水印

  • 基于新型单片机的无刷直流电机控制系统

    本文介绍了ATmega128 单片机的基本功能,设计了以其为核心的永磁无刷直流电动机控制系统。充分利用它运算速度快、片内外设丰富的特点,采用PWM 方式,实现对无刷直流电动机的位置与速度控制,并给出了总体设计方案和相应的软件策略。传统的无刷直流电动机控制系统一般由分立的模拟器件构成。模拟控制系统使用方便,价格便宜,应用广泛。但是,模拟器件也有本质的缺陷:元器件特征参数受温度影响;器件的老化;不便于维护、无法升级。随着微处理器性能的不断提高,以其为核心的数字控制系统正逐渐应用于无刷直流电动机的控制,并取得了非常好的效果。它终将取代模拟控制系统。ATmega128 单片机是ATMEL 公司研发出的增强型内置Flash 的精简指令集CPU(RISC)高性能低功耗CMOS 微处理器。它片内集成了丰富的外设,大大简化了控制系统的硬件电路,提高了系统的性能,能满足电机控制系统的要求。本文探讨了无刷直流电动机的ATmega128单片机控制系统和无刷直流电动机的控制策略。

    标签: 单片机 无刷直流电机 控制系统

    上传时间: 2014-01-20

    上传用户:zhliu007

  • 其于Keil的实验仿真板的使用

    对于初学者来说,还有些不直观,调试过程中看到的是一些数值,并没有看到这些数值所引起的外围电路的变化,例如数码管点亮、发光管发光等。为了让初学者更好地入门,笔者利用Keil 提供的AGSI 接口开发了两块仿真实验板。这两块仿真板将枯燥无味的数字用形象的图形表达出来,可以使初学者在没有硬件时就能感受到真实的学习环境,降低单片机的入门门槛。图1 是键盘、LED 显示实验仿真板的图,从图中可以看出,该板比较简单,有在P1 口接有8 个发光二极管,在P3 口接有4 个按钮,图的右边给出了原理图。图2 是另一个较为复杂的实验仿真板。在该板上有8 个数码管,16 个按键(接成4*4 的矩阵式),另外还有P1 口接的8个发光管,两个外部中断按钮,一个带有计数器的脉冲发生器等资源,显然,这块板可以完成更多的实验。

    标签: Keil 实验仿真

    上传时间: 2013-10-18

    上传用户:nanshan

  • 驱动程序与应用程序的接口

    有两种方式可以让设备和应用程序之间联系:1. 通过为设备创建的一个符号链;2. 通过输出到一个接口WDM驱动程序建议使用输出到一个接口而不推荐使用创建符号链的方法。这个接口保证PDO的安全,也保证安全地创建一个惟一的、独立于语言的访问设备的方法。一个应用程序使用Win32APIs来调用设备。在某个Win32 APIs和设备对象的分发函数之间存在一个映射关系。获得对设备对象访问的第一步就是打开一个设备对象的句柄。 用符号链打开一个设备的句柄为了打开一个设备,应用程序需要使用CreateFile。如果该设备有一个符号链出口,应用程序可以用下面这个例子的形式打开句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3",  GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路径名的前缀“\\.\”告诉系统本调用希望打开一个设备。这个设备必须有一个符号链,以便应用程序能够打开它。有关细节查看有关Kdevice和CreateLink的内容。在上述调用中第一个参数中前缀后的部分就是这个符号链的名字。注意:CreatFile中的第一个参数不是Windows 98/2000中驱动程序(.sys文件)的路径。是到设备对象的符号链。如果使用DriverWizard产生驱动程序,它通常使用类KunitizedName来构成设备的符号链。这意味着符号链名有一个附加的数字,通常是0。例如:如果链接名称的主干是L“TestDevice”那么在CreateFile中的串就该是“\\\\.\\TestDevice0”。如果应用程序需要被覆盖的I/O,第六个参数(Flags)必须或上FILE_FLAG_OVERLAPPED。 使用一个输出接口打开句柄用这种方式打开一个句柄会稍微麻烦一些。DriverWorks库提供两个助手类来使获得对该接口的访问容易一些,这两个类是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass类封装了一个设备信息集,该信息集包含了特殊类中的所有设备接口信息。应用程序能有用CdeviceInterfaceClass类的一个实例来获得一个或更多的CdeviceInterface类的实例。CdeviceInterface类是一个单一设备接口的抽象。它的成员函数DevicePath()返回一个路径名的指针,该指针可以在CreateFile中使用来打开设备。下面用一个小例子来显示这些类最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface(  GUID* pClassGuid,  DWORD instance,  PDWORD pError){  CDeviceInterfaceClass DevClass(pClassGuid, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  CDeviceInterface DevInterface(&DevClass, instance, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  cout << "The device path is "    << DevInterface.DevicePath()    << endl;   HANDLE hDev;  hDev = CreateFile(   DevInterface.DevicePath(),    GENERIC_READ | GENERIC_WRITE,    FILE_SHARE_READ | FILE_SHARE_WRITE,    NULL,    OPEN_EXISTING,    FILE_ATTRIBUTE_NORMAL,    NULL  );  if (hDev == INVALID_HANDLE_VALUE)    *pError = GetLastError();  return hDev;} 在设备中执行I/O操作一旦应用程序获得一个有效的设备句柄,它就能使用Win32 APIs来产生到设备对象的IRPs。下面的表显示了这种对应关系。Win32 API  DRIVER_FUNCTION_xxxIRP_MJ_xxx  KDevice subclass member function CreateFile  CREATE  Create ReadFile  READ  Read WriteFile  WRITE  Write DeviceIoControl  DEVICE_CONTROL  DeviceControl CloseHandle  CLOSECLEANUP  CloseCleanUp 需要解释一下设备类成员的Close和CleanUp:CreateFile使内核为设备创建一个新的文件对象。这使得多个句柄可以映射同一个文件对象。当这个文件对象的最后一个用户级句柄被撤销后,I/O管理器调用CleanUp。当没有任何用户级和核心级的对文件对象的访问的时候,I/O管理器调用Close。如果被打开的设备不支持指定的功能,则调用相应的Win32将引起错误(无效功能)。以前为Windows95编写的VxD的应用程序代码中可能会在打开设备的时候使用FILE_FLAG_DELETE_ON_CLOSE属性。在Windows NT/2000中,建议不要使用这个属性,因为它将导致没有特权的用户企图打开这个设备,这是不可能成功的。I/O管理器将ReadFile和WriteFile的buff参数转换成IRP域的方法依赖于设备对象的属性。当设备设置DO_DIRECT_IO标志,I/O管理器将buff锁住在存储器中,并且创建了一个存储在IRP中的MDL域。一个设备可以通过调用Kirp::Mdl来存取MDL。当设备设置DO_BUFFERED_IO标志,设备对象分别通过KIrp::BufferedReadDest或 KIrp::BufferedWriteSource为读或写操作获得buff地址。当设备不设置DO_BUFFERED_IO标志也不设置DO_DIRECT_IO,内核设置IRP 的UserBuffer域来对应ReadFile或WriteFile中的buff参数。然而,存储区并没有被锁住而且地址只对调用进程有效。驱动程序可以使用KIrp::UserBuffer来存取IRP域。对于DeviceIoControl调用,buffer参数的转换依赖于特殊的I/O控制代码,它不在设备对象的特性中。宏CTL_CODE(在winioctl.h中定义)用来构造控制代码。这个宏的其中一个参数指明缓冲方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表显示了这些方法和与之对应的能获得输入缓冲与输出缓冲的KIrp中的成员函数:Method  Input Buffer Parameter  Output Buffer Parameter METHOD_BUFFERED  KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER  KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代码指明METHOD_BUFFERED,系统分配一个单一的缓冲来作为输入与输出。驱动程序必须在向输出缓冲放数据之前拷贝输入数据。驱动程序通过调用KIrp::IoctlBuffer获得缓冲地址。在完成时,I/O管理器从系统缓冲拷贝数据到提供给Ring 3级调用者使用的缓冲中。驱动程序必须在结束前存储拷贝到IRP的Information成员中的数据个数。如果控制代码不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,则DeviceIoControl的参数呈现不同的含义。参数InputBuffer被拷贝到一个系统缓冲,这个缓冲驱动程序可以通过调用KIrp::IoctlBuffer。参数OutputBuffer被映射到KMemory对象,驱动程序对这个对象的访问通过调用KIrp::Mdl来实现。对于METHOD_OUT_DIRECT,调用者必须有对缓冲的写访问权限。注意,对METHOD_NEITHER,内核只提供虚拟地址;它不会做映射来配置缓冲。虚拟地址只对调用进程有效。这里是一个用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE来定义一个IOCTL代码:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)现在使用一个DeviceIoControl调用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING,  NULL, // no input  注意,这里放的是包含有执行操作命令的字符串指针  0, FirmwareRev,      //这里是output串指针,存放从驱动程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize,  NULL // not overlapped I/O );如果输出缓冲足够大,设备拷贝串到里面并将拷贝的资结束设置到FirmwareRevSize中。在驱动程序中,代码看起来如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){  ULONG fwLength=0;  switch ( I.IoctlCode() )  {    case IOCTL_MYDEV_GET_FIRMWARE_REV:      fwLength = strlen(FIRMWARE_REV)+1;      if (I.IoctlOutputBufferSize() >= fwLength)      {        strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV);        I.Information() = fwLength;         return I.Complete(STATUS_SUCCESS);      }      else      {              }    case . . .   } }

    标签: 驱动程序 应用程序 接口

    上传时间: 2013-10-17

    上传用户:gai928943

  • 基于DSP的开关磁阻电机调速系统研究

    为对开关磁阻电机调速进行实时控制,设计了一款基于DSP的TMS320F2812数字信号处理器为控制核心,设计开发了开关磁阻电机调速系统。以模块化的思想设计了MCU控制系统、位置检测系统、不对称功率电路等模块。给出了软件设计的思想和方法,完成了嵌入式软件系统的开发。该调速系统结构简单、成本低廉、起动转矩大及调速范围宽等优点,具有很好的发展前景。

    标签: DSP 开关磁阻电机 调速 系统研究

    上传时间: 2014-12-28

    上传用户:啊飒飒大师的

  • 通过FPGA提高工业应用灵活性的5种方法

      可编程逻辑器件(PLD)是嵌入式工业设计的关键元器件。在工业设计中,PLD已经从提供简单的胶合逻辑发展到使用FPGA作为协处理器。该技术在通信、电机控制、I/O模块以及图像处理等应用中支持 I/O 扩展,替代基本的微控制器 (MCU) 或者数字信号处理器 (DSP)。   随着系统复杂度的提高,FPGA还能够集成整个芯片系统(SoC),与分立的 MCU、DSP、ASSP,以及 ASIC解决方案相比,大幅度降低了成本。不论是用作协处理器还是SoC,Altera FPGA在您的工业应用中都具有以下优点:   1. 设计集成——使用FPGA作为协处理器或者SoC,在一个器件平台上集成 IP和软件堆栈,从而降低成本。   2. 可重新编程能力——在一个公共开发平台的一片 FPGA中,使工业设计能够适应协议、IP以及新硬件功能的发展变化。   3. 性能调整——通过FPGA中的嵌入式处理器、定制指令和IP模块,增强性能,满足系统要求。   4. 过时保护——较长的 FPGA 产品生命周期,通过 FPGA 新系列的器件移植,延长工业产品的生命周期,保护硬件不会过时。   5. 熟悉的工具——使用熟悉的、功能强大的集成工具,简化设计和软件开发、IP集成以及调试。

    标签: FPGA 工业应用

    上传时间: 2014-12-28

    上传用户:rnsfing

  • 基于Xilinx FPGA的温控风扇的设计(原文设计、源代码及视频地址)

      本设计的整体思路是:以XILINX FPGA作为控制中心,通过提取热释电红外传感器感应到的人体红外线信息,并利用温度传感器DS18B20检测环境温度并直接输出数字温度信号给FPGA 进行处理,在LED数码管上显示当前环境温度值以及预设温度值。通过独立键盘输入预设温度值,其中预设温度值只能为整数形式,检测到的当前环境温度可精确 到小数点后一位。同时采用PWM脉宽调制方式来改变直流风扇电机的转速。并通过两个按键改变预设温度值,一个提高预设温度,另一个降低预设温度值。系统结 构框图如下:

    标签: Xilinx FPGA 温控 地址

    上传时间: 2013-11-14

    上传用户:dianxin61

  • PLC电梯控制系统的设计和检测

      摘要: 随着微电子技术和计算机技术的迅速发展,PLC(即可编程控制器)在工业控制领域内得到十分广泛地应用。PLC是一种基于数字计算机技术、专为在工业环境下应用而设计的电子控制装置,它采用可编程序的存储器,用来存储用户指令,通过数字或模拟的输入/输出,完成一系列逻辑、顺序、定时、记数、运算等确定的功能,来控制各种类型的机电一体化设备和生产过程。本文介绍了利用可编程控制器编写的一个五层电梯的控制系统,检验电梯PLC控制系统的运行情况。实践证明,PLC可遍程控制器和MCGS组态软件结合有利于PLC控制系统的设计、检测,具有良好的应用价值。   电梯是随着高层建筑的兴建而发展起来的一种垂直运输工具。多层厂房和多层仓库需要有货梯;高层住宅需要有住宅梯;百货大楼和宾馆需要有客梯,自动扶梯等。在现代社会,电梯已像汽车、轮船一样,成为人类不可缺少的交通运输工具。据统计,美国每天乘电梯的人次多于乘载其它交通工具的人数。当今世界,电梯的使用量已成为衡量现代化程度的标志之一。追溯电梯这种升降设备的历史,据说它起源于公元前236年的古希腊。当时有个叫阿基米德的人设计出--人力驱动的卷筒式卷扬机。1858年以蒸汽机为动力的客梯,在美国出现,继而有在英国出现水压梯。1889年美国的奥梯斯电梯公司首先使用电动机作为电梯动力,这才出现名副其实的电梯,并使电梯趋于实用化。1900年还出现了第一台自动扶梯。1949年出现了群控电梯,首批4~6台群控电梯在纽约的联合国大厦被使用。1955年出现了小型计算机(真空管)控制电梯。1962年美国出现了速度达8米/秒的超高速电梯。1963年一些先进工业国只成了无触点半导体逻辑控制电梯。1967年可控硅应用于电梯,使电梯的拖动系统筒化,性能提高。1971年集成电路被应用于电梯。第二年又出现了数控电梯。1976年微处理机开始用于电梯,使电梯的电气控制进入了一个新的发展时期。   1电梯简介   1.1电梯的基本分类   1.1.1按用途分类   ⑴ 乘客电梯:为运送乘客而设计的电梯。主用与宾馆,饭店,办公楼,大型商店等客流量大的场合。这类电梯为了提高运送效率,其运行速度比较快,自动化程度比较高。轿厢的尺寸和结构形式多为宽度大于深度,使乘客能畅通地进出。而且安全设施齐全,装潢美观。

    标签: PLC 电梯控制系统 检测

    上传时间: 2013-11-18

    上传用户:yuanyuan123

  • 声纳信号发生器通信控制模块的设计

    文中针对某型声纳维修训练系统的通信需求,结合声纳信号发生器的特点,提出了基于C/S模式的通信控制模块设计方案。模块采用Winsock网络编程技术实现了客户机与服务器间高速局域网通信,服务器响应客户机的请求后,输出数字控制量并利用PCI-1711的12位D/A转换功能,将数字控制量转换为模拟信号,从而实现声纳信号发生器任意波形产生。该信号发生器输出信号的幅度、频率、脉宽、持续时间等参数均可通过网络通信方式设置,并易于调节。本系统控制灵活,具有较高的实用价值。

    标签: 声纳 信号发生器 通信控制 模块

    上传时间: 2013-10-10

    上传用户:hanbeidang

  • 基于Matlab_Simulink的QAM通信系统的仿真

    利用Matlab的Simulink工具箱建立了QAM 系统的仿真模型,详细地叙述了仿真参数的设置,分析了仿真结果,仿真结果与理论结果一致。该仿真模型简单,而且达到了预期的效果。仿真结果表明:通过Matlab 仿真数字通信系统具有较强的可实现性,为实际应用和科学合理地设计QAM通信系统,提供了高效的仿真平台。

    标签: Matlab_Simulink QAM 通信系统 仿真

    上传时间: 2013-11-24

    上传用户:aeiouetla

  • 基于HART协议的智能压力变送器的开发

    介绍了基于HART协议的以微处理器XEMICS为核心的智能压力变送器的开发。该智能压力变送器可用于现场压力实时监测,具有温度和非线性补偿、低功耗并且具有兼容数字和模拟通信的能力。

    标签: HART 协议 压力变送器

    上传时间: 2013-10-29

    上传用户:AISINI005