www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]一、觸摸屏原理: 可以參考相關(guān)資料,本人參考的是阿南的>中有關(guān)觸摸屏的內(nèi)容。二、2440觸摸屏的設(shè)置1、ADCON: ADC控制寄存器#define ADCPRS 24rADCCON=(1

一、觸摸屏原理:

可以參考相關(guān)資料,本人參考的是阿南的<<>入門(mén)與實(shí)踐>>中有關(guān)觸摸屏的內(nèi)容。

二、2440觸摸屏的設(shè)置

1、ADCON: ADC控制寄存器

#define ADCPRS 24

rADCCON=(1<<14)+(ADCPRS<<6);

使能讀啟動(dòng)操作。

AD轉(zhuǎn)換器的預(yù)分頻值為24,注意:

AD轉(zhuǎn)換頻率=PCLK/(分頻值+1),且AD的最高頻率為2.5M,這里PCLK=50M,所以AD的轉(zhuǎn)換頻率為2M.

2、ADCTSC ADC觸摸屏控制寄存器

rADCTSC=0xd3;

當(dāng)筆尖落下時(shí)觸摸屏控制器產(chǎn)生中斷(INT_TC)信號(hào)。

YM輸出驅(qū)動(dòng)器使能

YP輸出驅(qū)動(dòng)器禁止

XM輸出驅(qū)動(dòng)器禁止

XP輸出驅(qū)動(dòng)器禁止

等待中斷模式

注意:自動(dòng)x,y方向測(cè)量是指當(dāng)測(cè)完x跟y后產(chǎn)生ADC中斷。

3、ADCDLY ADC啟動(dòng)或初始化延時(shí)寄存器

rADCDLY=50000;

設(shè)置一個(gè)適當(dāng)?shù)谋憧?/p>

4、設(shè)置中斷服務(wù)函數(shù)

pISR_ADC = (int)AdcTsAuto;//設(shè)置中斷函數(shù)地址

rINTMSK=~BIT_ADC;//ADC Touch Screen Mask bit clear

rINTSUBMSK=~(BIT_SUB_TC); //觸摸屏中斷

三、觸摸屏檢測(cè)及校正

1、觸摸屏的檢測(cè)思路類似于按鍵檢測(cè),以下為檢測(cè)一個(gè)點(diǎn)的思路:

(1)、設(shè)置等待中斷,按下有效

(2)、按下進(jìn)入中斷后讀取x,y數(shù)據(jù)

(3)、讀取完成后設(shè)置成彈起中斷,等待一個(gè)動(dòng)作結(jié)束

(4)、結(jié)束后進(jìn)入下一次準(zhǔn)備。


程序如下:

void __irq AdcTsAuto(void)

{

//解摸屏按下,產(chǎn)生中斷

U32 saveAdcdly;

if(rADCDAT0&0x8000)

rADCTSC&=0xff;// Set stylus down interrupt bit

//關(guān)閉XP上拉,啟動(dòng)自動(dòng)順序x/y轉(zhuǎn)換

rADCTSC=(1<<3)|(1<<2);//Pull-up disable, Seq. X,Y postion measure.

//設(shè)置延時(shí)時(shí)間

saveAdcdly=rADCDLY;

rADCDLY=40000;

//開(kāi)始AD轉(zhuǎn)換

rADCCON|=0x1;//start ADC

//AD轉(zhuǎn)換啟動(dòng)后開(kāi)始位會(huì)被清0

while(rADCCON & 0x1);//check if Enable_start is low

//等待轉(zhuǎn)換結(jié)束

while(!(rADCCON & 0x8000));//check if EC(End of Conversion) flag is high, This line is necessary~!!

//查詢INT_ADC中斷,直到查到結(jié)束中斷標(biāo)志

while(!(rSRCPND & (BIT_ADC)));//check if ADC is finished with interrupt bit

//產(chǎn)生中斷標(biāo)志說(shuō)明x,y已經(jīng)轉(zhuǎn)換結(jié)束,讀取數(shù)據(jù)。

xdata=(rADCDAT0&0x3ff);

ydata=(rADCDAT1&0x3ff);

//按下標(biāo)志

touchedflag=TRUE;

//check Stylus Up Interrupt.

//清中斷,并且重開(kāi)中斷,再次設(shè)置等待中斷,這一次設(shè)置等待彈起中斷。

rSUBSRCPND|=BIT_SUB_TC;

ClearPending(BIT_ADC);

rINTSUBMSK=~(BIT_SUB_TC);

rINTMSK=~(BIT_ADC);

rADCTSC =0xd3;//Waiting for interrupt

rADCTSC=rADCTSC|(1<<8); // Detect stylus up interrupt signal.

//查詢等待彈起中斷標(biāo)志,直到查到彈起。

while(1)//to check Pen-up state

{

if(rSUBSRCPND & (BIT_SUB_TC))//check if ADC is finished with interrupt bit

{

//Uart_Printf("Stylus Up Interrupt~!n");

break;//if Stylus is up(1) state

}

}

//此時(shí),一個(gè)觸摸屏動(dòng)作檢測(cè)已經(jīng)完成,輸出坐標(biāo)信息。

Uart_Printf("count=%03dXP=%d, YP=%dn", count++, xdata, ydata);//X-position Conversion data

//再次設(shè)置成按下中斷,等待下一次動(dòng)作

rADCDLY=saveAdcdly;

rADCTSC=rADCTSC&~(1<<8); // Detect stylus Down interrupt signal.

rSUBSRCPND|=BIT_SUB_TC;

rINTSUBMSK=~(BIT_SUB_TC);// Unmask sub interrupt (TC)

ClearPending(BIT_ADC);

}

