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

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

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

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

      2. 關(guān) 閉

        新聞中心

        EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于μClinux的觸摸屏軟硬件關(guān)鍵技術(shù)分析

        基于μClinux的觸摸屏軟硬件關(guān)鍵技術(shù)分析

        作者: 時(shí)間:2008-11-26 來源:網(wǎng)絡(luò) 收藏

          的中斷處理函數(shù)

          當(dāng)筆中斷發(fā)生,程序進(jìn)入中斷處理函數(shù)。在中斷處理函數(shù)中,將完成對兩個(gè)中斷進(jìn)行處理,分別是外部的觸摸中斷(筆中斷)和SPI數(shù)據(jù)轉(zhuǎn)換中斷。與這兩個(gè)中斷對應(yīng)的中斷處理函數(shù),是觸摸屏軟件設(shè)計(jì)的關(guān)鍵所在。

          在中斷處理函數(shù)中使用定時(shí)器處理時(shí)間相關(guān)操作。定義函數(shù)set_timer_irq(),如下:

          staticvoidset_timer_irq(structtimer_list*timer,intdelay){

          del_timer(timer);

          timer->expires=jiffies+delay;

          add_timer(timer);

          }

          jiffies是一個(gè)表征系統(tǒng)自從啟動(dòng)以來到當(dāng)前為止所運(yùn)行時(shí)鐘數(shù)的變量,delay是設(shè)定的延長時(shí)間(用時(shí)鐘數(shù)作為計(jì)數(shù)單位)。一旦時(shí)鐘數(shù)超過設(shè)定值,則觸發(fā)超時(shí)函數(shù),在本程序中是handle_timeout( )。引入定時(shí)器的目的有兩個(gè):一是可以較為精確地控制系統(tǒng)由于消除電平升降造成信號抖動(dòng)所需要時(shí)間,二是能夠有效控制采樣坐標(biāo)的數(shù)量,而不必引入占用大量系統(tǒng)資源的簡單延時(shí)函數(shù)。使用SPI中斷而產(chǎn)生大量坐標(biāo)數(shù)據(jù)這一問題在文獻(xiàn)中沒有很好的解決辦法,只是簡單地降低SPI時(shí)鐘頻率以取較少的數(shù)據(jù)量。本設(shè)計(jì)中引入定時(shí)器,可以很好地解決上述問題。

          在handle_timeout()函數(shù)中,程序利用條件選擇語句,對觸摸屏(ts_drv_state)進(jìn)行判斷,如果是非Error狀態(tài),則使能SPI,進(jìn)入handle_spi_irq(),與ADS7843進(jìn)行數(shù)據(jù)通訊。在handle_spi_irq()中,程序利用條件選擇語句,根據(jù)觸摸屏(ts_drv_state)來進(jìn)行數(shù)據(jù)轉(zhuǎn)換操作,通過向觸摸屏控制芯片發(fā)送前文中提到的,來得到X和Y方向的坐標(biāo)。具體邏輯可參見程序流程圖。一旦一次轉(zhuǎn)換完成,程序?qū)⒏鶕?jù)點(diǎn)擊狀態(tài)信息(state_counter)來鑒別點(diǎn)擊的性質(zhì),在cause_event()函數(shù)中,分別對點(diǎn)擊和移動(dòng)做出了判斷。判定方法較為簡單,只需將前后兩次采樣坐標(biāo)之差與移動(dòng)閾值比較即可得出結(jié)論。此外,還區(qū)分了信號誤差和由于筆移動(dòng)造成的坐標(biāo)改變,判別閾值可以由用戶自己設(shè)定。

          I/O控制

          對于硬件各個(gè)參數(shù),包括采樣時(shí)間、消除抖動(dòng)開關(guān)、消除抖動(dòng)時(shí)間,都可以通過I/O()在用戶程序里進(jìn)行設(shè)定,避免每次都直接改變,并重新編譯內(nèi)核所帶來的時(shí)間開銷。本程序中對I/O的定義是:staticintts_(structinode*inode,structfile*file,unsignedintcmd,unsignedlongarg);其中,參數(shù)cmd有兩個(gè)值,分別為:TS_PARAMS_GET和TS_PARAMS_SET,它們用來指出是獲取參數(shù)還是設(shè)定參數(shù)。用戶在調(diào)用這個(gè)函數(shù)的時(shí)候,只需要對這個(gè)參數(shù)按照事先約定的格式賦值,就可以方便地獲取或者改變觸摸屏當(dāng)前參數(shù),arg是指向所傳遞參數(shù)的指針。

          結(jié)論

          在獲得觸摸點(diǎn)的原始坐標(biāo)(數(shù)值范圍由所選用的A/D轉(zhuǎn)換器位數(shù)決定)后,還要根據(jù)具體使用的液晶屏實(shí)際像素進(jìn)行轉(zhuǎn)換,以方便圖形界面的后續(xù)開發(fā)??紤]到相鄰兩次的移動(dòng)閾值,按照如下公式對觸摸屏坐標(biāo)進(jìn)行計(jì)算:

          

          其中XV為觸摸點(diǎn)X坐標(biāo)顯示值,XW為觸摸點(diǎn)X坐標(biāo)測量值(原始坐標(biāo)值),(1)、(2)、(3)式在觸摸屏初始化時(shí)得到,方法是任取觸摸屏X方向左側(cè)和右側(cè)各一點(diǎn),以X△V=X△W=1,Xoffrer=0為初始值進(jìn)行測量得到新的3個(gè)參數(shù):X△V、X△W和Xoffrer(在實(shí)際使用中此項(xiàng)工作屬于校準(zhǔn)零點(diǎn)偏移),然后這3個(gè)參數(shù)就不再變動(dòng),對于每次測量到的任意觸摸點(diǎn)原始坐標(biāo)XW,直接代入(4)式求出觸摸點(diǎn)的像素顯示坐標(biāo)XV。 其中,XV1為觸摸屏左側(cè)點(diǎn)坐標(biāo)顯示值;XV2為觸摸屏右側(cè)點(diǎn)坐標(biāo)顯示值;XW1為觸摸屏左側(cè)點(diǎn)坐標(biāo)測量值;XW2為觸摸屏右側(cè)點(diǎn)坐標(biāo)測量值。

          本設(shè)計(jì)使用MicroWindows作為用戶界面,定制出每個(gè)桌面圖標(biāo)的坐標(biāo)區(qū)域,結(jié)合觸摸屏的采樣坐標(biāo),判斷是否在圖標(biāo)區(qū)域坐標(biāo)內(nèi),然后做出相應(yīng)的事件處理。對于本設(shè)計(jì)中使用的開發(fā)平臺(tái),液晶屏是320240點(diǎn)陣的,物理尺寸為: 80mm60mm,ADS7843選擇12位轉(zhuǎn)換精度,觸摸屏理論分辨率為80/212=0.020mm,但是由于電平干擾和觸摸動(dòng)作發(fā)生時(shí)的物理干擾,實(shí)際的精度無法達(dá)到這個(gè)值。經(jīng)過測試,在我們平臺(tái)上對同一點(diǎn)的點(diǎn)擊精度可以達(dá)到1.0mm。本驅(qū)動(dòng)程序可以有效地區(qū)分點(diǎn)擊和移動(dòng)信號,如果配合手寫識別軟件,能夠作為手寫板的底層驅(qū)動(dòng)使用,實(shí)現(xiàn)手寫輸入。


        上一頁 1 2 3 4 5 6 下一頁

        評論


        相關(guān)推薦

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

        關(guān)閉