WinCE 下光电编码器的驱动程序设计

合集下载

基于WinCE的Nand Flash硬件及驱动程序设计

基于WinCE的Nand Flash硬件及驱动程序设计

N n l h作 为一种 价格低 廉 , 写速 度快且 体积小 的存储 技术 , 手持 终端 的存储 应用 领域 中的竞争 a dFa s 读 在 力 日益 提升 。P A 5 X 2 5是 Itl 司专 为手 持设备 设计 的基 于 XSae构架 的高 性能处 理器 , 有丰 富 的外部 ne 公 cl 具 接 口, 作主频 高达 4 0MH 。Widw E是 微软公 司针对 个人 电脑 以外 的 电脑产 品所研 发 的嵌入 式 操作 工 0 z nos C
系统 ,以其 可裁减 性 、实 时性 以及 丰 富 的多媒 体 支 持 等优 势 ,已 经成 为嵌 入式 操 作 系统 主 流 平 台 之一 。
K K G 8 0 是三 星公 司生 产 的一款 N n ls , 者在 P A 5 9 8 OU M a dFah 笔 X 2 5及 WiC 42平 台基 础上 , 绍其 内部存 nE . 介
第2 7卷 第 2期
21 0 0年 6月
苏 州 科 技 学 院 学 报 ( 然 科 学 版) 自
J u n lo u h u Unv ri fS in ea d T c n lg ( trl in e o r a fS z o iest o ce c n e h ooy Naua e c ) y Sc
TO S P封 装 。其 内 部 由 8 1 2个 块 ( lc ) 成 , 个 块 分 成 6 9 Bo k 组 每 4页 ( a e , 页则 包 括 (k 6 ) ye , 中 P g)每 2 + 4 B ts其
6 B t 是空 闲区。C U访 问 N n ls 4 ye s P a dFah内部 的任 意字节 时 ,需 要至 少 1 2位 C lmnA des l ou d rs 和 9位 R w o

WinCE的LCD驱动编写指南

WinCE的LCD驱动编写指南

WinCE的LCD驱动编写指南LCD TO VGA Card Drivers For WINCE 4.2LCD转VGA输出视频卡基于WINCE 4.2的驱动编程在WIN CE操作系统中,LCD2VGA Card (简称)使用的是标准16BIT_TFT 真彩LCD的驱动程序。

在这里只以1024*768分辨率为例说明在WIN CE 4.2中驱动程序的修改事项,目标板的微处理器是S3C2410X。

在WIN CE 4.2中修改LCD驱动程序有五个相关文件,分别是:1. …\WINCE420\PLATFORM\SMDK2410\INC\s2410.h2. …\WINCE420\PLATFORM\SMDK2410\KERNEL\HAL\cfw.c3. …\WINCE420\PLATFORM\SMDK2410\DRIVERS\DISPLAY\ S3C2410LCD\s3c2410disp.cpp4. …\WINCE420\PLATFORM\SMDK2410\FILES\config.bib5. …\ WINCE420\PLATFORM\SMDK2410\FILES\platform.reg1.s2410.h…\WINCE420\PLATFORM\SMDK2410\INC\s2410.h主要有LCD控制器的寄存器定义、LCD控制器的工作时序定义、分辨率的定义等等。

红色部分为修改后的内容:#define LCDTYPE TFT16BPP#define LCD_TYPE TFTxxx_xxx#define SCR_XSIZE_TFT (1280)#define SCR_YSIZE_TFT (960)#define LCD_XSIZE_TFT (1024)#define LCD_YSIZE_TFT (768)VBPD ((2-1)&0xff)#define#defineVFPD ((2-1)&0xff)VSPW ((2-1) &0x3f)#defineHBPD ((16-1)&0x7f)#defineHFPD ((200-1)&0xff)#defineHSPW ((16-1)&0xff)#define#define CLKV AL_TFT (1) //这个值的定义在LCD初始化函数中并不用到,而是直接用数值表示。

Win CE驱动程序开发及测试流程

Win CE驱动程序开发及测试流程