2、觸摸屏的校正

觸摸屏校正的目的是為了把觸摸屏上的坐標(biāo)跟LCD上坐標(biāo)一一對(duì)應(yīng)起來(lái)。


如上圖,假設(shè)LCD與觸摸屏的點(diǎn)是一一對(duì)應(yīng)的,LCD上四個(gè)角的點(diǎn)為人為設(shè)置的點(diǎn)(實(shí)際只需要上左上跟右下兩個(gè)點(diǎn)就可以了,還有兩個(gè)點(diǎn)是用來(lái)做平均的),觸摸屏上四個(gè)角的點(diǎn)為L(zhǎng)CD上四個(gè)點(diǎn)對(duì)應(yīng)轉(zhuǎn)換來(lái)的數(shù)值。(ax,ay)為正常工作時(shí)點(diǎn)擊的點(diǎn),(x,y)為(ax,ay)對(duì)應(yīng)的坐標(biāo)。

那么LCD與觸摸屏的關(guān)系為:

x=x0+(x1-x0)*(ax-ax0)/(ax1-ax0)

y=y0+(y1-y0)*(ay-ay0)/(ay1-ay0)

具體步驟:

以320*240的屏舉例:

(1)、設(shè)置四個(gè)LCD點(diǎn)(30,30)、(30,210)、(290,210)、(290,30)

(2)、在屏幕上依次畫(huà)出這四個(gè)點(diǎn)(以四個(gè)點(diǎn)為中心點(diǎn)的十字形),并且依次點(diǎn)擊這四個(gè)點(diǎn),分別記下四個(gè)點(diǎn)轉(zhuǎn)換出來(lái)的數(shù)值。(ax0,ay0),(ax0,ax1),(ax1,ay1),(ax1,ay0)

(3)、由x=x0+(x1-x0)*(ax-ax0)/(ax1-ax0),可以把(x1-x0)/(ax1-ax0)轉(zhuǎn)換成常量系數(shù)Kx,那么

x=x0+(ax-ax0)*Kx,Kx=(x1-x0)/(ax1-ax0),這樣只需記下x0,ax0,Kx三個(gè)值便可。

同樣的:

y=y0+(y1-y0)*(ay-ay0)/(ay1-ay0), y=y0+(ay-ay0)*Ky, Ky=(y1-y0)/(ay1-ay0),只需記下y0,ay0,Ky便可.

(4)、校正完成,正常工作時(shí)當(dāng)點(diǎn)擊觸摸屏?xí)r產(chǎn)生(ax,ay),則

x=x0+(ax-ax0)*Kx

y=y0+(ay-ay0)*Ky

便可以很容易求出實(shí)際坐標(biāo)。

校正程序如下:

//觸摸屏校正

//x=x0+(x1-x0)*(ax-ax0)/(ax1-ax0)

//x=x0+(ax-ax0)*Kx

//Kx=(x1-x0)/(ax1-ax0)

//x0,ax0,Kx

//同理

//y=y0+(y1-y0)*(ay-ay0)/(ay1-ay0)

//y=y0+(ay-ay0)*Ky

//Ky=(y1-y0)/(ay1-ay0)

//y0,ay0,Ky

volatile U32 touchedflag=FALSE;

//必要的參數(shù)

typedef struct cali

{

intx0;

intax0;

floatKx;

inty0;

intay0;

floatKy;

}TCpara;

typedef struct Point

{

int x;

int y;

}POINT;

//LCD四個(gè)校正點(diǎn)

POINT LCDPoint[4]=

{

30,30,//左上

30,210,//左下

290,210,//右下

290,30//右上

};

TCpara TCcal;

void touchsrc_calibration()

