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

前级放大

  • 基于STC89C52单片机控制的超声波汽车防撞系统

    随着科学技术的快速发展,超声波将在科学技术中的应用越来越广。本文对超声波传感器测距的可能性进行了理论分析,利用模拟电子、数字电子、微机接口、超声波换能器、以及超声波在介质的传播特性等知识,采用以STC89C52 单片机为核心的低成本、高精度、微型化数字显示超声波测距的硬件电路和软件设计方法在此基础上设计了系统的总体方案,最后通过硬件和软件实现了各个功能模块。为了保证超声波测距传感器的可靠性和稳定性,采取了相应的抗干扰措施。就超声波的传播特性,超声波换能器的工作特性、超声波发射、接收、超声微弱信号放大、波形整形、速度变换、语音提示电路及系统功能软件等做了详细说明.实现障碍物的距离测试、显示和报警,超声波测距范围30CM-300CM,精度在十厘米左右。这套系统软硬件设计合理、抗干扰能力强、实时性良好,经过系统扩展和升级,可以用于倒车雷达、建筑施工工地以及一些工业现场,例如:测量液位、井深、管道长度等场合。可以广泛应用于工业生产、医学检查、日常生活、无人驾驶汽车、自动作业现场的自动引导小车、机器人、液位计等。

    标签: STC 89C C52 89

    上传时间: 2013-11-05

    上传用户:lixinxiang

  • LCD液晶驱动PCF8562级联应用指南

    LCD液晶驱动PCF8562级联应用指南

    标签: 8562 LCD PCF 液晶驱动

    上传时间: 2013-10-16

    上传用户:hzht

  • 基于模糊PID算法的电阻炉温度控制系统设计

    电加热炉是典型工业过程控制对象,其温度控制具有升温单向性,大惯性,纯滞后,时变性等特点,很难用数学方法建立精确的模型和确定参数。而PID控制因其成熟,容易实现,并具有可消除稳态误差的优点,在大多数情况下可以满足系统性能要求,但其性能取决于参数的整定情况。且快速性和超调量之间存在矛盾,使其不一定满足快速升温、超调小的技术要求。模糊控制在快速性和保持较小的超调量方面有着自身的优势,但其理论并不完善,算法复杂,控制过程会存在稳态误差。 将模糊控制算法引入传统的加热炉控制系统构成智能模糊控制系统,利用模糊控制规则自适应在线修改PID参数,构成模糊自整定:PID控制系统,借此提高其控制效果。 基于PID控制算法,以ADuC845单片机为主体,构成一个能处理较复杂数据和控制功能的智能控制器,使其既可作为独立的单片机控制系统,又可与微机配合构成两级控制系统。该控制器控制精度高,具有较高的灵活性和可靠性。 2 温度控制系统硬件设计 该系统设计的硬件设计主要由单片机主控、前向通道、后向通道、人机接口和接口扩展等模块组成,如图l所示。由图1可见,以内含C52兼容单片机的ADuC845为控制核心.配有640 KB的非易失RAM数据存储器、外扩键盘输人、320x240点阵的图形液晶显示器进行汉字、图形、曲线和数据显示,超温报警装置等外围电路;预留微型打印机接口,可以现场打印输出结果;预留RS232接口,能和PC机联机,将现场检测的数据传输至PC机来进一步处理、显示、打印和存档。

    标签: PID 模糊 算法 电阻炉

    上传时间: 2013-10-11

    上传用户:vodssv

  • 可编程系统级芯片提供了最大设计的灵活性

    可编程系统级芯片提供了最大设计的灵活性 极端灵活且完全可编程的混合信号SOC 的基本原理是促使赛普拉斯微系统公司(Cypress MicroSystems)推出名为PSoCTM(Programmable System-On-ChipTM,可编程系统级芯片)的全新一代器件的动力所在。

    标签: 可编程 系统级芯片

    上传时间: 2013-10-22

    上传用户:playboys0

  • LCD液晶驱动PCF8562级联应用指南

    本文着重介绍LCD液晶驱动芯片PCF8562的相关知识,以及它级联的典型应用电路及背极输出、段输出的典型波形。

    标签: 8562 LCD PCF 液晶驱动

    上传时间: 2013-10-20

    上传用户:yanyueshen

  • at91rm9200启动过程教程

    at91rm9200启动过程教程 系统上电,检测BMS,选择系统的启动方式,如果BMS为高电平,则系统从片内ROM启动。AT91RM9200的ROM上电后被映射到了0x0和0x100000处,在这两个地址处都可以访问到ROM。由于9200的ROM中固化了一个BOOTLOAER程序。所以PC从0X0处开始执行这个BOOTLOAER(准确的说应该是一级BOOTLOADER)。这个BOOTLOER依次完成以下步骤: 1、PLL SETUP,设置PLLB产生48M时钟频率提供给USB DEVICE。同时DEBUG USART也被初始化为48M的时钟频率; 2、相应模式下的堆栈设置; 3、检测主时钟源(Main oscillator); 4、中断控制器(AIC)的设置; 5、C 变量的初始化; 6、跳到主函数。 完成以上步骤后,我们可以认为BOOT过程结束,接下来的就是LOADER的过程,或者也可以认为是装载二级BOOTLOER。AT91RM9200按照DATAFLASH、EEPROM、连接在外部总线上的8位并行FLASH的顺序依次来找合法的BOOT程序。所谓合法的指的是在这些存储设备的开始地址处连续的存放的32个字节,也就是8条指令必须是跳转指令或者装载PC的指令,其实这样规定就是把这8条指令当作是异常向量表来处理。必须注意的是第6条指令要包含将要装载的映像的大小。关于如何计算和写这条指令可以参考用户手册。一旦合法的映像找到之后,则BOOT程序会把找到的映像搬到SRAM中去,所以映像的大小是非常有限的,不能超过16K-3K的大小。当BOOT程序完成了把合法的映像搬到SRAM的任务以后,接下来就进行存储器的REMAP,经过REMAP之后,SRAM从映设前的0X200000地址处被映设到了0X0地址并且程序从0X0处开始执行。而ROM这时只能在0X100000这个地址处看到了。至此9200就算完成了一种形式的启动过程。如果BOOT程序在以上所列的几种存储设备中找到合法的映像,则自动初始化DEBUG USART口和USB DEVICE口以准备从外部载入映像。对DEBUG口的初始化包括设置参数115200 8 N 1以及运行XMODEM协议。对USB DEVICE进行初始化以及运行DFU协议。现在用户可以从外部(假定为PC平台)载入你的映像了。在PC平台下,以WIN2000为例,你可以用超级终端来完成这个功能,但是还是要注意你的映像的大小不能超过13K。一旦正确从外部装载了映像,接下来的过程就是和前面一样重映设然后执行映像了。我们上面讲了BMS为高电平,AT91RM9200选择从片内的ROM启动的一个过程。如果BMS为低电平,则AT91RM9200会从片外的FLASH启动,这时片外的FLASH的起始地址就是0X0了,接下来的过程和片内启动的过程是一样的,只不过这时就需要自己写启动代码了,至于怎么写,大致的内容和ROM的BOOT差不多,不同的硬件设计可能有不一样的地方,但基本的都是一样的。由于片外FLASH可以设计的大,所以这里编写的BOOTLOADER可以一步到位,也就是说不用像片内启动可能需要BOOT好几级了,目前AT91RM9200上使用较多的bootloer是u-boot,这是一个开放源代码的软件,用户可以自由下载并根据自己的应用配置。总的说来,笔者以为AT91RM9200的启动过程比较简单,ATMEL的服务也不错,不但提供了片内启动的功能,还提供了UBOOT可供下载。笔者写了一个BOOTLODER从片外的FLASHA启动,效果还可以。 uboot结构与使用uboot是一个庞大的公开源码的软件。他支持一些系列的arm体系,包含常见的外设的驱动,是一个功能强大的板极支持包。其代码可以 http://sourceforge.net/projects/u-boot下载 在9200上,为了启动uboot,还有两个boot软件包,分别是loader和boot。分别完成从sram和flash中的一级boot。其源码可以从atmel的官方网站下载。 我们知道,当9200系统上电后,如果bms为高电平,则系统从片内rom启动,这时rom中固化的boot程序初始化了debug口并向其发送'c',这时我们打开超级终端会看到ccccc...。这说明系统已经启动,同时xmodem协议已经启动,用户可以通过超级终端下载用户的bootloader。作为第一步,我们下载loader.bin.loader.bin将被下载到片内的sram中。这个loder完成的功能主要是初始化时钟,sdram和xmodem协议,为下载和启动uboot做准备。当下载了loader.bin后,超级终端会继续打印:ccccc....。这时我们就可以下在uboot了。uboot将被下载到sdram中的一个地址后并把pc指针调到此处开始执行uboot。接着我们就可以在终端上看到uboot的shell启动了,提示符uboot>,用户可以uboot>help 看到命令列表和大概的功能。uboot的命令包含了对内存、flash、网络、系统启动等一些命令。 如果系统上电时bms为低电平,则系统从片外的flash启动。为了从片外的flash启动uboot,我们必须把boot.bin放到0x0地址出,使得从flash启动后首先执行boot.bin,而要少些boot.bin,就要先完成上面我们讲的那些步骤,首先开始从片内rom启动uboot。然后再利用uboot的功能完成把boot.bin和uboot.gz烧写到flash中的目的,假如我们已经启动了uboot,可以这样操作: uboot>protect off all uboot>erase all uboot>loadb 20000000 uboot>cp.b 20000000 10000000 5fff uboot>loadb 21000000 uboot>cp.b 210000000 10010000 ffff 然后系统复位,就可以看到系统先启动boot,然后解压缩uboot.gz,然后启动uboot。注意,这里uboot必须压缩成.gz文件,否则会出错。 怎么编译这三个源码包呢,首先要建立一个arm的交叉编译环境,关于如何建立,此处不予说明。建立好了以后,分别解压源码包,然后修改Makefile中的编译器项目,正确填写你的编译器的所在路径。 对loader和boot,直接make。对uboot,第一步:make_at91rm9200dk,第二步:make。这样就会在当前目录下分别生成*.bin文件,对于uboot.bin,我们还要压缩成.gz文件。 也许有的人对loader和boot搞不清楚为什么要两个,有什么区别吗?首先有区别,boot主要完成从flash中启动uboot的功能,他要对uboot的压缩文件进行解压,除此之外,他和loader并无大的区别,你可以把boot理解为在loader的基础上加入了解压缩.gz的功能而已。所以这两个并无多大的本质不同,只是他们的使命不同而已。 特别说名的是这三个软件包都是开放源码的,所以用户可以根据自己的系统的情况修改和配置以及裁减,打造属于自己系统的bootloder。

    标签: 9200 at 91 rm

    上传时间: 2013-10-27

    上传用户:wsf950131

  • 离散傅里叶变换,(DFT)Direct Fouriet Tr

    离散傅里叶变换,(DFT)Direct Fouriet Transformer(PPT课件) 一、序列分类对一个序列长度未加以任何限制,则一个序列可分为:    无限长序列:n=-∞~∞或n=0~∞或n=-∞~ 0    有限长序列:0≤n≤N-1有限长序列在数字信号处理是很重要的一种序列。由于计算机容量的限制,只能对过程进行逐段分析。二、DFT引入由于有限长序列,引入DFT(离散付里叶变换)。DFT它是反映了“有限长”这一特点的一种有用工具。DFT变换除了作为有限长序列的一种付里叶表示,在理论上重要之外,而且由于存在着计算机DFT的有效快速算法--FFT,因而使离散付里叶变换(DFT)得以实现,它使DFT在各种数字信号处理的算法中起着核心的作用。三、本章主要讨论 离散付里叶变换的推导离散付里叶变换的有关性质离散付里叶变换逼近连续时间信号的问题第二节 付里叶变换的几种形式傅 里 叶 变 换 :  建 立 以 时 间 t 为 自 变 量 的 “ 信 号 ”   与 以 频 率 f为 自 变 量 的 “ 频 率 函 数 ”(频谱) 之 间 的 某 种 变 换 关 系 . 所 以 “ 时 间 ” 或 “ 频 率 ” 取 连 续 还 是 离 散 值 , 就 形 成 各 种 不 同 形 式 的 傅 里 叶 变 换 对 。, 在 深 入 讨 论 离 散 傅 里 叶 变 换 D F T 之 前 , 先 概 述 四种 不 同 形式 的 傅 里 叶 变 换 对 . 一、四种不同傅里叶变换对傅 里 叶 级 数(FS):连 续 时 间 , 离 散 频 率 的 傅 里 叶 变 换 。连 续 傅 里 叶 变 换(FT):连 续 时 间 , 连 续 频 率 的 傅 里 叶 变 换 。序 列 的 傅 里 叶 变 换(DTFT):离 散 时 间 , 连 续 频 率 的 傅 里 叶 变 换.离 散 傅 里 叶 变 换(DFT):离 散 时 间 , 离 散 频 率 的 傅 里 叶 变 换1.傅 里 叶 级 数(FS)周期连续时间信号          非周期离散频谱密度函数。 周期为Tp的周期性连续时间函数 x(t) 可展成傅里叶级数X(jkΩ0)  ,是离散非周期性频谱 , 表 示为:例子通过以下 变 换 对  可 以 看 出 时 域 的 连 续 函 数 造 成 频 域 是 非 周 期 的 频 谱 函 数 , 而 频 域 的 离 散 频 谱 就 与 时 域 的 周 期 时 间 函 数 对 应 . (频域采样,时域周期延 拓)2.连 续 傅 里 叶 变 换(FT)非周期连续时间信号通过连续付里叶变换(FT)得到非周期连续频谱密度函数。

    标签: Fouriet Direct DFT Tr

    上传时间: 2013-11-19

    上传用户:fujiura

  • 单片机外围线路设计

    当拿到一张CASE单时,首先得确定的是能用什么母体才能实现此功能,然后才能展开对外围硬件电路的设计,因此首先得了解每个母体的基本功能及特点,下面大至的介绍一下本公司常用的IC:单芯片解决方案• SN8P1900 系列–  高精度 16-Bit  模数转换器–  可编程运算放大器 (PGIA)•  信号放大低漂移: 2V•  放大倍数可编程: 1/16/64/128  倍–  升压- 稳压调节器 (Charge-Pump Regulator)•  电源输入: 2.4V ~ 5V•  稳压输出: e.g. 3.8V at SN8P1909–  内置液晶驱动电路 (LCD Driver)–  单芯片解决方案 •  耳温枪  SN8P1909 LQFP 80 Pins• 5000 解析度量测器 SN8P1908 LQFP 64 Pins•  体重计  SN8P1907 SSOP 48 Pins单芯片解决方案• SN8P1820 系列–  精确的12-Bit  模数转换器–  可编程运算放大器 (PGIA)• Gain Stage One: Low Offset 5V, Gain: 16/32/64/128• Gain Stage One: Low Offset 2mV, Gain: 1.3 ~ 2.5–  升压- 稳压调节器•  电源输入: 2.4V ~ 5V•  稳压输出: e.g. 3.8V at SN8P1829–  内置可编程运算放大电路–  内置液晶驱动电路 –  单芯片解决方案 •  电子医疗器 SN8P1829 LQFP 80 Pins 高速/低功耗/高可靠性微控制器• 最新SN8P2000 系列– SN8P2500/2600/2700 系列– 高度抗交流杂讯能力• 标准瞬间电压脉冲群测试 (EFT): IEC 1000-4-4• 杂讯直接灌入芯片电源输入端• 只需添加1颗 2.2F/50V 旁路电容• 测试指标稳超 4000V (欧规)– 高可靠性复位电路保证系统正常运行• 支持外部复位和内部上电复位• 内置1.8V 低电压侦测可靠复位电路• 内置看门狗计时器保证程序跳飞可靠复位– 高抗静电/栓锁效应能力– 芯片工作温度有所提高: -200C ~ 700C     工规芯片温度: -400C ~ 850C 高速/低功耗/高可靠性微控制器• 最新 SN8P2000 系列– SN8P2500/2600/2700 系列– 1T  精简指令级结构• 1T:  一个外部振荡周期执行一条指令•  工作速度可达16 MIPS / 16 MHz Crystal–  工作消耗电流 < 2mA at 1-MIPS/5V–  睡眠模式下消耗电流 < 1A / 5V额外功能• 高速脉宽调制输出 (PWM)– 8-Bit PWM up to 23 KHz at 12 MHz System Clock– 6-Bit PWM up to 93 KHz  at 12 MHz System Clock– 4-Bit PWM up to 375 KHz  at 12 MHz System Clock• 内置高速16 MHz RC振荡器 (SN8P2501A)• 电压变化唤醒功能• 可编程控制沿触发/中断功能– 上升沿 / 下降沿 / 双沿触发• 串行编程接口

    标签: 单片机 线路设计

    上传时间: 2013-10-21

    上传用户:jiahao131

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

    有两种方式可以让设备和应用程序之间联系: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

  • 单片机应用技术选编3

    单片机应用技术选编(3) 目录  第一章 单片机的综合应用技术1.1 8098单片机存储器的扩展技术1.2 87C196KC单片机的DMA功能1.3 MCS?96系列单片机高精度接口设计1.4 利用PC机的8096软件开发系统1.5 EPROM模拟器及其应用1.6 MCS?51智能反汇编软件的设计与实现1.7 MCS?51系列软件设计与调试中一个值得注意的问题1.8 PL/M语言在微机开发系统中的应用特性1.9 MCS?51单片机开发系统中的断点产生1.10 C语言实型数与单片机浮点数之间数据格式的转换1.11 微机控制系统初始化问题探讨1.12 MCS?51中断系统中的复位问题1.13 工业控制软件的编程原则与编程技巧1.14 CMOS微处理器的功耗特性及其功耗控制原理和应用1.15 基于PLL技术的A/D、D/A转换器的设计1.16 智能仪器监控程序的模块化设计1.17 用软件逻辑开关实现单片机的地址重叠使用1.18 8259A可编程中断控制器与8031单片机接口电路及编程1.19 NSC810及其在各种微处理机中的应用1.20 MC146818在使用中的几个问题1.21 交流伺服系统中采用8155兼作双口信箱存储器的双微机结构1.22 实用汉字库芯片的制作 第二章 新一代存储器及逻辑器件2.1 新一代非易失性记忆元件--闪烁存储器2.2 Flash存储器及应用2.3 随机静态存储器HM628128及应用2.4 非挥发性随机存储器NOVRAM2.5 ASIC的设计方法和设计工具2.6 GAL器件的编程方法及其应用2.7 第三代可编程逻辑器件--高密EPLD辑器件EPLDFPGA设计转换 第三章 数据采集、前向通道与测量技术 3.1 温度传感器通道接口技术 3.2 LM135系列精密温度传感器的原理和应用 3.3 仪表放大器AD626的应用 3.4 5G7650使用中应注意的问题 3.5 用集成运算放大器构成电荷放大器组件 3.6 普通光电耦合器的线性应用 3.7 高线性光耦合型隔离放大器的研制 3.8 一种隔离型16位单片机高精度模拟量接口3.9 单片16位A/D转换器AD7701及其与8031单片机的串行接口3.10 双积分型A/D转换器与MCS?51系列单片机接口的新方法3.11 8031单片机与AD574A/D转换器的最简接口3.12 8098单片机A/D转换接口及其程序设计3.13 提高A/D转换器分辨率的实用方案3.14 用CD4051提高8098单片机内10位A/D转换器分辨率的方法3.15 单片机实现16位高速积分式A/D转换器3.16 434位A/D转换器MAX133(134)的原理及应用3.17 AD574A应用中应注意的问题 3.18 CC14433使用中应注意的问题 3.19 高精度宽范围数据采集系统的温度补偿途径 3.20 缩短ICL7135A/D采样程序时间的一种方法 3.21 用单片机实现的数字式自动增益控制 3.22 自动量程转换电路 3.23 双积分型A/D的自动量程切换电路 3.24 常用双积分型A/D转换器自换程功能的扩展3.25 具有自动量程转换功能的单片机A/D接口3.26 混合型数据采集器SDM857的功能与应用3.27 高速数据采集系统的传输接口3.28 SJ2000方向鉴别位移脉宽频率检测多用途专用集成电路3.29 多路高速高精度F/D专用集成电路3.30 数控带通滤波器的实现及其典型应用 第四章 控制系统与后向通道接口技术4.1 模糊逻辑与模糊控制4.2 自动控制技术的新发展--模糊控制技术4.3 模糊控制表的确定原则4.4 变结构模糊控制系统的实验研究4.5 新型集成模糊数据相关器NLX1124.6 功率固态继电器的应用4.7 双向功率MOS固态继电器4.8 SSR小型固态继电器与PSSR功率参数固态继电器4.9 JGD型多功能固态继电器的原理和应用4.10 光电耦合器在晶闸管触发电路中的应用4.11 一种廉价的12位D/A转换器AD667及接口4.12 利用单片机构成高精度PWM式12位D/A4.13 三相高频PWM模块SLE45204.14 专用集成电路TCA785及其应用4.15 单片温度控制器LM3911的应用4.16 工业测控系统软件设计的若干问题研究 第五章 人机对话通道接口技术5.1 廉价实用的8×8键盘5.2 单片机遥控键盘接口5.3 对8279键盘显示接口的改进5.4 用单片机8031的七根I/O线实现对键盘与显示器的控制5.5 通用8位LED数码管驱动电路ICM7218B5.6 利用条图显示驱动器LM3914组成100段LED显示器的方法5.7 液晶显示器的多极驱动方式5.8 点阵式液晶显示屏的构造与应用5.9 点阵式液晶显示器图形程序设计5.10 DMF5001N点阵式液晶显示器和8098单片机的接口技术5.11 8098单片机与液晶显示控制器HD61830接口5.12 利用PL/M语言对点阵式液晶显示器进行汉字程序设计5.13 语音合成器TMS 5220的开发与应用5.14 制作T6668语音系统的一些技术问题5.15 单片机、单板机在屏显系统中的应用 第六章 多机通讯网络与遥控技术6.1 用双UART构成的可寻址遥测点装置--兼谈如何组成系统6.2 IBM?PC微机与8098单片机的多机通讯6.3 80C196单片机与IBM?PC机的串行通讯6.4 IBM?PC与MCS?51多机通讯的研究6.5 半双工方式传送的单片机多机通信接口电路及软件设计6.6 单片机与IBM/PC机通讯的新型接口及编程6.7 用光耦实现一点对多点的总线式通讯电路6.8 用EPROM作为通讯变换器实现多机通讯6.9 ICL232单电源双RS?232发送/接收器及其应用6.10 DTMF信号发送/接收电路芯片MT8880及应用6.11 通用红外线遥控系统6.12 8031单片机在遥控解码方面的应用 第七章 电源、电压变换及电源监视7.1 用于微机控制系统的高可靠性供电方法7.2 80C31单片机防掉电和抗干扰电源的设计7.3 可编程基准电压源7.4 电源电压监视器件M81953B7.5 检出电压可任意设定的电源电压监测器7.6 低压降(LDO?Low Drop?Out)稳压器7.7 LM317三端可调稳压器应用二例7.8 三端集成稳压器的扩流应用 第八章 可靠性与抗干扰技术8.1 数字电路的可靠性设计实践与体会8.2 单片机容错系统的设计与实现8.3 微机测控系统的接地、屏蔽和电源供给8.4 ATE的抗干扰及接地技术8.5 微处理器监控电路MAX690A/MAX692A8.6 电测仪表电路的实用抗干扰技术8.7 工业镀锌电阻炉温度控制机的抗干扰措施8.8 一种简单的抗干扰控制算法 ? 第九章 综合应用实例9.1 蔬菜灌溉相关参数的自动检测9.2 MH?214溶解氧测定仪9.3 COP840C单片机在液晶线控空调电脑控制器中的应用9.4 单片机在电饭煲中的应用9.5 用PIC单片机制作电扇自然风发生器 第十章 文章摘要 一、 单片机的综合应用技术1.1 摩托罗拉8位单片机的应用和开发1.2 NS公司的COP800系列8位单片机1.3 M68HC11与MCS?51单片机功能比较1.4 8098单片机8M存储空间的扩展技术1.5 80C196KC单片机的外部设备事件服务器1.6 一种多进程实时控制系统的软件设计1.7 开发单片机的结构化高级语言PL/M?961.8 应用软件开发中的菜单接口技术1.9 单片机用户系统EPROM中用户程序的剖析方法1.10 BJS?98硬件、软件典型实验1.11 FORTH语言系统的开发应用1.12 在Transputer系统上用并行C语言编程的特点1.13 一种软件扩展8031内部计数器简易方法1.14 MCS 51系列单片机功能测试方法研究1.15 用CD 4520B设计对称输出分频器的方法1.16 多路模拟开关CC 4051功能扩展方法1.17 条形码技术及其应用系统的设计与实现? 二、 新一代存储器及逻辑器件2.1 一种多功能存储器M6M 72561J2.2 串行E2PROM及其在智能仪器中的应用2.3 新型高性能的AT24C系列串行E2PROM2.4 2K~512K EPROM编程卡2.5 电子盘的设计与实现2.6 NS GAL器件的封装标签、类型代码和编程结构间的关系 三、数据采集、前向通道与测量技术3.1 仪器用精密运放CA3193的应用3.2 集成电压?电流转换器XTR100的应用3.3 瞬时浮点放大器及应用3.4 隔离放大器289J及其应用3.5 ICS?300系列新型加速度传感器3.6 一种实用的压力传感器接口电路3.7 霍尔传感器的应用3.8 一种对多个传感器进行调理的方法3.9 两线制压力变送器3.10 小信号双线变送器XTR101的使用3.11 两线长距离频率传输压力变送器的设计3.12 测温元件AD590及其应用3.13 热敏电阻应用动态3.14 一种组合式A/D、D/A转换器的设计3.15 一种复合式A/D转换器3.16 TLC549串行输出ADC及其应用3.17 提高A/D转换精度的方法--双通道A/D转换3.18 模数转换器ICL7135的0~3.9999V显示3.19 微型光耦合器3.20 一种高精度的分压器电路3.21 利用单片机软件作热电偶非线性补偿3.22 三线制RTD测量电路及应用中要注意的问题3.23 微伏信号高精度检测中极易被忽略的问题3.24 宽范围等分辨率精密测量法3.25 传感器在线校准系统3.26 一种高精度的热敏电阻测温电路3.27 超声波专用集成电路LM1812的原理与应用3.28 旋转变压器数字化检测及其在8098单片机控制伺服系统中的应用3.29 单片集成两端式感温电流源AD590在温度测控系统中的应用?3.30 数字示波器和单片机构成的自动测试系统3.31 霍尔效应式功率测量研究 四、 控制系统与后向通道接口技术4.1 模糊逻辑与模糊控制(实用模糊控制讲座之一)4.2 红绿灯模糊控制器(实用模糊控制讲座之二)4.3 国外模糊技术新产品4.4 交流串级调速双环模糊PI单片机控制系统4.5 时序控制专用集成电路LT156及其应用4.6 电池充电控制集成电路4.7 双向晶闸管4.8 双向可控硅的自触发电路及其应用4.9 微处理器晶闸管频率自适应触发器4.10 F18系列晶闸管模块介绍4.11 集成电路UAA4002的原理及应用4.12 IGBT及其驱动电路4.13 TWH8751应用集锦4.14 结构可变式计算机工业控制系统设计4.15 单片机控制的音响编辑器 五、 人机对话通道接口技术5.1 5×7点阵LED智能显示器的应用5.2 基于8031串行口的LED电子广告牌5.3 点阵液晶显示控制器与计算机的接口技术5.4 单片机控制可编程液晶显示系统5.5 大规模语言集成电路应用综述5.6 最新可编程语言集成电路MSSIO61的应用5.7 用PC打印机接口扩展并行接口 六、 多机系统、网络与遥控技术6.1 用8098单片机构成的分布式测温系统6.2 平衡接口EIA?422和EIA485设计指南6.3 I2C BUS及其系统设计6.4 摩托罗拉可寻址异步接受/发送器6.5 用5V供电的RS232C接口芯片6.6 四通道红外遥控器6.7 TA7333P和TA7657P的功能及应用 七、 电源、电压变换及电源监视7.1 单片机控制的可控硅三相电源调压稳压技术7.2 集成开关电源控制器MC34063的原理及应用7.3 LM299精密基准电压源7.4 集成过压保护器的应用7.5 3V供电的革命7.6 HMOS微机的超低电源电压运行技术 八、 可靠性与抗干扰设计8.1 浅谈舰船电磁兼容与可靠性 九、 综合应用实例9.1 8098单片机交流电气参数测试系统的设计和应用9.2 主轴回转误差补偿控制器9.3 FWK?A型大功率发射台微机控制系统9.4 高性能压控振荡型精密波形发生器ICL8038及应用9.5 单片机COP 840C在洗碗机中的应用

    标签: 单片机 应用技术

    上传时间: 2013-11-10

    上传用户:lijinchuan