6、ห้องสมุดไป่ตู้模拟器下面调试驱动程序
内核编译完毕后就可以在模拟器下面调试的驱动程序了, 首先单击菜单中的 “Target”并在弹出的菜单中选择“Configure Remote connection” ,弹出“Remote connection”设置对话框如图 9.8 所示。
图 9.8 “Remote Connection”属性对话框 在“Download”和“Kernel”下面都选择“Emulator”选项,设置完毕后单 击“确定”按钮,这个时候就可以使用模拟器来启动编译的内核了。单击菜单中 的“Target” ,在弹出的菜单中选择“Download Initialize” ,启动模拟器运行编 译的内核,这个时候就可以在 Debug 窗体内看到流接口驱动程序加载的情况 了。 打开 Remote Process Viewer, 定位到 device.exe, 从图 9.9 可以看到 mydriver.dll 已经在 device.exe 的模块列表中了。这说明 mydriver.dll 已经被作为一个驱动加 载了。
增加对驱动程序进行操作的函数,代码如下:
void WriteToDriver( ) { DWORD dwWritten; TCHAR *tcString=L"Demo String..."; HANDLE hDrv=CreateFile(L"DEM1:",GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ ATTRIBUTE_NORMAL,NULL); if (INVALID_HANDLE_VALUE == hDrv) { OutputDebugString(L"Failed to open Driver...\n"); } else { WriteFile(hDrv,(LPVOID)tcString,lstrlen(tcString)*sizeof(TCHAR ),&dwWritten,NULL); } CloseHandle(hDrv); } void ReadFromDriver( ) { DWORD dwRead; TCHAR tcTemp[30]; HANDLE hDrv=CreateFile(L"DEM1:",GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_A TTRIBUTE_NORMAL,NULL); if (INVALID_HANDLE_VALUE == hDrv) { OutputDebugString(L"Failed to open Driver...\n"); } else { memset(tcTemp,0x00,30*sizeof(TCHAR)); ReadFile(hDrv,tcTemp,30,&dwRead,NULL); MessageBox(NULL,tcTemp,L"Demo Data",MB_OK); } CloseHandle(hDrv); } void HandleIOCTL( ) { HANDLE hDrv=CreateFile(L"DEM1:",GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ ATTRIBUTE_NORMAL,NULL); TCHAR tcBuffer[10];

基于WinCE的I2C驱动程序设计

基于WinCE的I2C驱动程序设计

基于WinCE的I2C驱动程序设计摘要:将操作系统和相应硬件设备连接起来,编写联系硬件和软件的驱动程序至关重要。

本文主要讨论在WinCE操作系统下,如何设计实现S3C2410芯片具有I2C接口的驱动程序;详细介绍WinCE下,流驱动程序的编写方法,同时将驱动通过Platform Builder编译进操作系统,最后用动态链接库的方式提供给用户使用。

关键词:WinCE 流驱动 I2C总线驱动程序引言随着以计算机技术、通信技术和软件技术为核心的信息技术的迅速发展,嵌入式系统在各行业得到了广泛的应用,极大地推动了行业的渗透性应用。

嵌入式系统是“以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统”,由嵌入式硬件和嵌入式软件两部分组成。

嵌入式软件包括嵌入式操作系统和嵌入式应用软件。

Microsoft的桌面操作系统已经为人们熟悉和使用,嵌入式的操作系统Windows 也日益风行。

Windows 是Microsof t推出的功能强大的紧凑、高效、可伸缩的32位嵌入式操作系统,主要面对各种各样的嵌入式系统和产品。

该系统所具有的多线程、多任务、完全抢占式的特点是专为各种具有严格资源限制的硬件系统所设计的。

为了将操作系统和硬件设备连接起来,联系硬件和软件的驱动就显得很重要。

下面主要针对三星公司ARM9内核的芯片S3C2410进行分析,介绍在Windows 系统下进行底层设备驱动开发的方法并提供I2C通信的实例。

1 I2C通信协议及S3C2410芯片介绍I2C(Inter Integrated Circuit)总线是1980年由Philips公司推出的。

I2C总线用两条线(SDA和SCL)在总线和装置之间传递信息,在微控制器和外部设备之间进行串行通信或在主设备和从设备之间进行双向数据传送。

两条通信线通过上拉电阻被拉升至+5 V。

在控制系统中的每个集成电路可以通过一个CMOS缓冲器来读每一条线路,也可以通过一个栅极开路的FET管将每一条线的电平下拉。

光电编码器的工作原理和应用电路

光电编码器的工作原理和应用电路

光电编码器的工作原理和应用电路1 光电编码器的工作原理光电编码器(Optical Encoder)俗称“单键飞梭”,其外观好像一个电位器,因其外部有一个可以左右旋转同时又可按下的旋钮,很多设备(如显示器、示波器等)用它作为人机交互接口。

下面以美国Greyhill公司生产的光电编码器为例,介绍其工作原理及使用方法。

光电编码器的内部电路如图1所示,其内部有1个发光二极管和2个光敏三极管。

当左右旋转旋钮时,中间的遮光板会随旋钮一起转动,光敏三极管就会被遮光板有次序地遮挡,A、B相就会输出图2所示的波形;当按下旋钮时,2、3两脚接通,其用法同一般按键。

当顺时针旋转时,光电编码器的A相相位会比B相超前半个周期;反之,A相会比B相滞后半个周期。

通过检测A、B两相的相位就可以判断旋钮是顺时针还是逆时针旋转,通过记录A或B相变化的次数,就可以得出旋钮旋转的次数,通过检测2、3脚是否接通就可以判断旋钮是否按下。

其具体的鉴相规则如下:1.A为上升沿,B=0时,旋钮右旋;2.B为上升沿,A=l时,旋钮右旋;3.A为下降沿,B=1时,旋钮右旋;4.B为下降沿,A=O时,旋钮右旋;5.B为上升沿,A=0时,旋钮左旋;6.A为上升沿,B=1时,旋钮左旋;7.B为下降沿,A=l时,旋钮左旋;8.A为下降沿,B=0时,旋钮左旋。

通过上述方法,可以很简单地判断旋钮的旋转方向。

在判断时添加适当的延时程序,以消除抖动干扰。

2 WinCE提供的驱动模型WinCE操作系统支持两种类型的驱动程序。

一种为本地驱动程序,是把设备驱动程序作为独立的任务实现的,直接在顶层任务中实现硬件操作,因此都有明确和专一的目的。

本地设备驱动程序适合于那些集成到Windows CE平台的设备,诸如键盘、触摸屏、音频等设备。

另一种是具有定制接口的流接口驱动程序。

它是一般类型的设备驱动程序。

流接口驱动程序的形式为用户一级的动态链接库(DLL)文件,用来实现一组固定的函数称为“流接口函数”,这些流接口函数使得应用程序可以通过文件系统访问这些驱动程序。

WinCE流驱动程序设计概述

WinCE流驱动程序设计概述

微 处 理 机M I CROPROCESS ORSW inCE 流驱动程序设计概述顾峥浩,王自强,聂文华(南京大学电子科学与工程系,南京210093) 摘 要:介绍了W inCE 操作系统下流驱动的设计方法,并在I ntel 公司的DBPXA255开发板下提供了关于8位数码管LED 的设计实例。

关键词:W inCE;流驱动;DBPXA255中图分类号:TP316.7 文献标识码:B 文章编号:1002-2279(2007)03-0081-03The D e s i gn o f S tream I n te rface D ri ve r fo r W i nC EG U Zheng -hao,WANG Zi -qiang,N I E W en -hua(D epart m ent of Electronics and Engineering,N anjing U niversity,N anjing 210093,China ) Abstract:This paper intr oduces the strea m interface driver of W inCE,and p resents a sa mp le driver f or the Hex LED s of I ntel ’s DBPXA255.Key words:W inCE;Strea m interface driver;DBPXA2551 引 言W inCE 是一款由微软公司推出的面向嵌入式领域的操作系统,被广泛应用于手机、P DA 、平板电脑以及各种工控领域中。

由于嵌入式设备硬件平台的多样性,针对不同的硬件编写驱动程序,从而使W inCE 上层屏蔽底层硬件的多样性就显得尤为重要。

W inCE 的驱动按类型分有四种,分别为本地驱动(Native device driver )、流驱动、US B 驱动和网络驱动。

其中流驱动由于接口简单、支持硬件设备最多,因而最为常用。

WinCE的OLED驱动程序设计

WinCE的OLED驱动程序设计

WinCE的OLED驱动程序设计飞凌OK6410 -B 开发板基于三星公司最新的11 处理器S3C6410 , 拥有强大的内部资源和视频处理能力,可稳定运行在667 MHz 主频以上,支持MobileDDR 和多种NAND Flash .FL6410 开发板上集成了多种高端接口,如复合视频信号、摄像头、、SD 卡、液晶屏、以太网等,丰盛的接口可协助用户实现高端产品级设计。

维信诺VGG13264C 是132 列×64 行点阵的OLED 单色、字符、图形显示模块,用法单芯片SSD1303T6 举行驱动,具有8 位并行数据接口,模块内含132×64 显示数据RAM, 通过用户I/O 接口衔接到飞凌OK6410-B 开发板。

4.2 流接口驱动程序开发过程Windows CE 提供了两种编写流接口驱动的办法:(1)通过编写动态链接库的办法实现;(2)通过修改BSP的办法实现。

因为其次种办法可以加快开发进度,在该实例中,用法修改BSP 的办法举行流接口驱动程序开发,其开发步骤为:首先在BSP 中新建一个名目,编写驱动程序文件并确定驱动程序向外提供的接口函数,然后举行注册表设置,最后举行测试。

(1)驱动程序代码编写设备初始化用法OED_Init 函数实现,设备卸载用法OED_Deinit 函数实现。

在OED_Init 函数中,用法DrvLib_MapIoSpace 函数实现物理地址到虚拟地址映射;在OED_Deinit 函数中,用法VirtualFree 函数释放驱动程序用法的虚拟内存从而实现了设备的卸载。

设备的I/O 控制向设备发出指令,根据维信诺VGG13264C OLED 显示模块的时序关系,通过控制相应管脚的电平凹凸实现向设备发出指令。

设备的I/O 控制在OED_IOControl 函数中实现,函数部分代码如下:第1页共1页。

WinCE5_0下的MCX314设备驱动程序设计

WinCE5_0下的MCX314设备驱动程序设计

IST ISR1 … ISRn
驱动程序 可安装ISR
A0 所选择的 16 位寄存器分为低 8 位和高 8 位的寄存器。WR0 寄
ISR
OAL
存器主要设定命令,包括用于轴设定、命令字以及复位命令的各
位。某些命令在写入 WR0 之前,必须写入 WR6 和 WR7。
1.3 硬件电路连接方法
ISR
设置事件
设置 ID
MCX314 与外部交换数据,主要通过 16 位可写寄存器 息,所以在驱动程序设计中必须考虑中断的处理。WinCE 下中断
WR0~WR7 及 16 位可读寄存器 RR0~RR7 与外部交换数据。这 处理过程,如图 3 所示。
些寄存器可以以 16 位数据总线访问,也可以以 8 位数据总线访 问。当以 16 位数据总线访问时,地址线为 A2、A1、A0;假如用 8 位 数据总线访问时,地址线为 A3、A2、A1、A0;其中通过 A3 把 A2、A1、
输入
光 耦
输入 信号
A0 运动控制器 .
隔 离
. A3
输出
输出
信号
驱动
CSN
INTN
图 2 S3C2410 与 MCX314 连接框图 S3C2410 通过系统总线与 MCX314 相连接,上电时二者同时 复位;ARM 的 D0 至 D15 分别与 MCX314 的 16 根数据线相连 接,采用 16 位数据总线模式;ARM 的 A0 至 A3 分别连接 MCX314 的 4 根寄存器寻址线,在系统中 MCX314 的 CSN 引脚与 ARM 的 nGCS3 相连,所以 MCX314 的寄存器的地址为 0x18000000 至 0x18000007;MCX314 的中断输出引脚与 ARM 的 EINT0 相连接。

WINCE编写驱动程序

WINCE编写驱动程序

WINCE编写驱动程序(原创)转/lxzznn/blog/item/d5308ccbbdb56f1abf09e690.htmlWINCE添加驱动程序,目的为响应S3C2410的EINT7中断,使用了rGB2作为LED状态输出1.Kernel\Hal\cfw.cOEMInitInterrupts()使能EINT7、LED(Output)、触发方式2.Inc\oalintr.h(Inc\oalintr.inc)增加:#define SYSINTR_BEEP (SYSINTR_FIRMWARE+19)修改:_inline DWORD MapIrq2SysIntr(DWORD _Irq){if( _Irq<=18 )// 这里18改为19return ( SYSINTR_FIRMWARE + _Irq );elsereturn (0xffffffff);}3.Kernel\Hal\Arm\armint.cOEMInterruptHandler()//传说中的ISR此函数中添加:else if(IntPendVal == INTSRC_EINT4_7) // by xiaoyunsoft 2007-07-04 BEEP EINT7{s2410INT->rINTMSK |= BIT_EINT4_7;submask = s2410IOP->rEINTPEND;if (submask & (1<<7)){s2410IOP->rEINTMASK |= (1<<7);s2410IOP->rEINTPEND = (1<<7);s2410INT->rSRCPND = BIT_EINT4_7;if (s2410INT->rINTPND & BIT_EINT4_7){s2410INT->rINTPND = BIT_EINT4_7;}RETAILMSG(1,(TEXT("BEEP INTERRUPT HANDLERED! by xiaoyunsoft\r\n")));return SYSINTR_BEEP;}else{s2410INT->rSRCPND = BIT_EINT4_7;if (s2410INT->rINTPND & BIT_EINT4_7){s2410INT->rINTPND = BIT_EINT4_7;}RETAILMSG(1,(TEXT("ERR INT4_7 Handler! by xiaoyunsoft\r\n")));return SYSINTR_NOP;}}4.Kernel\Hal\cfw.cOEMInterruptEnable()增加:case SYSINTR_BEEP:s2410IOP->rEINTPEND = 0x80;s2410INT->rSRCPND = BIT_EINT4_7;if (s2410INT->rINTPND & BIT_EINT4_7){s2410INT->rINTPND = BIT_EINT4_7;}RETAILMSG(1,(TEXT("Beep Interrupt Enable Called by xiaoyunsoft \r\n")));s2410IOP->rEINTMASK &= ~0x80;s2410INT->rINTMSK &= ~BIT_EINT4_7;break;OEMInterruptDisable()增加:case SYSINTR_BEEP:s2410INT->rINTMSK |= BIT_EINT4_7;s2410IOP->rEINTMASK |= 0x80;break;OEMInterruptDone()增加:case SYSINTR_BEEP:s2410INT->rINTMSK &= ~BIT_EINT4_7;s2410IOP->rEINTMASK &= ~0x80;5.编写Beep流驱动程序:打开PB工程,File->New Project or File Name->Project->Deynamic Library源程序见下面的附16.编辑注册表Platform.reg,系统启动时自动加载Beep.dll添加:;=============== Beep by xiaoyunsoft 2007-08-04 ============================ [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Beep]"Index"=dword:1"Prefix"="BEP""Dll"="Beep.dll""Order"=dword:07.编辑Platform.bib文件添加:;Beep Driver xiaoyunsoft 2007-08-04Beep.dll $(_FLATRELEASEDIR)\Beep.dll NK SH注:EVC与PB环境都有查看远程CE注册表的功能,在Tools菜单下。

光电编码器的工作原理和应用电路

光电编码器的工作原理和应用电路

光电编码器的工作原理和应用电路1 光电编码器的工作原理光电编码器(Optical Encoder)俗称“单键飞梭”,其外观好像一个电位器,因其外部有一个可以左右旋转同时又可按下的旋钮,很多设备(如显示器、示波器等)用它作为人机交互接口。

下面以美国Greyhill公司生产的光电编码器为例,介绍其工作原理及使用方法。

光电编码器的内部电路如图1所示,其内部有1个发光二极管和2个光敏三极管。

当左右旋转旋钮时,中间的遮光板会随旋钮一起转动,光敏三极管就会被遮光板有次序地遮挡,A、B相就会输出图2所示的波形;当按下旋钮时,2、3两脚接通,其用法同一般按键。

当顺时针旋转时,光电编码器的A相相位会比B相超前半个周期;反之,A相会比B相滞后半个周期。

通过检测A、B两相的相位就可以判断旋钮是顺时针还是逆时针旋转,通过记录A或B相变化的次数,就可以得出旋钮旋转的次数,通过检测2、3脚是否接通就可以判断旋钮是否按下。

其具体的鉴相规则如下:1.A为上升沿,B=0时,旋钮右旋;2.B为上升沿,A=l时,旋钮右旋;3.A为下降沿,B=1时,旋钮右旋;4.B为下降沿,A=O时,旋钮右旋;5.B为上升沿,A=0时,旋钮左旋;6.A为上升沿,B=1时,旋钮左旋;7.B为下降沿,A=l时,旋钮左旋;8.A为下降沿,B=0时,旋钮左旋。

通过上述方法,可以很简单地判断旋钮的旋转方向。

在判断时添加适当的延时程序,以消除抖动干扰。

2 WinCE提供的驱动模型WinCE操作系统支持两种类型的驱动程序。

一种为本地驱动程序,是把设备驱动程序作为独立的任务实现的,直接在顶层任务中实现硬件操作,因此都有明确和专一的目的。

本地设备驱动程序适合于那些集成到Windows CE平台的设备,诸如键盘、触摸屏、音频等设备。

另一种是具有定制接口的流接口驱动程序。

它是一般类型的设备驱动程序。

流接口驱动程序的形式为用户一级的动态链接库(DLL)文件,用来实现一组固定的函数称为“流接口函数”,这些流接口函数使得应用程序可以通过文件系统访问这些驱动程序。

基于Windows CE的ADS7864驱动程序设计

基于Windows CE的ADS7864驱动程序设计
WidwsC . no E 4 2下的 流 接 口驱 动 程序 设 计 , 分析 了相 关 的 源代 码 和 注 册 表 。 实验证 明 , 驱 动 程序 正确 可行 , 行稳 定 该 运
可靠 , 可以为其他 类似设备驱动的编写提供借鉴 。
关 键词 :Wi o E;A 7 6 ;驱 动 程 序 ;嵌 入 式 n wsC d DS 8 4
XXX l i,XXX Dei t nt ni .XXX Op ,XXX Cl s en o e。XXX Ope n.
_ _
式领域中 , / A D采样模块 的应用相 当普遍 。A 76 作为 一个 DS 8 4
个管理 外围设备的用户级 的动态链接库 ( L , D L)它是为连接
n o sC 平 / 度模块 化 、 良好 实时性 、 大通பைடு நூலகம்能力 以及友好 的人机 交互界 到 Wid w E 台上的外围设备而 设计的 。本文讨论 的A D 强 面 等特 点。随着计算机技术的不断发 展和消费类 电子产 品的 驱动就 属于流接 口设备驱动 。 普及 , n o sC Wid w E在嵌入式领域得到 了广泛的应用 。在嵌 入
Ab t a t W i t e e e o m e t f mb d e t c n l g , v ro s e i h r l a e p le t e e d d e i e m o e n mo e sr c : t h d v lp n o e e d d e h o o y h a i u p rp e a s r a p i d o mb d e d v c s r a d r. Ar u d h d v lpme t r c s o n ADS 8 4 rv r h u a o o n t e e e o n p o e s f a 7 6 d i e ,t e s ge f ADS 8 4 s n r d c d nd a ig a u g’ 3 7 6 i i to u e ,a t kn S ms n ¥ C24 0 1 CP U a t e a d r p a f r s h h r wa e l t m,t e r g a o h p o r mmi g o n f ADS 8 4’ s e m i t ra e r e u d r W i d ws 76 S ta r n e f c d v r n e n o CE . s o l td,t e e a e i 4 2 i c mp ee h r lt d s u c c d a d e it a e n l z d. Th e pe me t r v s h t he rv r s o r c a d r c ia l , sa e n r la l i o r e o e n r g sr y r a a y e e x r n p o e t a t d i e i i c r e t n p a tc b e tbl a d ei b e n r n i g n t c n p o i e r f r n e f r o h r sm i r d v c rv r p o r mm i g u n n ,a d i a r v d e e e c o t e i l e i e d i e r g a a n. Ke r s:W i d ws CE;AD¥ 8 4;d i e ; e e d d y wo d no 76 rv r mb d e

蓝光LED电源驱动系统、光电编码器及电子多圈编码器的制作方法

蓝光LED电源驱动系统、光电编码器及电子多圈编码器的制作方法

蓝光LED电源驱动系统、光电编码器及电子多圈编码器的制作方法近年来,随着科技的不断进步和人们对生活质量的努力探求,各种新技术不断涌现。

其中,蓝光LED电源驱动系统、光电编码器和电子多圈编码器已经开始广泛应用于各种领域。

这里将认真介绍这三种技术的制作方法。

一、蓝光LED电源驱动系统1.材料准备:电源电容、散热器、蓝光LED灯珠、适配器、稳压管、电容、电阻、二极管等。

2.制作步骤:(1)首先制作电源电路,将电容和散热器连接,作为电源开关,避开高温爆炸。

(2)连接蓝光LED灯圈。

通过适配器将电源和稳压管进行连接,将蓝光LED灯圈连接到稳压管的输出端。

需要注意的是,蓝光LED灯珠的电流值一般不能超过20mA,电压一般在3V左右。

(3)制作掌控电路。

通过连接电容、电阻和二极管等元器件,掌控稳压管的电流值和输出电压,在某种程度上掌控蓝光LED灯珠的亮度。

(4)最后通过测试确定电源电路的质量和性能。

二、光电编码器1.材料准备:接口、光电传感器、导轨以及相关元器件。

2.制作步骤:(1)首先确定光电传感器需要安装的位置,并将其固定在机器上。

(2)连接光电传感器和接口,即将光电传感器的输出接口和接口的输入端进行针脚连接。

(3)将导轨与机器整体一并固定,保证光电传感器可以精准读取导轨的运动状态。

(4)完成以上步骤后,可以使用测试设备检查编码器的精准性和性能,并进行相应的调整。

三、电子多圈编码器1.材料准备:圆盘、隔离环、传感器、接口、连接线、固定螺钉以及相应的工具。

2.制作步骤:(1)首先安装电子多圈编码器的传感器,将其固定在圆盘上。

(2)将圆盘和隔离环进行针脚连接,并将隔离环固定在旋转轴上。

(3)连接传感器和接口,确保可以实时读取编码器的输出信号。

(4)将连接线固定在传感器和接口的连接端口上,保证连接线的坚固性,并进行测试和调整。

总之,蓝光LED电源驱动系统、光电编码器和电子多圈编码器在各自的领域中具有紧要的应用价值。

一个旋转编码器+LCD1602的驱动程序

一个旋转编码器+LCD1602的驱动程序

#include<reg51.h>#include <MATH.H>/**********************************宏定义字符串**********************************/#define uchar unsigned char#define LCD_DAT P0 //LCD数据/指令输入端(D7,D6,D5,D4,D3,D2,D1,D0)sbit LCD_RW = P2^5;//LCD读写控制端sbit LCD_RS = P2^6;//LCD指令/数据控制端sbit LCD_E = P2^7; //LCD使能控制端sbit AA = P1^0;//接编码器A端sbit BB = P1^1;//接编码器B端/**********************************任意ms延时函数**********************************/void delayms(uchar count){uchar i,j;for(i = 0; i < count; i++)for(j = 0; j < 120; j++);}/**********************************5ms延时函数**********************************/void delay(void) //延时5ms{uchar a, b;for(b = 19; b > 0; b--)for(a = 130; a > 0; a--);}/**********************************LCD写函数**********************************/void LCD_W(uchar m, uchar com_dat) //m=0:写指令,m=1:写数据{LCD_RS = m;LCD_RW = 0;//写操作LCD_E = 0; //使能禁止LCD_DAT = com_dat; //在指令/数据端置数delay(); //5ms延时LCD_E = 1; //使能允许delay(); //5ms延时LCD_E = 0; //使能禁止}/**********************************LCD初始化函数**********************************/void LCD_INIT(){delay();delay();delay(); //5ms延时LCD_W(0, 0x38); //不检测忙信号delay();LCD_W(0, 0x38); //不检测忙信号delay();LCD_W(0, 0x38); //不检测忙信号LCD_W(0, 0x38); //显示模式LCD_W(0, 0x08); //显示关闭LCD_W(0, 0x06); //光标移动LCD_W(0, 0x0c); //显示开和光标设置}/**********************************LCD清屏函数**********************************/void CLS(){LCD_W(0, 0x01); //清屏}/**********************************LCD定位函数**********************************/void LOCATE(uchar H, uchar L){if(H == 1) //如果是第一行LCD_W(0, 0x80 + L - 1); //定位在第一行第L列elseLCD_W(0, 0x80 + 0x40 + L - 1); //否则定位在第二行第L列}/**********************************LCD显示数值函数**********************************/void LCD(unsigned long num){char n, m;unsigned long ww;if(num > 9) //两位数以上进行处理显示{n = log10(num); //取数值的位数for(m = n; m >= 0; m--) //从高位开始输出{ww = (num / pow(10, m)); //从高位向低位依次取数ww = ww % 10; //取各次的最低位数LCD_W(1, 48 + ww); //输出}}else LCD_W(1, 48 + num); //一位数直接显示LCD_W(1, ' '); //显示空格LCD_W(1, ' '); //显示空格LCD_W(1, ' '); //显示空格}/**********************************主函数**********************************/void main(){uchar kkk, keys, tmp = 1;LCD_INIT();//LCD初始化CLS();//清屏while(1){if(AA == 0)//开始检测是否旋转了开关{delayms(10);//消除抖动if(AA == 0) //确实是旋转了,进行正反转判断{if(BB == 0)//正转,进行正转处理{tmp = tmp * 2;//为了使LED正向递增if(tmp == 0)tmp = 128;//达到最大值,不再加kkk = '+';//正转显示 +}if(BB == 1)//反转,进行反转处理{tmp = tmp / 2;//为了使LED反向递减if(tmp == 0)tmp = 1;//达到最小值,不再减kkk = '-';//反转显示 -}}LOCATE(1,1);//定位第 1 行 1 列LCD(tmp);//显示数值LOCATE(1,5);//定位第 1 行 5 列LCD_W(1, kkk);//显示字符keys = 0;//延时等待计数器while(AA == 0)//等待开关A端复位(断开),防止出现乱加减的现象{delayms(20);//延时等待keys++;//计数器加 1if(keys == 50)break;//达到 1 秒没有复位,开关卡住了,退出继续扫描开关}}P3 = ~tmp; //输出到P0}}。

基于WinCE的OLED驱动程序设计

基于WinCE的OLED驱动程序设计

基于WinCE的OLED驱动程序设计
随着计算机技术和嵌入式技术的迅猛发展,嵌入式软、硬件设计需
求越来越广泛,嵌入式软件开发,特别是嵌入式软件的驱动开发,成为一
个热点。

Windows CE 是一个新的、可移植的、实时的、模块化的操作系统,具有简捷、高效的完全抢先式多任务操作核心,支持强大的通信和在进行嵌入
式Windows CE 项目开发的过程中,经常需要根据需求定制显示屏,如何为定制的显示屏开发Windows CE 驱动程序成为嵌入式系统开发的关键步骤。

本文在深入研究Windows CE 驱动程序工作原理的基础上,以维信诺VGG13264C 132 乘以64 OLED 显示模块的WindowsCE 驱动程序设计为例,详细阐述了嵌入式Windows CE 驱动程序的开发过程,并对设计实现的驱动程序进行了测试。

1 Window CE 的系统体系结构
Windows CE 是微软设计开发的一种可升级的抢先式多任务32 位实时操作系统。

一个基于Windows CE 的平台主要由以下几部分组成:Windows CE 内核组件、OAL 层和驱动程序。

OAL 层和驱动程序作为目标设备和Windows CE 内核组件之间的接口,将操作系统上层与硬件隔离,便于支持硬件扩展和即插即用功能,
2 Windows CE 中断处理
Windows CE 将中断处理分为两个步骤:中断服务例程(ISR) 和中断服务线程(IST)。

把每个硬件的设备中断请求(IRQ) 和一个ISR 联系起来,当一个中断发生并未被屏蔽时,内核调用该中断注册的ISR.因为ISR 运行于内核模式,所以应设计得尽可能短,ISR 引导内核调度和启动合适的IST,IST 在。

WinCE流驱动程序设计概述

WinCE流驱动程序设计概述

Th sg fSte m n e f c ie iCE e De i n o r a l t r e Dr r orW n a v f
GU Z e g—h o, ANG Z —q a g N E W e —h a hn a W i in , I n u
( eat etfEet n sadE gne n N n n nv sy N n n 10 3 C i ) Dprm n l r i n n i r g, aj g U iri , aj g2 09 , h a o co c ei i e t i n
1 引 言
Wi E是 一 款 由微 软 公 司推 出 的 面 向嵌 人 式 n C 领域 的操 作 系统 , 广 泛应 用 于手 机 、 D 平 板 电 被 P A、
S 11 A 10的新一代嵌 入式应用 处理 器, 属于 8 _ r m系 列, 它拥有 T u b h m 压缩指令、4 6 位长乘法指令、 增强 型 D P指 令 等 先 进 特 性 , 集 成 了众 多 的外 部 接 S 并
驱动。其中流驱动由于接 口简单、 支持硬件设备最
多, 因而最 为 常用 。下 面 将结 合 D P A 5 B X 25开发 板
D IE SB i n 。例如音频设备 ( vD v 的加 RV R \u I” h Wae e ) 载信息 : f K Y— O A —M C IEi resi,hni E L C L A HN D vr u I H i B i
Wae e \ vD v ]
”Prfx = ”W AV ” e i”
中流驱动的一个简单实例 , 详细说 明其设计方法 。
2 流 驱 动 开 发 的 基 本 知 识
2 1 开发 WiC . n E驱动 的基本 工具

