<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è) > 光電顯示 > 設計應用 > 基于嵌入式技術(shù)的智能儀器觸摸屏接口設計

基于嵌入式技術(shù)的智能儀器觸摸屏接口設計

作者: 時(shí)間:2012-10-18 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要: 研究開(kāi)發(fā)了; 分析了電阻式的工作原理; 與微處理器的電路; 開(kāi)發(fā)了L inux框架下的觸摸屏設備驅動(dòng)程序; 闡述了采用觸摸屏作為輸入的MiniGU I應用程序的編寫(xiě)方法。

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

的觸摸屏已成功應用在故障診斷產(chǎn)品上, 增強了的人機交互功能, 方便了現場(chǎng)操作人員使用。

0 引言

在現代化生產(chǎn)中, 為了確保機械設備安全可靠地運行, 通常要采用適宜的儀器儀表, 利用故障診斷及時(shí)發(fā)現故障, 并采取合理的維修或保護措施來(lái)排除故障, 預防和避免事故的發(fā)生。對儀器尺寸、便攜性和操作方便性的考慮, 在工業(yè)領(lǐng)域如煤炭、鋼鐵、冶金、電力、化工等行業(yè)中大量的儀器儀表和設備, 都逐漸選用觸摸屏作為系統的輸入設備。

針對這一情況, 作者在開(kāi)發(fā)面向機械故障診斷的儀表過(guò)程中, 對觸摸屏輸入接口進(jìn)行了研究。了四線(xiàn)電阻式觸摸屏與PXA255 處理器的接口電路, 分析了Linux框架下的字符設備驅動(dòng)程序設計原理, 完成了觸摸屏的接口驅動(dòng)程序開(kāi)發(fā), 并設計了用觸摸屏作為輸入設備的MiniGU I用戶(hù)程序。觸摸屏作為儀器的輸入設備, 人機交互直截了當, 大大方便了現場(chǎng)操作人員的使用。

1 硬件結構和工作原理

依據工作原理和傳輸介質(zhì)的不同, 觸摸屏主要分電阻式、電容式、紅外線(xiàn)式以及表面聲波式等多種類(lèi)型。電阻式觸摸屏是一塊4層透明的復合薄膜屏,如圖1所示。下面是玻璃或有機玻璃構成的基層; 上面是一層外表面經(jīng)過(guò)硬化處理從而光滑防刮的塑料層; 中間是兩層金屬導電層, 在導電層之間有許多細小的透明隔離點(diǎn)把兩層隔開(kāi)。兩個(gè)金屬導電層是觸摸屏的工作面, 其兩端各涂有一條銀膠, 稱(chēng)為觸摸屏工作面的一對電極。四線(xiàn)式觸摸屏的X 工作面和Y 工作面分別加在兩個(gè)導電層上, 共有4根引出線(xiàn), 分別連到觸摸屏的X 電極對和Y 電極對上。在觸筆觸摸屏幕時(shí), 兩導電層在接觸點(diǎn)處接觸。電阻式觸摸屏作為輸入設備與顯示屏配合使用時(shí), 其工作的實(shí)質(zhì)就是通過(guò)測量X、Y兩個(gè)方向電阻的分壓, 確定觸摸屏的觸點(diǎn)坐標, 并將該坐標映射到顯示屏坐標上, 從而實(shí)現人機交互。由于電阻式觸摸屏工作面與外界完全隔離, 受環(huán)境影響小, 所以具有不怕灰塵和水汽、穩定性高、不漂移等優(yōu)點(diǎn), 特別適合工業(yè)現場(chǎng)使用。

圖1 電阻式觸摸屏結構

圖1 電阻式觸摸屏結構

在設計過(guò)程中, 選用ADS7843 作為觸摸屏接口的AD轉換芯片,它具有12 位的轉換精度, 最大支持4 096 ×4 096點(diǎn)陣的LCD, 滿(mǎn)足儀器設計要求。

儀器系統處理器選用Intel Xscale架構的PXA255處理器,用其GPIO口模擬SPI接口與ads7843進(jìn)行通信。其接口原理如圖2所示。ADS7843完成采集通道的切換和接觸點(diǎn)處電壓的采集, 其操作時(shí)序主要由控制字輸入、電壓采集和模數轉換組成, 詳見(jiàn)參考文獻。只要在驅動(dòng)程序中根據時(shí)序要求向D IN口發(fā)送控制字, 即可從DOUT處得到相應通道的采集結果。

