版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、微機原理及應用課程設計設計題目: 指針式的屏顯電子鐘專 業(yè) 網(wǎng) 絡 工 程 班 級 網(wǎng) 絡 081 學 生 劉妙曲 指導教師 王 理 2011 年 2 學期目 錄一、 實驗目的 .3二、 實驗內(nèi)容及要求3三、 課設基本思想3四、 程序流程圖4五、 實驗結(jié)果.6六、 程序源代碼6七、 課設心得體會14八、 參考文獻14一、實驗目的1)學習系統(tǒng)駐留的方法。2)了解BIOS中時間參數(shù)的調(diào)用方法。3)了解屏幕畫圖的方法 對于本次應用的科目微機原理與接口技術(shù)來說,因為需要應用Win32 匯編語言技術(shù)來編寫代碼實現(xiàn)功能,所以要掌握這門語言。并且要用到Windows API 接口的許多函數(shù),所以要掌握一部分
2、函數(shù)的調(diào)用方法及實現(xiàn)的功能。檢驗和提高匯編語言程序設計能力,和微機原理與接口技術(shù)應用方面的分析問題與解決問題的能力,掌握32位匯編語言,完成軟件的設計要求、編碼和測試等。 二、實驗內(nèi)容及要求1)在屏幕上顯示一個適當大小的橢圓形界面,橢圓形軌道上,均勻的分布著60個“點”,代表1秒60秒的位置,凡是5倍數(shù)的“點”,應當比其他的“點”稍大。2)以橢圓的中心為軸,畫一條線代表“秒針”,采用定時中斷的方式,每過一秒鐘,秒鐘移動一個位置,同時系統(tǒng)發(fā)出“嘀嗒”的聲音,如果相應的“點”能改變顏色,則動感更強。3)定時源可以使用系統(tǒng)的定時源。4)按下“Esc”鍵之后,結(jié)束演示。三 課設基本思想 1)屏幕應設置
3、為圖形方式,采用模塊化編程模式,主模塊顯示橢圓形表盤,并且處理時鐘中斷,每過一秒鐘,轉(zhuǎn)入一次子模塊,子模塊負責秒針移動的位置。2)在著手本課題設計之前,學習掌握真設計方法,掌握順時針方向畫圓的技術(shù),靈活運用,就可以設計出秒針的移動程序。3)系統(tǒng)駐留的方法及BIOS中時間參數(shù)的調(diào)用方法見統(tǒng)駐留時間程序。屏幕設置為圖形方式,采用模塊化編程,主模塊顯示界面信息,每個子模塊負責一個功能,然后通過模塊調(diào)用來實現(xiàn)。 圓及畫線子模塊顯示圓形表盤,及時、分、秒針,然后調(diào)用秒針移動子模塊式電子鐘能夠運行。 動子模塊中,首先通過cos和sin兩個功能模塊來確定秒針移動的度數(shù),其次分別對秒、分、時進行擦除重寫操作,
4、再分別對表盤及圓心進行刷新,這樣就實現(xiàn)了時、分、秒針的動態(tài)變化。四 程序流程圖開始顯示信息調(diào)用畫線子模塊畫出時分秒針調(diào)用系統(tǒng)實時時鐘顯示模塊Clk顯示系統(tǒng)時間調(diào)用擦除、重寫及角度確定子模塊進行指針移動調(diào)用renovate及enovate進行表盤及圓心的刷新接收鍵盤字符是否為q結(jié)束YN五、實驗結(jié)果六、程序源代碼包含的庫文件及數(shù)據(jù)段的定義如下:.386.model flat, stdcalloption casemap :none includewindows.inc ; Include 文件定義includeuser32.incincludelib user32.libincludekernel
5、32.incincludelib kernel32.libincludeGdi32.incincludelib Gdi32.lib.data?hInstancedd?hWinMaindd?dwCenterXdd? ;圓心XdwCenterYdd?;圓心YdwRadiusdd?;半徑ICO_MAINequ1000h ; Equ 等值定義ID_TIMERequ1.constszClassNamedb '指針式屏顯電子鐘',0(2)計算時鐘的位置、大小的_CalcClockParam子程序:_CalcClockParamproclocalstRect:RECTinvokeGetCli
6、entRect,hWinMain,addr stRectmoveax,stRect.rightsubeax,stRect.left;eax = 寬度movecx,stRect.bottomsubecx,stRect.top;ecx = 高度.ifecx > eax ; 比較客戶區(qū)寬度和高度,以小的值作為時鐘的直徑movedx,eax ;高度 > 寬度subecx,eaxshrecx,1movdwCenterX,0movdwCenterY,ecx.elsemovedx,ecxsubeax,ecxshreax,1movdwCenterX,eaxmovdwCenterY,0.endifs
7、hredx,1movdwRadius,edxadddwCenterX,edxadddwCenterY,edxret_CalcClockParamendp(3)計算時鐘圓周上某個角度對應的 X 坐標, X = 圓心X + Sin(角度) * 半徑的子程序_CalcX:_dwPara180dw180_CalcXproc_dwDegree,_dwRadius ;輸入?yún)?shù)是角度_dwDegree和半徑_dwRadiuslocaldwReturnfilddwCenterXfild_dwDegreefldpifmul;角度*Pifild_dwPara180fdivpst(1),st;角度*Pi/180fs
8、in;Sin(角度*Pi/180)fild_dwRadiusfmul;半徑*Sin(角度*Pi/180)fadd;X+半徑*Sin(角度*Pi/180)fistpdwReturnmoveax,dwReturnret_CalcXendp計算時鐘圓周上某個角度對應的 Y 坐標,類似于上面計算X坐標,Y = 圓心Y - Cos(角度) * 半徑(4)按照 _dwDegreeInc 的步進角度,畫 _dwRadius 為半徑的小圓點(刻度)程序:_DrawDotproc_hDC,_dwDegreeInc,_dwRadiuslocaldwNowDegree,dwRlocaldwX,dwYmovdwNow
9、Degree,0moveax,dwRadiussubeax,10movdwR,eax.whiledwNowDegree <=360finitinvoke_CalcX,dwNowDegree,dwR ; 計算小圓點的圓心坐標movdwX,eaxinvoke_CalcY,dwNowDegree,dwRmovdwY,eaxmoveax,dwX;畫點movebx,eaxmovecx,dwYmovedx,ecxsubeax,_dwRadiusaddebx,_dwRadiussubecx,_dwRadiusaddedx,_dwRadiusinvokeEllipse,_hDC,eax,ecx,ebx,
10、edxmoveax,_dwDegreeIncadddwNowDegree,eax.endwret_DrawDotendp(5) 畫 _dwDegree 角度的線條,半徑=時鐘半徑-參數(shù)_dwRadiusAdjust(指針)子程序:_DrawLineproc_hDC,_dwDegree,_dwRadiusAdjustlocaldwRlocaldwX1,dwY1,dwX2,dwY2moveax,dwRadiussubeax,_dwRadiusAdjustmovdwR,eaxinvoke_CalcX,_dwDegree,dwR ; 計算線條兩端的坐標movdwX1,eaxinvoke_CalcY,_
11、dwDegree,dwRmovdwY1,eaxadd_dwDegree,180invoke_CalcX,_dwDegree,10movdwX2,eaxinvoke_CalcY,_dwDegree,10movdwY2,eaxinvokeMoveToEx,_hDC,dwX1,dwY1,NULLinvokeLineTo,_hDC,dwX2,dwY2ret_DrawLineendp(6)調(diào)用API函數(shù)顯示系統(tǒng)當前時間及畫電子鐘的指針程序:_ShowTimeproc_hWnd,_hDClocalstTime:SYSTEMTIMEpushadinvokeGetLocalTime,addr stTimein
12、voke_CalcClockParaminvokeGetStockObject,BLACK_BRUSH ; 畫時鐘圓周上的點invokeSelectObject,_hDC,eaxinvoke_DrawDot,_hDC,360/12,3;畫12個大圓點invoke_DrawDot,_hDC,360/60,1;畫60個小圓點invokeCreatePen,PS_SOLID,1,0 ; 畫時鐘指針invokeSelectObject,_hDC,eaxinvokeDeleteObject,eaxmovzxeax,stTime.wSecondmovecx,360/60mulecx ;秒針度數(shù) = 秒 *
13、 360/60invoke_DrawLine,_hDC,eax,15;時針、分針的畫法類似于秒針,只是設置的顯示寬度不同invokeCreatePen,PS_SOLID,3,0invokeSelectObject,_hDC,eaxinvokeDeleteObject,eaxmovzxeax,stTime.wHour.ifeax >=12subeax,12.endifmovecx,360/12mulecxmovzxecx,stTime.wMinuteshrecx,1addeax,ecxinvoke_DrawLine,_hDC,eax,30invokeGetStockObject,NULL_
14、PENinvokeSelectObject,_hDC,eaxinvokeDeleteObject,eaxpopadret_ShowTimeendp(7)顯示圓形表盤窗口的初始化過程:_ProcWinMainprocuses ebx edi esi hWnd,uMsg,wParam,lParamlocalstPS:PAINTSTRUCTmoveax,uMsg.ifeax =WM_TIMERinvokeInvalidateRect,hWnd,NULL,TRUEinvoke MessageBeep,-1.elseifeax =WM_PAINTinvokeBeginPaint,hWnd,addr st
15、PSinvoke_ShowTime,hWnd,eaxinvokeEndPaint,hWnd,addr stPS.elseifeax =WM_CREATEinvokeSetTimer,hWnd,ID_TIMER,1000,NULL.elseifeax =WM_CLOSE |(eax = WM_KEYDOWN |eax = WM_KEYUP) && wParam = VK_ESCAPE)invokeKillTimer,hWnd,ID_TIMERinvokeDestroyWindow,hWinMaininvokePostQuitMessage,NULL.elseinvokeDefWi
16、ndowProc,hWnd,uMsg,wParam,lParamret.endifxoreax,eaxret_ProcWinMainendp(8)程序的主體顯示過程:_WinMainproclocalstWndClass:WNDCLASSEXlocalstMsg:MSGinvokeGetModuleHandle,NULLmovhInstance,eaxinvokeRtlZeroMemory,addr stWndClass,sizeof stWndClass ; 注冊窗口類invokeLoadIcon,hInstance,ICO_MAINmovstWndClass.hIcon,eaxmovstW
17、ndClass.hIconSm,eaxinvokeLoadCursor,0,IDC_ARROWmovstWndClass.hCursor,eaxpushhInstancepopstWndClass.hInstancemovstWndClass.cbSize,sizeof WNDCLASSEXmovstWndClass.style,CS_HREDRAW or CS_VREDRAWmovstWndClass.lpfnWndProc,offset _ProcWinMainmovstWndClass.hbrBackground,COLOR_WINDOW + 1movstWndClass.lpszCla
18、ssName,offset szClassNameinvokeRegisterClassEx,addr stWndClass; 建立并顯示窗口 invokeCreateWindowEx,WS_EX_CLIENTEDGE, offset szClassName,offset szClassName, WS_OVERLAPPEDWINDOW, 100,100,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
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 天貓分銷合同模板
- 家具廠商生產(chǎn)合同范例
- 學校餐廳水果訂購合同范例
- 上海畫室出租合同范例
- 廠區(qū)清潔合同范例范例
- 外企解除勞動合同范例
- 單位公房租賃合同模板
- 發(fā)行合同模板經(jīng)典版
- 代替購房合同范例
- 公司員工正式合同模板
- 2023年天津公務員已出天津公務員考試真題
- 2025年高考數(shù)學專項題型點撥訓練之初等數(shù)論
- 上海市浦東新區(qū)2024-2025學年六年級上學期11月期中數(shù)學試題(無答案)
- 教科版三年級科學上冊《第1單元第1課時 水到哪里去了》教學課件
- 通信技術(shù)工程師招聘筆試題與參考答案(某世界500強集團)2024年
- 國際貿(mào)易術(shù)語2020
- 國網(wǎng)新安規(guī)培訓考試題及答案
- 2024至2030年中國節(jié)流孔板組數(shù)據(jù)監(jiān)測研究報告
- 黑龍江省哈爾濱市師大附中2024-2025學年高一上學期10月階段性考試英語試題含答案
- 第六單元測試卷-2024-2025學年統(tǒng)編版語文三年級上冊
- 【課件】Unit4+Section+B+(Project)課件人教版(2024)七年級英語上冊
評論
0/150
提交評論