光电编码器:WinCE下光电编码器的驱动程序

光电编码器:WinCE下光电编码器的驱动程序

光电编码器:WinCE下光电编码器的驱动程序设计疯狂代码 / ĵ:http://NetworkProgramming/Article33581.html 作者:杨振坤 甘朝晖 蒋旻引言近年来嵌入式技术发展迅速嵌入式系统在各行各业得到了广泛应用然而由于嵌入式计算机专用性系统硬件、软件结构千差万别其输入设备也不再像通用计算机那样单嵌入式计算机输入设备般有鼠标、键盘、触摸屏、按钮、旋钮等而光电编码器(俗称“单键飞梭”)作为种输入设备由于其具有输入灵活简单可靠等特点因此特别适合应用在嵌入式仪器和手持式设备上整个系统可以只用个键作为输入触摸屏由于其方便灵活、节省空间、界面直观等特点也备受青睐但存在寿命短长时间使用容易产生误差等缺点如果用光电编码器辅助触摸屏作为输入设备必将大大增强系统可靠性使得人机接口更加人性化但由于光电编码器并不是WinCE标准输入设备因此其驱动在嵌入式操作系统Windows CE Platform Builder中并未给出本文以三星公司S3C2410(ARM9芯片)为CPU嵌入式系统开发板为平台详细阐述了嵌入式操作系统WinCE下光电编码器驱动设计方法以供同行参考1 光电编码器工作原理光电编码器(Optical Encoder)俗称“单键飞梭”其外观好像个电位器因其外部有个可以左右旋转同时又可按下旋钮很多设备(如显示器、示波器等)用它作为人机交互接口下面以美国Greyhill公司生产光电编码器为例介绍其工作原理及使用方法光电编码器内部电路如图1所示其内部有1个发光二极管和 2个光敏三极管当左右旋转旋钮时中间遮光板会随旋钮起转动光敏三极管就会被遮光板有次序地遮挡A、B相就会输出图2所示波形;当按下旋钮时2、3两脚接通其用法同般按键图1 ; ;光电编码器内部电路图2 ; ;光电编码器输出波形当顺时针旋转时光电编码器A相相位会比B相超前半个周期;反之A相会比B相滞后半个周期通过检测A、B两相相位就可以判断旋钮是顺时针还是逆时针旋转通过记录A或B相变化次数就可以得出旋钮旋转次数通过检测2、3脚是否接通就可以判断旋钮是否按下其具体鉴相规则如下:① ; ;A为上升沿B=0时旋钮右旋;② ; ;B为上升沿A=1时旋钮右旋;③ ; ;A为下降沿B=1时旋钮右旋;④ ; ;B为下降沿A=0时旋钮右旋;⑤ ; ;B为上升沿A=0时旋钮左旋;⑥ ; ;A为上升沿B=1时旋钮左旋;⑦ ; ;B为下降沿A=1时旋钮左旋;⑧ ; ;A为下降沿B=0时旋钮左旋通过上述方法可以很简单地判断旋钮旋转方向在判断时添加适当延时以消除抖动干扰2 ; ;WinCE提供驱动模型WinCE操作系统支持两种类型驱动种为本地驱动是把设备驱动作为独立任务实现直接在顶层任务中实现硬件操作因此都有明确和专目本地设备驱动适合于那些集成到Windows CE平台设备诸如键盘、触摸屏、音频等设备另种是具有定制接口流接口驱动它是般类型设备驱动流接口驱动形式为用户级动态链接库(DLL)文件用来实现组固定称为“流接口”这些流接口使得应用可以通过文件系统访问这些驱动本文讨论光电编码器就属于流接口设备2.1 ; ;流设备驱动加载过程系统运行时会启动负责流驱动加载进程DEVICE.exeDEVICE.exe进程对驱动加载是通过装载注册表列举器(RegEnum.dll)实现在中所有设备资源信息都由OAL负责记录在系统注册表中RegEnum.dll个个扫描注册表项HEKY_LOCAL_MACHINE\Driver\BuiltIn下子键发现新设备就根据每个表项内容进行硬件设备化2.2 ; ;中断与中断处理如果个驱动要处理个中断那么驱动需要首先使用CreateEvent建立个事件 InterruptInitialize将该事件与中断标识绑定然后驱动中IST就可以使用WaitForSingleObject来等待中断发生在个硬件中断发生之后操作系统进入异常处理异常处理OALOEMInterruptHandler该检测硬件并将中断标识返回给系统;系统得到该中断标识便会找到该中断标识对应事件并唤醒等待相应事件线程(IST)然后IST进行中断处理处理完成之后IST需要InterruptDone来告诉操作系统中断处理结束操作系统再次OAL中OEMInterruptDone最后完成中断处理图3为中断处理流程框图图3 ; ;中断处理流程框图3 ; ;光电编码器驱动设计3.1 ; ;光电编码器与S3C2410硬件接口光电编码器与S3C2410接口电路如图4所示光电编码器A、B相为集电极开路输出由于S3C2410I/O口电平为3.3 V所以将其通过电阻上拉到3.3 V后再分别接到CPUEINT0和EINT1上;将P1直接接到3.3 VP2通过电阻下拉到GND当旋钮按下时P2口输出为高电平否则输出为低电平图4 ; ;光电编码器与S3C2410接口电路工作状态下将EINT0、EINT1配置成上升沿和下降沿均触发外部中断将EINT2配置成上升沿触发中断旋钮按下时EINT2引脚产生上升沿触发中断3.2 ; ;外部中断化及中断服务编写首先必须完成CPUI/O口和中断化工作然后再编写中断处理具体分为4个步骤:① ; ;化I/O口在Port_Init中将EINT0和EINT1化为上升沿和下降沿均触发中断将EINT2化为上升沿触发中断② ; ;添加中断号在oalr.h下添加光电编码器中断向量宏定义代码为# SYSINTR_OED(SYSINTR_FIRMWARE+20)③ ; ;添加中断化、禁止、复位等,分别在OEMInterruptEnable、OEMInterruptDisable、OEMInterruptDone等中加入相关代码④ ; ;返回中断标识,由OEMInterruptHandler返回中断标识(SYSINTR_OED)2008-12-12 16:01:22疯狂代码 /。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WinCE下光电编码器的驱动程序设计作者:武汉科技大学杨振坤甘朝晖蒋旻来源:单片机及嵌入式系统应用摘要光电编码器以其体积小、输入灵活等特点作为输入设备,广泛应用于各种嵌入式仪器中。

