搜档网
当前位置:搜档网 › windows驱动中INF文件说明

windows驱动中INF文件说明

第1章建立INF文件

为了安装Microsoft Windows 2000驱动程序,必须有一个INF文件。一个INF文件是一个文本文件,包含了关于设备和要安装的文件的必要信息,如驱动程序映像、注册表信息、版本信息等等,这些都被Setup组件所使用。

Windows 2000 INF文件不包含安装脚本。安装程序是Win32安装应用程序的一部分,如新设备向导和增加/删除硬件向导,每个INF文件作为一个资源。

包括对设备的安装支持,INF文件为设备初始化一个新的设置类别,比如INF有一个ClassInstall32节。

这一章包含以下信息:

·3.1 INF文件总体指南

·3.2 为设备文件说明源和目标位置

·3.3 建立跨平台的和/或者双操作系统的INF文件

·3.4 建立国际化的INF文件

·3.5 在设备的INF文件中加强打开文件的安全性

·3.6 从应用程序访问INF文件

参见《Windows 2000驱动程序开发参考》第1卷中的第3部分的第1章---INF文件的节和指示以获得INF文件格式的完整描述。

1.1 INF文件总体指南

INF文件有一些公共部分并遵守一套单一的语法规则,但是由于Windows支持的各种设备,它们也是有区别的。编写INF文件时,你应该求教于以下的信息资源。

·这一章和INF文件节和指令参考资料。

·你的设备的类别的文档。

例如,如果你的设备是图形适配器,参见DDK文档的图形驱动程序一节。

·INF文件的DDK工具。

DDK提供了一些工具以协助编写INF文件。参见DDK的tools目录中的关于工具如GenINF 和ChkINF的信息。

·INF示例文件和类似设备的INF文件。

DDK包括了它的示例驱动程序的INF文件。分析这些示例文件,看看是否有设备的INF文件类似于你的设备。

你可以使用任何编辑器建立或者修改INF文件。如果你的INF文件包含非ASCII字符,将文件存成Unicode文件。注意ChkINF不支持Unicode文件。

一个和Windows 2000操作系统一起发行的INF文件必须有xxxxxxxx.inf的文件名,这里xxxxxxxx不能超过8个字符。独立于操作系统发行的INF文件的名称不受8个字符的限制。

1.2 为设备文件说明源和目标位置

当Setup处理INF文件中的拷贝、更名、删除文件语句时,它为文件确定源和目标位置。

为了决定这些位置,它估计驱动程序是和操作系统一起发行还是单独发行,并检查INF文件的各节和表项,包括SourceDisksNames,SourceDisksFiles,LayoutFile,Include,Needs,DestinationDirs。这一节描述了Setup如何确定源和目标位置以及提供指南以帮助你正确的说明这些位置。

独立于操作系统发行的INF的源介质

独立于操作系统发行的设备的INF文件使用SourceDisksNames和SourceDisksFiles节来说明文件的位置。如果这样的INF在DDInstall节包含Include和Needs表项,那些表项就说明了另外的可能的源位置。

如果INF有SourceDisksNames和SourceDisksFiles节,而没有Include表项,那么SourceDisksNames和SourceDisksFiles节必须列出所有的除了目录和INF文件以外的原介质和源文件。(Windows 98要求目录文件被列在SourceDisksFiles节;Windows 2000忽略这个表项。)目录文件必须和INF文件处在同一个位置。目录文件不能被压缩。

和操作系统一起发行的INF的源介质

如果支持设备的文件被包括在操作系统中,INF必须在Version节说明LayoutFile表项。这个表项说明文件在操作系统介质的何处。说明LayoutFile表项的INF不能包括SourceDisksNames和SourceDisksFiles节。

仅仅系统提供的INF可以直接引用layout.inf。和操作系统一起发行的OEM和IHV文件可以引用系统提供的INF(如mf.inf)中的公共install节。

源介质和包含Include和Needs表项的INF

如果INF有SourceDisksNames和SourceDisksFiles节,以及Include和Needs表项,Setup 使用主INF文件加上任何“包括”的INF文件以确定源介质的位置。当说明源介质和源文件位置时,包含的文件要尽可能的精确是特别的重要。

考虑在图3.1所示的包含的INF的层次。

图3.1 包含的INF文件的层次示例

在图3.1,对于一个多功能设备的INF,MyMfDevice.inf,包含了系统提供的mf.inf文件。反过来,系统提供的mf.inf文件包含了系统提供的文件layout.inf.。当Setup搜索源介质以便从它拷贝在MyMfDevice.inf所引用的文件时,它在MyMfDevice.inf和任何引用被拷贝文件的包含的INF文件中寻找SourceDisksFiles节。Setup首先搜索MyMfDevice.inf,但是并不保证对包含的INF文件的搜索顺序。

修饰的SourceDisksFiles节比未修饰的节优先,即使修饰的节在一个包含的文件中。例如,图 3.1所示的INF文件,当在一个x86机器上安装时,如果layout.inf.包含[SourceDisksFiles.x86]节并且MyMfDevice.inf仅仅包含了一个未修饰的[SourceDisksFiles]节,Setup首先从layout.inf.使用修饰的节。因此,包含其他INF的INF应包含使用平台扩展的某个节名。

典型情况下,厂商提供的INF应当说明它的驱动程序包的文件的位置,不应当使Setup为了文件位置而搜索包含的INF文件。换句话说,拷贝文件的厂商INF应说明SourceDisksNames 和SourceDisksFiles节,那些节应当用平台扩展来修饰,也应包含被INF直接拷贝的所有文件的信息。另外,如果厂商文件名字尽可能的具体是有益的,除非安装程序正在替换和操作系统一起发行的厂商提供的文件。

为设备安装文件说明目标位置

INF文件用DestinationDirs节来说明设备文件的目标位置。这一节应当总是被说明的,并且和拷贝、更名、删除语句的节在同一个INF文件中。

DestinationDirs节应当包含DefaultDestDir表项。

如果一个INF有拷贝、更名、删除语句的节但是没有DestinationDirs节并且这个INF包含了其他INF,Setup搜索包含的INF以确定目标位置信息。但是,Setup搜索包含的INF的顺

序是不可预测的。因此,Setup会冒一个风险,例如,拷贝文件到一个违背INF开发者意愿的位置。为避免这样的混淆,总是在包含拷贝、更名、删除语句的节中说明DestinationDirs节。DestinationDirs节应当至少包括DefaultDestDir表项,并能列出INF中的拷贝、更名、删除文件的节。

1.3 建立跨平台的和/或者双操作系统的INF文件

