2022年微機(jī)原理課設(shè)-指針式屏顯電子鐘_第1頁
2022年微機(jī)原理課設(shè)-指針式屏顯電子鐘_第2頁
2022年微機(jī)原理課設(shè)-指針式屏顯電子鐘_第3頁
2022年微機(jī)原理課設(shè)-指針式屏顯電子鐘_第4頁
2022年微機(jī)原理課設(shè)-指針式屏顯電子鐘_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、.精品文本精品文本.精品文本微機(jī)原理及應(yīng)用課程設(shè)計(jì)設(shè)計(jì)題目: 指針式的屏顯電子鐘專 業(yè) 網(wǎng) 絡(luò) 工 程 班 級(jí) 網(wǎng) 絡(luò) 081 學(xué) 生 劉妙曲 指導(dǎo)教師 王 理 2021 年 2 學(xué)期目 錄實(shí)驗(yàn)?zāi)康?.3實(shí)驗(yàn)內(nèi)容及要求3課設(shè)根本思想3程序流程圖4實(shí)驗(yàn)結(jié)果.6程序源代碼6課設(shè)心得體會(huì)14參考文獻(xiàn)14一、實(shí)驗(yàn)?zāi)康?學(xué)習(xí)系統(tǒng)駐留的方法。2了解BIOS中時(shí)間參數(shù)的調(diào)用方法。3了解屏幕畫圖的方法 對(duì)于本次應(yīng)用的科目微機(jī)原理與接口技術(shù)來說,因?yàn)樾枰獞?yīng)用Win32 匯編語言技術(shù)來編寫代碼實(shí)現(xiàn)功能,所以要掌握這門語言。并且要用到Windows API 接口的許多函數(shù),所以要掌握一局部函數(shù)的調(diào)用方法及實(shí)現(xiàn)的功能

2、。檢驗(yàn)和提高匯編語言程序設(shè)計(jì)能力,和微機(jī)原理與接口技術(shù)應(yīng)用方面的分析問題與解決問題的能力,掌握32位匯編語言,完成軟件的設(shè)計(jì)要求、編碼和測(cè)試等。 二、實(shí)驗(yàn)內(nèi)容及要求1在屏幕上顯示一個(gè)適當(dāng)大小的橢圓形界面,橢圓形軌道上,均勻的分布著60個(gè)“點(diǎn),代表1秒60秒的位置,但凡5倍數(shù)的“點(diǎn),應(yīng)當(dāng)比其他的“點(diǎn)稍大。2以橢圓的中心為軸,畫一條線代表“秒針,采用定時(shí)中斷的方式,每過一秒鐘,秒鐘移動(dòng)一個(gè)位置,同時(shí)系統(tǒng)發(fā)出“嘀嗒的聲音,如果相應(yīng)的“點(diǎn)能改變顏色,那么動(dòng)感更強(qiáng)。3定時(shí)源可以使用系統(tǒng)的定時(shí)源。4按下“Esc鍵之后,結(jié)束演示。三 課設(shè)根本思想 1屏幕應(yīng)設(shè)置為圖形方式,采用模塊化編程模式,主模塊顯示橢圓形

3、表盤,并且處理時(shí)鐘中斷,每過一秒鐘,轉(zhuǎn)入一次子模塊,子模塊負(fù)責(zé)秒針移動(dòng)的位置。2在著手本課題設(shè)計(jì)之前,學(xué)習(xí)掌握真設(shè)計(jì)方法,掌握順時(shí)針方向畫圓的技術(shù),靈活運(yùn)用,就可以設(shè)計(jì)出秒針的移動(dòng)程序。3系統(tǒng)駐留的方法及BIOS中時(shí)間參數(shù)的調(diào)用方法見統(tǒng)駐留時(shí)間程序。屏幕設(shè)置為圖形方式,采用模塊化編程,主模塊顯示界面信息,每個(gè)子模塊負(fù)責(zé)一個(gè)功能,然后通過模塊調(diào)用來實(shí)現(xiàn)。 圓及畫線子模塊顯示圓形表盤,及時(shí)、分、秒針,然后調(diào)用秒針移動(dòng)子模塊式電子鐘能夠運(yùn)行。 動(dòng)子模塊中,首先通過cos和sin兩個(gè)功能模塊來確定秒針移動(dòng)的度數(shù),其次分別對(duì)秒、分、時(shí)進(jìn)行擦除重寫操作,再分別對(duì)表盤及圓心進(jìn)行刷新,這樣就實(shí)現(xiàn)了時(shí)、分、秒針

