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

當前位置:首頁 > 單片機 > 單片機
[導讀]實驗目的:通過串口顯示輸入的電壓值及采集按下觸摸屏的(x,y)坐標值借此掌握S3C2410的ADC和觸摸屏的使用。實驗環(huán)境及說明:恒頤S3C2410開發(fā)板H2410。H24X0E擴展板上AIN0~AIN1輸出懸空,通過外接可變電阻電路采樣電壓

實驗目的:通過串口顯示輸入的電壓值及采集按下觸摸屏的(x,y)坐標值借此掌握S3C2410的ADC和觸摸屏的使用。

實驗環(huán)境及說明:恒頤S3C2410開發(fā)板H2410。H24X0E擴展板上AIN0~AIN1輸出懸空,通過外接可變電阻電路采樣電壓值;外接的觸摸屏接口實現(xiàn)擴展觸摸屏完成相應操作本實驗基于夏普3.5英寸LQ035Q7DB02。

實 驗思路:開發(fā)板上電啟動后,自動將NandFlash開始的4K數(shù)據(jù)復制到SRAM中,然后跳轉(zhuǎn)到0地址開始執(zhí)行。關(guān)閉看門狗、初始化SDRAM及 NandFlash控制器、設置MPLL來改變FCLK、HCLK、PCLK的值,設置堆棧,復制4KB后的16KB數(shù)據(jù)到SDRAM,之后進入main 函數(shù)中進行ADC及觸摸屏的測試。

知識掌握:ADC(模數(shù)轉(zhuǎn)換器)和Touch Screen(觸摸屏)。
★S3C2410 ADC和TouchScreen概述:S3C2410內(nèi)置1個8信道的10bit模數(shù)轉(zhuǎn)換器,該ADC能以500KSPS的采樣速率將外部的模擬信號轉(zhuǎn)換 為10位的二進制數(shù)字量。同時ADC部分能與CPU的觸摸屏控制器協(xié)同工作,完成對觸摸屏絕對地址的測量。ADC和TouchScreen共用一個A/D 轉(zhuǎn)換器,ADC可同時采樣8路模擬輸入信號,使用觸摸屏時,AIN[7]、AIN[5]被用來測量XP/YP的電平,剩余的六個引腳可用來做一般ADC輸 入。2410ADC和觸摸屏功能框圖如下:

