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

當前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]在人機交互系統(tǒng)中,鍵盤、觸摸屏等輸入設(shè)備是一個不可或缺的部分。對于手機、平板這些消費類電子而言,觸摸屏以其非常良好的用戶體驗得到了廣泛的應(yīng)用。筆者此處就s3c2416 IIC接口電容屏的應(yīng)用作一個簡單的介紹。1.

在人機交互系統(tǒng)中,鍵盤、觸摸屏等輸入設(shè)備是一個不可或缺的部分。對于手機、平板這些消費類電子而言,觸摸屏以其非常良好的用戶體驗得到了廣泛的應(yīng)用。筆者此處就s3c2416 IIC接口電容屏的應(yīng)用作一個簡單的介紹。

1. 觸摸屏概述

目前嵌入式系統(tǒng)中常用的觸摸屏有兩種,一種是電阻式觸摸屏,另一種是電容式觸摸屏。電阻屏需要一定的壓力使屏幕各層發(fā)生接觸,兩層導(dǎo)電層在接觸點的位置電阻會發(fā)生變化,在X、Y兩個方向產(chǎn)生模擬的分壓值,這個分壓值通過觸摸屏控制器模數(shù)轉(zhuǎn)換,得到觸摸點的坐標位置。因此,電阻屏只要有壓力接觸,就會有反應(yīng),也正因為電阻屏需一定的壓力,造成電阻屏表面容易磨損,敏感度較差,實現(xiàn)目前手機滑動解鎖的功能是比較困難的。由于其實現(xiàn)機制,電阻屏只能夠單點觸摸,對環(huán)境使用要求不高,可以實現(xiàn)較精確位置的觸控。

電容屏在工作面四個角上引出電極,在導(dǎo)體層內(nèi)形成一個低電壓交流電場。用戶觸摸屏時,由于人體電場、用戶、觸摸屏表面形成一個耦合電容,對于高頻電流來說,電荷會通過這個耦合電容流向大地,這個很小的電流分從觸摸屏的四角上的電極中流出,并且流經(jīng)這四個電極的電流與手指到四角的距離成正比,控制器通過對這四個電流比例的精確計算,得出觸摸點的位置。因此,電容屏只對帶電物體的觸控具有反應(yīng),如牙簽、指甲、帶手套等是無法操作電容屏的。由于電容屏基于電荷進行工作,因此只需手指輕觸即能得到輸入反應(yīng),敏感度高。但同時對周圍環(huán)境要求高,過于潮濕的環(huán)境(如浴室),有水滴在觸摸屏上等都可能造成電容屏無法正常工作。電容相對精度較低,無法通過手指觸控精細位置。此外,電容屏可以支持多點觸摸,幾乎成為手機、平板觸摸屏的首選,用以支持多點觸摸進行圖片放大、旋轉(zhuǎn)等功能。

2. 電容屏驅(qū)動實現(xiàn)

筆者使用的電容屏驅(qū)動IC為focaltech的ft5206,這款芯片可以最多支持真實5點,即最多可同時檢測到5個點同時觸摸,接口支持IIC與SPI。

驅(qū)動芯片檢測到一個有效的觸摸時,將產(chǎn)生一個中斷控制信號。有兩種模式的中斷信號輸出,分別為查詢模式和觸發(fā)模式。查詢模式適用于只支持單點觸摸處理的軟件應(yīng)用中,除手機、平板所用的Android、ios外,大部分操作系統(tǒng)(或圖形系統(tǒng))并不很好地支持多點觸摸。采用這種有觸摸時,中斷信號線拉低,無觸摸時,中斷信號線拉高的模式將極好地應(yīng)用到這些軟件中。觸發(fā)模式就是在有觸摸時,驅(qū)動芯片會以一定頻率產(chǎn)生中斷信號,以上報觸摸點的坐標位置,通常這個上報頻率為100HZ左右(驅(qū)動芯片固化),上報頻率過低可能會造成掉點。這樣可以保證識別多個點的觸摸。目前,主流手機、平板均是這種工作方式獲得多點觸摸的坐標位置的。

筆者的電容屏模組采用的是IIC接口,因此,s3c2416電容屏驅(qū)動實現(xiàn)需要以上一章節(jié)IIC驅(qū)動為基礎(chǔ),在電容屏測試代碼中給出了5點觸摸畫布的實例,可以用5個指頭同時在畫布上作圖。本章節(jié)觸摸屏模塊代碼測試需要前面章節(jié)的啟動代碼、IIC接口模塊、RGB屏驅(qū)動模塊支持。

