色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          S3C2440之觸摸屏

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

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

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

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

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

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

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


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

          中斷模式用到的寄存器:

          SUBSRCPND:次級(jí)源掛起寄存器

          INTSUBMSK:中斷次級(jí)屏蔽寄存器

          SRCPND:源掛起寄存器

          INTPND:中斷掛起寄存器

          INTMSK:中斷屏蔽寄存器

          ADCCON:AD控制寄存器

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

          1,初始化ADC。

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

          寄存器ADCTSC的第2位用于選擇自動(dòng)(連續(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è)置開(kāi)始中斷到真正開(kāi)始A/D轉(zhuǎn)換這段時(shí)間的延時(shí)長(zhǎng)度,它的時(shí)鐘源頻率為3.68MHz。

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

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

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

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

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

          通過(guò)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)場(chǎng),結(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. }
            上一頁(yè) 1 2 下一頁(yè)

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

          評(píng)論


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

          關(guān)閉