觸摸屏的工作原理與應(yīng)用
2.2 ADS7843的內(nèi)部結(jié)構(gòu)及參考電壓模式選擇 本文引用地址:http://2s4d.com/article/164921.htm
ADS7843之所以能實(shí)現(xiàn)對(duì)觸摸屏的控制,是因?yàn)槠鋬?nèi)部結(jié)構(gòu)很容易實(shí)現(xiàn)電極電壓的切換,并能進(jìn)行快速A/D轉(zhuǎn)換。圖5所示為其內(nèi)部結(jié)構(gòu),A2~A0和SER/為控制寄存器中的控制位,用來進(jìn)行開關(guān)切換和參考電壓的選擇。
ADS7843支持兩種參考電壓輸入模式:一種是參考電壓固定為VREF,另一種采取差動(dòng)模式,參考電壓來自驅(qū)動(dòng)電極。這兩種模式分別如圖6(a)、(b)所示。采用圖6(b)的差動(dòng)模式可以消除開關(guān)導(dǎo)通壓降帶來的影響。表2和表3為兩種參考電壓輸入模式所對(duì)應(yīng)的內(nèi)部開關(guān)狀況。
2.3 ADS7843的控制字及數(shù)據(jù)傳輸格式
ADS7843的控制字如表4所列,其中S為數(shù)據(jù)傳輸起始標(biāo)志位,該位必為1。A2~A0進(jìn)行通道選擇(見表2和3)。
MODE用來選擇A/D轉(zhuǎn)換的精度,1選擇8位,0選擇12位。
SER/選擇參考電壓的輸入模式(見表2和3)。PD1、PD0選擇省電模式:
00省電模式允許,在兩次A/D轉(zhuǎn)換之間掉電,且中斷允許;
01同00,只是不允許中斷;
10保留;
11禁止省電模式。
為了完成一次電極電壓切換和A/D轉(zhuǎn)換,需要先通過串口往ADS7843發(fā)送控制字,轉(zhuǎn)換完成后再通過串口讀出電壓轉(zhuǎn)換值。標(biāo)準(zhǔn)的一次轉(zhuǎn)換需要24個(gè)時(shí)鐘周期,如圖7所示。由于串口支持雙向同時(shí)進(jìn)行傳送,并且在一次讀數(shù)與下一次發(fā)控制字之間可以重疊,所以轉(zhuǎn)換速率可以提高到每次16個(gè)時(shí)鐘周期,如圖8所示。如果條件允許,CPU可以產(chǎn)生15個(gè)CLK的話(比如FPGAs和ASICs),轉(zhuǎn)換速率還可以提高到每次15個(gè)時(shí)鐘周期,如圖9所示。
2.4 A/D轉(zhuǎn)換時(shí)序的程序設(shè)計(jì)
ADS7843的典型應(yīng)用如圖4所示。假設(shè)μP接口與51單片機(jī)的P1.3~P1.7相連,現(xiàn)以一次轉(zhuǎn)換需24個(gè)時(shí)鐘周期為例,介紹A/D轉(zhuǎn)換時(shí)序的程序設(shè)計(jì)。
; A/D 接口控制線
DCLK BIT P1.3
CS BIT P1.4
DIN BIT P1.5
BUSY BIT P1.6
DOUT BIT P1.7
; A/D 通道選擇命令字和工作寄存器
CHX EQU 094H ;通道X+的選擇控制字
CHY EQU 0D4H;通道Y+的選擇控制字
CH3 EQU 0A4H
CH4 EQU 0E4H
AD_CH EQU 35H ;通道選擇寄存器
AD_RESULTH EQU 36H ;存放12 bit A/D值
AD_RESULTL EQU 37H
; 存放通道CHX+的A/D值
CHXAdResultH EQU 38H
CHXAdResultL EQU 39H
; 存放通道CHY+的A/D值
CHYAdResultH EQU 3AH
CHYAdResultL EQU 3BH
; 采集通道CHX+的程序段(CHXAD)
CHXAD: MOV AD_CH,#CHX
LCALL AD_RUN
MOV CHXAdResultH,AD_RESULTH
MOV CHXAdResultL,AD_RESULTL
RET
; 采集通道CHY+的程序段(CHYAD)
CHYAD: MOV AD_CH,#CHY
LCALL AD_RUN
MOV CHYAdResultH,AD_RESULTH
MOV CHYAdResultL,AD_RESULTL
RET
; A/D轉(zhuǎn)換子程序(AD_RUN)
; 輸入: AD_CH-模式和通道選擇命令字
; 輸出: AD_RESULTH,L ;12 bit的A/D轉(zhuǎn)換值
; 使用: R2 ;輔助工作寄存器
AD_RUN:
CLR CS ; 芯片允許
CLR DCLK
MOV R2,#8 ;先寫8 bit命令字
MOV A,AD_CH
AD_LOOP:
MOV C, ACC.7
MOV DIN,C ;時(shí)鐘上升沿鎖存DIN
SETB DCLK ;開始發(fā)送命令字
CLR DCLK ;時(shí)鐘脈沖,一共24個(gè)
RL A
DJNZ R2,AD_LOOP
NOP
NOP
NOP
NOP
ADW0: JNB BUSY,AD_WAIT ;等待轉(zhuǎn)換完成
SJMP ADW1
AD_WAIT:
LCALL WATCHDOG
NOP
SJMP ADW0
CLR DIN
ADW1: MOV R2,#12 ;開始讀取12bit結(jié)果
SETB DCLK
CLR DCLK
AD_READ:
SETB DCLK
CLR DCLK ;用時(shí)鐘的下降沿讀取
MOV A,AD_RESULTL
MOV C,DOUT
RLC A
MOV AD_RESULTL,A
MOV A,AD_RESULTH
RLC A
MOV AD_RESULTH,A
DJNZ R2,AD_READ
MOV R2,#4 ;最后是沒用的4個(gè)時(shí)鐘
IGNORE:
SETB DCLK
CLR DCLK
DJNZ R2,IGNORE
SETB CS ;禁止芯片
ANL AD_RESULTH,#0FH ;屏蔽高4 bit
RET
2.5 A/D轉(zhuǎn)換結(jié)果的數(shù)據(jù)格式
ADS7843轉(zhuǎn)換結(jié)果為二進(jìn)制格式。需要說明的是,在進(jìn)行公式計(jì)算時(shí),參考電壓在兩種輸入模式中是不一樣的。而且,如果選取8位的轉(zhuǎn)換精度,1LSB=VREF/256,一次轉(zhuǎn)換完成時(shí)間可以提前4個(gè)時(shí)鐘周期,此時(shí)串口時(shí)鐘速率也可以提高一倍。
結(jié)束語(yǔ)
在許多嵌入式系統(tǒng)中,CPU提供專門的模塊來支持液晶顯示和觸摸屏的輸入,使得接口非常簡(jiǎn)單。比如,MOTOROLA的MC68VZ328(稱為 Dragon Ball)就提供專門的引腳來支持8位和4位的液晶顯示,對(duì)觸摸屏的支持通過SPI2借助ADS7843也很容易完成。
評(píng)論