tp_ft5206.c模塊實現(xiàn)如下:

#include "s3c2416.h"

#include "IIC.h"

#include "tp_ft5206.h"

#include "Exception.h"

volatile unsigned char TP_Press;

static void TP_EINT8_15_IRQ()

{

if (rEINTPEND & (1<<12)) { //EINT12中斷處理

rEINTMASK |= (1 << 12); // EINT12中斷禁用

rEINTPEND |= (1 << 12); // 清中斷標志

TP_Press = 1; // 指示觸摸屏發(fā)生了按下

}

rSRCPND1 |= (1 << INT_EINT8_15);//Clear pending bit

rINTPND1 |= (1 << INT_EINT8_15);

}

static void Delay_ms(unsigned int nCount)

{

//延時1ms,共延時nCount(R0) ms

__asm__ __volatile__ (

"0:nt"

"ldr r1, =100000nt" // Arm clock為400M

"1:nt"

"subs r1, r1, #1nt" // 一個Arm clock

"bne 1bnt" // 跳轉(zhuǎn)會清流水線,3個Arm clock

"subs %0, %0, #1nt" // 調(diào)用者確保nCount不為0

"bne 0bnt"

: : "r"(nCount):"r1"

);

}

// 向電容屏內(nèi)部地址WriteAddr連續(xù)寫入Length字節(jié)數(shù)據(jù),數(shù)據(jù)位置在pData中

intTP_WriteBytes(unsigned char WriteAddr, unsigned char *pData,

int Length)

{

// 調(diào)用IIC寫,對電容屏內(nèi)部某一地址進行連續(xù)寫

return IIC_WriteBytes(TP_SlaveAddr,WriteAddr, pData, Length);

}

// 向電容屏內(nèi)部地址ReadAddr連續(xù)讀入Length字節(jié)數(shù)據(jù),數(shù)據(jù)保存在pData中

intTP_ReadBytes(unsigned char ReadAddr, unsigned char *pData,

int Length)

{

// 調(diào)用IIC接口讀,對電容屏內(nèi)部某一地址進行連續(xù)讀

return IIC_ReadBytes(TP_SlaveAddr, ReadAddr,pData, Length);

}

void TP_Reset()

{

rGPFDAT &= ~(1 << 5); // 拉低復(fù)位線

Delay_ms(20);

rGPFDAT |= (1 << 5);

Delay_ms(200);

}

void TP_Init()

{

rGPGUDP &= ~(0x3 << 8); //GPG4(EINT12)作為電容屏中斷輸入

rGPGUDP |= (0x2 << 8); // TP_INT GPG4上拉

rGPGCON &= ~(0x3 << 8);

rGPGCON |= (0x2 << 8); // GPG4配置成EINT12

rGPFUDP &= ~(0x3 << 10); // GPF5作為復(fù)位控制信號

rGPFUDP |= (0x2 << 10); // TP_RST GPF5上拉

rGPFCON &= ~(0x3 << 10);

rGPFCON |= (0x1 << 10); // GPF5配置成輸出

TP_Reset(); //TP復(fù)位

// TP外部中斷入口函數(shù)加入到向量表

IRQ_Register(INT_EINT8_15, TP_EINT8_15_IRQ);

rEXTINT1 &= ~(0x7 << 16);

rEXTINT1 |= (0x2 << 16); // EINT12下降沿觸發(fā)

rINTMOD1 &= ~(1 << INT_EINT8_15);// EINT8_15 IRQ

rINTMSK1 &= ~(1 << INT_EINT8_15);// EINT8_15 開啟中斷

rEINTMASK &= ~(1 << 12); // EINT12使能中斷

}

模塊的頭文件內(nèi)容如下:

#ifndef__TP_FT5206_H__

#define__TP_FT5206_H__

#ifdef__cplusplus

extern"C" {

#endif

// TP IIC的7位從機地址

#define TP_SlaveAddr 0x38

#define TOUCH1_XH 0x03

#define TOUCH1_XL 0x04

#define TOUCH1_YH 0x05

#define TOUCH1_YL 0x06

#define ID_G_MODE 0xA4

extern void TP_Reset(void);

extern void TP_Init(void);

extern int TP_WriteBytes(unsigned char WriteAddr,

unsigned char *pData, int Length);

extern int TP_ReadBytes(unsigned char ReadAddr,

unsigned char *pData, int Length);

extern volatile unsigned char TP_Press;

#ifdef__cplusplus

}

#endif

#endif/*__TP_FT5206_H__*/

五指同時觸摸畫線效果:

3. 附錄

