<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > S3C2440之觸摸屏

S3C2440之觸摸屏

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

其坐標識別原理如下圖:

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

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

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

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

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


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

中斷模式用到的寄存器:

SUBSRCPND:次級源掛起寄存器

INTSUBMSK:中斷次級屏蔽寄存器

SRCPND:源掛起寄存器

INTPND:中斷掛起寄存器

INTMSK:中斷屏蔽寄存器

ADCCON:AD控制寄存器

ADCDAT0:AD轉換數據寄存器

1,初始化ADC。

設置觸摸屏接口為等待中斷模式:

寄存器ADCTSC的第2位用于選擇自動(dòng)(連續)XY坐標轉換模式

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

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

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

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

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

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

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

  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
要等待轉換開(kāi)啟結束和轉換結束
  1. while(rADCCON&0x1);//checkifEnable_startislow,轉換開(kāi)啟結束
  2. while(!(rADCCON&0x8000));//checkifEC(EndofConversion)flagishigh,Thislineisnecessary~!!

通過(guò)INT_ADC檢查AD轉換是否完成:

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

設置觸摸屏為等待中斷模式

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

等待觸筆抬起后,恢復現場(chǎng),結束中斷函數。

  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觸摸

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>