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

正文內(nèi)容

基于cortex-m3的觸摸屏計算器設(shè)計-閱讀頁

2025-07-07 00:49本頁面
  

【正文】 主程序開始流程圖軟件設(shè)計基本包括了以下幾個部分的內(nèi)容:中斷控制部分、顯示部分和運算部分,各部分分工不同,中斷控制是在觸摸屏顯示的之后可以有一個中斷功能,即在對觸屏操作后,有一個顯示中斷,可以使能允許完成觸摸后對應(yīng)的操作,完成操作后結(jié)束中斷。運算部分,將按下按鈕輸入數(shù)字,所組成新的數(shù)在顯示屏輸出、給予所有的運算符按鈕有對應(yīng)的函數(shù)運算意義,即完成加減乘除運算,以及其他較為復(fù)雜的運算方式,最后計算完成后存儲并且輸出相關(guān)的計算結(jié)果。但在實際應(yīng)用中又與操作緊密相關(guān),是軟件設(shè)計中十分重要的部分。中斷控制器API提供了一組函數(shù),用來處理嵌套向量中斷控制器(NVIC)。同時在驅(qū)動文件中,重寫了一些關(guān)于中斷控制的函數(shù)。然后對鎖存的數(shù)據(jù)進行讀取,通過LCD顯示相關(guān)的API函數(shù),將得到的數(shù)值進行轉(zhuǎn)化成對應(yīng)函數(shù)操作,或顯示,或運算等等。 中斷控制流程圖 顯示函數(shù)編寫顯示功能,將按鍵結(jié)果顯示在LCD上的。在聲明了類似canvas(…)等畫圖,畫按鈕等方法后,在main函數(shù)中調(diào)用該方法。最后用一個死循環(huán),循環(huán)執(zhí)調(diào)用WidgetMessageQueueProcess()這么一個函數(shù),完成LCD上顯示輸出所需要的內(nèi)容。而在完成運算功能后的顯示輸出理論上是一樣的,只是改變了內(nèi)存當(dāng)中的變量。調(diào)用CanvasTextSet(…) 改變Canvas(…)內(nèi)變量的值,重新放入消息隊列WidgetPaint((tWidget *)amp。另一方面,顯示效果的更改,是利用更新好的Canvas進行對前一次的輸出結(jié)果的覆蓋。如果數(shù)字長度不足,則同樣預(yù)留了長度,這樣可以對前次的顯示結(jié)果完成一個覆蓋的效果,避免顯示錯誤。方便確定運算結(jié)果的位數(shù),也可以使得最后輸出結(jié)果時不會因長度不足而又被覆蓋不完全的錯誤。 運算符函數(shù)編寫除了顯示部分,本次設(shè)計另一大塊的設(shè)計部分是函數(shù)運算模塊的設(shè)計。所以,在完成數(shù)字顯示結(jié)果的同時,應(yīng)該考慮的是將輸入數(shù)字,按照對應(yīng)的按鈕進行計算,輸出結(jié)果。 數(shù)字組合成數(shù)顯示流程圖如圖所示,輸入數(shù)字轉(zhuǎn)化成數(shù),關(guān)鍵是要記錄兩個部分,一個是存儲當(dāng)前輸入數(shù)字,和已經(jīng)輸出的數(shù)。有小數(shù)點的數(shù)一樣,在按下小數(shù)點后,改變一個標記位,同時聲明一個新的計數(shù)器,每輸入一個數(shù)字后乘以10的負計數(shù)次方,再加上已輸出的數(shù)后,成為一個新的數(shù)。對數(shù)的顯示輸出完成后,是按下相應(yīng)運算符后進行對應(yīng)的運算。為了方便對兩個變量進行操作,所以兩個變量定義成全局變量來保存兩者的值,方便在整個循環(huán)過程中調(diào)用,能夠更簡單和直觀的對變量進行讀取,存放運算結(jié)果。根據(jù)對應(yīng)的運算符號,對之前的兩組數(shù)字進行預(yù)算。最后,在實際操作過程中,在一次運算計算完畢后,或者對當(dāng)前輸入有錯誤,將要重新輸入的時候,要有一個對已保存的數(shù)據(jù)進行擦出,或者當(dāng)前輸入的數(shù)字進行取消的操作。這樣回收已經(jīng)占用的數(shù)組空間,可以節(jié)約內(nèi)存,提升一定的運算效率。4 設(shè)計過程在整個設(shè)計過程中,軟件部分的編程設(shè)計是本次設(shè)計的主要設(shè)計內(nèi)容。在此介紹的設(shè)計過程,主要是關(guān)于編程軟件的學(xué)習(xí),軟件設(shè)計編程部分的編寫測試調(diào)試修改的過程。前文介紹了一個工程項目的創(chuàng)建。在編寫完成后要進行編譯的工作,編譯如果通過了,就可以通過USB數(shù)據(jù)線將完成的軟件下載到開發(fā)板上,進行實際的調(diào)試。在設(shè)備燒寫程序時,在IDE窗口的地步可以看到一個進度條,當(dāng)它完成時,可以在生成窗口看到設(shè)備已經(jīng)被擦出,編程和驗證正確,這時程序已經(jīng)被下載到實驗板上的Stellaris微控制器的閃存當(dāng)中了。 程序編譯成功并下載到實驗板 編譯成功后,我們可以按如圖按鈕,進入調(diào)試模式界面。切換到調(diào)試模式后,在左邊窗口顯示處理器的各寄存器,在底部可以看見調(diào)試命令窗口,主窗口正在調(diào)試的源代碼。這是,可以修改儲存器,程序變量和處理器寄存器,設(shè)置斷點,單步運行以及其他所有調(diào)試方式。根據(jù)實際運行情況,觀察實驗板的內(nèi)存情況,變量的運行情況。根據(jù)內(nèi)存使用情況,變量改變情況以及代碼語句的運行位置來判斷,實際的代碼執(zhí)行是否如預(yù)期所想。其界面如圖所示。根據(jù)整個前面所說的設(shè)計思路,和編程思想,在軟件的編寫過程中進行了不斷的調(diào)試和完善。 軟件功能初始化軟件功能初始化,即在整個程序跑起來的時候,驅(qū)動程序加載,使計算器整個開發(fā)板的對應(yīng)硬件功能使能,設(shè)置工作電壓,設(shè)置時鐘,中斷控制,觸摸屏功能初始化,如觸點傳感器初始化,功能設(shè)置,中斷控制初始化等。同時,在主函數(shù)運行起來的時候,調(diào)用以上初始化函數(shù),完成一個程序和硬件的初始化。因為,本軟件里具有相關(guān)的驅(qū)動程序頭文件,所以,我們在編寫程序的時候,要寫入相應(yīng)的頭文件,并且加載相應(yīng)的驅(qū)動程序文件,然后才能調(diào)用相關(guān)的驅(qū)動程序中初始化函數(shù),和中斷控制函數(shù)等,實現(xiàn)相關(guān)功能。這些函數(shù)包含在 中, 包含應(yīng)用程序使用的 API 定義。函數(shù)原型:void TouchScreenCallbackSet(long (*long)(unsigned ulMessage, long lX,long lY) pfnCallback)參數(shù):pfnCallback 是指針,指向觸摸屏幕事件發(fā)生時要調(diào)用的函數(shù)。能被識別的觸別事件是屏幕正在被觸摸(“pen down”)、當(dāng)觸摸屏幕時觸摸位置正在移動(“pen move”)和不再觸摸屏幕(“pen up”)。函數(shù)原型:void TouchScreenInit(void)描述:此函數(shù)初始化觸摸屏幕驅(qū)動程序,開始對觸摸屏幕進行讀操作處理。TouchScreenIntHandler處理觸摸屏幕的 ADC 中斷。觸摸屏幕狀態(tài)機器是很先進的,因此能恰當(dāng)?shù)靥幚硪勋@得的 ADC 采樣。 顯示界面編寫調(diào)試顯示界面部分,分為三大塊,即計算器邊框,算數(shù)結(jié)果輸出區(qū)域,和計算器按鈕三大部分。 所示,是一個算數(shù)結(jié)果輸出區(qū)域設(shè)置區(qū)域的實現(xiàn)功能函數(shù)。就好像Canvas就是一個繪圖的容器,其中X,Y值是對應(yīng)所繪方框的左上角的坐標值。然后設(shè)置容器權(quán)限,使,最后一個參數(shù)是初始值設(shè)置。容器內(nèi)放到就是我們要的結(jié)果,最后可以在LCD上顯示輸出。不同點是,畫邊框是不用有結(jié)果輸出,而畫按鈕,是有按鍵響應(yīng)功能。所以,在最初的界面設(shè)計中,就是不斷的重復(fù)以上一些函數(shù),設(shè)置對應(yīng)參數(shù),定位,定高,定寬。 widget隊列添加循環(huán)顯示,僅有簡單的數(shù)字按鈕,和加減乘按鈕,而且沒有相對應(yīng)運算符的函數(shù)功能。 第二階段的成果 這個成品,我們可以看到,一個基礎(chǔ)的計算器界面已經(jīng)完成??梢运闶且粋€完整的設(shè)計。又重新設(shè)計了新的界面,增加了新的功能。 第三階段界面設(shè)計 函數(shù)功能編寫調(diào)試函數(shù)功能的編寫是本次設(shè)計的重點,根據(jù)之前寫好的界面,對應(yīng)的按鈕有對應(yīng)的函數(shù)功能。在第一次按下按鈕輸出前之前以及計算一次完畢后,要對顯示輸出部分進行初始化,如代碼: if(isCalOff == true)//運算結(jié)束標志位 { WidgetRemove((tWidget *)amp。 strcpy(ucResult , )。 WidgetPaint(WIDGET_ROOT)。在顯示結(jié)果的時候,將利用sprintf將變量放入字符串中,輸出字符串到顯示屏上。改變了這個標志位,則數(shù)字輸入函數(shù)中的主要算法則要改變成:outputNumber = outputNumber+(slResult*(pow(10,pointCount)))。同時,要規(guī)定標志位,在按下小數(shù)點后置為true,確保之后再按小數(shù)點按鈕是鎖死的。代碼如下: if(isPointCheck == false){//小數(shù)點未按下 isCalOff = false。//輸出小數(shù)點 } isPointCheck = true。但發(fā)現(xiàn),其運算結(jié)果是當(dāng)前顯示屏輸入的數(shù)字和上一個存儲在數(shù)組中的數(shù)的運算結(jié)果。所以,這個算法是不對的。每一次按下運算符后,僅做一個運算符標志位的改變,并且再下次按下運算符后,根據(jù)標志位,將當(dāng)前輸入的數(shù)和數(shù)組中存儲之前的數(shù)進行一個運算,之后的輸出結(jié)果就是正確的。 根據(jù)標志位進行計算代碼(4)初始化功能函數(shù)。也包含了一個對該次數(shù)字輸入進行修改的功能。g_CButton)) { for(j=0。j++) { number[j] = 0。 currentResult = 0。g_CEButton)) { number[index] = 0。其中其他的運算方法主要實現(xiàn)了一些例如階乘、log、ln、倒數(shù)運算以及三角函數(shù)等等運算符號。在設(shè)計函數(shù)功能的時候,定義了一系列的全局變量來儲存數(shù)據(jù),并且定義了數(shù)組來儲存之前輸入過的數(shù)據(jù),方便數(shù)據(jù)的運算。圖 輸出顯示問題圖研究后發(fā)現(xiàn),這是關(guān)于sprintf輸出,類型符號對數(shù)據(jù)位數(shù)保留問題。而且,在替代前一次的結(jié)果時,在調(diào)用widgetRemove()方法無效是,則直接將后一次的數(shù)據(jù),替換了前一次的數(shù)據(jù)。這其中也牽涉到了sprintf的輸出格式問題。浮點數(shù)的打印和格式控制是sprintf 的一大常用功能,浮點數(shù)使用格式符”%f”控制,默認保留小數(shù)點后6 位數(shù)字,比如: sprintf(s, %f, )。比如: ? sprintf(s, %, )。 //產(chǎn)生: ? sprintf(s, %.3f, )。但同時,也產(chǎn)生了另一種顯示問題。其解決方式:在數(shù)字轉(zhuǎn)化輸出時,再按下按鈕時,對兩個變量進行賦值,一個整型數(shù),對應(yīng)按鈕對應(yīng)數(shù)字,用來組成數(shù);第二個是字符類型,用來寫入字符串最后可以按位輸出。CanvasTextSet(amp。WidgetPaint((tWidget *)amp。 這時,可以自由的按位輸出數(shù)字組成的數(shù)。另一方面,對于輸出結(jié)果的優(yōu)化。而非整型數(shù),利用%g作為輸出符號位。sprintf(ucResult,%30g,currentResult)。如代碼:if(currentResult 1000000000) { sprintf(ucResult,%,currentResult)。 設(shè)計成果展示其整體效果圖,、最后完成了,一個可以滿足四則運算,可以清零初始化的觸屏計算器。使用簡單方便,滿足了基本的使用需求。尤其是隨著移動互聯(lián)技術(shù)的發(fā)展,各種各樣的嵌入式移動互聯(lián)產(chǎn)品開始涌入千家萬戶。而且隨著電容屏的技術(shù)逐漸成熟,我們可以利用電容屏,進行多點觸控,豐富了移動終端的功能性應(yīng)用,也越來越方便各類人群的使用。相信隨著未來技術(shù)發(fā)展,想類似電影中的投影式的觸屏鍵盤,立體投影的控制系統(tǒng)等等也能夠出現(xiàn)在千家萬戶的家庭多媒體移動終端中。在查閱相關(guān)技術(shù)手冊,學(xué)習(xí)整個開發(fā)板的結(jié)構(gòu)和性能特點,對其核心的CortexM3處理器有了一定的了解。同時,本系統(tǒng)的主要設(shè)計方向是軟件部分的設(shè)計內(nèi)容。驅(qū)動部分開發(fā),是根據(jù)硬件性能,參照開發(fā)平臺所提供的相關(guān)API函數(shù),完成相應(yīng)的硬件初始化,時鐘設(shè)置,中斷控制設(shè)置,觸摸屏使能,LCD顯示等功能。在響應(yīng)觸摸屏觸點位置時,能具體的輸出對應(yīng)數(shù)字,函數(shù)運算,運算結(jié)果輸出等。同時有別于市場上一般的計算器,而是采用先進的觸摸屏技術(shù),LCD顯示方式?;具_到了本次設(shè)計的目的,即對觸屏技術(shù)的展示,也是對自我的學(xué)習(xí)和充實的過程。 2005, 2006 ARM Limited.[6] STMicroelectronics.UM0424 user manualSTM32F10xxxUSB development kit[Z],2008[7] 王小林,[J],計算機與數(shù)字工程,2006[8] Stellaris174。軟件實驗指導(dǎo)說明[15] TI_CortexM3_Stellaris系列微控制器簡介[16] 觸摸屏的發(fā)展歷程和前景 2006[17] [M].北京:電子工業(yè)出版社,2004[18] [M].北京:國防工業(yè)出版社,2004[19]朱銘鋯,[M].北京:電子工業(yè)出版社,2002[20]吳冬梅,[M].北京:北京大學(xué)出版社,2006 附錄軟件設(shè)計主函數(shù)代碼include inc/include inc/include driverlib/include grlib/include grlib/include grlib/include grlib/include grlib/include drivers/include drivers/include drivers/include include include include define INDEX_NUMNER 100void OnNumber(tWidget *pWidget)。 //小數(shù)點兒輸入void OnCalculate(tWidget *pWidget)。 //初始化,歸零void speCalculate(tWidget *pWidget)。//百分號和正負號變化Canvas( //Name //pParent //pNext //pChild g_Result, 0, 0, 0, //pDisplay //lX //lY amp。g_sFontCm22b, //pcText //pucImage //pfnOnPaint 0, 0, 0 )。g_sKitronix320x240x16_SSD2119, 0, 50, //lWidth //lHeight //ulStyle 320, 189, CTR_STYLE_OUTLINE, //填充顏色 //外邊框顏色 //文字顏色 //字體 0, ClrWhite, 0, 0, //pcText 0 )。g_sKitronix
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1