四線電阻式觸摸屏控製器的應用研究
發布時間:2011-01-10 來源:桂林電子科技大學
中心議題:
- 四線電阻式觸摸屏控製器設計
- 硬件組成電路介紹
- 接口電路介紹
- 觸摸屏坐標讀取的軟件設計介紹
摘要:介紹以C8051為核心的觸摸屏控製係統的設計,分析了在係統設計過程中出現的幹擾信號、測量值偏差和信號采集中延時時間的設定不當等問題以及它們對係統控製效果的影響,並給出了解決方法。
1 引言
ADS7843是一種四線式觸摸屏控製器,目前較多應用於電阻式觸摸屏輸入係統中。盡管有很多相關的典型應用和應用注意事項,但是在實際使用過程中仍然會遇到一些問題。應用在通用的單片機中所出現的問題及解決方法,已有一些介紹。本文是對基於高速、流水線結構的 C8051的觸摸屏控製係統設計中所遇到的問題進行分析處理,並給出了解決方法。
2 液晶觸摸屏的係統設計
2.1 硬件組成
采用典型的四線電阻式觸摸屏,其主要特點是精確度高,不受環境幹擾,適用於各種場合。控製器為四線電阻式觸摸屏通用的 ADS7843控製芯片,具有 12位轉換精度,支持 SPI通訊協議;內建 512KByt e ROM,提供繁體或簡體中文,支持 2 Page顯示模式,支持文本顯示和圖形顯示 (320×240點 )兩種方式,顯示模塊內建有 512KByt e的 16× 16中文顯示字型 ROM(FontROM)與 8× 6的 A SCI I半型字型,除內建 8× 16和 16× 16的字號外,還提供字型放大的功能。
單片機采用 Cygnal的 C8051F020,高速、 流水線結構的 C8051兼容的 CIP - 51內核,64K字節的 FLA SH,4K +256字節的 RAM, 12位的 AD轉換精度,硬件實現的 SPI、 S MBus/I2C接口,5個通用的 16位定時器。70%的指令執行時間為一個或兩個係統周期。
2 . 2 接口電路
如圖 1示。ADS7843串行接口的一次完整操作需要 3× 8=24個 DCL K時鍾周期,前 8個脈衝接收 8位的命令,並在第 6個脈衝的上升沿開始 A / D轉換器進入采樣階段,從第 9個脈衝開始進入轉換階段,輸出12位采樣值,轉換結束進入空閑階段。直到 24個DCL K結束,CS置高電平,一次測量結束。如圖 2所示。此外,ADS7843還支持其他的工作方式,這裏不再詳述。


2 . 3 工作原理
當用戶在觸摸屏上的有效區域內點擊時,觸摸屏的 X方向、 Y方向輸出電阻分別隨 X和 Y呈線性變化,ADS7843控製器將其分別轉換為 12位數據,通過中斷告知 C8051F020需要接收數據,C8051F020接收到數據後進行處理;首先進行觸點數據是否有效判斷,包括兩方麵:一是判斷是否誤操作,即是否是由於人的抖動產生的錯誤數據;二是 ADS7843傳過來得數據是否有效,由於剛開始的傳過來的第一個坐標是用戶開始接觸觸摸屏時產生的,電阻不準確,導致數據也不準,通常要去掉;在接收過程中采用多次平均的方法,假如有一次接收的數據和平均值差別很大,則這次測量就作廢,需要重新測量。一旦數據有效,C8051F020接著計算觸點坐標落在液晶屏的位置,根據計算的結果判斷執行相應的功能函數。使觸摸屏和液晶屏有機的結合起來,建立一定的邏輯關係,交互地進行信息存取和輸出。[page]
2 . 4 觸摸屏坐標讀取的軟件流程