你可以使用系统定义的扩展以建立一个单一的跨平台的安装和/或者双操作系统安装的INF 文件。扩展能使你建立修饰节名称和修饰指令。这个修饰说明了哪个DDInstall节和相关的指令对每个平台和/或者操作系统是重要的。你可以建立一个INF,对在x86平台的Windows 2000设备给与安装支持,对未来平台的Windows 2000给与安装支持,对所有平台的Windows 2000给与安装支持,对Windows 9x平台的支持,或者对所有以上平台的支持。

例如,如果你的设备支持Windows 2000和Windows 9x平台,你将建立一个有两个或多个“并行”DDInstall节的INF,它有下面的扩展以控制在每个平台和/或者每个操作系统安装什么:

·[install-section-name.NTx86]包含在所有的Windows 2000 x86平台上为安装设备或者一套设备兼容的模块而要求的Windows 2000专用指令。

·[install-section-name.NT]包含在所有的Windows 2000平台上为安装设备或者一套设备兼容的模块而要求的Windows 2000专用指令。

当前,.NT代表了由.ntx86定义的相同的一套平台。如果在将来Windows 2000支持非x86平台,.NT将代表包含.ntx86定义的平台和那些新平台。

·[install-section-name]包含Windows 9x专用指令。

未修饰的节在Windows 2000平台也适用。Setup在Windows 2000上使用未修饰的节如果它可以定位合适的修饰节。但是为了防止Windows 2000的节错误的被用在Windows 9x上,你应当对任何Windows 2000特定的DDInsatll节和相关的节以.ntx86或者.nt进行修饰。

Windows Setup如下处理DDInsatll节:

·在Windows 98,Setup处理未修饰的节并忽略以.nt*平台扩展修饰的任何节。

·在Windows 2000:

Setup检查特定平台扩展的install节,如.ntx86。如果有一个存在,Setup为当前平台处理合适的节。Setup在正被处理的INF和任何包含的INF文件(即在Include表项中包含的INF)中检查特定平台的install节。

如果没有特定平台扩展,Setup检查在INF或者任何包含的INF中检查DDInstall.nt节。如果有一个,Setup处理DDInstall.nt节。

如果没有DDInstall.nt节,Setup处理未修饰的解。

有平台扩展的DDInstall节也可以设置INF的附加的、每个设备节。特别的,对于设备和驱动程序安装,设置Windows 2000要求的DDInstall.Services以及可能DDInstall.HW,DDInstall.CoInstallers,DDInstall.LogConfigOverride,和/或者DDInstall.Interface节。在双操作系统和/或者跨平台设备/驱动程序INF文件中,在INF开发者定义的节的名称后立即说明适宜的扩展,例如,install-section-name.NTx86.HW。

如果在INF文件中没有一个或多个修饰的DDInstall.NT和/或者DDInstall.NTx86节,INF 必须有并行的修饰和未修饰的附加的每个设备节。即,如果一个双操作系统INF有DDInstall.NT 和DDInstall节以及DDInstall.HW节,它也必须有并行的DDInstall.NT.HW节(如果设备或者驱动程序要求一个Windows 2000 .HW节)。

INF文件节和指令文档说明了这些扩展,它作为正规语法语句的一部分,例如:

[DDInstall.HW]

[DDInstall.nt.HW]

[DDInstall.ntx86.HW]

但是,这样一个正规语法语句指示这些扩展是合法的,但是对基本节可能是可选的。它并不指示任何有DDInstall.nt.HW节的INF也必须有每一个其他特定平台的DDInstall.ntXXX.HW 节。Windows 2000跨平台和/或者双操作系统INF文件的编写者可以使用任何这些系统定义的扩展的子集以说明特别的跨平台和/或者双操作系统设备/驱动程序安装所要求的最小数目的修饰节。

1.4 建立国际化的INF文件

将在国际市场使用的INF应当对所有用户可见的文本使用%strkey%令牌。字符串令牌被定义在[Strings]节,它通常在INF文件的末尾。

为了建立一个单一的国际化的INF文件,你应当包含一套本地专用的https://www.sodocs.net/doc/a79957318.html,nguageID 节,在INF Strings节的参考页中有描述。

可选的,你也可以为每种本地化建立分离的INF。为减少重复和易于维护,除了Strings 节,你建立一个有必须节和表项的主INF文件,。然后建立第二套文件,这里每个文件为支持的本地化仅包含Strings节。将主文件和每个字符串文件相连以产生本地专用的INF文件。

如果一个INF包含在ASCII范围之外的字符(在0-127之外),INF应当是Unicode 格式。为建立这样的文件,例如,从应用程序如记事本程序将INF存成Unicode 格式文件。如果INF 不是Unicode格式,Setup使用当前的本地化翻译字符。如果INF是Unicode格式,Setup使用全字符集。

1.5 在设备的INF文件中加强打开文件的安全性

对Windows 2000,微软为某些设备类别加强了在类安装程序的INF中的打开文件的安全性,包括CDROM、DiskDrive、FDC、FloppyDisk、HDC和SCSIAdapter。如果你不能确定类安装程序是否为你的设备加强了文件打开时的安全性,你应在设备INF中加强安全性。

在设备的INF文件中,在[Xxx_AddReg]节增加以下的表项:

[install-section-name.HW] |

[install-section-name.nt.HW] |

[install-section-name.ntx86.HW]

...

AddReg = Xxx_AddReg

...

[Xxx_AddReg]

...

HKR,,DeviceCharacteristics,0x10001,characteristics

Characteristics值是赋给设备的特性数字值。这个值是定义在wdm.h或者ntddk.h中的一个或多个FILE_* 文件特性的逻辑或(OR)的结果。对于安全性重要的特性是FILE_DEVICE_SECURE_OPEN,它的数字值为0x100。设置这个特性使I/O管理器对所有设备的打开请求执行安全检查。FILE_DEVICE_SECURE_OPEN特性在wdm.h和ntddk.h中定义,并被Windows 2000平台支持,但是不被Win9x支持。

windows驱动开发和调试环境搭建

Windows驱动开发和环境搭建 【文章标题】: Windows驱动开发和调试的环境设置 【文章作者】: haikerenwu 【使用工具】: VC6.0,VMware6.0.3,Windbg 【电脑配置】: 惠普笔记本xp sp3 (一)VMWare安装篇 VMWare的安装一路Next即可,关于其序列号,百度一下就能找到,虚拟机安装完成之后,需要安装操作系统,我在虚拟机中安装的是windows xp sp2系统。 点击“文件”----“新建”----“虚拟机” 进入新建虚拟机的向导,配置虚拟系统参数

选择虚拟系统文件的兼容格式(新手推荐选择默认选项) 按照默认设置继续点击下一步,选择好您需要的操作系统,此处我选择的是Windows XP Prefessional。 设置虚拟机名称和虚拟操作系统安装路径,我单独空出来一个F 盘,将虚拟机和虚拟操作系统全部装在该盘。