{

U32 i;

//int x=30,y=30;

//int LCDx1=30,LCDy1=30,LCDx2=30,LCDy2=150,LCDx3=290,LCDy3=210;

//TCx3=0,TCy3=0,TCx4=0,TCy4=0;

//float A,B,C,D,E,F,K;

//float K

Lcd_ClearScr(0);

for(i=0;i<4;i++)

{

//分別畫(huà)出四個(gè)點(diǎn)Glib_Line(LCDPoint[i].x-10,LCDPoint[i].y,LCDPoint[i].x+10,LCDPoint[i].y,(U32)(255<<11));

Glib_Line(LCDPoint[i].x,LCDPoint[i].y-10,LCDPoint[i].x,LCDPoint

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

基于ABB機(jī)器人生產(chǎn)線 ,設(shè)計(jì)了一種西門(mén)子PLC自保護(hù)智能控制系統(tǒng) 。該系統(tǒng)采用HK-FKGD40無(wú)線手持報(bào)警器 , 受機(jī)器人擠壓時(shí)人員通過(guò)該報(bào)警器便可觸發(fā)機(jī)器人智能判斷 、自動(dòng)回退運(yùn)動(dòng)實(shí)現(xiàn)自我解救 , 同時(shí)系統(tǒng)發(fā)出聲光...

關(guān)鍵字: 無(wú)線手持報(bào)警器 自保護(hù);智能 PLC ABB機(jī)器人 觸摸屏

在科技飛速發(fā)展的當(dāng)下,智能設(shè)備已深度融入人們的生活與工作。其中,PDA(Personal Digital Assistant,個(gè)人數(shù)字助理)作為一款集信息輸入、存儲(chǔ)、管理和傳遞于一體,且具備辦公、娛樂(lè)、移動(dòng)通信等多種功能...

關(guān)鍵字: 智能設(shè)備 觸摸屏 微控制器

蘇州 2025年5月27日 /美通社/ -- 5月24日-26日,第26屆全國(guó)醫(yī)院建設(shè)大會(huì)暨國(guó)際醫(yī)院建設(shè)、裝備及管理展覽會(huì)(CHCC 2025)在武漢舉行。藝卓(EIZO)攜手術(shù)室視覺(jué)顯示解決方案參展,以科技...

關(guān)鍵字: HC 醫(yī)學(xué)影像 IO 觸摸屏

隨著手工釀造的普及和復(fù)雜程度的不斷提高,許多釀酒師——尤其是小規(guī)?;颡?dú)立的釀酒師——仍然依靠手工方法來(lái)記錄和跟蹤關(guān)鍵數(shù)據(jù),如溫度、pH值、體積和比重。這些讀數(shù)通常使用手動(dòng)儀器,記錄在紙上或分散在電子表格和文檔中,沒(méi)有集中...

關(guān)鍵字: 觸摸屏 物聯(lián)網(wǎng) DS18B20 傳感器

隨著嵌入式系統(tǒng)的廣泛應(yīng)用,觸摸屏作為人機(jī)交互的重要接口,其驅(qū)動(dòng)開(kāi)發(fā)變得愈發(fā)重要。本文將詳細(xì)介紹在嵌入式Linux環(huán)境下,觸摸屏驅(qū)動(dòng)的開(kāi)發(fā)流程,從設(shè)備樹(shù)的配置到校準(zhǔn)算法的實(shí)現(xiàn),為讀者提供一個(gè)全面的開(kāi)發(fā)指南。

關(guān)鍵字: 嵌入式Linux 觸摸屏 校準(zhǔn)算法 設(shè)備樹(shù)

將您的樹(shù)莓派Pico變成帶有觸摸屏界面的USB-HID設(shè)備!在這個(gè)項(xiàng)目中,我們將在Arduino IDE中設(shè)置編程環(huán)境,為3.5”P(pán)ico Touch LCD屏蔽配置庫(kù),測(cè)試基本功能,創(chuàng)建簡(jiǎn)單的按鈕(用于復(fù)制和粘貼),顯...

關(guān)鍵字: 樹(shù)莓派 觸摸屏 LCD Windows

ADS7846是美國(guó)Burr-Brown公司推出的新一代4線制觸摸屏控制器,當(dāng)與觸摸屏連用,只要筆或手指點(diǎn)觸摸在屏上時(shí),即可迅速得到該點(diǎn)的位置信號(hào)以達(dá)到在觸摸屏表面尋址的目的。

關(guān)鍵字: ADS7846 觸摸屏

?激光治療儀觸摸屏接口設(shè)計(jì)?主要包括觸摸屏的工作原理、控制器工作原理以及在激光治療儀中的應(yīng)用。

關(guān)鍵字: 觸摸屏 激光治療儀

中國(guó)深圳 – TITAN Haptics泰坦觸覺(jué)宣布推出DRAKE LFi觸覺(jué)馬達(dá),旨在滿足中國(guó)電子市場(chǎng)不斷增長(zhǎng)的需求。DRAKE LFi專為需要觸覺(jué)反饋的設(shè)備設(shè)計(jì),例如觸摸屏和觸覺(jué)按鈕。這款新型觸覺(jué)馬達(dá)能夠提供精準(zhǔn)的局...

關(guān)鍵字: 消費(fèi)電子 觸摸屏 可穿戴設(shè)備

雖然無(wú)數(shù)關(guān)于未來(lái)交通的文章都以四輪電動(dòng)車作為討論重點(diǎn),但在印度、馬來(lái)西亞、泰國(guó)和印度尼西亞等諸多國(guó)家,出行更依賴于經(jīng)濟(jì)的兩輪電動(dòng)車,包括踏板式摩托車、重型摩托車、電動(dòng)摩托車、電動(dòng)輕便摩托車和電動(dòng)自行車。這些兩輪電動(dòng)車緊跟...

關(guān)鍵字: 電動(dòng)車 觸摸屏 觸摸控制器
關(guān)閉