4、的動(dòng)態(tài)變化。四 程序流程圖開始顯示信息調(diào)用畫線子模塊畫出時(shí)分秒針調(diào)用系統(tǒng)實(shí)時(shí)時(shí)鐘顯示模塊Clk顯示系統(tǒng)時(shí)間調(diào)用擦除、重寫及角度確定子模塊進(jìn)行指針移動(dòng)調(diào)用renovate及enovate進(jìn)行表盤及圓心的刷新接收鍵盤字符是否為q結(jié)束YN五、實(shí)驗(yàn)結(jié)果六、程序源代碼包含的庫(kù)文件及數(shù)據(jù)段的定義如下:.386.model flat, stdcalloption casemap :none includewindows.inc ; Include 文件定義includeuser32.incincludelib user32.libincludekernel32.incincludelib kernel32.

5、libincludeGdi32.incincludelib Gdi32.lib.data?hInstancedd?hWinMaindd?dwCenterXdd? ;圓心XdwCenterYdd?;圓心YdwRadiusdd?;半徑ICO_MAINequ1000h ; Equ 等值定義ID_TIMERequ1.constszClassNamedb 指針式屏顯電子鐘,02計(jì)算時(shí)鐘的位置、大小的_CalcClockParam子程序:_CalcClockParamproclocalstRect:RECTinvokeGetClientRect,hWinMain,addr stRectmoveax,stR

6、ect.rightsubeax,stRect.left;eax = 寬度movecx,stRect.bottomsubecx,stRect.top;ecx = 高度.ifecx eax ; 比較客戶區(qū)寬度和高度,以小的值作為時(shí)鐘的直徑movedx,eax ;高度 寬度subecx,eaxshrecx,1movdwCenterX,0movdwCenterY,ecx.elsemovedx,ecxsubeax,ecxshreax,1movdwCenterX,eaxmovdwCenterY,0.endifshredx,1movdwRadius,edxadddwCenterX,edxadddwCente

7、rY,edxret_CalcClockParamendp3計(jì)算時(shí)鐘圓周上某個(gè)角度對(duì)應(yīng)的 X 坐標(biāo), X = 圓心X + Sin(角度) * 半徑的子程序_CalcX:_dwPara180dw180_CalcXproc_dwDegree,_dwRadius ;輸入?yún)?shù)是角度_dwDegree和半徑_dwRadiuslocaldwReturnfilddwCenterXfild_dwDegreefldpifmul;角度*Pifild_dwPara180fdivpst(1),st;角度*Pi/180fsin;Sin(角度*Pi/180)fild_dwRadiusfmul;半徑*Sin(角度*Pi/18

8、0)fadd;X+半徑*Sin(角度*Pi/180)fistpdwReturnmoveax,dwReturnret_CalcXendp計(jì)算時(shí)鐘圓周上某個(gè)角度對(duì)應(yīng)的 Y 坐標(biāo),類似于上面計(jì)算X坐標(biāo),Y = 圓心Y - Cos(角度) * 半徑4按照 _dwDegreeInc 的步進(jìn)角度,畫 _dwRadius 為半徑的小圓點(diǎn)刻度程序:_DrawDotproc_hDC,_dwDegreeInc,_dwRadiuslocaldwNowDegree,dwRlocaldwX,dwYmovdwNowDegree,0moveax,dwRadiussubeax,10movdwR,eax.whiledwNowD