配置网络模式(推荐选择NA T,一般主机不用做任何的设置虚拟机就可以利用主机上网)。 配置虚拟磁盘的容量。在这里可以直接单击完成,来完成基本操作设置,磁盘默认空间是8GB,用户可以根据自己的实际使用情况来调整大小,也可以自定义分区。

操作完成之后,在“VM”菜单下有个“setting。。。”菜单,点击此菜单,在CD-ROM中选择合适的选项,我使用的是Use ISO image 选项,将我的xp sp2操作系统的ISO映像路径设置好,安装操作系统。点击ok之后,启动虚拟机,即开始安装操作系统,安装过程跟普通装机过程相同。安装完成之后,启动操作系统,然后在VM菜单下点击“Install VMWare Tools”,把虚拟操作系统的驱动装好。 (二)VMWare设置篇

液晶屏驱动板原理维修代换方法

液晶屏驱动板的原理与维修代换方法 1、液晶屏驱动板的原理介绍 液晶屏驱动板常被称为A/D<模拟/数字)板,这从某种意义上反应出驱动板实现的主要功能所在。液晶屏要显示图像需要数字化过的视频信号,液晶屏驱动板正是完成从模拟信号到数字信号<或者从一种数字信号到另外一种数字信号)转换的功能模块,并同时在图像控制单元的控制下去驱动液晶屏显示图像。液晶显示器的驱动板如图1、图2所示。 图1 品牌液晶显示器采用的驱动板 图2部分液晶显示器采用的是通用驱动板 如图3所示,液晶屏驱动板上通常包含主控芯片、MCU微控制器、ROM存储器、电源模块、电源接口、VGA视频信号输入接口、OSD按键板接口、高压板接口、LVDS/TTL驱屏信号接口等部分。 液晶屏驱动板的原理框图如图4所示,从计算机主机显示卡送来的视频信

号,通过驱动板上的VGA视频信号输入接口送入驱动板的主控芯片,主控芯片根据MCU微控制器中有关液晶屏的资料控制液晶屏呈现图像。同时,MCU微控制器实现对整机的电源控制、功能操作等。因此,液晶屏驱动板又被称为液晶显示器的主板。 图3 驱动板上的芯片和接口 液晶屏驱动板损坏,可能造成无法开机、开机黑屏、白屏、花屏、纹波干扰、按键失效等故障现象,在液晶显示器故障中占有较大的比例。 液晶屏驱动板广泛采用了大规模的集成电路和贴片器件,电路元器件布局

紧凑,给查找具体元器件或跑线都造成了很大的困难。在非工厂条件下,它的可修性较小,若驱动板因为供电部分、VGA视频输入接口电路部分损坏等造成的故障,只要有电路知识我们可以轻松解决,对于那些因为MCU微控制器内部的数据损坏造成无法正常工作的驱动板,在拥有数据文件<驱动程序)的前提下,我们可以用液晶显示器编程器对MCU微控制器进行数据烧写,以修复固件损坏引起的故障。早期的驱动板,需要把MCU微控制器拆卸下来进行操作,有一定的难度。目前的驱动板已经普遍开始采用支持ISP<在线编程)的MCU微控制器,这样我们就可以通过ISP工具在线对MCU微控制器内部的数据进行烧写。比如我们使用的EP1112最新液晶显示器编程器就可以完成这样的工作。 图4 驱动板原理框图 在液晶显示器的维修工作中,当驱动板出现故障时,若液晶显示器原本就使用的是通用驱动板,就可以直接找到相应主板代换处理,当然,仍需要在其MCU中写入与液晶屏对应的驱动程序;若驱动板是品牌机主板,我们一般采用市场上常见的“通用驱动板”进行代换方法进行维修; “通用驱动板”也称“万能驱动板”。目前,市场上常见的“通用驱动板”有乐华、鼎科、凯旋、悦康等品牌,如图5所示,尽管这种“通用驱动板”所用元器件与“原装驱动板”不一致,但只要用液晶显示器编程器向“通用驱动板”写入液晶屏对应的驱动程序<购买编程器时会随机送液晶屏驱动程序光盘),再通过简单地改接线路,即可驱动不同的液晶屏,通用性很强,而且维修成本也不高,用户容易接受。

设备驱动程序

驱动程序 驱动程序一般指的是设备驱动程序(Device Driver),是一种可以使计算机和设备通信的特殊程序。相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。 因此,驱动程序被比作“硬件的灵魂”、“硬件的主宰”、和“硬件和系统之间的桥梁”等。 中文名 驱动程序 外文名 Device Driver 全称 设备驱动程序 性质 可使计算机和设备通信的特殊程序 目录 1定义 2作用 3界定 ?正式版 ?认证版 ?第三方 ?修改版 ?测试版 4驱动程序的开发 ?微软平台 ?Unix平台 5安装顺序 6inf文件 1定义 驱动程序(Device Driver)全称为“设备驱动程序”,是一种可以使计算机和设备通信的特殊程序,可以说相当于硬件的接口,操作系统只能通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。 惠普显卡驱动安装 正因为这个原因,驱动程序在系统中的所占的地位十分重要,一般当操作系统安装完毕后,首要的便是安装硬件设备的驱动程序。不过,大多数情况下,我们并不需要安装所有硬件设备的驱动程序,例如硬盘、显示器、光驱等就不需要安装驱动程序,而显卡、声卡、扫描仪、摄像头、Modem等就需要安装驱动程序。另外,不同版本的操作系统对硬件设

