日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

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

出處:munababy 發(fā)布于:2007-04-28 11:27:22

摘要:目前,在嵌入式系統(tǒng)中通過觸摸屏寫出的文字,筆劃粗細(xì)都是相同的,字跡顯得僵硬,不如毛筆字或鋼筆字瀟灑大方且風(fēng)格多樣。提出了一種適用于PDA及其它嵌入式設(shè)備的低成本、高速度、簡(jiǎn)單可行的解決方法,使得在觸摸屏上書寫時(shí),LCD屏上能顯現(xiàn)出如同毛筆字或鋼筆字的傳統(tǒng)書法特色的文字,筆劃粗細(xì)疏密有致,字跡親切自然,同時(shí)也能顯現(xiàn)出書寫人筆跡的個(gè)性風(fēng)格。

關(guān)鍵詞:ADS7846 書法 MC9328MX1 PDA 嵌入式系統(tǒng)

書法藝術(shù)是中國(guó)傳統(tǒng)文化的瑰寶。如果用筆尖或指尖在觸摸屏上揮灑自如寫字,LCD上能顯示出猶如用毛筆或鋼筆收寫時(shí)的書法效果,并能顯現(xiàn)出書寫人獨(dú)特個(gè)性的雋秀筆跡,那么就會(huì)使人體會(huì)到淋漓盡致的書法藝術(shù)。但現(xiàn)有的PDA(Personal Digital Assistant)通過觸摸屏畫出線條,顯示屏上顯示出的線條粗細(xì)都是相同的,無法寫出筆劃粗細(xì)相間的文字,也就無法模擬出毛筆或鋼筆書寫時(shí)筆鋒的效果。為彌補(bǔ)以上不足,筆者采用能采樣觸點(diǎn)壓力的ADS7846觸摸屏控制器[1],編寫了采樣觸點(diǎn)坐標(biāo)值和壓力值的驅(qū)動(dòng)程序,實(shí)現(xiàn)了通過觸摸屏輸入,在液晶顯示器上顯示書法出良好的效果。就象手中拿著毛筆或鋼筆在觸摸屏上寫字一樣,無論是行書、草書、隸書還是楷書,都能顯示出令人滿意的效果,并且完全保留了書寫人的字跡特點(diǎn)。

1 ADS7846觸摸屏控制器原理和功能概述

基于四線電阻式觸摸屏的輸入系統(tǒng)由觸摸屏、觸摸屏控制器、微控制器及其相應(yīng)軟件構(gòu)成。其中,觸摸屏控制器相當(dāng)于觸摸屏與微控制器之間的接口。觸摸屏體是一個(gè)四層的復(fù)合薄膜,,附著在顯示器表面與顯示器配合使用。復(fù)合薄膜的下層是玻璃基層,上層是光滑防刮的塑料層,中間為兩層透明導(dǎo)電涂層。每一導(dǎo)電層為觸摸屏的一個(gè)工作面,每個(gè)工作面的兩端各涂有一條銀膠,稱為該工作面的一對(duì)電極,分別稱為X“電極對(duì)”和Y“電極對(duì)”。當(dāng)觸摸屏控制器在X“電極對(duì)”上施加一確定的電壓,而Y“電極對(duì)”上不加電壓時(shí),X“電極對(duì)"所在的工作面上就會(huì)形成均勻連續(xù)的平行電場(chǎng)。當(dāng)用手指觸及觸摸屏表面時(shí),觸點(diǎn)處的電壓反映了觸點(diǎn)在X工作面上的位置,將該電壓通過Y+(或Y-)電極引到觸摸屏控制器,并經(jīng)過A/D轉(zhuǎn)換,便可得到觸點(diǎn)電壓的數(shù)字量,即X坐標(biāo)。同理,在Y“電極對(duì)”上施加電壓,以X+(或X-)電極為測(cè)量電極,便可測(cè)得Y坐標(biāo)。微控制器根據(jù)觸點(diǎn)坐標(biāo)位置以及對(duì)應(yīng)坐標(biāo)位置上顯示的內(nèi)容,便可得知觸摸者的意圖。
ADS7846是Burr-Brown公司生產(chǎn)的一種四線式觸摸屏控制器,在與觸摸連用時(shí),一旦筆尖或指尖點(diǎn)觸在觸摸屏上,便可迅速得到該點(diǎn)的位置信號(hào),從而達(dá)到在觸摸屏表面雪址的目的。ADS7846是典型的逐步逼近寄存器型A/D變換器,包含了取樣/保持功能。ADS7846與其前代產(chǎn)品ADS7843相比,增加了片內(nèi)溫度測(cè)量、觸摸壓力測(cè)量、外模擬量測(cè)量和電池電壓測(cè)量四個(gè)功能。

