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

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]觸摸屏工作原理:四線電阻屏結(jié)構(gòu),是在玻璃或丙稀酸基板上覆蓋兩層均勻?qū)щ姷腎TO層,分別作為x電極和y電極,他們之間由均勻排列的透明格點(diǎn)分來絕緣。X電極和y電極的正負(fù)端由導(dǎo)電線(黑色粗體線)從兩端引出,引出x-,

觸摸屏工作原理:


四線電阻屏結(jié)構(gòu),是在玻璃或丙稀酸基板上覆蓋兩層均勻?qū)щ姷腎TO層,分別作為x電極和y電極,他們之間由均勻排列的透明格點(diǎn)分來絕緣。X電極和y電極的正負(fù)端由導(dǎo)電線(黑色粗體線)從兩端引出,引出x-,x+,y-,y+.

當(dāng)接觸觸摸屏表面并施加壓力時(shí),上層的ITO導(dǎo)電層和下層的ITO導(dǎo)電層發(fā)生接觸,形成上面右圖的等效電路。

1.y坐標(biāo)計(jì)算:

在y+加驅(qū)動(dòng)電壓V-drive,y-接地。X+作為引出端測量接觸點(diǎn)的電壓,由于ITO層均勻?qū)щ?,觸電電壓與V-drive電壓之比等于Y坐標(biāo)與屏高度之比。

2.x坐標(biāo)計(jì)算:

在x+加驅(qū)動(dòng)電壓V-drive電壓,x-接地。Y+作為引出端測量接觸點(diǎn)的電壓,由于ITO層均勻?qū)щ?,觸點(diǎn)電壓與V-drive電壓比等于x坐標(biāo)與屏寬度之比。

y=Vx/V-driv *heightx=Vy/ V-driv * width

觸摸屏工作流程(理解好這幾步流程,代碼至少能看懂30%)

1.設(shè)置觸摸屏接口為等待中斷模式,等待觸摸屏被按下。

2.如果中斷(INT_TC)發(fā)生,選擇X,Y坐標(biāo)轉(zhuǎn)換模式(x/y坐標(biāo)分別轉(zhuǎn)換模式,x/y坐標(biāo)自動(dòng)轉(zhuǎn)換),啟動(dòng)AD轉(zhuǎn)換。

3.當(dāng)AD轉(zhuǎn)換完后,通過中斷(INT_ADC),獲取x/y坐標(biāo),

ADCDAT0 bit[9:0]-x坐標(biāo);

ADCDAT1 bit[9:0]-y坐標(biāo);

4.設(shè)置觸摸屏接口為等待中斷模式,等待觸摸筆離開觸摸屏。

5.返回步驟1,等待下次觸摸筆被按下。


#defineGLOBAL_CLK1

#include

#include

#include"def.h"

#include"option.h"

#include"2440addr.h"

#include"2440lib.h"

#include"2440slib.h"

#include"mmu.h"

#include"profile.h"

#include"memtest.h"

#defineADC_FREQ2500000

//#defineADC_FREQ1250000

intcount=0;

volatileU32preScaler;

intxdata,ydata;

voidTest_Touchpanel(void);

staticvoid__irqAdcTsAuto(void);

staticvoidcal_cpu_bus_clk(void);

voidSet_Clk(void);

/*************************************************

Functionname:delay

Parameter:times

Description:延時(shí)函數(shù)

Return:void

Argument:void

Autor&date:Daniel

**************************************************/

voiddelay(inttimes)

{

inti,j;

for(i=0;i

for(j=0;j<400;j++);

}

/*************************************************

Functionname:Main

Parameter:void

Description:主功能函數(shù)

Return:void

Argument:void

Autor&date:Daniel

**************************************************/

intMain(void)

{

intScom=0;

MMU_Init();

Set_Clk();

Uart_Init(0,115200);

Uart_Select(Scom);

//Uart_Printf("nHelloWorld!n");

Test_Touchpanel();

while(1);

return0;

}

/*************************************************

Functionname:Test_Touchpanel

Parameter:void

Description:觸摸屏初始化

Return:void

Argument:void

Autor&date:Daniel

**************************************************/

voidTest_Touchpanel(void)

{

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

/*設(shè)置AD轉(zhuǎn)頻率*/

preScaler=ADC_FREQ;

Uart_Printf("ADCconv,freq.=%dHzn",preScaler);

preScaler=50000000/ADC_FREQ-1;//PCLK=50M

rADCCON=(1<<14)|(preScaler<<6);//ADCPRSEn,PRSCVL

//rADCCON=(1<<14)+(preScaler<<6);//ADCPRSEn,ADCPRSValue

Uart_Printf("ADCtouchscreentestn");

/*設(shè)置觸摸屏為等待中斷模式,等待觸摸筆被按下*/

rADCTSC=0xd3;//Wfait,XP_PU,XP_Dis,XM_Dis,YP_Dis,YM_En

/*clearirq*/

//ClearPending(BIT_ADC);

rSRCPND=0x80000000;

rINTPND=0x80000000;

ClearSubPending(BIT_SUB_TC);

pISR_ADC=(U32)AdcTsAuto;

/*enableINT_TCirq*/

//EnableIrq(BIT_ADC);

rINTMSK=0x7fffffff;//允許中斷

EnableSubIrq(BIT_SUB_TC);

}

/*************************************************

Functionname:AdcTsAuto

Parameter:void

Description:中斷服務(wù)程序

Return:void

Argument:void

Autor&date:Daniel

**************************************************/

staticvoid__irqAdcTsAuto(void)

{

U32saveAdcdly;

/****************stylus down************************/

本站聲明: 本文章由作者或相關(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)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