备的支持也是不同的,一般情况下版本越高所支持的硬件设备也越多,例如笔者使用了Windows XP,装好系统后一个驱动程序也不用安装。 设备驱动程序用来将硬件本身的功能告诉操作系统,完成硬件设备电子信号与操作系统及软件的高级编程语言之间的互相翻译。当操作系统需要使用某个硬件时,比如:让声卡播放音乐,它会先发送相应指令到声卡驱动程序,声卡驱动程序接收到后,马上将其翻译成声卡才能听懂的电子信号命令,从而让声卡播放音乐。 所以简单的说,驱动程序提供了硬件到操作系统的一个接口以及协调二者之间的关系,而因为驱动程序有如此重要的作用,所以人们都称“驱动程序是硬件的灵魂”、“硬件的主宰”,同时驱动程序也被形象的称为“硬件和系统之间的桥梁”。 戴尔电脑驱动盘 驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。操作系统不同,硬件的驱动程序也不同,各个硬件厂商为了保证硬件的兼容性及增强硬件的功能会不断地升级驱动程序。如:Nvidia显卡芯片公司平均每个月会升级显卡驱动程序2-3次。驱动程序是硬件的一部分,当你安装新硬件时,驱动程序是一项不可或缺的重要元件。凡是安装一个原本不属于你电脑中的硬件设备时,系统就会要求你安装驱动程序,将新的硬件与电脑系统连接起来。驱动程序扮演沟通的角色,把硬件的功能告诉电脑系统,并且也将系统的指令传达给硬件,让它开始工作。 当你在安装新硬件时总会被要求放入“这种硬件的驱动程序”,很多人这时就开始头痛。不是找不到驱动程序的盘片,就是找不到文件的位置,或是根本不知道什么是驱动程序。比如安装打印机这类的硬件外设,并不是把连接线接上就算完成,如果你这时候开始使用,系统会告诉你,找不到驱动程序。怎么办呢参照说明书也未必就能顺利安装。其实在安装方面还是有一定的惯例与通则可寻的,这些都可以帮你做到无障碍安装。 在Windows系统中,需要安装主板、光驱、显卡、声卡等一套完整的驱动程序。如果你需要外接别的硬件设备,则还要安装相应的驱动程序,如:外接游戏硬件要安装手柄、方向盘、摇杆、跳舞毯等的驱动程序,外接打印机要安装打印机驱动程序,上网或接入局域网要安装网卡、Modem甚至ISDN、ADSL的驱动程序。说了这么多的驱动程序,你是否有一点头痛了。下面就介绍Windows系统中各种的不同硬件设备的驱动程序,希望能让你拨云见日。 在Windows 9x下,驱动程序按照其提供的硬件支持可以分为:声卡驱动程序、显卡驱动程序、鼠标驱动程序、主板驱动程序、网络设备驱动程序、打印机驱动程序、扫描仪驱动程序等等。为什么没有CPU、内存驱动程序呢因为CPU和内存无需驱动程序便可使用,不仅如此,绝大多数键盘、鼠标、硬盘、软驱、显示器和主板上的标准设备都可以用Windows 自带的标准驱动程序来驱动,当然其它特定功能除外。如果你需要在Windows系统中的DOS 模式下使用光驱,那么还需要在DOS模式下安装光驱驱动程序。多数显卡、声卡、网卡等内置扩展卡和打印机、扫描仪、外置Modem等外设都需要安装与设备型号相符的驱动程序,否则无法发挥其部分或全部功能。驱动程序一般可通过三种途径得到,一是购买的硬件附

Windows驱动开发培训

Windows驱动开发培训 培训流程: 一、基础知识 在开始驱动开发之前,您应该知道操作系统原理以及驱动程序是如何在操作系统中进行工作的,了解这些基本原理将有助于您做出正确的设计决策并简化您的开发过程。 1、了解Windows操作系统构造\\ 可以链接进去 2、安装WDK,参考相关文档,熟悉WDK的内容\\ 可以链接进去 二、Windows驱动开发\\ 可以链接进去 一、基础知识 在开始驱动开发之前,您应该知道操作系统原理以及驱动程序是如何在操作系统中进行工作的,了解这些基本原理将有助于您做出正确的设计决策并简化您的开发过程。 1、了解Windows操作系统构造 (1)培训目标 深入了解Windows操作系统的系统结构以及工作原理 (2)培训内容 阅读书籍《深入解析Windows操作系统》的第3、4、6、7、9章,重点关注第九章“I/O系统” (3)培训任务 ①掌握Windows操作系统的系统结构 ②理解ISR、IRP、IRQL、DCP等概念的含义 ③了解注册表的用法,掌握注册表数据的查看和修改方法 ④了解进程和线程的内部机理以及线程的调度策略 ⑤了解I/O系统的内容,理解I/O请求以及I/O处理过程 注:以上相关内容,请在一周内完成。

2、安装WDK,参考相关文档,熟悉WDK的内容 (1)培训目标 了解WDK的安装过程,熟悉WDK的编译环境,掌握如何使用WDK的相关帮助文档;了解WDM驱动程序的基本结构 (2)培训内容 ①.阅读文档\\10.151.131.12\book\windows\MSWDM.chm,掌握WDM驱动程序的基本结构以及基本的编程技术。 ②.参考WDK的帮助文档:WDK documentation ,了解WDK的基本内容 (3)培训任务 ①理解分层驱动结构的含义,掌握设备和驱动程序的层次结构 ②理解“驱动对象”和“设备对象”的概念 ③理解2个基本例程:DriverEntry 和addDevice ④了解IRP的结构以及IRP处理的流程 ⑤初步了解I/O的控制操作 注:以上相关内容,请在一周内完成。 二、Windows驱动开发 学习如何基于WDK进行驱动程序的开发 1、培训目标 (1)学会根据WDK开发一个基本的Windows驱动程序和测试程序 (2)学会利用不同的IOCTL方式在内核模式和用户模式之间进行通讯 (3)学会如何在内核模式下和用户模式下访问注册表 (4)利用WinDbg跟踪程序,学会使用WinDbg进行调试 2、培训内容 (1)阅读\src\general\ioctl中的示例代码 (2)build并运行应用程序和驱动程序

TFT LCD液晶显示器的驱动原理

TFT LCD液晶显示器的驱动原理 我们针对feed through电压,以及二阶驱动的原理来做介绍.简单来说Feed through电压主要是由于面板上的寄生电容而产生的,而所谓三阶驱动的原理就是为了解决此一问题而发展出来的解决方式,不过我们这次只介绍二阶驱动,至于三阶驱动甚至是四阶驱动则留到下一次再介绍.在介绍feed through电压之前,我们先解释驱动系统中gate driver所送出波形的timing图. SVGA分辨率的二阶驱动波形 我们常见的1024*768分辨率的屏幕,就是我们通常称之为SVGA分辨率的屏幕.它的组成顾名思义就是以1024*768=786432个pixel来组成一个画面的数据.以液晶显示器来说,共需要1024*768*3个点(乘3是因为一个pixel需要蓝色,绿色,红色三个点来组成.)来显示一个画面.通常在面板的规划,把一个平面分成X-Y轴来说,在X轴上会有1024*3=3072列.这3072列就由8颗384输出channel的source driver 来负责推动.而在Y轴上,会有768行.这768行,就由3颗256输出channel的gate driver来负责驱动.图1就是SVGA分辨率的gate driver输出波形的timing图.图中gate 1 ~ 768分别代表着768个gate