★ADC和TouchScreen控制器的工作模式:
●ADC普通轉(zhuǎn)換模式(Normal Converson Mode)---普通轉(zhuǎn)換模式(AUTO_PST=0,XY_PST=0)是用來進行一般的ADC轉(zhuǎn)換之用的,例如通過ADC測量電池電壓等等。
● 獨立X/Y軸坐標轉(zhuǎn)換模式(Separate X/Y Position Conversion Mode)---獨立X/Y軸坐標轉(zhuǎn)換模式其實包含了X軸模式和Y軸模式2種模式。 首先進行X軸的坐標轉(zhuǎn)換(AUTO_PST=0,XY_PST=1),X軸的轉(zhuǎn)換資料會寫到ADCDAT0寄存器的XPDAT中,等待轉(zhuǎn)換完成后,觸摸屏 控制器會產(chǎn)生相應的中斷。 然后進行Y軸的坐標轉(zhuǎn)換(AUTO_PST=0,XY_PST=2),Y軸的轉(zhuǎn)換資料會寫到ADCDAT1寄存器的YPDAT中,等待轉(zhuǎn)換完成后,觸摸屏 控制器會產(chǎn)生相應的中斷。
●自動X/Y軸坐標轉(zhuǎn)換模式(Auto X/Y Position Conversion Mode)---自動X/Y軸坐標轉(zhuǎn)換模式(AUTO_PST=1,XY_PST=0)將會自動地進行X軸和Y軸的轉(zhuǎn)換操作,隨后產(chǎn)生相應的中斷。
● 中斷等待模式(Wait for InterruptMode)---在系統(tǒng)等待"Pen Down",即觸摸屏按下的時候,其實是處于中斷等待模式。一旦被按下,實時產(chǎn)生"INT_TC"中斷信號。每次發(fā)生此中斷都,X軸和Y軸坐標轉(zhuǎn)換資料都 可以從相應的資料寄存器中讀出。
●閑置模式(Standby Mode)---在該模式下轉(zhuǎn)換資料寄存器中的值都被保留為上次轉(zhuǎn)換時的資料。
★ADC兩種啟動方式:以手工啟動和讀結(jié)果時就自動地啟動下一次轉(zhuǎn)換;以查詢狀態(tài)位和發(fā)中斷方式獲知轉(zhuǎn)換是否結(jié)束。ADC的操作只涉及3個寄存器:
●ADCCON--- 設置ADCCON寄存器,選擇輸入信號通道,設置A/D轉(zhuǎn)換器的時鐘(A/D時鐘=PCLK/(PRSCVL+1))。A/D時鐘最大為2.5MHz,且 應小于PCLK的1/5;設置ADCCON寄存器,啟動轉(zhuǎn)換(設置READ_START位則讀轉(zhuǎn)換數(shù)據(jù)(讀ADCDAT0寄存器)時即啟動下一次轉(zhuǎn)換;否 則可通過設置ENABLE_START位來啟動A/D轉(zhuǎn)換);ADCCON各位含義(ENABLE_START---置1啟動ADC轉(zhuǎn)換,置0無操作; RESR_START---置1允許讀操作啟動ADC轉(zhuǎn)換,置0禁止讀操作啟動ADC轉(zhuǎn)換; STDBM---置1將ADC置為閑置狀態(tài)(模式),置0將ADC置為正常操作狀態(tài);SEL_MUX---選擇需要進行轉(zhuǎn)換的ADC信道; PRSCV---ADC轉(zhuǎn)換時鐘預分頻參數(shù);PRSCEN---ADC轉(zhuǎn)換時鐘使能; ECFLG---ADC轉(zhuǎn)換完成標志位(只讀)。為1ADC轉(zhuǎn)換結(jié)束,為0ADC轉(zhuǎn)換進行中)。
●ADCTSC---設置ADCTSC寄存器,使 用設為普通轉(zhuǎn)換模式,不使用觸摸屏功能;ADCTSC各位含義(XY_PST---對X/Y軸手動測量模式進行選擇;AUTO_PST---X/Y軸的自 動轉(zhuǎn)換模式使能位;PULL_UP---XP端的上拉電阻使能位;XP_SEN---設置nXPON輸出狀態(tài);XM_SEN---設置XMON輸出狀 態(tài);YP_SEN---設置nYPON輸出狀態(tài);YM_SEN---設置YMON輸出狀態(tài))。
●ADCDAT0---完成ADC轉(zhuǎn)換后,讀取 ADCDAT0寄存器獲得數(shù)值(如果使用查詢方式,則可不斷讀取ADCCON寄存器的ECFLG位來確定是否轉(zhuǎn)換結(jié)束;否則可以使用INT_ADC中斷, 發(fā)生INT_ADC中斷時表示轉(zhuǎn)換結(jié)束);ADCDAT0各位含義(XPDATA---X軸轉(zhuǎn)換資料寄存器;XY_PST---選擇X/Y軸自動轉(zhuǎn)換模 式;AUTO_PST---X/Y軸自動轉(zhuǎn)換使能位;UPDOWN---選擇中斷等待模式的類型。為0按下產(chǎn)生中斷,為1釋放產(chǎn)生中斷)。
★觸摸屏操作還涉及到以下兩個寄存器:
●ADCDLY---ADC轉(zhuǎn)換周期等待定時器。
●ADCDAT1---同ADCDAT0。

關(guān)鍵代碼解析:
★head.S頭文件來初始化,設置SDRAM,將程序復制到SDRAM,然后跳到SDRAM繼續(xù)執(zhí)行
.equMEM_CTL_BASE, 0x48000000
.text
.global _start
_start:
@中斷向量表處理函數(shù),只給出復位和普通中斷模式的處理函數(shù),其它異常未使用
b Reset
...
b HandleIRQ
@0x1c: 快中斷模式的向量地址
HandleFIQ:
b HandleFIQ