3 設計中出現的問題及解決方法
3 . 1 幹擾信號
在測試時,手指或觸摸筆觸摸時,會產生一定的幹擾信號,幹擾情況分為兩種: (1)通過中斷管腳會一直向 C8051F020發出中斷請求。解決方法:中斷信號接緩衝器,然後將輸出管腳接 1 μF的鉭電容,濾除中斷幹擾信號。 (2) ADS7843輸出值不穩定。解決方法:在 X +、 Y +管腳上連接 15pF鉭電容濾波。經過測試驗證,問題解決良好。連接電路見圖 1。
3 . 2 ADS7843的測量值偏差
當有觸摸動作時,觸摸點電阻膜會抖動或錯誤觸發,解決方法:先延時以消除抖動,采樣 16次,去掉采樣的最先兩個值和最後兩個值,利用軟件濾波,去除采樣中的抖動造成的偏差和誤觸發。利用中間連續采樣的 12次值,從采樣的第 3次值到第 14個值,求出每次相鄰兩次采樣值之差,求和後取平均值與預設值相比較,如果大於預設值,則此觸摸動作無效,小於預設值則把采集數據的最小 6個差值對應的數據求平均值作為坐標值。可以消除抖動和誤觸發的無效值,得到的坐標采樣值精確度較高,相對於其他的濾波算法,該方法最優。
3 . 3 信號采集中的延時時間設定
因為 C8051F020的速度是普通 51芯片的 12倍,ADS7843在進行數據采集時,時鍾信號高低電平持續的時間必須足夠,方可保證能采集到坐標值。測試中發現,在高低電平後延遲 4個“_n op_( ) ; ” 空指令時,觸摸 X坐標線,可以采集到 X值坐標,且有起始點,坐標值有線性變化;觸摸 Y坐標時,采集到的 Y坐標值無起始點,在觸摸屏上的 Y坐標上的值相差無幾,幾乎沒有變化。將延時指令由原來的 4個“_nop_( ) ; ”改為 16個,發現測試結果正常。能同時讀出 X、 Y值坐標,且兩坐標值均有起始點,且線性變化。因此,在信號采集程序中,將時鍾信號的延遲時間改為 16個“_n op_( ) ; ” 。例程如下:
void Ext _int 0( ) int err upt0
{ // 關中斷
// 延時以消除抖動
// 去除初次不穩定值,軟件濾波
// 以下程序為多次循環讀取多組 X、 Y坐標值
Whit e Char T07843(0X90) ; // 送控製字
While(BUSYT) ; // 判忙
DCL K =1; _nop_( ) ; _nop_( ) ; _nop_( ) ; _nop_( ) ;
_nop_( ) ; _nop_( ) ; _nop_( ) ; _nop_( ) ;
_nop_( ) ; _nop_( ) ; _nop_( ) ; _nop_( ) ;
_nop_( ) ; _nop_( ) ; _nop_( ) ; _nop_( ) ;
// 時鍾信號足夠時間來讀取坐標值
DCL K =0; _nop_( ) ; _nop_( ) ; _nop_( ) ; _nop_( ) ;
_nop_( ) ; _nop_( ) ; _nop_( ) ; _nop_( ) ;
_nop_( ) ; _nop_( ) ; _nop_( ) ; _nop_( ) ;
_nop_( ) ; _nop_( ) ; _nop_( ) ; _nop_( ) ;
// 時鍾信號足夠時間來讀取坐標值
X_pos[ r] =ReadFr omChar Fr om7843( ) ; // 讀 X值
// 以下為讀取坐標 Y值;
Whit e Char T07843(0XD0) ;
// 下同讀取 X值程序
// C80 51F0 20讀取 ADS7843的 AD轉換值
// 關中斷,延時
// 開中斷 }
4 結束語
經過反複測試後得出:在係統控製中所產生的問題均被解決,觸摸屏上每個設定的觸摸鍵反應都很靈敏,在觸摸鍵的有效區域內都有反應。
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
- 邊緣AI的發展為更智能、更可持續的技術鋪平道路
- IAR作為Qt Group獨立BU攜兩項重磅汽車電子應用開發方案首秀北京車展
- 安森美:用全光譜“智慧之眼”定義下一代工業機器人
- 貿澤EIT係列新一期,探索AI如何重塑日常科技與用戶體驗
- 算力爆發遇上電源革新,大聯大世平集團攜手晶豐明源線上研討會解鎖應用落地
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall




