在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            S3C2440之觸摸屏

            作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
            觸摸屏附著在顯示器表面,根據(jù)觸摸點(diǎn)在顯示屏上對應(yīng)坐標(biāo)點(diǎn)的顯示內(nèi)容或圖形符號進(jìn)行相應(yīng)操作。

            其坐標(biāo)識別原理如下圖:

            本文引用地址:http://www.biyoush.com/article/201611/322378.htm

            當(dāng)手指觸摸屏幕時(shí),兩個相互絕緣的導(dǎo)電層在觸摸點(diǎn)處連接,頂層的5伏電壓就會加到底層觸摸點(diǎn)處,底層該點(diǎn)的電壓會發(fā)生改變,控制器檢測到該點(diǎn)的變化后,將該點(diǎn)的電壓進(jìn)行A/D轉(zhuǎn)換,得到的值與5伏相比,再乘以該軸總長度即可得觸摸點(diǎn)靠地那一端的坐標(biāo):X=L*V(I)/5

            也就是說我們要得到觸點(diǎn)坐標(biāo)的話,只需要將觸點(diǎn)的電壓進(jìn)行A/D轉(zhuǎn)換再用公式計(jì)算一下便可。那么觸摸屏驅(qū)動的重點(diǎn)應(yīng)該是在什么時(shí)候,對什么地點(diǎn)的電壓進(jìn)行A/D轉(zhuǎn)換。S3C2440中的A/D轉(zhuǎn)換器便有這種功能:

            如圖所示為S3C2440中ADC與觸摸屏的接口框架圖。

            我們從上面的結(jié)構(gòu)圖和數(shù) 據(jù)手冊可以知道,該ADC模塊總共有8個通道可以進(jìn)行模擬信號的輸入,分別是AIN0、AIN1、AIN2、AIN3、YM、YP、XM、XP。那么 ADC是怎么實(shí)現(xiàn)模擬信號到數(shù)字信號的轉(zhuǎn)換呢?首先模擬信號從任一通道輸入,然后設(shè)定寄存器中預(yù)分頻器的值來確定AD轉(zhuǎn)換器頻率,最后ADC將模擬信號轉(zhuǎn) 換為數(shù)字信號保存到ADC數(shù)據(jù)寄存器0中(ADCDAT0),然后ADCDAT0中的數(shù)據(jù)可以通過中斷或查詢的方式來訪問。


            從下面的程序中可以看到這些信號是如何別控制的:

            中斷模式用到的寄存器:

            SUBSRCPND:次級源掛起寄存器

            INTSUBMSK:中斷次級屏蔽寄存器

            SRCPND:源掛起寄存器

            INTPND:中斷掛起寄存器

            INTMSK:中斷屏蔽寄存器

            ADCCON:AD控制寄存器

            ADCDAT0:AD轉(zhuǎn)換數(shù)據(jù)寄存器

            1,初始化ADC。

            設(shè)置觸摸屏接口為等待中斷模式:

            寄存器ADCTSC的第2位用于選擇自動(連續(xù))XY坐標(biāo)轉(zhuǎn)換模式

            寄存器ADCTSC的第3位可以選擇上拉電阻的使能,在等待中斷模式下,上拉電阻要有效

            1. rADCTSC=0xd3;//[0:7]Wfait,XP_PU(在等待中斷模式下,上拉電阻要有效),XP_Dis,XM_Dis,YP_Dis,YM_En

            A/D延時(shí)寄存器ADCDLY可以設(shè)置開始中斷到真正開始A/D轉(zhuǎn)換這段時(shí)間的延時(shí)長度,它的時(shí)鐘源頻率為3.68MHz。

            1. rADCDLY=50000;//Normalconversionmodedelayabout(1/3.6864M)*50000=13.56ms

            當(dāng)然還要開中斷,注意INT_TC為子中斷:

            1. rINTMSK=~BIT_ADC;//ADCTouchScreenMaskbitclear,enableADCint
            2. rINTSUBMSK=~(BIT_SUB_TC);//enablesubADCint
            2,編寫中斷函數(shù)。

            如果INT_TC發(fā)生,選擇XY轉(zhuǎn)換模式,啟動A/D轉(zhuǎn)換:

            1. rADCTSC=(1<<3)|(1<<2);//Pull-updisable,(在觸發(fā)中斷后,上拉電阻要無效)Seq.X,Ypostionmeasure.
            2. saveAdcdly=rADCDLY;//saveADCDLY(啟動延時(shí))
            3. rADCDLY=40000;//Normalconversionmodedelayabout(1/50M)*40000=0.8ms
            4. rADCCON|=0x1;//startADC
            要等待轉(zhuǎn)換開啟結(jié)束和轉(zhuǎn)換結(jié)束
            1. while(rADCCON&0x1);//checkifEnable_startislow,轉(zhuǎn)換開啟結(jié)束
            2. while(!(rADCCON&0x8000));//checkifEC(EndofConversion)flagishigh,Thislineisnecessary~!!

            通過INT_ADC檢查AD轉(zhuǎn)換是否完成:

            1. while(!(rSRCPND&(BIT_ADC)));//checkifADCisfinishedwithinterruptbit
            其中,x軸坐標(biāo)值放入ADCDAT0[9..0],y軸坐標(biāo)值放入ADCDAT1[9..0]
            1. xdata=(rADCDAT0&0x3ff);
            2. ydata=(rADCDAT1&0x3ff);//讀取轉(zhuǎn)換結(jié)果,x軸坐標(biāo)值放入rADCDAT0,y軸坐標(biāo)值放入ADCDAT1

            設(shè)置觸摸屏為等待中斷模式

            1. rADCTSC=0xd3;//Waitingforinterrupt//[0:7]Wfait,XP_PU,XP_Dis,XM_Dis,YP_Dis,YM_En

            等待觸筆抬起后,恢復(fù)現(xiàn)場,結(jié)束中斷函數(shù)。

            1. rADCTSC=rADCTSC|(1<<8);//Detecttylusupsinterruptsignal.檢查觸筆抬起中斷
            2. while(1)//tocheckPen-upstate
            3. {
            4. if(rSUBSRCPND&(BIT_SUB_TC))//checkifADCisfinishedwithinterruptbit
            5. {
            6. //Uart_Printf("StylusUpInterrupt~!");//觸筆抬起!
            7. break;//ifStylusisup(1)state
            8. }
            9. }
              上一頁 1 2 下一頁

            關(guān)鍵詞: S3C2440觸摸

            評論


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

            關(guān)閉