TouchPanel_gcc.rar,五點觸摸畫線電容屏GCC測試工程

http://pan.baidu.com/s/1i37NU2x


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

IIC是Philips推出的芯片間串行傳輸總線,它以二根連線實現(xiàn)完善的全雙工同步數(shù)據(jù)傳送,可以極方便地構(gòu)成多機系統(tǒng)和外圍器件擴展系統(tǒng)。由于其接口簡單靈活,很多外圍器件均提供了IIC接口,如手機、平板常用的重力傳感器

關(guān)鍵字: s3c2416 裸機開發(fā) iic驅(qū)動

現(xiàn)在主要講解一下在GCC移植UCGUI,Makefile工程如何加入目錄,加入源碼,c標準庫,編譯選項的設(shè)置。筆者的Makefile模板提取自uboot,工程中加入目錄,加入源碼都是很簡單的,詳細的介紹請參考前面章節(jié)”...

關(guān)鍵字: gcc s3c2416 ucgui 移植 裸機開發(fā)

jpeg格式是一種針對相片影像而廣泛使用的一種失真壓縮標準,其壓縮技術(shù)十分先進,用有損壓縮方式去除冗余的圖像數(shù)據(jù),在獲得極高壓縮率的同時,能展現(xiàn)十分豐富生動的圖像,能用最少的磁盤空間得到較好的圖像品質(zhì)。由

關(guān)鍵字: s3c2416 移植 裸機開發(fā) libjpeg

在消費電子產(chǎn)品中,往往都會用到音頻系統(tǒng)來播放音樂、進行通話等多媒體應(yīng)用,此外,對于一些需語音提示的產(chǎn)品,音頻部分都是不可或缺的功能。筆者此處就s3c2416的音頻驅(qū)動實現(xiàn)作一個簡單的介紹。1. IIS音頻總線s3c24

關(guān)鍵字: s3c2416 裸機開發(fā) 音頻驅(qū)動

S3C2416裸機開發(fā)系列十八_音頻驅(qū)動實現(xiàn)(2)標簽:WM8960IIS音頻驅(qū)動s3c2416裸機開發(fā)2014-06-10 09:50853人閱讀評論(0)收藏舉報分類:s3c2416裸機開發(fā)(24)版權(quán)聲明:本文為博...

關(guān)鍵字: s3c2416 裸機開發(fā) 音頻驅(qū)動

很多的嵌入式系統(tǒng)都需要人機交互,對于輸出設(shè)備,LCD以其顯示質(zhì)量高、畫面效果好等優(yōu)點得到了極其廣泛的應(yīng)用。s3c2416包含了一個LCD控制器,筆者此處就s3c2416的LCD應(yīng)用作一個簡單的介紹。1、LCD控制器概述1...

關(guān)鍵字: s3c2416 裸機開發(fā) rgb屏 驅(qū)動顯示

在嵌入式設(shè)計中,由于Nand Flash具有大容量,擦寫次數(shù)高,接口簡單等優(yōu)點,常用作固化存儲器。S3C2416支持Nand啟動,因此Nand存儲器可以直接保存固化代碼以及其它的數(shù)據(jù)。筆者在此簡單的介紹Nand flas...

關(guān)鍵字: nand驅(qū)動 s3c2416 裸機開發(fā) nand啟動

筆者前面章節(jié)簡單介紹了s3c2416啟動代碼的實現(xiàn)過程,啟動代碼就是用來處理cpu體系結(jié)構(gòu)中一些底層內(nèi)容,一個功能強大的啟動代碼是可以當作bootloader(如uboot)來用的。有了啟動代碼,用戶就可以專注于用c來作...

關(guān)鍵字: mdk s3c2416 啟動代碼 裸機開發(fā)

啟動代碼是處理器上電復(fù)位后最先運行的一段代碼。主要是用來把處理器初始化到一個確定的狀態(tài),為c運行環(huán)境作好準備。如設(shè)置異常向量表,初始化系統(tǒng)時鐘,初始化外部內(nèi)存,把用戶代碼拷貝到外部內(nèi)存,初始化棧,清0全

關(guān)鍵字: s3c2416 啟動代碼 流水燈 裸機開發(fā)

S3C2416裸機開發(fā)系列十九_Fatfs下播放錄音wav音頻文件標簽:wavfatfs音頻播放s3c2416sd驅(qū)動2014-06-11 09:551938人閱讀評論(0)收藏舉報分類:s3c2416裸機開發(fā)(24)版...

關(guān)鍵字: s3c2416 裸機開發(fā) 播放錄音 音頻文件
關(guān)閉