freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

觸摸屏控制實(shí)驗(yàn)設(shè)計(jì)報(bào)告(已改無錯(cuò)字)

2022-08-31 07:08:02 本頁面
  

【正文】 進(jìn)行數(shù)據(jù)采樣、轉(zhuǎn)換和傳輸,同時(shí),程序?qū)Ω鞣N不同的情況進(jìn)行鑒別和異常處理。 觸摸屏軟件流程如圖3所示。在驅(qū)動(dòng)程序中設(shè)定了觸摸屏所處的7個(gè)不同狀態(tài),分別用從1到5的數(shù)字表征,這7個(gè)狀態(tài)構(gòu)成了一個(gè)觸摸屏狀態(tài)機(jī),系統(tǒng)根據(jù)當(dāng)前狀態(tài)做出下一步的處理,如表1所示。整個(gè)軟件設(shè)計(jì)根據(jù)功能可以劃分為5個(gè)部分,分別是初始化、設(shè)備打開、讀操作、中斷處理以及I/O控制,下面具體介紹每一部分。 3 . 2 . 1 驅(qū)動(dòng)程序初始化在mc68328digi_init()中向內(nèi)核注冊(cè)設(shè)備驅(qū)動(dòng)函數(shù):err=misc_register(amp。mc68328_digi),在init_ts_settings()中設(shè)定觸摸屏的當(dāng)前參數(shù):內(nèi)核版本號(hào)、筆移動(dòng)判別閾值、采樣時(shí)間、消除抖動(dòng)開關(guān)、消除抖動(dòng)時(shí)間等參數(shù),這些均由用戶根據(jù)自己的液晶屏以及精度要求來定制,也可以在應(yīng)用程序中用I/O控制函數(shù)ioctl()來設(shè)定,本文將在參數(shù)分析中具體分析這些參數(shù)的意義。 在ts_open()函數(shù)中,驅(qū)動(dòng)程序向內(nèi)核注冊(cè)中斷。中斷也可以在系統(tǒng)初始化的時(shí)候向內(nèi)核注冊(cè),但是一般不建議這樣做,因?yàn)樵诩虞d的設(shè)備比較多時(shí),這樣做有可能造成中斷的沖突。打開一個(gè)設(shè)備,才讓該設(shè)備占用中斷,是一個(gè)較好的策略。向內(nèi)核注冊(cè)中斷處理程序主要實(shí)現(xiàn)兩個(gè)功能,一是注冊(cè)中斷號(hào),二是注冊(cè)中斷處理函數(shù)。 本程序中,向內(nèi)核注冊(cè)了兩個(gè)中斷處理程序,分別是: request_irq(PEN_IRQ_NUM, handle_pen_irq,IRQ_FLG_STD, “touch_screen”,NULL)和request_ irq(SPI_IRQ_NUM,handle_spi_irq, IRQ_FLG_STD,“spi_irq”,NULL); 在前者中,PEN_IRQ_NUM是中斷號(hào),可以指定,也可以動(dòng)態(tài)分配。在該驅(qū)動(dòng)程序中,指定筆中斷分配中斷號(hào)為19;handle_pen_irq是中斷處理函數(shù),IRQ_FLG_STD是申請(qǐng)時(shí)的選項(xiàng),它決定中斷處理程序的一些特性,這里表示由系統(tǒng)內(nèi)部占用;touch_ screen是設(shè)備名。在后者中,程序向內(nèi)核注冊(cè)SPI中斷,用來在CPU和外設(shè)間傳遞數(shù)據(jù),分配的中斷號(hào)是0,handle_spi_irq是SPI中斷處理函數(shù)。 此外,在觸摸屏驅(qū)動(dòng)初始化子函數(shù)init_ts_drv()中,進(jìn)行了如下工作: (1)觸摸屏狀態(tài)的初始化; (2)筆信息(pen_values)的初始化; (3)初始化定時(shí)器并設(shè)置超時(shí)函數(shù)handle_timeout(); (4)初始化寄存器。初始化等待隊(duì)列,等待隊(duì)列是由等待觸摸事件發(fā)生的進(jìn)程組成的一個(gè)隊(duì)列,它包括頭尾指針和一個(gè)正在睡眠進(jìn)程的鏈表; (5)設(shè)置觸摸屏狀態(tài)為空閑。 由于這里的初始化會(huì)占用一部分系統(tǒng)資源,所以把它們放在了打開設(shè)備時(shí)處理,而不是最初的設(shè)備初始化部分,這樣也是出于節(jié)省資源的考慮。 讀函數(shù)ts_read() 一旦用戶程序調(diào)用read()對(duì)觸摸屏進(jìn)行讀操作,則驅(qū)動(dòng)程序調(diào)用入口點(diǎn)函數(shù)ts_read()進(jìn)行處理。如果此時(shí)沒有數(shù)據(jù)到來,且驅(qū)動(dòng)程序選擇阻塞型操作,則調(diào)用interruptible_sleep_on(amp。queueproc_list)將進(jìn)程阻塞,并進(jìn)入等待隊(duì)列,同時(shí)設(shè)置觸摸屏狀態(tài)為等待;如果選擇了非阻塞型操作,則程序在沒有數(shù)據(jù)到達(dá)的時(shí)候立即返回,然后用異步觸發(fā)fasync()來通知數(shù)據(jù)的到來。 當(dāng)筆中斷發(fā)生,程序進(jìn)入中斷處理函數(shù)。在中斷處理函數(shù)中,將完成對(duì)兩個(gè)中斷進(jìn)行處理,分別是外部的觸摸中斷(筆中斷)和SPI數(shù)據(jù)轉(zhuǎn)換中斷。與這兩個(gè)中斷對(duì)應(yīng)的中斷處理函數(shù),是觸摸屏軟件設(shè)計(jì)的關(guān)鍵所在。 驅(qū)動(dòng)程序在中斷處理函數(shù)中使用定時(shí)器處理時(shí)間相關(guān)操作。定義函數(shù)set_timer_irq(),如下: staticvoidset_timer_irq(structtimer_list*timer,intdelay){ del_timer(timer)。 timerexpires=jiffies+delay。 add_timer(timer)。 } jiffies是一個(gè)表征系統(tǒng)自從啟動(dòng)以來到當(dāng)前為止所運(yùn)行時(shí)鐘數(shù)的變量,delay是設(shè)定的延長(zhǎng)時(shí)間(用時(shí)鐘數(shù)作為計(jì)數(shù)單位)。一旦時(shí)鐘數(shù)超過設(shè)定值,則觸發(fā)超時(shí)函數(shù),在本程序中是handle_timeout( )。引入定時(shí)器的目的有兩個(gè):一是可以較為精確地控制系統(tǒng)由于消除電平升降造成信號(hào)抖動(dòng)所需要時(shí)間,二是能夠有效控制采樣坐標(biāo)的數(shù)量,而不必引入占用大量系統(tǒng)資源的簡(jiǎn)單延時(shí)函數(shù)。使用SPI中斷而產(chǎn)生大量坐標(biāo)數(shù)據(jù)這一問題在文獻(xiàn)中沒有很好的解決辦法,只是簡(jiǎn)單地降低SPI時(shí)鐘頻率以取較少的數(shù)據(jù)量。本設(shè)計(jì)中引入定時(shí)器,可以很好地解決上述問題。 3 . 3 結(jié)論 在獲得觸摸點(diǎn)的原始坐標(biāo)(數(shù)值范圍由所選用的A/D轉(zhuǎn)換器位數(shù)決定)后,還要根據(jù)具體使用的液晶屏實(shí)際像素進(jìn)行轉(zhuǎn)換,以方便圖形界面的后續(xù)開發(fā)。考慮到相鄰兩次的移動(dòng)閾值,按照如下公式對(duì)觸摸屏坐標(biāo)進(jìn)行計(jì)算: 其中XV為觸摸點(diǎn)X坐標(biāo)顯示值,XW為觸摸點(diǎn)X坐標(biāo)測(cè)量值(原始坐標(biāo)值),(1)、(2)、(3)式在觸摸屏初始化時(shí)得到,方法是任取觸摸屏X方向左側(cè)和右側(cè)各一點(diǎn),以X△V=X△W=1,Xoffrer=0為初始值進(jìn)行測(cè)量得到新的3個(gè)參數(shù):X△V、X△W和Xoffrer(在實(shí)際使用中此項(xiàng)工作屬于校準(zhǔn)零點(diǎn)偏移),然后這3個(gè)參數(shù)就不再變動(dòng),對(duì)于每次測(cè)量到的任意觸摸點(diǎn)原始坐標(biāo)XW,直接代入(4)式求出觸摸點(diǎn)的像素顯示坐標(biāo)XV。 其中,XV1為觸摸屏左側(cè)點(diǎn)坐標(biāo)顯示值;XV2為觸摸屏右側(cè)點(diǎn)坐標(biāo)顯示值;XW1為觸摸屏左側(cè)點(diǎn)坐標(biāo)測(cè)量值;XW2為觸摸屏右側(cè)點(diǎn)坐標(biāo)測(cè)量值。 本設(shè)計(jì)使用MicroWindows作為用戶界面,定制出每個(gè)桌面圖標(biāo)的坐標(biāo)區(qū)域,結(jié)合觸摸屏的采樣坐標(biāo),判斷是否在圖標(biāo)區(qū)域坐標(biāo)內(nèi),然后做出相應(yīng)的事件處理。對(duì)于本設(shè)計(jì)中使用的開發(fā)平臺(tái),液晶屏是320240點(diǎn)陣的,物理尺寸為: 80mm60mm,ADS7843選擇12位轉(zhuǎn)換精度,觸摸屏理論分辨率為80/212=,但是由于電平干擾和觸摸動(dòng)作發(fā)生時(shí)的物理干擾,實(shí)際的精度無法達(dá)到這個(gè)值。經(jīng)過測(cè)試。本驅(qū)動(dòng)程序可以有效地區(qū)分點(diǎn)擊和移動(dòng)信號(hào),如果配合手寫識(shí)別軟件,夠作為手寫板的底層驅(qū)動(dòng)使用,實(shí)現(xiàn)手寫輸入。第四章 嵌入式操作系統(tǒng)的移植4 . 1 μC/OSII 介紹 μC /OSII是個(gè)完整的、可移植、可固化、可裁剪的占先式實(shí)時(shí)多任務(wù)內(nèi)核。μC/OSII絕大部分的代碼是用ANSI的C語言編寫的,包含一小部 分匯編代碼, 使之可供不同架構(gòu)的微處理器使用。至今,從8位到6 4位,μC/OSII已在超過40種不同架構(gòu)上的微處理器上運(yùn)行。μC/OSII已在世界范圍內(nèi)得到廣泛應(yīng)用,包括非常 多領(lǐng)域, 如 手機(jī)、路由器、集線器、不間斷電源、飛行器、醫(yī)療設(shè)備及工業(yè)控制 上。實(shí)際上,μC/OSII已通過了非常嚴(yán)格的 測(cè)試,并且得到了美國(guó)航空管 理局(Federal Aviation Administration)的認(rèn)證,能用在飛行器上。這說明μC/OSII是穩(wěn)定可靠的,可用于和人性命攸關(guān)的安全緊要(safety critical)系統(tǒng)。除此以外,μC/OSII 的鮮明特點(diǎn)就是源碼公開,便于移植和維護(hù)。 4 . 1 . 1  μC/OSII 內(nèi)核結(jié)構(gòu) 多任務(wù)系統(tǒng)中,內(nèi)核負(fù)責(zé)管理各個(gè)任務(wù) ,或說為每個(gè)任務(wù)分配CPU 時(shí)間 ,并且負(fù)責(zé)任務(wù)之間的通訊。內(nèi)核提供的基本服務(wù)是任務(wù)轉(zhuǎn)換。 μC/OSII能管理多達(dá)64個(gè)任務(wù)。由于他的作者占用和保留了8個(gè)任務(wù),所以留給用戶應(yīng)用程式最多 可有56個(gè)任務(wù)。賦予各個(gè)任務(wù)的優(yōu)先級(jí)必須是不相同的。這意味著μC/OSII不支持時(shí)間片輪轉(zhuǎn)調(diào)度法 (roundrobin scheduli ng)。μC/OSII為每個(gè)任務(wù)設(shè)置獨(dú)立的 堆棧空間,能快速實(shí)現(xiàn)任務(wù)轉(zhuǎn)換 。μC/OSII近似地每時(shí)每刻總是讓優(yōu)先級(jí)最高的就緒任務(wù)處于運(yùn)行狀態(tài),為了確保這一點(diǎn),他在調(diào)用系統(tǒng)API 函數(shù)、中斷結(jié)束、定時(shí)中斷結(jié)束時(shí)總是執(zhí)行調(diào)度算法,μC/OSII通過事先計(jì)算好數(shù)據(jù)簡(jiǎn)化了運(yùn)算量,通過精心設(shè)計(jì)就緒表結(jié)構(gòu)使得延時(shí)可預(yù)知。   P89V51RD2是Philips公司生產(chǎn)的一款80C51微控制器,包含64KB Flash和1024字節(jié)的數(shù)據(jù)RAM。P89V51RD2的典型特性是他的X2方式選項(xiàng)。利用該特性,設(shè)計(jì)者可使應(yīng)用程式以傳統(tǒng)的80C51時(shí)鐘頻率(每個(gè)機(jī)器周期包含12個(gè)時(shí)鐘)或X2 方式(每個(gè)機(jī)器周期包含6個(gè)時(shí)鐘)的時(shí)鐘頻率運(yùn)行,選擇X2方式可在相同時(shí)鐘頻率下獲得2倍的吞吐量。從該特性獲益的另一種方法是將時(shí)鐘頻率減半來保持特性不變,這 樣能極大地降低EMI。Flash程式存儲(chǔ)器支持并行和串行在系統(tǒng)編程(ISP),ISP允許在軟件控制下對(duì)成品中的器件進(jìn)行重復(fù)編程。應(yīng)用固件的 產(chǎn)生/更新能力實(shí)現(xiàn)了ISP的大范圍應(yīng)用。 5V的工作電壓,操作頻率為0~40MHz。P89V51RD2的資源和ISP的功能使得他非常適合用來做μC/OSII的移植調(diào)試。并不必購(gòu)買仿真器和編程器等額外投資。 4 . 1 . 2  μC/OSII 的移植 移植就是使μC/OSII能在P89V51RD2上運(yùn)行。為了方便移植,大部分的μC/OSII的代碼是用C語言編寫的;不過仍需要用C語言和匯編語言編寫一些處理器硬件相關(guān)的代碼,這是因?yàn)棣藽
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1