亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于ALIENTKE MiniSTM32開發(fā)板的觸摸屏實(shí)驗(yàn)

        2014-06-11 08:24:50王曉
        電腦迷 2014年5期
        關(guān)鍵詞:開發(fā)板手寫觸摸屏

        王曉

        摘 要 ALIENTKE MiniSTM32開發(fā)板本身并沒有觸摸屏控制器,但是它支持觸摸屏,可以通過外接帶觸摸屏的LCD模塊(比如ALIENTEK TFTLCD模塊),來實(shí)現(xiàn)觸摸屏控制。利用軟件模擬來實(shí)現(xiàn)對(duì)TFTLCD模塊的觸摸屏控制,最終實(shí)現(xiàn)手寫功能。

        關(guān)鍵詞 ALIENTKE MiniSTM32開發(fā)板 TFTLCD模塊 觸摸屏控制 手寫功能

        中圖分類號(hào):TP33 文獻(xiàn)標(biāo)識(shí)碼:A

        1觸摸屏TFTLCD簡(jiǎn)介

        TFT-LCD即薄膜晶體管液晶顯示器,其英文全稱為Thin Film Transistor-Liquid Crystal Display。TFT-LCD與無源TN-LCD、STN-LCD的簡(jiǎn)單矩陣不同,它在液晶顯示屏的每一個(gè)象素上都設(shè)置有一個(gè)薄膜晶體管(TFT),可有效地克服非選通時(shí)的串?dāng)_,使顯示液晶屏的靜態(tài)特性與掃描線數(shù)無關(guān),因此大大提高了圖像質(zhì)量。TFT-LCD也被叫做真彩液晶顯示器。

        1.1電阻式觸摸屏顯示原理

        電阻式觸摸屏是利用壓力感應(yīng)進(jìn)行控制的,主要部分是一塊與顯示器表面非常配合的電阻薄膜屏,它以一層玻璃或硬塑料平板作為基層,表面涂有一層透明氧化金屬導(dǎo)電層,上面再蓋有一層外表面硬化處理、光滑防擦的塑料層,它的內(nèi)表面也涂有一層涂層、在他們之間有許多細(xì)小的透明隔離點(diǎn)把兩層導(dǎo)電層隔開絕緣。當(dāng)手指觸摸屏幕時(shí),兩層導(dǎo)電層在觸摸點(diǎn)位置就有了接觸,電阻發(fā)生變化,在X和Y兩個(gè)方向上產(chǎn)生信號(hào),然后送觸摸屏控制器。當(dāng)控制器偵測(cè)到這一接觸并計(jì)算出(X,Y)的位置,再根據(jù)獲得的位置模擬鼠標(biāo)的方式運(yùn)作,這就是電阻式觸摸屏的最基本的原理。

        1.2電阻式觸摸屏控制器XPT2046簡(jiǎn)介

        ALIENTEK TFTLCD模塊自帶的觸摸屏控制芯片為XPT2046。XPT2046是一款4導(dǎo)線制觸摸屏控制器,內(nèi)含12位分辨率125KHz轉(zhuǎn)換速率逐步逼近型A/D轉(zhuǎn)換器。XPT2046支持從1.5V到5.25V的低電壓I/O接口。XPT2046能通過執(zhí)行兩次A/D轉(zhuǎn)換查出被按的屏幕位置,除此之外,還可以測(cè)量加在觸摸屏上的壓力。內(nèi)部自帶2.5V參考電壓可以作為輔助輸入、溫度測(cè)量和電池監(jiān)測(cè)模式之用,電池監(jiān)測(cè)的電壓范圍可以從0V到6V。XPT2046片內(nèi)集成有一個(gè)溫度傳感器。

        2硬件設(shè)計(jì)

        實(shí)驗(yàn)功能簡(jiǎn)介:開機(jī)的時(shí)候先通過24C02的數(shù)據(jù)判斷觸摸屏是否已經(jīng)校準(zhǔn)過,如果沒有校準(zhǔn),則執(zhí)行校準(zhǔn)程序,校準(zhǔn)過后再進(jìn)入手寫程序。如果已經(jīng)校準(zhǔn)了,就直接進(jìn)入手寫程序,此時(shí)可以通過按動(dòng)屏幕來實(shí)現(xiàn)手寫輸入。屏幕上會(huì)有一個(gè)清空的操作區(qū)域(RST),點(diǎn)擊這個(gè)地方就會(huì)將輸入全部清除,恢復(fù)白板狀態(tài)。程序會(huì)設(shè)置一個(gè)強(qiáng)制校準(zhǔn),就是通過按KEY0來實(shí)現(xiàn),只要按下KEY0就會(huì)進(jìn)入強(qiáng)制校準(zhǔn)程序。

        3軟件設(shè)計(jì)

        該實(shí)驗(yàn)最核心的程序模塊應(yīng)該屬于觸摸屏校準(zhǔn)代碼了。觸摸屏的校準(zhǔn)通過void Touch_Adjust(void)函數(shù)實(shí)現(xiàn)。觸摸屏校正原理:觸摸屏是一種絕對(duì)坐標(biāo)系統(tǒng),特點(diǎn)是每一次定位坐標(biāo)與上一次定位坐標(biāo)沒有關(guān)系,每次觸摸的數(shù)據(jù)通過校準(zhǔn)轉(zhuǎn)為屏幕上的坐標(biāo),不管在什么情況下,觸摸屏這套坐標(biāo)在同一點(diǎn)的輸出數(shù)據(jù)是穩(wěn)定的。不過由于技術(shù)原理的原因,不能保證絕對(duì)坐標(biāo)定位,點(diǎn)不準(zhǔn),這就是觸摸屏最怕出現(xiàn)的問題:漂移。

        很多應(yīng)用觸摸屏的系統(tǒng)啟動(dòng)后先要執(zhí)行校準(zhǔn)程序。通常應(yīng)用程序中使用的LCD坐標(biāo)是以像素為單位的。比如說:左上角的坐標(biāo)是一組非0的數(shù)值,比如(20,20),而右下角的坐標(biāo)為(220,300)。這些點(diǎn)的坐標(biāo)都是以像素為單位的,而從觸摸屏中讀出的是點(diǎn)的物理坐標(biāo),其坐標(biāo)軸的方向、XY值的比例因子、偏移量都與LCD坐標(biāo)不同,可以在程序中使用一個(gè)函數(shù)(我們采用Convert_Pos函數(shù))中把物理坐標(biāo)首先轉(zhuǎn)換為像素坐標(biāo),然后再賦給POS結(jié)構(gòu),達(dá)到坐標(biāo)轉(zhuǎn)換的目的。

        校正思路:在了解了校正原理之后,我們可以得出下面的一個(gè)從物理坐標(biāo)到像素坐標(biāo)的轉(zhuǎn)換關(guān)系式:

        LCDx=xfac*Px+xoff;

        LCDy=yfac*Py+yoff;

        其中(LCDx,LCDy)是在LCD上的像素坐標(biāo),(Px,Py)是從觸摸屏讀到的物理坐標(biāo)。xfac,yfac分別是X軸方向和Y軸方向的比例因子,而xoff和yoff則是這兩個(gè)方向的偏移量。

        這樣只要事先在屏幕上面顯示4個(gè)點(diǎn)(這四個(gè)點(diǎn)的坐標(biāo)是已知的),分別按這四個(gè)點(diǎn)就可以從觸摸屏讀到4個(gè)物理坐標(biāo),這樣就可以通過待定系數(shù)法求出xfac、yfac、xoff、yoff這四個(gè)參數(shù)。我們保存好這四個(gè)參數(shù),在以后的使用中,我們把所有得到的物理坐標(biāo)都按照這個(gè)關(guān)系式來計(jì)算,得到的就是準(zhǔn)確的屏幕坐標(biāo),從而達(dá)到觸摸屏校準(zhǔn)的目的。

        void Touch_Adjust(void)

        {

        u16 pos_temp[4][2];

        u8 cnt=0;

        u16 d1,d2;

        u32 tem1,tem2;

        float fac;

        while(1)

        {

        if(Pen_Point.Key_Sta==Key_Down)

        {

        if(Read_TP_Once())

        {

        pos_temp[cnt][0]=Pen_Point.X;

        pos_temp[cnt][1]=Pen_Point.Y;

        cnt++;

        }

        switch(cnt)

        {

        case 1:

        LCD_Clear(WHITE);

        Drow_Touch_Point(220,20);

        break;

        case 2:

        LCD_Clear(WHITE);

        Drow_Touch_Point(20,300);

        break;

        case 3:

        LCD_Clear(WHITE);

        Drow_Touch_Point(220,300);

        break;

        case 4: tem1=abs(pos_temp[0][0]-pos_temp[1][0]);

        tem2=abs(pos_temp[0][1]-pos_temp[1][1]);

        tem1*=tem1;

        tem2*=tem2;

        d1=sqrt(tem1+tem2);

        tem1=abs(pos_temp[2][0]-pos_temp[3][0]);

        tem2=abs(pos_temp[2][1]-pos_temp[3][1]);

        tem1*=tem1;

        tem2*=tem2;

        d2=sqrt(tem1+tem2);

        fac=(float)d1/d2;

        tem1=abs(pos_temp[0][0]-pos_temp[2][0]);

        tem2=abs(pos_temp[0][1]-pos_temp[2][1]);

        tem1*=tem1;

        tem2*=tem2;

        d1=sqrt(tem1+tem2);

        tem1=abs(pos_temp[1][0]-pos_temp[3][0]);

        tem2=abs(pos_temp[1][1]-pos_temp[3][1]);

        tem1*=tem1;

        tem2*=tem2;

        d2=sqrt(tem1+tem2);

        fac=(float)d1/d2;

        if(fac<0.95||fac>1.05)

        {

        cnt=0;

        LCD_Clear(WHITE);

        Drow_Touch_Point(20,20);

        continue; (下轉(zhuǎn)第31頁)(上接第2頁)

        }

        tem1=abs(pos_temp[1][0]-pos_temp[2][0]);

        tem2=abs(pos_temp[1][1]-pos_temp[2][1]);

        tem1*=tem1;

        tem2*=tem2;

        d1=sqrt(tem1+tem2);

        tem1=abs(pos_temp[0][0]-pos_temp[3][0]);

        tem2=abs(pos_temp[0][1]-pos_temp[3][1]);

        tem1*=tem1;

        tem2*=tem2;

        d2=sqrt(tem1+tem2);

        274

        fac=(float)d1/d2;

        Pen_Point.xfac=(float)200/(pos_temp[1][0]-pos_temp[0][0]);

        Pen_Point.xoff=(240-Pen_Point.xfac*(pos_temp[1][0]+

        pos_temp[0][0]))/2;

        Pen_Point.yfac=(float)280/(pos_temp[2][1]-pos_temp[0][1]);

        Pen_Point.yoff=(320-Pen_Point.yfac*(pos_temp[2][1]+

        pos_temp[0][1]))/2;

        POINT_COLOR=BLUE;

        LCD_Clear(WHITE);

        LCD_ShowString(35,110,"Touch Screen Adjust OK!");

        delay_ms(1000);

        LCD_Clear(WHITE);

        return;

        }

        }

        }

        }

        4下載與測(cè)試

        在代碼編譯成功之后,我們通過下載代碼到ALIENTEK MiniSTM32開發(fā)板上,可以看到LCD顯示如圖1所示。

        如果已經(jīng)校準(zhǔn)過了,則在等待2秒之后進(jìn)入手寫界面,同時(shí)DS0開始閃爍,界面如圖2所示。

        5結(jié)論與展望

        我們借助ALIENTKE MiniSTM32開發(fā)板,編寫與設(shè)計(jì)程序,實(shí)現(xiàn)了TFTLCD觸摸屏控制,可以在觸摸屏上用筆或者手指輸入信息,非常方便,而且界面友好。

        參考文獻(xiàn)

        [1] 章毓晉.圖象處理和分析.北京:清華大學(xué)出版社,1999.

        [2] 郎銳.數(shù)字圖像處理學(xué).北京:希望電子出版社,2002.

        [3] 楊淑瑩.圖像模式識(shí)別――VC++技術(shù)實(shí)現(xiàn).北京:清華大學(xué)出版社,2005.

        猜你喜歡
        開發(fā)板手寫觸摸屏
        手寫比敲鍵盤更有助于學(xué)習(xí)和記憶
        我手寫我心
        抓住身邊事吾手寫吾心
        PLC和觸摸屏在衛(wèi)生間控制系統(tǒng)的應(yīng)用
        基于集成學(xué)習(xí)的MINIST手寫數(shù)字識(shí)別
        電子制作(2018年18期)2018-11-14 01:48:08
        皮膚“長(zhǎng)”出觸摸屏
        Microchip最新推出兩款PIC32 Curiosity開發(fā)板
        淺析單片機(jī)開發(fā)板的設(shè)計(jì)與制作
        電子制作(2017年22期)2017-02-02 07:10:14
        Mouser為您呈上開發(fā)關(guān)鍵之STMicroelectronics Nucleo開發(fā)板
        Arduino和Atmel發(fā)布Arduino Zero開發(fā)板
        国产精品乱一区二区三区| 97人妻精品一区二区三区男同| 一边捏奶头一边高潮视频| 国产午夜福利不卡在线观看| 久久综合精品国产丝袜长腿| 欧美亚洲另类自拍偷在线拍| 成年女人18毛片观看| av网站大全免费在线观看| 中国无码人妻丰满熟妇啪啪软件 | 偷拍区亚洲区一区二区| 亚洲一区二区三区精品久久| 久久国产精品亚洲va麻豆| 国产免费艾彩sm调教视频| 国产熟女高潮视频| 国产粉嫩高清| 色婷婷一区二区三区久久亚洲| 日本xxxx色视频在线观看免费| 边喂奶边中出的人妻| 午夜短视频日韩免费| 久久国产精品一区二区| 亚洲一区二区国产一区| 国产片精品av在线观看夜色| 少妇被躁爽到高潮无码文| 官网A级毛片| 国产视频在线观看一区二区三区| 久久精品国产久精国产爱| 野外少妇愉情中文字幕| 色欲AV成人无码精品无码| 偷拍美女一区二区三区视频| 男人的天堂一区二av| 韩日午夜在线资源一区二区| 99久久人妻无码精品系列蜜桃| 国产毛片一区二区三区| 一本色道久久亚洲加勒比| 久久9精品区-无套内射无码| 亚洲永久精品ww47永久入口| 日韩精品免费一区二区中文字幕| 国产一区二区av免费在线观看| 亚洲色欲色欲www在线观看| 国产偷国产偷高清精品| 国产一区二区在线观看av|