9、egree =12subeax,12.endifmovecx,360/12mulecxmovzxecx,stTime.wMinuteshrecx,1addeax,ecxinvoke_DrawLine,_hDC,eax,30invokeGetStockObject,NULL_PENinvokeSelectObject,_hDC,eaxinvokeDeleteObject,eaxpopadret_ShowTimeendp7顯示圓形表盤窗口的初始化過程:_ProcWinMainprocuses ebx edi esi hWnd,uMsg,wParam,lParamlocalstPS:PAINTSTR

10、UCTmoveax,uMsg.ifeax =WM_TIMERinvokeInvalidateRect,hWnd,NULL,TRUEinvoke MessageBeep,-1.elseifeax =WM_PAINTinvokeBeginPaint,hWnd,addr stPSinvoke_ShowTime,hWnd,eaxinvokeEndPaint,hWnd,addr stPS.elseifeax =WM_CREATEinvokeSetTimer,hWnd,ID_TIMER,1000,NULL.elseifeax =WM_CLOSE |(eax = WM_KEYDOWN |eax = WM_K

11、EYUP) & wParam = VK_ESCAPE)invokeKillTimer,hWnd,ID_TIMERinvokeDestroyWindow,hWinMaininvokePostQuitMessage,NULL.elseinvokeDefWindowProc,hWnd,uMsg,wParam,lParamret.endifxoreax,eaxret_ProcWinMainendp8程序的主體顯示過程:_WinMainproclocalstWndClass:WNDCLASSEXlocalstMsg:MSGinvokeGetModuleHandle,NULLmovhInstance,ea

12、xinvokeRtlZeroMemory,addr stWndClass,sizeof stWndClass ; 注冊(cè)窗口類invokeLoadIcon,hInstance,ICO_MAINmovstWndClass.hIcon,eaxmovstWndClass.hIconSm,eaxinvokeLoadCursor,0,IDC_ARROWmovstWndClass.hCursor,eaxpushhInstancepopstWndClass.hInstancemovstWndClass.cbSize,sizeof WNDCLASSEXmovstWndClass.style,CS_HREDRAW

13、 or CS_VREDRAWmovstWndClass.lpfnWndProc,offset _ProcWinMainmovstWndClass.hbrBackground,COLOR_WINDOW + 1movstWndClass.lpszClassName,offset szClassNameinvokeRegisterClassEx,addr stWndClass; 建立并顯示窗口 invokeCreateWindowEx,WS_EX_CLIENTEDGE, offset szClassName,offset szClassName, WS_OVERLAPPEDWINDOW, 100,1

14、00,250,270, NULL,NULL,hInstance,NULLmovhWinMain,eaxinvokeShowWindow,hWinMain,SW_SHOWNORMALinvokeUpdateWindow,hWinMain .whileTRUEinvokeGetMessage,addr stMsg,NULL,0,0.break.if eax= 0invokeTranslateMessage,addr stMsginvokeDispatchMessage,addr stMsg.endwret_WinMainendp七、課設(shè)心得體會(huì) 在這一周的課設(shè)里,完成課設(shè)題目的過程很是艱辛。在此之前,根本就不清楚用匯編居然也可以編出來像MFC那樣的東西。在屏幕上顯示出來。所以題目一出來就有點(diǎn)蒙了,不知道該從何著手。然后就按照題目在網(wǎng)上搜索相關(guān)的實(shí)現(xiàn)步驟及思想。這才發(fā)現(xiàn)自己懂得的東西真是少的可憐,竟然連這個(gè)都不了解的。 方法只有深入學(xué)習(xí)匯編語言,學(xué)習(xí)Win32程序,及相關(guān)函數(shù)。在平時(shí)上課的時(shí)候只能說是對(duì)匯編語言有了一定的了解,只懂了一點(diǎn)皮毛,所掌握的東西對(duì)這次實(shí)驗(yàn)來說可謂是杯水車薪,所以就需要自己去深入地研究,查資料。通過幾天的設(shè)計(jì),我在掌握了它的DOS和BIOS各個(gè)功能調(diào)用的同時(shí),也學(xué)到了自己以前從沒想過的東西,比方畫點(diǎn)、畫線、更延伸的畫圓、顏色的設(shè)定、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論