日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 通過ADS7846在PDA上實(shí)現(xiàn)個性化書法輸入

          通過ADS7846在PDA上實(shí)現(xiàn)個性化書法輸入

          作者: 時間:2012-10-22 來源:網(wǎng)絡(luò) 收藏

          觸摸壓力測量是指對指尖或筆尖觸及觸摸屏?xí)r產(chǎn)生的壓力值進(jìn)行測量。觸摸壓力不是直接測出來的,而是轉(zhuǎn)換為測量觸點(diǎn)處X工作面和Y工作面之間的接觸電阻的大小來完成的。Rtouch的公式如下:

          式中,Rtouch表示接觸電阻;Rx是X+與X-兩電極間的總電阻;Z1和Z2是觸摸屏的內(nèi)部參數(shù),反映觸點(diǎn)與X工作面和Y工作面間的關(guān)系。Z1和Z2兩個參數(shù)及X的值可通過提供的指令采樣得到。而Rx并不需要去測量,因為各個觸摸屏的這個參數(shù)并不一樣,但在同一個觸摸屏上它卻是個定值,每個點(diǎn)的Rtouch都要乘以這個定值Rx,所以這個參數(shù)可以不考慮。所得到的Rtouch值的大小反應(yīng)了測量觸點(diǎn)壓力的大小。Rtouch越大,壓力越小,可以通過實(shí)驗測出不同壓力的Rtouch值。如果發(fā)現(xiàn)壓力值分布范圍太寬,可以給Rtouch除以一個合適的參數(shù);如果發(fā)現(xiàn)壓力值分布太窄,可以給Rtouch乘以一個合適的參數(shù)。筆者針對自己的觸摸屏,通過試驗發(fā)現(xiàn)用

          比較合適,不同的壓力與Rtouch的比值分布在80~170之間,這樣就有足夠的間隔來把壓力劃分為不同的等級。

          2 設(shè)計原理與具體實(shí)現(xiàn)

          2.1 設(shè)計思路

          微處理器首先利用SPI總線通過采樣到筆尖在觸摸屏上的觸點(diǎn)坐標(biāo)值及Z1值和Z2值;然后通過式(1)和式(2)計算出映射到LCD屏上的坐標(biāo)值,用式(4)計算出Rtouch值;再利用GUI提供的API函數(shù)在LCD上畫一條線段把前一個觸點(diǎn)和當(dāng)前觸點(diǎn)連起來;最后在這條線段的兩邊擴(kuò)展平行線,平行線的數(shù)量越多,這條線段越粗。平行線的數(shù)量由當(dāng)前觸點(diǎn)Rtouch的大小決定,即壓力越大,線段越粗。這樣就模擬出了用毛筆或鋼筆書寫時筆鋒游轉(zhuǎn)的效果。

          2.2 電路設(shè)計

          筆者以MOTOROLA公司的DRAGONBALL(龍珠)系列(ARM92T)作為硬件平臺[2],利用提供的SPI總線對進(jìn)行控制和數(shù)據(jù)傳輸。接口示意圖如圖1所示。

          由圖1可以看出,ADS7846與其前代產(chǎn)品ADS7843的接口電路完全相同。如果需要在原來使用ADS7843的設(shè)備上增加片內(nèi)溫度測量、觸摸壓力測量、外模擬量測量和電池電壓測量四個功能,只需將板上的ADS7843替換為ADS7846,然后改寫驅(qū)動程序即可。因為ADS7846與ADS7843的引腳封裝完全一致,所以不用改動電路,這使更換工作非常方便。

          2.3 驅(qū)動程序

          在應(yīng)用中,采用差動參考電壓方式測量坐標(biāo)模擬量,測量命令字的設(shè)置和模擬量選擇參見表1和表2。

          表1 ADS7846的測量命令字

          Bit7(MSB)BIt6Bit5Bit4Bit3Bit2Bit1Bit0
          SA2A1A0MODESER/DFRPD1PD0

          表2 差動參考電壓方式下的模擬量選擇

          A[2:0]參考電壓(+REF,-REF)模擬量輸入所測參數(shù)
          001Y+,Y-X+Y
          011Y+,X-X-Z1
          100Y+,X-Y-Z2
          101X+,X-Y+X

          有關(guān)ADS7843驅(qū)動程序的資料很多,源代碼也能很容易地找到。具有觸摸壓力測量功能的ADS7846的驅(qū)動程序,只需在原ADS7834驅(qū)動程序的合適位置加入采樣Z1參數(shù)和Z2參數(shù)的代碼就行了[4] .這部分的代碼很簡單,添加也很容易。筆者在上實(shí)現(xiàn)的源代碼如下:

          spi_tx_data(0xB0); //輸入采樣Z1值的命令//

          zl_upper = REG_SPI_RXDATA;

          spi_tx_data(0x00);

          zl_upper = REG_SPI_RXDATA;

          spi_tx_data(0xc0); //輸人采樣Z2值的命令//

          zl_lower = REG_SPI_RXDATA;

          spi_tx_data(0x00);

          z2_upper = REG_SPI_RXDATA;

          spi_tx_data(0x00);

          z2_lower = REG_SPI_RXDATA;

          spi_tx_data(0x00); //輸入采樣Y值的命令//

          x_upper = REG_SPI_RXDATA;

          spi_tx_data(0x00);

          x_upper = REG_SPI_RXDATA;

          spi_tx_data(0x90); //輸入采樣X值的命令//

          x_lower = RE G_SPI_RXDATA;

          spi_tx_data(0x00);

          y_upper = REG_SPI_RXDATA;

          spi_tx_data(0x00);

          y_upper = REG_SPI_RXDATA;

          然后,計算出X,Y,Z1和Z2的值:

          X=(((x_upper5)0xFE0) ((x_lower>>3) 0x1F));

          Y=(((y_upper5)0xFE0) ((y_lower>>3) 0x1F));

          Z1=(((z1_upper5)0xFE0) ((z1_lower>>3) 0x1F));

          Z2=(((z2_upper5)0xFE0) ((z2_lower>>3) 0x1F));

          此外,還應(yīng)注意觸摸抖動和連擊問題??梢圆捎醚舆t測量法來解決,即在接收到觸摸屏筆中斷時延遲一段時間(抖動時30ms)后再測量,可消除抖動;測量完后再次延遲一段時間(連擊延時300ms)后打開筆中斷,可避免連擊現(xiàn)象的出現(xiàn)。驅(qū)動程序主要包括初始化SPI寄存器、可編程定時器中斷和筆中斷。在筆中斷中主要完成關(guān)筆中斷、設(shè)置筆中斷標(biāo)志和將定時計數(shù)值設(shè)置為抖動延時,在定時器中斷程序中主要實(shí)現(xiàn)坐標(biāo)值的測量、延時功能。

          電能表相關(guān)文章:電能表原理


          關(guān)鍵詞: ADS7846 書法 MC9328MX1 PDA

          評論


          相關(guān)推薦

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

          關(guān)閉