driver的输出.以SVGA的分辨率,60Hz的画面更新频率来计算,一个frame的周期约为16.67 ms.对gate 1来说,它的启动时间周期一样为16.67ms.而在这16.67 ms之间,分别需要让gate 1 ~ 768共768条输出线,依序打开再关闭.所以分配到每条线打开的时间仅有16.67ms/768=21.7us而已.所以每一条gate d river打开的时间相对于整个frame是很短的,而在这短短的打开时间之内,source driver再将相对应的显示电极充电到所需的电压. 而所谓的二阶驱动就是指gate driver的输出电压仅有两种数值,一为打开电压,一为关闭电压.而对于common电压不变的驱动方式,不管何时何地,电压都是固定不动的.但是对于common电压变动的驱动方式,在每一个frame开始的第一条gate 1打开之前,就必须把电压改变一次.为什么要将这些输出电压的t iming介绍过一次呢?因为我们接下来要讨论的feed through电压,它的成因主要是因为面板上其它电压的变化,经由寄生电容或是储存电容,影响到显示电极电压的正确性.在LCD面板上主要的电压变化来源有3个,分别是gate driver电压变化,source driver电压变化,以及common电压变化.而这其中影响最大的就是gate driver电压变化(经由Cgd或是Cs),以及common电压变化(经由Clc或是Cs+Clc). Cs on common架构且common电压固定不动的feed through电压 我们刚才提到,造成有feed through电压的主因有两个.而在common电压固定不动的架构下,造成f eed through电压的主因就只有gate driver的电压变化了.在图2中,就是显示电极电压因为feed thro ugh电压影响,而造成电压变化的波形图.在图中,请注意到gate driver打开的时间,相对于每个frame 的时间比例是不正确的.在此我们是为了能仔细解释每个frame的动作,所以将gate driver打开的时间画的比较大.请记住,正确的gate driver打开时间是如同图1所示,需要在一个frame的时间内,依序将7

MapGIS文件格式详解

1、概述 1.1 文件组成 MAPGIS数据文件主要包括工程文件文件和工程内各工作区的文件。工作区是MAPGIS提出的一个概念,简单地说,工作区就是一个数据池,存放实体的空间数据、拓扑数据、图形数据和属性数据,每个工作区都对应于一个MAPGIS数据文件。数据文件主要有以下几种: 点工作区(.MPJ文件):工程文件,存放工程中所有的工作区文件 点工作区(.WT文件):点(PNT) 线工作区(.WL文件):线(LIN)、结点(NOD) 区工作区(.WP文件):线(LIN)、结点(NOD)、区(REG) 网工作区(.WN文件:线(LIN)、结点(NOD)、网(NET) 表工作区(.WB文件):无空间实体,仅有表格记录 1.2 数据类型 点元:点元是点图元的简称,有时也简称点,所谓点元是指由一个控制点决定其位置的有确定形状的图形单元。它包括字、字符串、文本、子图、圆、弧、直线段等几种类型。它与“线上加点”中的点概念不同。 弧段:弧段是一系列有规则的,顺序的点的集合,用它们可以构成区域的轮廓线。它与曲线是两个不同的概念,前者属于面元,后者属于线元。 区/区域:区/区域是由同一方向或首尾相连的弧段组成的封闭图形。 结点:结点是某弧段的端点,或者是数条弧段间的交叉点。 属性:就是一个实体的特征,属性数据是描述真实实体特征的数据集。显示地物属性的表通常称为属性表,属性表常用来组织属性数据。 2、工程文件 2.1基本构成 工程文件数据由头信息+各工作区信息数据构成,其中头信息是0-1112字节,各工作区信息是400各字节,按顺序首尾存放在文件中。

2.2头信息 头信息存储位置为0-1112字节,主要存储包含的工作区文件数、图形范围、比例、位移等信息。 2.3工作区信息

液晶屏驱动方法

心之所向,所向披靡 0802字符型液晶显示模块 外形尺寸:PCB外形:40*30.5毫米液晶屏金属黑框:38*23.5毫米 0802采用标准的16脚接口,其中: 第1脚:VSS为地电源 第2脚:VDD接5V正电源 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第7~14脚:D0~D7为8位双向数据线。 第15~16脚:空脚(背光)

0802液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A” 1602液晶模块内部的控制器共有11条控制指令,如表2所示, 它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置 指令2:光标复位,光标返回到地址00H 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁 指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标 指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符(有些模块是DL:高电平时为8位总线,低电平时为4位总线) 指令7:字符发生器RAM地址设置 指令8:DDRAM地址设置 指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据 指令11:读数据 0802液晶显示模块可以和单片机AT89C51直接接口,电路如图1所示。 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表3是0802的内部显示地址. 比如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H) 以下是在液晶模块的第二行第一个字符的位置显示字母“A”的程序: ORG 0000H RS EQU P3.7;确定具体硬件的连接方式 RW EQU P3.6 ;确定具体硬件的连接方式 E EQU P3.5 ;确定具体硬件的连接方式 MOV P1,#00000001B;清屏并光标复位 ACALL ENABLE;调用写入命令子程序 MOV P1,#00111000B ;设置显示模式:8位2行5x7点阵 ACALL ENABLE ;调用写入命令子程序 MOV P1,#00001111B;显示器开、光标开、光标允许闪烁 ACALL ENABLE ;调用写入命令子程序 MOV P1,#00000110B;文字不动,光标自动右移 ACALL ENABLE ;调用写入命令子程序 MOV P1,#0C0H;写入显示起始地址(第二行第一个位置) ACALL ENABLE ;调用写入命令子程序 MOV P1,#01000001B ;字母A的代码

led液晶显示器的驱动原理

led液晶显示器的驱动原理 LED液晶显示器的驱动原理 艾布纳科技有限公司 前两次跟大家介绍有关液晶显示器操作的基本原理, 那是针对液晶本身的特性,与 TFT LCD 本身结构上的操作原理来做介绍. 这次我们针对 TFT LCD 的整体系统面来做介绍, 也就是对其驱动原理来做介绍, 而其驱动原理仍然因为一些架构上差异的关系, 而有所不同. 首先我们来介绍由于 Cs(storage capacitor)储存 电容架构不同, 所形成不同驱动系统架构的原理. Cs(storage capacitor)储存电容的架构 一般最常见的储存电容架构有两种, 分别是Cs on gate与Cs on common这两种. 这两种顾名思义就可以知道, 它的主要差别就在于储存电容是利用gate走线或是common走线来完成的. 在上一篇文章中, 我曾提到, 储存电容主要是为了让充好电的电压,能保持到下一次更新画面的时候之用. 所以我们就必须像在 CMOS 的制程之中, 利用不同层的走线, 来形成平行板电容. 而在TFT LCD的制程之中, 则是利用显示电极与gate走线或是common走线,所形成的平行板电容,来制作出储存电容Cs.

图1就是这两种储存电容架构, 从图中我们可以很明显的知道, Cs on gate由于不必像Cs on common一样, 需要增加一条额外的common走线, 所以它的开口率(Aperture ratio)会比较大. 而开口率的大小, 是影响面板的亮度与设计的重要因素. 所以现今面板的设计大多使用Cs on gate的方式. 但是由于Cs on gate的方式, 它的储存电容是由下一条的gate走线与显示电极之间形成的.(请见图2的Cs on gate与Cs on common的等效电路) 而gate走线, 顾名思义就是接到每一个TFT 的gate端的走线, 主要就是作为gate driver送出信号, 来打开TFT, 好让TFT对显示电极作充放电的动作. 所以当下一条gate走线, 送出电压要打开下一个TFT时 , 便会影响到储存电容上储存电压的大小. 不过由于下一条gate走线打开到关闭的时间很短,(以1024*768分辨率, 60Hz更新频率的面板来说. 一条gate走线打开的时间约为20us, 而显示画面更新的时间约为16ms, 所以相对而言, 影响有限.) 所以当下一条gate走线关闭, 回复到原先的电压, 则Cs储存电容的电压, 也会随之恢复到正常. 这也是为什么, 大多数的储存电容设计都是采用Cs on gate的方式的原因.

