版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
ARM實(shí)驗(yàn)AD轉(zhuǎn)換以及觸摸屏實(shí)驗(yàn)AD轉(zhuǎn)換:又稱為模數(shù)轉(zhuǎn)換,是將模擬信號轉(zhuǎn)換為計(jì)算機(jī)能夠處理的數(shù)字信號。s3c2440集成了8通道10位CMOSA/D轉(zhuǎn)換器。ADCCON第15位:用于標(biāo)識A/D轉(zhuǎn)換是否結(jié)束。第14位:用于使能是否進(jìn)行預(yù)分頻。13--6:則存儲的是預(yù)分頻數(shù)值,因?yàn)锳/D轉(zhuǎn)換的速度不能太快,所以要通過預(yù)分頻處理才可以得到正確的A/D轉(zhuǎn)換速度,如我們想要得到A/D轉(zhuǎn)換頻率為1MHz,則預(yù)分頻的值應(yīng)為49。5--3:表示的是A/D轉(zhuǎn)換的通道選擇。第2位:可以實(shí)現(xiàn)A/D轉(zhuǎn)換的待機(jī)模式。第1位:用于是否通過讀取操作來使能A/D轉(zhuǎn)換的開始。第0位:則是在第1位被清零的情況下用于開啟A/D轉(zhuǎn)換。1.A/D轉(zhuǎn)換的數(shù)據(jù)可以通過中斷或查詢方式訪問。中斷方式的總體轉(zhuǎn)換時間為從A/D轉(zhuǎn)換器開始到轉(zhuǎn)換數(shù)據(jù)的讀取,可能由于中斷服務(wù)程序的返回時間和數(shù)據(jù)訪問時間而延遲。查詢方式是通過檢查轉(zhuǎn)換結(jié)束標(biāo)志位的ADCCON[15],可以確定讀取ADCDAT寄存器的時間。2.還提供了其它啟動A/D轉(zhuǎn)換的方法。在轉(zhuǎn)換的讀啟動模式ADCCON[1]設(shè)置為1后,A/D轉(zhuǎn)換啟動同時讀取數(shù)據(jù)。寄存器ADCDAT0的低10位用于存儲A/D轉(zhuǎn)換后的數(shù)據(jù)。寄存器ADCCON的第15位用于標(biāo)識A/D轉(zhuǎn)換是否結(jié)束。intreadADC(void){ rADCCON=(1<<14)|(49<<6);//設(shè)置預(yù)分頻器和rADCCON&=~((7<<3)|(1<<2));//A/D通道0,正常模式
rADCCON|=0x1;//啟動A/D轉(zhuǎn)換
while(rADCCON&0x1);//確認(rèn)A/D轉(zhuǎn)換是否開始
while(!(rADCCON&0x8000))
;//等待A/D轉(zhuǎn)換的結(jié)束return((int)rADCDAT0&0x3ff);//讀取A/D轉(zhuǎn)換的數(shù)據(jù)}練習(xí):用中斷的方式,來進(jìn)行AD轉(zhuǎn)換,旋轉(zhuǎn)滑動變阻器,在超級終端上顯示數(shù)字。 觸摸屏接口MINI2440原理圖觸摸屏接口模式觸摸屏有四種接口模式:(1)普通轉(zhuǎn)換模式與通用AD轉(zhuǎn)換的使用方式很相似。通過設(shè)置ADCCON來初始化,并以一個讀和寫ADCDAT0的操作完成。(2)X/Y位置分別轉(zhuǎn)換模式又可以分成兩種模式:X位置轉(zhuǎn)換模式和Y位置轉(zhuǎn)換模式。這兩種模式下,觸摸屏分別把X、Y位置轉(zhuǎn)換數(shù)據(jù)寫入到ADCDAT0和ADCDAT1中之后,向中斷控制器發(fā)起中斷請求。(3)自動(順序)X/Y位置轉(zhuǎn)換模式觸摸屏控制器依次轉(zhuǎn)換X和Y位置,把轉(zhuǎn)換結(jié)果分別寫入到ADCDAT0和ADCDAT1中,然后向中斷控制器發(fā)起中斷請求。(4)等待中斷模式設(shè)置ADCTSC為0xD3,當(dāng)觸摸筆按下時,控制器發(fā)起中斷請求。中斷類型最終向處理器發(fā)起的中斷請求類型是總中斷INT_ADC,它分為兩種子中斷類型,1.INT_SUB_ADC表示AD采樣完成(觸摸屏X、Y位置采樣完成);2.INT_SUB_TC表示觸摸屏中斷,即筆在屏幕上按下或者離開屏幕。觸摸屏實(shí)驗(yàn)思考:要實(shí)現(xiàn)X、Y位置判斷,當(dāng)然是用自動采樣模式最好;而要判斷觸摸筆的按下與離開,則應(yīng)使用等待中斷模式。問題是怎么把二者結(jié)合起來?方法:采用等待中斷模式來判斷筆的按下與離開;另外設(shè)置一個采樣定時器,每隔一定時間(10ms)對X、Y位置進(jìn)行采樣。注意問題:(1)只有在筆按下狀態(tài)時才進(jìn)行位置采樣,筆不在屏幕上時,采樣是沒有意義的。(2)位置采樣采用輪詢模式實(shí)現(xiàn),即等待采樣完成;采樣完成后要恢復(fù)ADCTSC,重置為等待中斷模式。(3)在普通轉(zhuǎn)換模式,分別采樣模式和自動采樣模式下,ADCDAT0的最高位無效,不能用它來判斷筆的狀態(tài)。只有在觸摸屏中斷(INT_SUB_TC)中才可以用ADCDAT0來判斷觸摸筆狀態(tài)。(4)位置采樣完成后要屏蔽BIT_SUB_ADC。否則,ADC持續(xù)進(jìn)行采樣,會以很高的頻率(因?yàn)椴蓸宇l率很高)發(fā)起INT_SUB_ADC中斷請求,最終向處理器發(fā)起INT_ADC請求,這會嚴(yán)重影響處理器的工作。這也是不采用自動采樣,而要用定時器定時采樣的原因。typedefstruct
{
volatileintbtn_state;//筆的狀態(tài)
volatileintx_pos;//x坐標(biāo)
volatileinty_pos;//y坐標(biāo)
volatileintint_count;//轉(zhuǎn)換的次數(shù)
volatileintstart_flag;//開始標(biāo)志
}MOUSE_STATE;staticMOUSE_STATEg_mouse_state;初始化:rADCDLY=50000;//延時寄存器
rADCCON=(1<<14)+(49<<6);rADCTSC=0xD3;pISR_ADC=(unsignedint)TouchPanelIsr;
rINTMSK&=(~BIT_ADC);
rINTSUBMSK&=(~BIT_SUB_TC);
rINTSUBMSK|=BIT_SUB_ADC;
ADCTSC=011010011當(dāng)有筆按下或抬起staticvoid__irqTC_interupt(void)//
{
…..中斷清0if(0==g_mouse_state.btn_state)//如果中斷前狀態(tài)為抬起{
g_mouse_state.btn_state=1;//標(biāo)志按下狀態(tài)
g_mouse_state.start_flag=1;//標(biāo)志開始狀態(tài)………..打印狀態(tài)和坐標(biāo)rADCTSC=0x1D3;//設(shè)置為抬起中斷
}
else//如果中斷前狀態(tài)為按下{
g_mouse_state.btn_state=0;//標(biāo)志抬起狀態(tài)
………….打印狀態(tài)rADCTSC=0xD3;//設(shè)置為按下中斷
}
}定時器中斷定時器中斷每隔10ms中斷一次,進(jìn)入中斷處理函數(shù),先判斷筆有沒有在屏上,如果沒有就直接返回,如果有就轉(zhuǎn)換X,Y坐標(biāo)。void__irqTimer(void)
{
if(0==g_mouse_state.start_flag)return;
if(0==g_mouse_state.btn_state)return;
rINTSUBMSK&=(~BIT_SUB_ADC);//允許AD中斷
rADCTSC=0x0C;//自動x,y轉(zhuǎn)換模式
rADCCON=(1<<14)+(49<<6);//設(shè)置頻率
rADCCON|=0x01;//開始轉(zhuǎn)換
while(rADCCON&0x01);//AD轉(zhuǎn)換開始且該位在開始后清零
while(!(rADCCON&0x8000));//等待AD轉(zhuǎn)換結(jié)束
while(!(rSUBSRCPND&(1<<10)));//等待產(chǎn)生中斷
rINTSUBMSK|=BIT_SUB_ADC;//關(guān)AD中斷
g_mouse_state.x_pos=(rADCDAT0&0x3FF);
g_mouse_state.y_pos=(rADCDAT1&0x3FF);
g_mouse__count++;//取x,y的值,并且記數(shù)器+1rSUBSRCPND=BIT_SUB_ADC;//中斷清0UART0_printf(“[x=%3d,y=%3d]\n”,g_mouse_state.x_pos,g_mouse_state.y_pos);//打印坐標(biāo)練習(xí):把整個程序?qū)懲辏缓笤贛INI2440上運(yùn)行,并能夠看到效果,并指出有什么問題?
if(0==(rSUBSRCPND&BIT_SUB_TC))
{
rSRCPND|=BIT_ADC;
rINTPND|=BIT_ADC;
if(0==g_mouse_state.btn_state)
{
rADCTSC=0xD3;
}
else
{
rADCTSC=0x1D3;
}
}思考:這段代碼有何作用?設(shè)LCD上每個點(diǎn)PD的坐標(biāo)為[XD,YD],觸摸屏上每個點(diǎn)PT的坐標(biāo)為[XT,YT]。要實(shí)現(xiàn)觸摸屏上的坐標(biāo)轉(zhuǎn)換為LCD上的坐標(biāo),需要下列公式進(jìn)行轉(zhuǎn)換:XD=A×XT+B×YT+CYD=D×XT+E×YT+F因?yàn)槠渲幸还灿辛鶄€參數(shù)(A,B,C,D,E,F),因此只需要三個取樣點(diǎn)就可以求得這六個參數(shù)。這六個參數(shù)一旦確定下來,只要給出任意觸摸屏上的坐標(biāo)點(diǎn)PT,代入這個公式,就可以得到它所對應(yīng)的LCD上像素點(diǎn)的坐標(biāo)PD。具體的求解過程就不細(xì)講,只給出最終的結(jié)果。已知LCD上的三個取樣點(diǎn)為:PD0,PD1,PD2,它們所對應(yīng)的觸摸屏上的三個點(diǎn)為:PT0,PT1,PT2。A,B,C,D,E,F這六個參數(shù)最終的結(jié)果都是一個分式,而且都有一個共同的分母,為:
K=(XT0-XT2)×(YT1-YT2)-(XT1-XT2)×(YT0-YT2)那么這六個參數(shù)分別為:
A=[(XD0-XD2)×(YT1-YT2)-(XD1-XD2)×(YT0-YT2)]/KB=[(XT0-XT2)×(XD1-XD2)-(XD0-XD2)×(XT1-XT2)]/KC=[YT0×(XT2×XD1-XT1×XD2)+YT1×(XT0×XD2-XT2×XD0)+YT2×(XT1×XD0-XT0×XD1)]/K
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《裝飾施工圖范例》課件
- 2023年水處理劑項(xiàng)目籌資方案
- 危險廢物相關(guān)法律法規(guī)及規(guī)范化管理培訓(xùn) 課件
- 機(jī)械制圖測試題及參考答案
- 東莞市長安實(shí)驗(yàn)中學(xué)2023-2024學(xué)年八年級上學(xué)期期末考試數(shù)學(xué)試卷
- 養(yǎng)老院老人生活娛樂設(shè)施管理制度
- 養(yǎng)老院老人健康監(jiān)測服務(wù)質(zhì)量管理制度
- 投資養(yǎng)殖合同(2篇)
- 2024年版:臨時建設(shè)設(shè)施買賣合同規(guī)范
- 2025年阿克蘇貨運(yùn)車從業(yè)考試題
- 完整版場記單模板
- 實(shí)木家具工藝標(biāo)準(zhǔn)(全流程)
- 高一語文必修一4篇古文 詞類活用(課堂PPT)
- 商業(yè)發(fā)票Commercial Invoice模板2
- OPERA系統(tǒng)培訓(xùn)ppt課件
- 電鍍工藝-電鍍鎳
- 幼小銜接中幼兒園與小學(xué)合作的國內(nèi)外研究現(xiàn)狀分析
- 110Kv輸變電工程電氣安裝技術(shù)交底
- 錄屏軟件Camtasia_Studio使用教程
- 工廠常用英語
- 海上平臺場址工程地質(zhì)勘察規(guī)范
評論
0/150
提交評論