ADS7846的部件是一個(gè)具有采樣和保持功能的12位逐次逼近式A/D轉(zhuǎn)換器。內(nèi)部的六選一模擬多路開關(guān)根據(jù)微控制器送來的命令字選擇六個(gè)模擬量:X+、Y+、Y-、VBAT(電池電壓)、TEMP(溫度)和AUXIN(外模擬量)之一送入A/D轉(zhuǎn)換器,轉(zhuǎn)換后通過SPI接口將數(shù)字量送入微控制器。ADS7846還設(shè)置有觸摸識(shí)別電路,當(dāng)檢測(cè)到有觸摸時(shí),該電路輸出一個(gè)低電平信號(hào),稱為PENIRQ#(筆中斷),ADS7846以這個(gè)信號(hào)向微控制器提出測(cè)量觸點(diǎn)坐標(biāo)的中斷請(qǐng)求。觸點(diǎn)坐標(biāo)的公式如下:


式中,X和Y分別為觸點(diǎn)在X工作面和Y工作面上產(chǎn)生的電壓的數(shù)字量的測(cè)量值,可通過采樣得到;(X,Y)反映了觸點(diǎn)在觸摸屏上的坐標(biāo)的公式如下XMIX、YMIN、XMAX和YMAX分別為觸摸屏上和坐標(biāo)點(diǎn)在X工作面和Y工作面上產(chǎn)生的電壓的數(shù)字量的實(shí)際測(cè)量值,它們是常量,可通過測(cè)量得到;(XMIN,YMIN)和(XMAX,YMAX)反映了觸摸屏上、坐標(biāo)點(diǎn)的坐標(biāo);w和H分別是LCD顯示屏X軸和Y軸上的象素點(diǎn)總數(shù);(X1,Y1)為觸點(diǎn)映射到LCD顯示屏上的像素點(diǎn)坐標(biāo)。

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


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


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

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

2.1 設(shè)計(jì)思路

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

2.2 電路設(shè)計(jì)

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

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

2.3 驅(qū)動(dòng)程序

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

Bit7(MSB)BIt6Bit5Bit4Bit3Bit2Bit1Bit0
SA2A1A0MODESER/DFRPD1PD0

表2 差動(dòng)參考電壓方式下的模擬量選擇

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