本文讨论光电编码器的原理及使用方法;以三星公司ARM9芯片S3C2410为CPU的嵌入式系统开发板为平台,详细阐述嵌入式操作系统WinCE下光电编码器驱动程序的设计方法。

实验证明,该方法正确可行,程序运行稳定可靠。

关键词嵌入式系统 WinCE 光电编码器 S3C2410引言近年来,嵌入式技术发展迅速,嵌入式系统在各行各业得到了广泛的应用。

然而,由于嵌入式计算机的专用性,系统的硬件、软件结构千差万别,其输入设备也不再像通用计算机那样单一。

嵌入式计算机的输入没备一般有鼠标、键盘、触摸屏、按钮、旋钮等,而光电编码器(俗称“单键飞梭”)作为一种输入设备,由于其具有输入灵活,简单可靠等特点,因此特别适合应用在嵌入式仪器和手持式设备上,整个系统可以只用一个键作为输入。

触摸屏由于其方便灵活、节省空间、界面直观等特点也备受青睐,但存在寿命短,长时间使用容易产生误差等缺点。

如果用光电编码器辅助触摸屏作为输入设备,必将大大增强系统的可靠性,使得人机接口更加人性化。

但由于光电编码器并不是WinCE的标准输入设备,因此其驱动程序在嵌入式操作系统Windows CE Platform Builder中并未给出。