TFT LCD液晶显示器的驱动原理(一)

TFT LCD液晶显示器的驱动原理(一) 前两次跟大家介绍有关液晶显示器操作的基本原理,那是针对液晶本身的特性,与TFT LCD本身结构上的操作原理来做介绍。这次我们针对TFT LCD的整体系统面来做介绍,也就是对其驱动原理来做介绍,而其驱动原理仍然因为一些架构上差异的关系,而有所不同。首先我们来介绍由于 Cs(storage capacitor)储存电容架构不同,所形成不同驱动系统架构的原理。 Cs(storage capacitor)储存电容的架构 一般最常见的储存电容架构有两种,分别是Cs on gate与Cs on common这两种。这两种顾名思义就可以知道,它的主要差别就在于储存电容是利用gate走线或是common走线来完成的。在上一篇文章中提到,储存电容主要是为了让充好电的电压,能保持到下一次更新画面的时候之用。所以我们就必须像在CMOS的制程之中,利用不同层的走线,来形成平行板电容。而在TFT LCD的制程之中,则是利用显示电极与gate走线或是common走线,所形成的平行板电容,来制作出储存电容Cs。

图1就是这两种储存电容架构,从图中我们可以很明显的知道,Cs on gate由于不必像Cs on co mmon一样,需要增加一条额外的common走线,所以它的开口率(Aperture ratio)会比较大。而开口率的大小,是影响面板的亮度与设计的重要因素。所以现今面板的设计大多使用Cs on gate的方式。但是由于Cs on gate的方式,它的储存电容是由下一条的gate走线与显示电极之间形成的。(请见图2的Cs on gate与Cs on common的等效电路) 而gate走线,顾名思义就是接到每一个TFT的gate 端的走线,主要就是作为gate driver送出信号,来打开TFT,好让TFT对显示电极作充放电的动作。所以当下一条gate走线,送出电压要打开下一个TFT时,便会影响到储存电容上储存电压的大小。不过由于下一条gate走线打开到关闭的时间很短,(以1024×768分辨率,60Hz更新频率的面板来说.

Windows驱动开发入门

接触windows驱动开发有一个月了,感觉Windows驱动编程并不像传说中的那么神秘。为了更好地为以后的学习打下基础,记录下来这些学习心得,也为像跟我一样致力于驱动开发却苦于没有门路的菜鸟朋友们抛个砖,引个玉。 我的开发环境:Windows xp 主机+ VMW ARE虚拟机(windows 2003 server系统)。编译环境:WinDDK6001.18002。代码编辑工具:SourceInsight。IDE:VS2005/VC6.0。调试工具:WinDBG,DbgView.exe, SRVINSTW.EXE 上面所有工具均来自互联网。 对于初学者,DbgView.exe和SRVINSTW.EXE是非常简单有用的两个工具,一定要装上。前者用于查看日志信息,后者用于加载驱动。 下面从最简单的helloworld说起吧。Follow me。 驱动程序的入口函数叫做DriverEntry(PDRIVER_OBJECT pDriverObj,PUNICODE_STRING pRegisgryString)。两个参数,一个是驱动对象,代表该驱动程序;另一个跟注册表相关,是驱动程序在注册表中的服务名,暂时不用管它。DriverEntry 类似于C语言中的main函数。它跟main的差别就是,main完全按照顺序调用的方法执行,所有东西都按照程序员预先设定的顺序依次发生;而DriverEntry则有它自己的规则,程序员只需要填写各个子例程,至于何时调用,谁先调,由操作系统决定。我想这主要是因为驱动偏底层,而底层与硬件打交道,硬件很多都是通过中断来与操作系统通信,中断的话就比较随机了。但到了上层应用程序,我们是看不到中断的影子的。说到中断,驱动程序中可以人为添加软中断,__asm int 3或者Int_3();前者是32位操作系统用的,后者是64位用的。64位驱动不允许内嵌汇编。下面是我的一个helloworld的源码:

EG2001 Mapping文件格式说明 _完整版

EG2001 Mapping文件格式说明 Prepared by Phil Mao as of Jan 15, 2014 EG2001 Mapping用的是SECS格式——这个是解析了十几个不同的EG2001 Wafer Map推算出来的,花了不少时间。 以下字节(Byte)值都为16进制: 1、头文件部分——请留意重复的标记字节。 第1和第2个字节: 始终是01 02,代表EG2001 Map头文件开始标记。 第5和第6个字节: 第5个字节始终是41,代表Wafer ID开始标记。第6个字节是Wafer ID长度Wafer ID: 第7字节开始,长度已知。 ID Type: 第1个21 01接着的一个字节,始终为0。第1个21 01为ID Type开始标记 Flat (Degreee) : 紧跟的第1个A9 02的2个字节是平边角度。第1个A9 02为Flat/Notch开始标记COORDINATE QUAD: 第2个21 01后面的1个字节。第2个21 01为Coordinate Quadrant开始标记RefPoint1: X,第1个71 08后面的4个字节,FF代表负坐标,00代表正坐标。 RefPoint1: Y,第1个71 08后面的第5-8个字节,FF代表负坐标,00代表正坐标。 RefPoint2: X,第2个71 08后面的4个字节,FF代表负坐标,00代表正坐标。 RefPoint2: Y,第2个71 08后面的第5-8个字节,FF代表负坐标,00代表正坐标。 UNIT :10^-1*mil: 总是0.1mil,跟在41 09字后的31 30 5E 2D 31 2A 6D 69 6C。-->这个如果用公制,貌似会有差别,但十几个Wafer Map都没看到这个现象。 X die size: 第1个B1 04后面的4个字节,单位0.1mil。 Y die size: 第2个B1 04后面的4个字节,单位0.1mil。 Row Count: 第2个A9 02后面的2个字节。 Column Count: 第3个A9 02后面的2个字节。 Process die count: 第3个B1 04后面的4个字节。 PROBE QUADRANT: 第3个21 01后面的1个字节。 Prober走向:EG2001测Die只有4种走法。 象限1-->象限2:COORDINATE QUAD为1 象限2-->象限1:COORDINATE QUAD为2 象限3-->象限4:COORDINATE QUAD为3 象限4-->象限3:COORDINATE QUAD为4

LED电子显示屏常见驱动方式介绍

LED电子显示屏常见驱动方式介绍 目前市场上LED显示屏的驱动方式有静态扫描和动态扫描两种,静态扫描又分为静态实像素和静态虚拟,动态扫描也分为动态实像和动态虚拟。下面由明新源科技为大家介绍下LED电子显示屏常见的驱动方式吧。 河南明新源相关负责人介绍说,在一定的显示区域内,同时点亮的行数与整个区域行数的比例,称扫描方式;室内单双色一般为1/16扫描,室内全彩LED显示屏一般是1/8 扫描,室外单双色一般是1/4扫描,室外全彩显示屏一般是静态扫描。驱动IC一般用国产HC595,台湾MBI5026,日本东芝TB62726,一般有1/2 扫,1/4扫,1/8扫,1/16扫。 举列说明:一个常用的全彩模组像素为16*8 (2R1G1B),模组总共使用的LED灯是:16*8(2+1+1)=512个,如果用MBI5026 驱动,MBI5026 为16位芯片,512/16=32 (1)如果用8个MBI5026芯片,是动态1/4扫虚拟。 (2)如果用16个MBI5026芯片,是动态1/2扫虚拟。 (3)如果用32 个MBI5026芯片,是静态虚拟。 (4)用6个MBI5026芯片,是动态1/4扫实像素。 (5)用12个MBI5026芯片,是动态1/2扫实像素。 (6)如果板子上两个红灯串连,用个MBI5026芯片,是静态实像素。 在LED单元板,扫描方式有1/16,1/8,1/4,1/2,静态。LED电子显示屏常见驱动方式介绍还有哪些,该如何区分呢?一个最简单的办法就是数一下单元板的LED灯数目和74HC595的数量。计算方法:LED的数目除以74HC595的数目再除以8 =几分之一扫描。 实像素与虚拟是相对应的简单来说,实像素屏就是指构成显示屏的红绿蓝三种发光管中的每一种发光管最终只参与一个像素的成像使用,以获得足够的亮度。虚拟像素是利用软件算法控制每种颜色的发光管最终参与到多个相邻像素的成像当中,从而使得用较少的灯管实现较大的分辨率,能够使显示分辨率提高四倍。

Windows驱动程序开发环境配置

Windows驱动程序开发笔记 一、WDK与DDK环境 最新版的WDK 微软已经不提供下载了这里:https://https://www.sodocs.net/doc/a79957318.html,/ 可以下并且这里有好多好东东! 不要走进一个误区:下最新版的就好,虽然最新版是Windows Driver Kit (WDK) 7_0_0,支持windows7,vista 2003 xp等但是它的意思是指在windows7操作系统下安装能编写针对windows xp vista的驱动程序, 但是不能在xp 2003环境下安装Windows Driver Kit (WDK) 7_0_0这个高版本,否则你在build的时候会有好多好多的问题. 上文build指:首先安装好WDK/DDK,然后进入"开始"->"所有程序"->"Windows Driver Kits"->"WDK XXXX.XXXX.X" ->"Windows XP"->"x86 Checked Build Environment"在弹出来的命令行窗口中输入"Build",让它自动生成所需要的库 如果你是要给xp下的开发环境还是老老实实的找针对xp的老版DDK吧,并且xp无WDK 版只有DDK版build自己的demo 有个常见问题: 'jvc' 不是内部或外部命令,也不是可运行的程序。 解决办法:去掉build路径中的空格。 二、下载 WDK 开发包的步骤 1、访问Microsoft Connect Web site站点 2、使用微软 Passport 账户登录站点 3、登录进入之后,点击站点目录链接 4、在左侧的类别列表中选择开发人员工具,在右侧打开的类别:开发人员工具目录中找到Windows Driver Kit (WDK) and Windows Driver Framework (WDF)并添加到您的控制面板中 5、添加该项完毕后,选择您的控制面板,就可以看到新添加进来的项了。 6、点击Windows Driver Kit (WDK) and Windows Driver Framework (WDF),看到下面有下载链接,OK,下载开始。下载后的文件名为: 6.1.6001.18002.081017-1400_wdksp-WDK18002SP_EN_DVD.iso将近600M大小。

数据文件格式

1.交点线文件(*.JDX) 系统提供三种交点线资料的格式: 格式一: XY(或NE) 1 起点编号坐标坐标 0 交点号坐标坐标 R LS1 LS2 R1 R2 交点号坐标坐标 R LS1 LS2 R1 R2 …… 终点编号坐标坐标 0 格式二: XY(或NE) 2 起点编号起点坐标X 起点坐标Y 0 交点号起始边方位角起始边长度 R LS1 LS2 R1 R2 交点号来向边方位角来向边长度 R LS1 LS2 R1 R2 ……… 终点编号终止边方位角终止边长度 0 格式三: XY(或NE) 3 起点编号起点坐标X(或N)起点坐标Y(或E) 0 交点号起始边方位角起始边长度 R LS1 LS2 R1 R2 交点号来向边偏角来向边长度 R LS1 LS2 R1 R2

………. 终点编号终止边偏角终止边长度 0 格式说明: 大地(测量)坐标系,采用“NE”标识;数学直角坐标系采用“XY”标识。 对于低等级路起点坐标和起始边方位角可以假设为0。 偏角的正负与坐标相关,在XY坐标系下:左正右负;在NE坐标系下:左负右正。 变量意义 R:圆曲线半径 LS1、LS2:第1和第2回旋线的长度,对于四级公路,当LS1、LS2的值为负值时表示Lc1和Lc2值(缓和段的长度),HARD系统允许在四级公路中同时存在LS和LC值;(无相应回旋线时输0,成对出现)R1 R2 ---第1、第2回旋线起点半径;(无相应半径时输0,成对出现。) 对于存在虚交的交点线文件,应按如下述格式填写,比如TA、 TB、 TC、 TD 四点组成虚交(TA为总交点,TB、 TC、 TD为分交点),应将这四点共有的曲线信息写在TA 的后面,而其他三点的曲线信息位置填写 -1 。比如: NE n 表示第n种交点线格式 . . . . . TA 坐标坐标 R LS1 LS2 R1 R2 TB 坐标坐标 -1 TC 坐标坐标 -1 TD 坐标坐标 -1 . . . . . . Hard系统能够处理任意多点的虚交问题。 6、提醒用户:交互式设计的同时可以通过“输出文件”输出*.JDX和*.PQX文件以随时存储设计成果。

段码LCD液晶屏驱动方法

TFT液晶屏:https://www.sodocs.net/doc/a79957318.html, 段码LCD液晶屏驱动方法 段码LCD液晶屏驱动方法 首先,不要以为用单片机来驱动就以为段码屏是直流驱动的,其实,段码屏是交流驱动,什么是交流?矩形波,正弦波等。大家可能会经常用驱动芯片来玩,例如HT1621等,但是有些段式屏IO口比较少,或者说IO口充足的情况下,也可以省去写控制器的驱动了。与单片机接口方便,而后者驱动电流小,功耗低、寿命长、字形美观、显示清晰、视角大、驱动方式灵活、应用广泛。但在控制上LCD较复杂,因为LCD 电极之间的相对电压直流平均值必须为0,否则易引起LCD氧化,因此LCD不能简单地用电平信号控制,而要用一定波形的方波序列来控制。 LCD显示有静态和时分割两种方式,前者简单,但是需要较多的口线;后者复杂,但所需口线较少,这两种方式由电极引线的选择方式确定。下面以电子表的液晶显示为例,小时的高位同时灭或亮,分钟的高位在显示数码1~5时,其顶部和底部也是同时灭或亮,两个dot点也是同时亮或灭,其驱动方式是偏置比为1/2的时分割驱动,共有11个段电极和两个公共电极。但是,IO模拟驱动段式液晶有一个前提条件,就是IO必须是三态,为什么? 下面我们一起细细道来: 第一步,段码式液晶屏的重要参数:工作电压,占空比,偏压比。这三个参数非常重要,必须都要满足。 第二步,驱动方式:根据LCD的驱动原理可知,LCD像素点上只能加上AC电压,LCD显示器的对比度由COM脚上的电压值减去SEG脚上的电压值决定,当这个电压差大于LCD的饱和电压就能打开像素点,小于LCD阈值电压就能关闭像素点,LCD型MCU已经由内建的LCD驱动电路自动产生LCD驱动信号,因此只要I/O口能仿真输出该驱动信号,就能完成LCD的驱动。 段码式液晶屏幕主要有两种引脚,COM,SEG,跟数码管很像,但是,压差必须是交替变化,例如第一时刻是正向的3V,那么第二时刻必须是反向的3V,注意一点,如果给段码式液晶屏通直流电,不用多久屏幕就会废了,所以千万注意。下面我们来考虑如何模拟COM口的波形,以1/4D,1/2B为例子:

TFT-LCD液晶显示器的驱动原理

TFT-LCD液晶显示器的驱动原理 LCD显示器在近年逐渐加快了替代CRT显示器的步伐,你打算购买一台LCD吗?你了解LCD吗?液晶显示器和传统的CRT显示器,在其发光的技术原理上有什么不同?传统的CRT 显示器主要是依靠显象管内的电子枪发射的电子束射击显示屏内侧的荧光粉来发光,在显示器内部人造磁场的有意干扰下,电子束会发生一定角度的偏转,扫描目标单元格的荧光粉而显示不同的色彩。而TFT-LCD却是采用“背光(backlight)”原理,使用灯管作为背光光源,通过辅助光学模组和液晶层对光线的控制来达到较为理想的显示效果。 液晶是一种规则性排列的有机化合物,它是一种介于固体和液体之间的物质,目前一般采用的是分子排列最适合用于制造液晶显示器的nematic细柱型液晶。液晶本身并不能构发光,它主要是通过因为电压的更改产生电场而使液晶分子排列产生变化来显示图像。 液晶面板主要是由两块无钠玻璃夹着一个由偏光板、液晶层和彩色滤光片构成的夹层所组成。偏光板、彩色滤光片决定了有多少光可以通过以及生成何种颜色的光线。液晶被灌在两个制作精良的平面之间构成液晶层,这两个平面上列有许多沟槽,单独平面上的沟槽都是平行的,但是这两个平行的平面上的沟槽却是互相垂直的。简单的说就是后面的平面上的沟槽是纵向

排列的话,那么前面的平面就是横向排列的。位于两个平面间液晶分子的排列会形成一个Z轴向90度的逐渐扭曲状态。背光光源即灯管发出的光线通过液晶显示屏背面的背光板和反光膜,产生均匀的背光光线,这些光线通过后层会被液晶进行Z 轴向的扭曲,从而能够通过前层平面。如果给液晶层加电压将会产生一个电场,液晶分子就会重新排列,光线无法扭转从而不能通过前层平面,以此来阻断光线。 LCD由两块玻璃板构成,厚约1mm,其间由包含有液晶(LC)材料的5μm均匀间隔隔开。因为液晶材料本身并不发光,所以在显示屏两边都设有作为光源的灯管,而在液晶显示屏背面有一块背光板(或称匀光板)和反光膜,背光板是由荧光物质组成的可以发射光线,其作用主要是提供均匀的背景光源。背光板发出的光线在穿过第一层偏振过滤层之后进入包含成千上万水晶液滴的液晶层。液晶层中的水晶液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个像素。在玻璃板与液晶材料之间是透明的电极,电极分为行和列,在行与列的交叉点上,通过改变电压而改变液晶的旋光状态,液晶材料的作用类似于一个个小的光阀。在液晶材料周边是控制电路部分和驱动电路部分。当LCD中的电极产生电场时,液晶分子就会产生扭曲,从而将穿越其中的光线进行有规则的折射,然后经过第二层过滤层的过滤在屏幕上显示出来。 液晶显示器的缺点在于亮度、画面均匀度、可视角度和反应

WINDOWS驱动编程

WDM驱动程序开发之读写设备寄存器:KIoRange类 2009-11-09 14:05 WDM驱动程序开发之读写设备寄存器:KIoRange类收藏 KIoRange类: 一、Overview KIoRange类将一系列特殊的外围总线的地址映射到CPU总线的地址空间。CPU总线上的地址即可能在CPU的I/O空间,也可能在CPU的内存空间,这取决于平台和外围总线的控制方式。考虑到可移植性,所有对I/O周期(I/O cycle)进行译码的设备驱动程序必须用这个类对I/O的位置(location)进行正确的访问(access)。KIoRange是KPeripheralAddress类的派生类。 一旦映射关系建立起来,驱动程序就用KIoRange类的成员函数去控制设备的I/O寄存器。这个类提供了8位、16位和32位I/O访问控制的函数。这些函数是以内联(in-line)函数方式来使用的,它们调用系统内相应的宏来产生依赖于平台的代码。 对I/O位置(location)进行访问的另一种备选方案是创建一个KIoRegister 的实例。这要通过取得一个KIoRange对象的数组元素来实现。 为了访问一系列外围总线内存空间的地址,需要用KMemoryRange类。 二、Member Functions 1、KIoRange - Constructor (4 forms) 构造函数 【函数原型】 FORM 1: KIoRange( void ); FORM 2: (NTDDK Only) KIoRange( INTERFACE_TYPE IntfType, ULONG BusNumber , ULONGLONG BaseBusAddress, ULONG Count, BOOLEAN MapToSystemVirtual =TRUE ); FORM 3 (WDM): KIoRange( ULONGLONG CpuPhysicalAddress, BOOLEAN InCpuIoSpace, ULONG Count, BOOLEAN MapToSystemVirtual =TRUE

相关主题