Reset: @復位處理
bldisable_watch_dog@關(guān)門喂狗
blmem_control_setup @設置存儲控制器
ldr sp, =4096 @設置棧指針,以下C函數(shù)調(diào)用前需要設好棧
bl init_clock@設置MPLL,改變FCLK、HCLK、PCLK
bl init_nand@初始化NandFlash
@將NandFlash中地址4096開始的代碼復制到SDRAM中
ldrr0, =0x30000000@目標地址=0x30000000,SDRAM起始地址
movr1, #4096@源地址=4096,連接時代碼在4096開始處
movr2, #16*1024@復制長度=16K,對于本實驗足夠
blread_nand @調(diào)用C函數(shù)read_nand
blclean_bss@清除bss段
msr cpsr_c, #0xd2 @進入中斷模式
ldr sp, =0x31000000 @設置中斷模式棧指針
msr cpsr_c, #0xdf@進入系統(tǒng)模式
ldr sp, =0x34000000 @設置系統(tǒng)模式棧指針
ldr lr, =ret_initirq @設置返回地址
ldr pc, =init_irq@初始化中斷
ret_initirq:
msr cpsr_c, #0x5f @設置I-bit=0,開IRQ中斷
ldr lr, =halt_loop@設置返回地址
ldr pc, =main@調(diào)用main函數(shù)
halt_loop:
b halt_loop
★main.c文件實現(xiàn)實現(xiàn)串口選擇ADC和TouchScreen操作,主要代碼:
#include
#include
#include
int main()
{
char c;
init_uart0();//波特率115200,8N1(8個數(shù)據(jù)位,無校驗位,1個停止位)
while (1)
{
printf("rn~~~~~~ Test ADC and Touch Screem ~~~~~~rn");
printf("[A] Test ADCnr");
printf("[T] Test Touch Screemnr");
printf("Enter your selection: ");
c = getc();
putc(c);
switch (c)
{
case 'a':
case 'A':
{
Test_Adc();//操作ADC
break;
}
case 't':
case 'T':
{
Test_Ts();//操作TouchScreen
break;
...
}
★adc_ts.c ADC和觸摸屏的測試函數(shù),主要代碼:
...
/*
* 使用查詢方式讀取A/D轉(zhuǎn)換值。
* 輸入?yún)?shù)ch: 模擬信號通道,取值為0~7
*/
static int ReadAdc(int ch)
{
//選擇模擬通道,使能預分頻功能,設置A/D轉(zhuǎn)換器的時鐘 = PCLK/(49+1)
ADCCON = PRESCALE_EN | PRSCVL(49) | ADC_INPUT(ch);
//清除位[2],設為普通轉(zhuǎn)換模式
ADCTSC &= ~(1<<2);
//設置位[0]為1,啟動A/D轉(zhuǎn)換
ADCCON |= ADC_START;
//當A/D轉(zhuǎn)換真正開始時,位[0]會自動清0
while (ADCCON & ADC_START);
//檢測位[15],當它為1時表示轉(zhuǎn)換結(jié)束
while (!(ADCCON & ADC_ENDCVT));
//讀取數(shù)據(jù)
return (ADCDAT0 & 0x3ff);
}
/*
* 測試ADC。通過A/D轉(zhuǎn)換,測量可變電阻器的電壓值
*/
void Test_Adc(void)
{
int vol0, vol1;
printf("Measuring the voltage of AIN0 and AIN1, press any key to exitnr");
while (!awaitkey(0))// 串口無輸入,則不斷測試
{
vol0 = (ReadAdc(0)*3)/1024;// 計算電壓值
vol1 = (ReadAdc(1)*3)/1024;// 計算電壓值
printf("AIN0 = %dAIN1 = %dr", vol0,vol1);
}
printf("n");
}
static void Isr_Tc(void)
{
if (ADCDAT0 & 0x8000)//ADCDAT0[15]為1表示觸摸屏被松開
{
printf("rnStylus Up!!nr");
//wait_down_int();//進入"等待中斷模式",等待觸摸屏被按下
}
else
{
printf("rnStylus Down: ");
mode_auto_xy();//進入自動(連續(xù))X/Y軸坐標轉(zhuǎn)換模式
ADCCON |= ADC_START;//設置位[0]為1,啟動A/D轉(zhuǎn)換
}
// 清INT_TC中斷
...
}
static void Isr_Adc(void)
{
printf("xdata = %4d, ydata = %4drn",(int)(ADCDAT0 & 0x3ff),(int)(ADCDAT1 & 0x3ff));
//wait_down_int();//進入"等待中斷模式",等待觸摸屏被松開
//清INT_ADC中斷
...
}
void AdcTsIntHandle(void)
{
if (SUBSRCPND & BIT_SUB_TC)
Isr_Tc();
if (SUBSRCPND & BIT_SUB_ADC)
Isr_Adc();
}
/*
*測試觸摸屏,打印觸點坐標
*/
void Test_Ts(void)
{
isr_handle_array[ISR_ADC_OFT] = AdcTsIntHandle;// 設置ADC中斷服務程序
INTMSK &= ~BIT_ADC;//開啟ADC總中斷
INTSUBMSK &= ~BIT_SUB_TC;//開啟INT_TC中斷,即觸摸屏被按下或松開時產(chǎn)生中斷
INTSUBMSK &= ~BIT_SUB_ADC;//開啟INT_ADC中斷,即A/D轉(zhuǎn)換結(jié)束時產(chǎn)生中斷
//使能預分頻功能,設置A/D轉(zhuǎn)換器的時鐘 = PCLK/(49+1)
ADCCON = PRESCALE_EN | PRSCVL(49);
/*
*采樣延時時間 = (1/3.6864M)*50000 = 13.56ms
*即按下觸摸屏后,再過13.56ms才采樣
*/
ADCDLY = 50000;
wait_down_int();/*進入“等待中斷模式”,等待觸摸屏被按下*/
printf("Touch the screem to test, press any key to exit!nr");
getc();
// 屏蔽ADC中斷
...
}

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

基于ABB機器人生產(chǎn)線 ,設計了一種西門子PLC自保護智能控制系統(tǒng) 。該系統(tǒng)采用HK-FKGD40無線手持報警器 , 受機器人擠壓時人員通過該報警器便可觸發(fā)機器人智能判斷 、自動回退運動實現(xiàn)自我解救 , 同時系統(tǒng)發(fā)出聲光...

關(guān)鍵字: 無線手持報警器 自保護;智能 PLC ABB機器人 觸摸屏

在科技飛速發(fā)展的當下,智能設備已深度融入人們的生活與工作。其中,PDA(Personal Digital Assistant,個人數(shù)字助理)作為一款集信息輸入、存儲、管理和傳遞于一體,且具備辦公、娛樂、移動通信等多種功能...

關(guān)鍵字: 智能設備 觸摸屏 微控制器

蘇州 2025年5月27日 /美通社/ -- 5月24日-26日,第26屆全國醫(yī)院建設大會暨國際醫(yī)院建設、裝備及管理展覽會(CHCC 2025)在武漢舉行。藝卓(EIZO)攜手術(shù)室視覺顯示解決方案參展,以科技...

關(guān)鍵字: HC 醫(yī)學影像 IO 觸摸屏

隨著手工釀造的普及和復雜程度的不斷提高,許多釀酒師——尤其是小規(guī)?;颡毩⒌尼劸茙煛匀灰揽渴止し椒▉碛涗浐透欔P(guān)鍵數(shù)據(jù),如溫度、pH值、體積和比重。這些讀數(shù)通常使用手動儀器,記錄在紙上或分散在電子表格和文檔中,沒有集中...

關(guān)鍵字: 觸摸屏 物聯(lián)網(wǎng) DS18B20 傳感器

隨著嵌入式系統(tǒng)的廣泛應用,觸摸屏作為人機交互的重要接口,其驅(qū)動開發(fā)變得愈發(fā)重要。本文將詳細介紹在嵌入式Linux環(huán)境下,觸摸屏驅(qū)動的開發(fā)流程,從設備樹的配置到校準算法的實現(xiàn),為讀者提供一個全面的開發(fā)指南。

關(guān)鍵字: 嵌入式Linux 觸摸屏 校準算法 設備樹

將您的樹莓派Pico變成帶有觸摸屏界面的USB-HID設備!在這個項目中,我們將在Arduino IDE中設置編程環(huán)境,為3.5”Pico Touch LCD屏蔽配置庫,測試基本功能,創(chuàng)建簡單的按鈕(用于復制和粘貼),顯...

關(guān)鍵字: 樹莓派 觸摸屏 LCD Windows

ADS7846是美國Burr-Brown公司推出的新一代4線制觸摸屏控制器,當與觸摸屏連用,只要筆或手指點觸摸在屏上時,即可迅速得到該點的位置信號以達到在觸摸屏表面尋址的目的。

關(guān)鍵字: ADS7846 觸摸屏

?激光治療儀觸摸屏接口設計?主要包括觸摸屏的工作原理、控制器工作原理以及在激光治療儀中的應用。

關(guān)鍵字: 觸摸屏 激光治療儀

中國深圳 – TITAN Haptics泰坦觸覺宣布推出DRAKE LFi觸覺馬達,旨在滿足中國電子市場不斷增長的需求。DRAKE LFi專為需要觸覺反饋的設備設計,例如觸摸屏和觸覺按鈕。這款新型觸覺馬達能夠提供精準的局...

關(guān)鍵字: 消費電子 觸摸屏 可穿戴設備

雖然無數(shù)關(guān)于未來交通的文章都以四輪電動車作為討論重點,但在印度、馬來西亞、泰國和印度尼西亞等諸多國家,出行更依賴于經(jīng)濟的兩輪電動車,包括踏板式摩托車、重型摩托車、電動摩托車、電動輕便摩托車和電動自行車。這些兩輪電動車緊跟...

關(guān)鍵字: 電動車 觸摸屏 觸摸控制器
關(guān)閉