有關(guān)ADS7843驅(qū)動(dòng)程序的資料很多,源代碼也能很容易地找到。具有觸摸壓力測(cè)量功能的ADS7846的驅(qū)動(dòng)程序,只需在原ADS7834驅(qū)動(dòng)程序的合適位置加入采樣Z1參數(shù)和Z2參數(shù)的代碼就行了[4] .這部分的代碼很簡(jiǎn)單,添加也很容易。筆者在MC9328MX1上實(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;

然后,計(jì)算出X,Y,Z1和Z2的值:

X=(((x_upper<<5)&0xFE0) ((x_lower>>3) & 0x1F));

Y=(((y_upper<<5)&0xFE0) ((y_lower>>3) & 0x1F));

Z1=(((z1_upper<<5)&0xFE0) ((z1_lower>>3) & 0x1F));

Z2=(((z2_upper<<5)&0xFE0) ((z2_lower>>3) & 0x1F));

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

2.4 應(yīng)用程序

一塊觸摸屏中并不一定每個(gè)點(diǎn)對(duì)壓力的感應(yīng)都很準(zhǔn)確。另外筆尖在觸摸屏上書寫時(shí),也會(huì)有秚動(dòng)和干擾。這就造成了用同樣的力在觸摸屏上畫一條線,顯現(xiàn)時(shí)可能出現(xiàn)粗細(xì)不一樣的現(xiàn)象。針對(duì)這個(gè)現(xiàn)象,在應(yīng)用程序中適當(dāng)做一些平滑處理。筆者采用算術(shù)平均法來平滑曲線,即如果發(fā)現(xiàn)采樣點(diǎn)的壓力值比前一個(gè)點(diǎn)大或小很多,則對(duì)該點(diǎn)和剛剛輸入的前幾個(gè)點(diǎn)壓力值做算術(shù)平均,得到的值作為該點(diǎn)正確的壓力值。但要注意,用來做平均的點(diǎn)不能取得太少,否則平滑作用不明顯;也不能取得太多,否則線條粗細(xì)變化太慢,模擬不出書法效果。通過實(shí)驗(yàn),發(fā)現(xiàn)取前三個(gè)點(diǎn)比較合適。做算術(shù)平均的源程序如下:

if(pressure-oldpressurel>50 oldpressurel-pressure >50) //如果發(fā)現(xiàn)觸點(diǎn)的采樣壓力值比前一個(gè)點(diǎn)大或小很多//

pressure =(pressure+oldpressurel+oldpressure2+oldpressure3)>>2; /則對(duì)該點(diǎn)和前三個(gè)觸點(diǎn)的壓力值做算術(shù)平均,并把結(jié)果作為該點(diǎn)正確的壓力值//

3 實(shí)驗(yàn)結(jié)果

經(jīng)過實(shí)驗(yàn),在LCD上顯示出的結(jié)果如所示。

(a)為使用ADS7843,未采樣觸點(diǎn)壓力值在LCD上的顯示效果;(b)為使用ADS7846,采樣觸點(diǎn)壓力值后,根據(jù)壓力大小在LCD上顯示出不同粗細(xì)曲線的效果。

如果使用多灰度級(jí)的LCD顯示屏,還可以利用觸點(diǎn)的壓力大?。≧touch)和筆尖在屏上接觸的時(shí)間這兩個(gè)參數(shù),使畫出曲線的顔色呈出出不同深淺。即觸點(diǎn)的壓力越大、筆尖在屏上相關(guān)區(qū)域接觸的時(shí)間越長(zhǎng),這個(gè)區(qū)域顯現(xiàn)的顔色就越深。具體調(diào)節(jié)公式如下:

式中,graylever為L(zhǎng)CD上該點(diǎn)將要顯現(xiàn)出的灰度值,(X,Y)為該點(diǎn)坐標(biāo),(Xddtime,Yoldtime)為同一筆劃中一定時(shí)間間隔前觸點(diǎn)的坐標(biāo)。筆者在開發(fā)過程中,取時(shí)間間隔為100ms。A和B都是用來調(diào)整graylever變化范圍的常量,可以通過實(shí)驗(yàn)根據(jù)具體情況設(shè)定。

這樣,用指尖在觸摸屏上作畫時(shí),LCD上也會(huì)顯現(xiàn)出素描和國(guó)畫的效果。

如果使用彩色LDC,可以結(jié)合GUI在LCD上創(chuàng)建一個(gè)供用戶選擇不同色彩的窗口,用戶就可以挑選合適的顔色在觸摸屏上畫圖,顯示屏上也將會(huì)呈現(xiàn)色彩繽紛的作品。因此,本文介紹的方法將會(huì)為PDA及相關(guān)行業(yè)開拓出全新的功能,帶來更加明媚的春天。

本文提出的方法已在MOTOROLA公司的DRAGONBALL(龍珠)系列MX1(ARM920T)上實(shí)現(xiàn)。該設(shè)計(jì)使得在PDA的觸摸屏上寫字時(shí),能顯示出毛筆或鋼筆寫出的書法效果,同時(shí)也顯現(xiàn)出了書寫人筆跡的個(gè)性風(fēng)格,并具有反應(yīng)速度快、實(shí)現(xiàn)成本低、程序編寫特簡(jiǎn)單等突出特點(diǎn)。相信此方法將會(huì)在周期入式領(lǐng)域中得到廣泛的應(yīng)用。


  
關(guān)鍵詞:通過ADS7846在PDA上實(shí)現(xiàn)個(gè)性化書法輸入ADS7843ADS7846ADS7834ARM920TMC9328MX1

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫電子市場(chǎng)網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動(dòng)力!意見一經(jīng)采納,將有感恩紅包奉上哦!