本文以三星公司S3C2410(ARM9芯片)为CPU的嵌入式系统开发板为平台,详细阐述了嵌入式操作系统WinCE下光电编码器驱动程序的设计方法,以供同行参考。

1 光电编码器的工作原理光电编码器(Optical Encoder)俗称“单键飞梭”,其外观好像一个电位器,因其外部有一个可以左右旋转同时又可按下的旋钮,很多设备(如显示器、示波器等)用它作为人机交互接口。

下面以美国Greyhill公司生产的光电编码器为例,介绍其工作原理及使用方法。

光电编码器的内部电路如图1所示,其内部有1个发光二极管和2个光敏三极管。

当左右旋转旋钮时,中间的遮光板会随旋钮一起转动,光敏三极管就会被遮光板有次序地遮挡,A、B相就会输出图2所示的波形;当按下旋钮时,2、3两脚接通,其用法同一般按键。

当顺时针旋转时,光电编码器的A相相位会比B相超前半个周期;反之,A相会比B相滞后半个周期。

通过检测A、B两相的相位就可以判断旋钮是顺时针还是逆时针旋转,通过记录A或B相变化的次数,就可以得出旋钮旋转的次数,通过检测2、3脚是否接通就可以判断旋钮是否按下。

其具体的鉴相规则如下:①A为上升沿,B=0时,旋钮右旋;②B为上升沿,A=l时,旋钮右旋;③A为下降沿,B=1时,旋钮右旋;④B为下降沿,A=O时,旋钮右旋;⑤B为上升沿,A=0时,旋钮左旋;⑥A为上升沿,B=1时,旋钮左旋;⑦B为下降沿,A=l时,旋钮左旋;⑧A为下降沿,B=0时,旋钮左旋。

