王 驊 王曉忠
摘要:很多LCD模塊都采用了電阻式觸摸屏,這些觸摸屏等效于將物理位置轉(zhuǎn)換為代表X、Y坐標(biāo)的電壓值的傳感器。通常由4線、5線、7線和8線觸摸屏來實現(xiàn),文章探討了如何用stm32系列MCU來驅(qū)動和讀寫4線電阻觸摸屏。
關(guān)鍵詞:4線電阻觸摸屏;STM32;接口實現(xiàn);電阻式觸摸屏
中圖分類號:TP391文獻(xiàn)標(biāo)識碼:A文章編號:1009-2374(2009)21-0046-02
觸摸屏作為一種最新的輸入設(shè)備,它是目前最簡單、方便、自然的一種人機(jī)交互方式。它賦予了多媒體以嶄新的面貌,是極富吸引力的全新多媒體交互設(shè)備。觸摸屏在我國的應(yīng)用范圍非常廣闊,主要是公共信息的查詢;如電信局、稅務(wù)局、銀行、電力等部門的業(yè)務(wù)查詢;城市街頭的信息查詢;此外應(yīng)用于領(lǐng)導(dǎo)辦公、工業(yè)控制、軍事指揮、電子游戲、點歌點菜、多媒體教學(xué)、房地產(chǎn)預(yù)售等。將來,觸摸屏還要走入家庭。
一、觸摸屏操作原理
電阻觸摸屏利用壓力感應(yīng)進(jìn)行控制。電阻觸摸屏的主要部分是一塊與顯示器表面非常配合的電阻薄膜屏,這是一種多層的復(fù)合薄膜,它以一層玻璃或硬塑料平板作為基層,表面涂有一層透明氧化金屬(透明的導(dǎo)電電阻)導(dǎo)電層,上面再蓋有一層外表面硬化處理、光滑防擦的塑料層,它的內(nèi)表面也涂有一層涂層,在他們之間有許多細(xì)小的(小于1/1000英寸)的透明隔離點把兩層導(dǎo)電層隔開絕緣。當(dāng)手指觸摸屏幕時,兩層導(dǎo)電層在觸摸點位置就有了接觸,電阻發(fā)生變化,在X和Y兩個方向上產(chǎn)生信號,然后送觸摸屏控制器。控制器偵測到這一接觸并計算出(X,Y)的位置,再根據(jù)模擬鼠標(biāo)的方式運作。這就是電阻技術(shù)觸摸屏的最基本的原理。
二、STM32的主要特性
2007年6月11日,半導(dǎo)體制造廠商意法半導(dǎo)體(ST)高調(diào)推出一個新的32位微控制器系列產(chǎn)品STM32。它采用的微處理器是ARM公司為要求高性能(1.25DhrystoneMIPS/MHz)、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計的ARMCortex-M3內(nèi)核。多達(dá)128KB的嵌入式閃存、20KB的RAM和豐富的外設(shè)接口,包括兩個12位模數(shù)轉(zhuǎn)換器(1微秒的轉(zhuǎn)換時間)、三個USART、兩個SPI(18MHz主/從控制器)、兩個I2C、三個16位定時器(每個定時器有4個輸入捕獲模塊/4個輸出比較器/4個PWM控制器),以及一個專門為電機(jī)控制向量驅(qū)動應(yīng)用設(shè)計的內(nèi)嵌死區(qū)時間控制器的6-PWM定時器、USB、CAN和7個DMA通道。內(nèi)置復(fù)位電路包括上電復(fù)位、掉電復(fù)位和電壓監(jiān)控器,以及一個可用作主時鐘的高精度工廠校準(zhǔn)的8MHz阻容振蕩器、一個使用外部晶振的4-16MHz振蕩器和兩個看門狗。
(一)用stm32檢測觸摸
Stm32系列mcu的I/O口可以編程配置成帶上拉電阻的模式,這個特點可以用來檢測有無觸摸。Stm32的GPIO管腳連接觸摸屏的Y+和X-,連接Y+的管腳配置成內(nèi)部電阻上拉模式,連接X-的管腳配置成推挽輸出低電平。如果Y+為高電平,那么就是沒有觸摸。如果Y+為低電平,觸摸屏被壓下。從高到低電平的跳變可以檢測觸摸,用到外部中斷。
(二)用stm32讀觸摸屏參數(shù)
分兩步讀取X,Y坐標(biāo)值。第一步,驅(qū)動Y+為高電平,Y-為低電平,接X+管腳配置成AD輸入模式,檢測X+的電壓,此電壓與驅(qū)動電壓的比例即Y坐標(biāo)和整個屏的高度比率。X坐標(biāo)的檢測也是同樣。驅(qū)動X+為高電平,X-為低電平,接Y+的管腳配置成AD輸入模式,檢測Y+的電壓,此電壓與驅(qū)動電壓的比例即X坐標(biāo)和整個屏的寬度比率。
Y=Ux/Vdrive*觸屏高度
X=Uy/Vdrive*觸屏寬度
三、軟件設(shè)計
(一)線電阻觸摸屏檢測軟件流程
軟件流程如圖4所示:
(二)Stm32配置AD程序
void ADC_Configuration(void)
{
ADC_InitTypeDef ADC_InitStructure;
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = ENABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 2;
ADC_Init(ADC1, &ADC_InitStructure);
/* ADC1 regular channel14 configuration */
ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_55Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 2, ADC_SampleTime_55Cycles5);
/* Enable ADC1 DMA */
ADC_DMACmd(ADC1, ENABLE);
/* Enable ADC1 external trigger */
ADC_ExternalTrigConvCmd(ADC1, ENABLE);
/* Enable ADC1 */
ADC_Cmd(ADC1, ENABLE);
/* Enable ADC1 reset calibaration register */
ADC_ResetCalibration(ADC1);
/* Check the end of ADC1 reset calibration register */
while(ADC_GetResetCalibrationStatus(ADC1));
/* Start ADC1 calibaration */
ADC_StartCalibration(ADC1);
/* Check the end of ADC1 calibration */
while(ADC_GetCalibrationStatus(ADC1));
}
四、結(jié)語
筆者設(shè)計采用基于 STM32的控制核心來實現(xiàn)和4線電阻觸摸屏接口,已經(jīng)成功的進(jìn)行了應(yīng)用,經(jīng)檢測可靠,而且實現(xiàn)比較容易。為系統(tǒng)中采用STM32微控制器和4線電阻觸摸屏的接口應(yīng)用提供了參考方案。
參考文獻(xiàn)
[1]RM0008 Reference manual,http://www.st.com,2008-02.
[2]STM3210E-EVAL firmware,http://www.st.com,2008-03.
[3]4-wire and 8-wire resistive touch screen controller using msp430,http://www.ti.com.
作者簡介:王驊(1978-),男,江蘇無錫人,無錫機(jī)電高等職業(yè)技術(shù)學(xué)校助教,研究方向:自動控制;王曉忠(1981-),男,江蘇無錫人,無錫機(jī)電高等職業(yè)技術(shù)學(xué)校助教,碩士,研究方向:控制工程。