日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 電阻式觸摸屏的檢測原理是觸摸后引起上下兩個(gè)導(dǎo)電層的接觸,改變了電壓輸出,進(jìn)行A/D轉(zhuǎn)換后成了該點(diǎn)的X,Y坐標(biāo)。 初始化AD和觸摸口: void TouchSrceen_Test(void) { rADCDLY = 50000; //(1/3.68

電阻式觸摸屏的檢測原理是觸摸后引起上下兩個(gè)導(dǎo)電層的接觸,改變了電壓輸出,進(jìn)行A/D轉(zhuǎn)換后成了該點(diǎn)的X,Y坐標(biāo)。
初始化AD和觸摸口:
void TouchSrceen_Test(void)

{

rADCDLY = 50000; //(1/3.68MHz)*50000 = 13.56ms
注: 在ADC轉(zhuǎn)換之前用的是外部時(shí)鐘X-tal clock:3.68MHz
之后才用到GLK: 50MHz

rADCCON = (1<<14)|(prescaler<<6);

注: bit[14]: 0--disable ADC 1--enable ADC bit[13:6]: prescaler = 9 ADC fleq = 50MHz/(9+1) = 5MHz

Uart_Printf("nTouch Screen testn");

rADCTSC = 0xd3;//waiting for interrupt Mode
注: bit[1:0]: 11--waiting for interrupt Mode
bit[2]:0--Normal ADC 1--Auto Sequential measurement of X-position,Y-position
bit[3]:0--XP pull-up enable1--XP pull-up disable
bit[4]: 0--XP output driver enable 1--XP output driver disable
bit[5]: 0--XM output driver disable1--XM output driver enable
bit[6]: 0--YP output driver enable 1--YP output driver disable
bit[7]: 0--YM output driver disable 1--YM output driver enable
bit[8]:0--stylus down interrupt signal 1--stylus up interrupt signal

pISR_ADC = (int)ADC_TCTest;

rINTMSK = ~(1<<31); //clear ADC MASK bit

rINTSUBMSK = ~(1<<9); //clear TouchScreen MASK bit

}

void __irq ADC_TCTest(void)

{

U32 saveADCDLY;

if(rADCDAT0 & 0.8000) //bit[15]:0--stylus down 1--stylus up

{

rADCTSC &= 0xff; //clear bit[8]:0 stylus down 1--stylus up

}

rADCTSC = (1<<3)|(1<<2);//disable XP pull-up

//auto sequential measurement of XY position

saveADCDLY = rADCDLY;

rADCDLY = 40000; //(1/50MHz)*40000=0.8ms
注:如下圖,在需要對X,Y轉(zhuǎn)換時(shí)切換到GCLK,之前用X-Tal

rADCCON |= 0x01; //start ADC

while(rADCCON & 0x1); //waiting for ADC startup

while(!(rADCCON & 0x8000)); //waiting for ADC end

while(!(rSRCPND & (0x1<<31)));//waiting for interrupt bit=1

xdata = rADCDAT0 & 0x3ff;

ydata = rADCDAT1 & 0x3ff;
注: 讀取buffer里的X,Y坐標(biāo)數(shù)據(jù)

if(((xdata-xdata_save > 5)||(xdata-xdata_save < -5))

||((ydata-ydata_save > 5)||(ydata-ydata_save < -5)))

{

Uart_Printf("X_value = %d,Y_value = %d,X_data = %d,Y_data = %dn",
xdata,ydata,xdata_save,ydata_save);

}

xdata_save = xdata;

ydata_save = ydata;


rSUBSRCPND |= (1<<9);

rINTSUBMSK =~(1<<9);

rSRCPND |= (0x1<<31);

rINTPND |= (0x1<<31);

rINTMSK = ~(0x1<<31);

注: 清所有跟中斷有關(guān)的標(biāo)志位,為下次中斷做準(zhǔn)備

rADCTSC =0xd3; //waiting for interrupt

rADCTSC |= 0x100;//stylus up

while(!(rSUBSRCPND & (1<<9)));//waiting for stylus up interrupt bit=1


Uart_Printf("The pen has stylus up.");

rSUBSRCPND |= (1<<9);

rINTSUBMSK =~(1<<9);

rSRCPND |= (0x1<<31);

rINTPND |= (0x1<<31);

rINTMSK = ~(0x1<<31);
注: 清所有跟中斷有關(guān)的標(biāo)志位,為下次中斷做準(zhǔn)備

rADCDLY = saveADCDLY;

rADCTSC &= ~0x100; //stylus down

}


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