通过上述方法,可以很简单地判断旋钮的旋转方向。

在判断时添加适当的延时程序,以消除抖动干扰。

2 WinCE提供的驱动模型WinCE操作系统支持两种类型的驱动程序。

一种为本地驱动程序,是把设备驱动程序作为独立的任务实现的,直接在顶层任务中实现硬件操作,因此都有明确和专一的目的。

本地设备驱动程序适合于那些集成到Windows CE平台的设备,诸如键盘、触摸屏、音频等设备。

另一种是具有定制接口的流接口驱动程序。

它是一般类型的设备驱动程序。

流接口驱动程序的形式为用户一级的动态链接库(DLL)文件,用来实现一组固定的函数称为“流接口函数”,这些流接口函数使得应用程序可以通过文件系统访问这些驱动程序。

本文讨论的光电编码器就属于流接口设备。

2.1 流设备驱动加载过程WinCE.NET系统运行时会启动负责流驱动的加载进程DEVICE.exe。

DEVICE.exe 进程对驱动的加载是通过装载注册表列举器(RegEnum.dll)实现的。

在WinCE.NET中,所有设备的资源信息都由OAL负责记录在系统注册表中,RegEnum.dll一个一个扫描注册表项HEKY_LOCAL_MACHINE\Driver\BuiltIn下的子键,发现新设备就根据每个表项的内容进行硬件设备初始化。