圖2 ADS7843與PXA255的接口電路

圖2 ADS7843與PXA255的接口電路

2 觸摸屏接口驅動(dòng)程序

Linux驅動(dòng)程序是系統內核的一部分, 它把軟件和硬件分離開(kāi)來(lái), 并向上提供應用程序訪(fǎng)問(wèn)硬件的通信接口, 向下管理保護系統硬件。觸摸屏在Linux下被定義為字符設備, 其驅動(dòng)主要完成觸點(diǎn)電壓的采集, 并向用戶(hù)空間傳遞X 坐標、Y坐標和筆動(dòng)作(按下、抬起或拖拽) 數據。當觸筆按下時(shí), ADS7843的11腳輸出低電平, 觸發(fā)PXA255通用IO口的12腳產(chǎn)生外部中斷, 開(kāi)啟定時(shí)器, 實(shí)現觸摸屏的動(dòng)作。觸摸屏的驅動(dòng)流程如圖3所示。

圖3 觸摸屏驅動(dòng)程序結構流程

圖3 觸摸屏驅動(dòng)程序結構流程

2.1 驅動(dòng)的編寫(xiě)

觸摸屏驅動(dòng)在Linux框架下屬于字符設備驅動(dòng)。

驅動(dòng)的入口函數為ads7843 _ ts_ init ( ) , 在該函數中,初始化I/O口, 注冊筆中斷和設備節點(diǎn), 完成設備文件系統創(chuàng )建標準字符設備的初始化工作[ 8 - 10 ].觸摸屏設備操作的結構通過(guò)ads7843_ts_fop s定義。

static struct file_operations ads7843_ts_fop s = {

read: ads7843_ts_read,

poll: ads7843_ts_poll,

ioctl: ads7843_ts_ioctl,

fasync: ads7843_ts_fasync,

open: ads7843_ts_open,

release: ads7843_ts_release,

};

這樣, 只需根據實(shí)際需要正確定義該結構中的幾個(gè)函數過(guò)程, 就可完成設備驅動(dòng)的開(kāi)發(fā)。

當觸摸屏設備被打開(kāi)時(shí), 首先執行到ads7843_ts_open ( )函數, 并在該函數中, 初始化一個(gè)緩沖區, 用于存儲坐標數據。在觸摸屏被按下后, 系統首先觸發(fā)中斷, 在ads7843_ts_interrup t ( )中斷程序中, 判斷in_timehandle全局變量的狀態(tài), in_ timehandle在定時(shí)器函數中被改變, 也就是說(shuō)進(jìn)入中斷后, 先經(jīng)過(guò)定時(shí)器延時(shí)20ms, 完成觸摸屏的軟件去抖, 再判斷觸摸屏是否被按下。然后通過(guò)read_xy ( )函數分別切換至X和Y 通道, 完成觸點(diǎn)電壓的AD轉換, 并讀取12 位坐標值。

static void ads7843_ ts_ interrup t ( int irq, void 3 dev_ id,

struct p t_regs3 regs)

{

sp in_lock_irq (tsdevlock) ;

if ( in_timehandle > 0)

{

sp in_unlock_irq (tsdevlock) ;

return;

}

disable_irq ( IRQ_GPIO_ADS7843) ;

ads7843_ts_starttimer ( ) ;

sp in_unlock_irq (tsdevlock) ;

}

應用程序調用read ( ) 函數時(shí), 進(jìn)入驅動(dòng)的ads7843_ts_read ( )接口函數。在該接口函數中獲取采樣結果, 判斷是否要對坐標進(jìn)行校準, 將最終結果寫(xiě)入到緩沖區中, 并通過(guò)copy_to_user ( )函數將其從內核空間復制到用戶(hù)空間, 以使應用程序能夠使用。在ads7843_ts_read ( )函數中采用了非阻塞型操作, 使得在沒(méi)有數據到達的時(shí)候立即返回, 然后用異步觸發(fā)fasync ( )來(lái)通知數據的到來(lái)。ads7843 _ ts_poll ( )函數用于驅動(dòng)程序的非阻塞操作, ads7843_ts_fasync ( )函數用于驅動(dòng)異步觸發(fā)。ads7843_ts_ioctl ( )函數中, 提供了可從用戶(hù)態(tài)控制的參數, 如觸摸屏是否在驅動(dòng)中校準、屏幕的最大最小坐標值等。ads7843_ts_release( )函數用來(lái)關(guān)閉觸摸屏設備。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(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>