中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 光電顯示 > 設(shè)計(jì)應(yīng)用 > 光電旋轉(zhuǎn)編碼器的原理及應(yīng)用方法

        光電旋轉(zhuǎn)編碼器的原理及應(yīng)用方法

        作者: 時(shí)間:2012-03-13 來源:網(wǎng)絡(luò) 收藏

        WinCE下的驅(qū)動程序設(shè)計(jì)

        本文引用地址:http://www.antipu.com.cn/article/168291.htm

        近年來,嵌入式技術(shù)發(fā)展迅速,嵌入式系統(tǒng)在各行各業(yè)得到了廣泛的。然而,由于嵌入式計(jì)算機(jī)的專用性,系統(tǒng)的硬件、軟件結(jié)構(gòu)千差萬別,其輸入設(shè)備也不再像通用計(jì)算機(jī)那樣單一。嵌入式計(jì)算機(jī)的輸入沒備一般有鼠標(biāo)、鍵盤、觸摸屏、按鈕、旋鈕等,而(俗稱“單鍵飛梭”)作為一種輸入設(shè)備,由于其具有輸入靈活,簡單可靠等特點(diǎn),因此特別適合在嵌入式儀器和手持式設(shè)備上,整個系統(tǒng)可以只用一個鍵作為輸入。觸摸屏由于其方便靈活、節(jié)省空間、界面直觀等特點(diǎn)也備受青睞,但存在壽命短,長時(shí)間使用容易產(chǎn)生誤差等缺點(diǎn)。如果用輔助觸摸屏作為輸入設(shè)備,必將大大增強(qiáng)系統(tǒng)的可靠性,使得人機(jī)接口更加人性化。但由于光電編碼器并不是WinCE的標(biāo)準(zhǔn)輸入設(shè)備,因此其驅(qū)動程序在嵌入式操作系統(tǒng)Windows CE Platform Builder中并未給出。本文以三星公司S3C2410(ARM9芯片)為CPU的嵌入式系統(tǒng)開發(fā)板為平臺,詳細(xì)闡述了嵌入式操作系統(tǒng)WinCE下光電編碼器驅(qū)動程序的設(shè)計(jì),以供同行參考。

          1 光電編碼器的工作

          光電編碼器(OptICal Encoder)俗稱“單鍵飛梭”,其外觀好像一個電位器,因其外部有一個可以左右同時(shí)又可按下的旋鈕,很多設(shè)備(如顯示器、示波器等)用它作為人機(jī)交互接口。下面以美國Greyhill公司生產(chǎn)的光電編碼器為例,介紹其工作及使用。光電編碼器的內(nèi)部電路如圖1所示,其內(nèi)部有1個發(fā)光二極管和2個光敏三極管。當(dāng)左右旋鈕時(shí),中間的遮光板會隨旋鈕一起轉(zhuǎn)動,光敏三極管就會被遮光板有次序地遮擋,A、B相就會輸出圖2所示的波形;當(dāng)按下旋鈕時(shí),2、3兩腳接通,其用法同一般按鍵。

          

        光電編碼器的內(nèi)部電路

          當(dāng)順時(shí)針時(shí),光電編碼器的A相相位會比B相超前半個周期;反之,A相會比B相滯后半個周期。通過檢測A、B兩相的相位就可以判斷旋鈕是順時(shí)針還是逆時(shí)針旋轉(zhuǎn),通過記錄A或B相變化的次數(shù),就可以得出旋鈕旋轉(zhuǎn)的次數(shù),通過檢測2、3腳是否接通就可以判斷旋鈕是否按下。其具體的鑒相規(guī)則如下:

          A為上升沿,B=0時(shí),旋鈕右旋;

          B為上升沿,A=l時(shí),旋鈕右旋;

          A為下降沿,B=1時(shí),旋鈕右旋;

          B為下降沿,A=O時(shí),旋鈕右旋;

          B為上升沿,A=0時(shí),旋鈕左旋;

          A為上升沿,B=1時(shí),旋鈕左旋;

          B為下降沿,A=l時(shí),旋鈕左旋;

          A為下降沿,B=0時(shí),旋鈕左旋。

          通過上述,可以很簡單地判斷旋鈕的旋轉(zhuǎn)方向。在判斷時(shí)添加適當(dāng)?shù)难訒r(shí)程序,以消除抖動干擾。

          2 WinCE提供的驅(qū)動模型

          WinCE操作系統(tǒng)支持兩種類型的驅(qū)動程序。一種為本地驅(qū)動程序,是把設(shè)備驅(qū)動程序作為獨(dú)立的任務(wù)實(shí)現(xiàn)的,直接在頂層任務(wù)中實(shí)現(xiàn)硬件操作,因此都有明確和專一的目的。本地設(shè)備驅(qū)動程序適合于那些集成到Windows CE平臺的設(shè)備,諸如鍵盤、觸摸屏、音頻等設(shè)備。另一種是具有定制接口的流接口驅(qū)動程序。它是一般類型的設(shè)備驅(qū)動程序。流接口驅(qū)動程序的形式為用戶一級的動態(tài)鏈接庫(DLL)文件,用來實(shí)現(xiàn)一組固定的函數(shù)稱為“流接口函數(shù)”,這些流接口函數(shù)使得程序可以通過文件系統(tǒng)訪問這些驅(qū)動程序。本文討論的光電編碼器就屬于流接口設(shè)備。

          2.1 流設(shè)備驅(qū)動加載過程

          WinCE.NET系統(tǒng)運(yùn)行時(shí)會啟動負(fù)責(zé)流驅(qū)動的加載進(jìn)程DEVICE.exe。DEVICE.exe進(jìn)程對驅(qū)動的加載是通過裝載注冊表列舉器(RegEnum.dll)實(shí)現(xiàn)的。在WinCE.NET中,所有設(shè)備的資源信息都由OAL負(fù)責(zé)記錄在系統(tǒng)注冊表中,RegEnum.dll一個一個掃描注冊表項(xiàng)HEKY_LOCAL_MACHINEDriverBuiltIn下的子鍵,發(fā)現(xiàn)新設(shè)備就根據(jù)每個表項(xiàng)的內(nèi)容進(jìn)行硬件設(shè)備初始化。

          2.2 中斷與中斷處理

          如果一個驅(qū)動程序要處理一個中斷,那么驅(qū)動程序需要首先使用CreateEvent函數(shù)建立一個事件,調(diào)用InterruptInitialize函數(shù)將該事件與中斷標(biāo)識綁定。然后驅(qū)動程序中的IST就可以使用WaitForSing|eObject函數(shù)來等待中斷的發(fā)生。在一個硬件中斷發(fā)生之后,操作系統(tǒng)進(jìn)入異常處理程序,異常處理程序調(diào)用OAL的OEMInterruptHandler函數(shù),該函數(shù)檢測硬件并將中斷標(biāo)識返回給系統(tǒng);系統(tǒng)得到該中斷標(biāo)識便會找到該中斷標(biāo)識對應(yīng)的事件,并喚醒等待相應(yīng)事件的線程(IST),然后IST進(jìn)行中斷處理。處理完成之后,IST需要調(diào)用InterruptDone函數(shù)來告訴操作系統(tǒng)中斷處理結(jié)束,操作系統(tǒng)再次調(diào)用OAL中的OEMInterruptDone函數(shù),最后完成中斷的處理。圖3為WinCE.NET中斷處理的流程框圖。

          

        WinCE

        51單片機(jī)相關(guān)文章:51單片機(jī)教程



        上一頁 1 2 3 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