2.2 中断与中断处理如果一个驱动程序要处理一个中断,那么驱动程序需要首先使用CreateEvent函数建立一个事件,调用InterruptInitialize函数将该事件与中断标识绑定。

然后驱动程序中的IST就可以使用WaitForSing|eObject函数来等待中断的发生。

在一个硬件中断发生之后,操作系统进入异常处理程序,异常处理程序调用OAL的OEMInterruptHandler函数,该函数检测硬件并将中断标识返回给系统;系统得到该中断标识便会找到该中断标识对应的事件,并唤醒等待相应事件的线程(IST),然后IST进行中断处理。

处理完成之后,IST需要调用InterruptDone函数来告诉操作系统中断处理结束,操作系统再次调用OAL中的OEMInterruptDone函数,最后完成中断的处理。

图3为WinCE.NET中断处理的流程框图。

3 光电编码器驱动程序的设计3.1 光电编码器与S3C2410的硬件接口光电编码器与S3C24lO的接口电路如图4所示。

光电编码器的A、B相为集电极开路输出,由于S3C2410的I/O口电平为3.3 V,所以将其通过电阻上拉到3.3V后再分别接到CPU的EINT0和EINT1上;将Pl直接接到3.3V,P2通过电阻下拉到GND。

当旋钮按下时,P2口输出为高电平,否则输出为低电平。

工作状态下,将EINTO、EINTl配置成上升沿和下降沿均触发的外部中断,将EINT2配置成上升沿触发的中断,旋钮按下时EINT2引脚产生上升沿触发中断。

3.2 外部中断初始化及中断服务程序的编写首先必须完成CPU的I/O口和中断的初始化工作,然后再编写中断处理程序。

具体分为4个步骤:①初始化I/O口。

在Port_Init()函数中,将EINT0和EINTl初始化为上升沿和下降沿均触发的中断。

将EINT2初始化为上升沿触发的中断。

②添加中断号。

在oalint.h下添加光电编码器中断向量的宏定义。

代码为#define SYSINTR_OED(SYSINTR_FIRMWARE+20)③添加中断的初始化、禁止、复位等函数,分别在OEMInterruptEnable()、OEMInterruptDisable()、OEM-InterruptDone()等函数中加入相关代码。

④返同中断标识,由OEMInterruptHandler()函数返回中断标识(SYSINTR_OED)。

3.3 编写流接口驱动程序Windows CE.net把中断处理分成两个部分:中断服务程序(ISR)和中断服务线程(IST)。

TSR通常要求越短、越快越好,它的唯一任务就是返回中断标识。

正由于ISR很小,只能做少量的处理,因此中断处理器就调用IST执行大多数的中断处理。

中断服务线程(IST)在从waitForSingleObject()函数得到中断已经发生的信号前一直保持空闲;当接收到中断信号后,它就在本机设备驱动程序的PDD层调用子程序,这些程序反过来访问硬件以获得硬件的状态。

IST使用InterruptInitialize()函数来注册自己,然后使用WaitForSingleObject()函数等待中断信号。

如果这时中断信号到来,则应将光电编码器的状态记录下来,保存在变量OED_Status中。

OED_Status=1表示旋钮按下,OED_Status=2表示旋钮逆时针旋转,OED_Status=3表示旋钮顺时针旋转。

这里还有一种比较简单的鉴相规则,具体步骤是,当创建线程时读出EINTl的电平状态并保存在变量PreEINTl中,每次中断到来时首先判断EINT2是否为高电平。

如果为高电平,则说明按钮按下;如果EINT2为低电平,则判断EINTO电平是否与PreEINTl相同。

如果相同,则说明旋钮逆时针旋转;反之,旋钮顺时针旋转,判断的流程如图5所示。

Windows CE流接口驱动程序模型要求驱动程序开发者编写10个接口函数,针对光电编码器的驱动主要应完成设备初始化和数据读取2个函数的编写。

WindowsCE设备文件名前缀由3个大写字母组成,操作系统使用这3个字母来识别与流接口驱动程序相对应的设备。

这里定义设备文件名前缀为“OED”(Optical Encoder),其中设备初始化函数OED_Init()在Windows CE装载驱动程序时用于创建中断事件和中断服务线程。

在函数OED_Read()中将光电编码器的状态(OED_Status)返回。

3.4 封装驱动程序并加入到WinCE中根据上述方法编译出动态链接库(DLL)还不够,因为它的接口函数还没有导出,还需要告诉链接程序输出什么样的函数,因此必须建立一个后缀名为def的文件。

在本设计中为OpticalEnccder.def。

下面是此文件的内容:一个具体的流接口驱动程序和注册表是密不可分的。

向WinCE内核添加注册表项的方法有两种:一种是直接修改Platform Builder下的reg文件;另一种是自己编写一个注册表文件,通过添加组件的方法将动态链接库文件添加到内核中。

这里用第2种方法,将OpticalEncoder.dll添加到内核中。

编写的注册表文件内容如下:最后编写一个CEC文件,完成对定制内核注册表部分的修改并将OpticalEncoder.dll 添加到系统内核中去,然后在Platform Builder中就可以直接添加已经编写好的驱动程序了。

结语本文主要介绍了光电旋转编码器的原理及应用方法,并详细介绍了WinCE驱动程序的结构,成功地开发出了光电编码器在嵌入式操作系统WinCE下的驱动程序。

实验证明,该方法正确可行,程序运行稳定可靠。

相关文档
最新文档