電子時鐘課程設(shè)計_第1頁
電子時鐘課程設(shè)計_第2頁
電子時鐘課程設(shè)計_第3頁
電子時鐘課程設(shè)計_第4頁
電子時鐘課程設(shè)計_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《微機(jī)原理與接口技術(shù)》電子時鐘課程設(shè)計報告姓名:田時雨2010212443張旭2010212441指導(dǎo)教師:曾素華目錄一、實驗?zāi)康暮皖}目: 3二、實驗要求: 3三、設(shè)計方案: 3四、實驗代碼: 7五、實驗截圖: 14六、心得體會: 14一、實驗題目和目的:電子鐘圍繞《微機(jī)原理與接口技術(shù)》課程,運用電子技術(shù)、計算機(jī)技術(shù)及信息科學(xué)領(lǐng)域的基本理論和基本知識,綜合多個接口芯片,結(jié)合實際應(yīng)用而進(jìn)行的一次綜合分析設(shè)計能力的訓(xùn)練。學(xué)生通過本次課程設(shè)計,進(jìn)一步掌握硬件接口技術(shù)及其應(yīng)用編程方法,使學(xué)生系統(tǒng)科學(xué)地受到分析問題和解決問題的訓(xùn)練,提高學(xué)生綜合分析設(shè)計能力、獨立思考與團(tuán)結(jié)協(xié)助能力。二、實驗要求:由8254定時,8255控制數(shù)碼管顯示時間,小鍵盤控制計時:1鍵(清除)顯示初值00、002鍵(啟動)電子鐘計時3鍵(停止)電子鐘停止計時4鍵(終止程序)熄滅數(shù)碼管,程序退出5鍵(設(shè)置初始值)設(shè)置分、秒值。同時具有判斷錯誤的能力,若輸入有錯,則顯示錯誤提示,此時按5可從新輸入預(yù)置值。6、鍵時間位加1功能的設(shè)置三、設(shè)計方案:設(shè)計原理:用8254的計數(shù)器0來實現(xiàn)秒計數(shù),信號源用實驗箱上的10KHZ(當(dāng)然選擇其它信號源也可以,不過到時候初值會不一樣),使每一秒鐘就向中斷端子IRQ發(fā)出一次中斷請求,進(jìn)一步與PC機(jī)中的某個中斷聯(lián)系起來。當(dāng)中斷發(fā)生以后,PC機(jī)就會轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,把計數(shù)的秒編碼成具體的時間,把數(shù)據(jù)通過8255顯示在數(shù)碼管上。那個按鍵也是通過8255對鍵盤進(jìn)行軟件掃描,識別出哪個按鍵按下后,再去執(zhí)行相應(yīng)的按鍵功能。設(shè)計接線圖:程序流程圖:主程序模塊功能(1)計時功能:用到的8254的功能只是相當(dāng)于一個分頻計,輸入一定頻率的脈沖信號使每隔一秒就會在OUT0端產(chǎn)生0到1的躍變,作為中斷IRQ的請求信號。由于秒、分的進(jìn)制形式不同,可通過中斷程序控制,由此完成計時功能。(2)顯示功能:可以用四位二進(jìn)制碼分別對應(yīng)表示X4X3X2X1的邏輯值(1--高電平,0--低電平),實現(xiàn)時鐘的顯示功能。具體操作:首先將秒的個位數(shù)據(jù)通過8255的B端口送給數(shù)碼管,同時將二進(jìn)制碼“0111”通過8255的A端口送給小鍵盤X4X3X2X1,這樣通過計算機(jī)的掃描后,就會在數(shù)碼管4上顯示秒的個位值;接著將秒的十位數(shù)據(jù)送給數(shù)碼管,同時將二進(jìn)制碼“1011”送給小鍵盤X4X3X2X1,這樣就會在數(shù)碼管3上顯示相應(yīng)的數(shù)值;同樣的道理,分別將分的個位、十位送給數(shù)碼管,“1101”、“1110”送給小鍵盤X4X3X2X1,就會依次在數(shù)碼管2、1上顯示分的個位、十位數(shù)值。特別注意分秒的間隔點,由于數(shù)碼管共陰極,將數(shù)碼二進(jìn)制最高位置1,其他為置0即可。(3)按鍵功能:由于X1,X2,X3,X4低電平顯示相應(yīng)的數(shù)碼管,利用讀回的Y1,Y2邏輯值辨別究竟按下哪個鍵,并通過相應(yīng)的編程來完成不同鍵的按鍵功能。1、鍵清除功能的設(shè)置:在判別了按鍵的邏輯值為01110后,將顯示的每一個位賦0的編碼,這樣在數(shù)碼管顯示的就是00.00,便達(dá)到了清除功能的目的。2、鍵啟動、3鍵停止計時功能的設(shè)置:在進(jìn)行2鍵和3鍵功能設(shè)置之前,我們可以定義一個暫停標(biāo)志位:PAUSE,它用標(biāo)準(zhǔn)的邏輯值(0、1)來表示,假如PAUSE=0,在進(jìn)行計時設(shè)置的時候,讓其自動加1,依次顯示時間的各位;假如PAUSE=1,我們就將其返回,停止加1,即暫停計時。接著,假如我們判別的是2鍵被按下,就令PAUSE=0,讓計數(shù)器計時,自動加1;假如我們按下的是3鍵,就令PAUSE=1,讓計數(shù)器暫停計時,即停止加1。4、鍵終止程序功能的設(shè)置:從上面的分析,我們已經(jīng)知道,只有同時將對應(yīng)鍵盤X列的低電平送到相應(yīng)的數(shù)碼管才會使得數(shù)碼管亮,所以我們在判別了是4鍵被按下后,只要將鍵盤對應(yīng)的二進(jìn)制碼全部賦高電平,并送到數(shù)碼管,同時結(jié)束程序,就可以實現(xiàn)熄滅數(shù)碼管、退出程序的功能。5、鍵重置初始值功能的設(shè)置:在這里我們設(shè)置了兩個標(biāo)志位:調(diào)整位標(biāo)志ADJUST和閃爍標(biāo)志FLASH。它們的具體設(shè)置如下:ADJUST初始設(shè)置為00H,表示非調(diào)整狀態(tài),01H表示調(diào)整秒的個位,02H表示調(diào)整秒的十位,03H表示調(diào)整分的個位,04H表示調(diào)整分的十位。FLASH設(shè)置為邏輯值,初始設(shè)置為00H,表示非閃爍狀態(tài),0FFH表示閃爍,其閃爍功能實現(xiàn)的過程為:假如FLASH=0FFH,則將00H送給數(shù)碼管,讓數(shù)碼管不顯示。然后,在中斷計時程序里面,加入FLASH取反語句,由于計時程序每秒加1循環(huán)一次,這樣FLASH也實現(xiàn)了每秒改變邏輯值一次。也就是說,數(shù)碼管閃爍的周期是1秒。當(dāng)然,閃爍標(biāo)志位只是在有對應(yīng)位需要調(diào)整的時候才用的著。要實現(xiàn)5鍵設(shè)置初始時間的功能,我們就必須增加一個鍵(6鍵)來控制時間的增加。6、鍵時間位加1功能的設(shè)置這里,我們再引進(jìn)一個標(biāo)志位:按鍵標(biāo)志KEYMARK。其設(shè)置為邏輯值,初始設(shè)置為0,表示允許響應(yīng)此次按鍵,并在響應(yīng)過后,將其置1;KEMARK為1時,表示不響應(yīng)此次按鍵。之所以要設(shè)置此標(biāo)志位,是因為鍵盤掃描的速度非??欤偃缥野聪?鍵需要調(diào)整時間加1,我按下的時間再怎么短,計算機(jī)一定已經(jīng)掃描了無數(shù)次,這樣一來,我只按了一次,時間位就會響應(yīng)無數(shù)次,實現(xiàn)了無數(shù)次的加1,從而無法實現(xiàn)6鍵的功能。四、實驗代碼:INTCSR_BYTE0EQU0D838AHINTCSR_BYTE1EQU0D839BHINTCSR_BYTE2EQU0D83AHINTCSR_BYTE3EQU0D83BHIMB4_BYTE3EQU0D81FHMY8254_COUNT0EQU0E040HMY8254_COUNT1EQU0E041HMY8254_COUNT2EQU0E042HMY8254_MODEEQU0E043HMY8255_AEQU0E060HMY8255_BEQU0E061HMY8255_CEQU0E062HMY8255_MODEEQU0E063HIRQEQU01CCHDATASEGMENTCSBAKDW?IPBAKDW?MKBAKDB?ADJUSTDB00H;調(diào)整位標(biāo)志FLASHDB00H;閃爍標(biāo)志位PAUSEDB0B;暫停標(biāo)志位KEYMARKDB0B;按鍵標(biāo)志位INKEYDB00H;按鍵SECONDADB00H;秒個位SECONDBDB00H;秒十位MINUTEADB00H;分個位MINUTEBDB00H;分十位LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;數(shù)碼管0-9的編碼DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:CLIMOVAX,DATAMOVDS,AXMOVDX,INTCSR_BYTE0MOVAL,00HOUTDXMOVDX,INTCSR_BYTE1MOVAL,1FHOUTDXMOVDX,INTCSR_BYTE2MOVAL,3FHOUTDXMOVDX,INTCSR_BYTE3MOVAL,00HOUTDXMOVAX,0000HMOVES,AXMOVDI,01CCH;保存系統(tǒng)中斷矢量MOVAX,ES:[DI]MOVIPBAK,AXMOVAX,OFFSETMYINTCLDSTOSWMOVAX,ES:[DI]MOVCSBAK,AXMOVAX,SEGMYINT;設(shè)置中斷矢量STOSWINAL,0A1HMOVMKBAK,ALANDAL,0F7HOUT0A1H,ALSTI;開中斷MOVDX,MY8254_MODE;8254初始化MOVAL,15H;00010101:計數(shù)器0,只讀低八位,方式2分頻器,十進(jìn)制OUTDX,MOVDX,MY8254_COUNT0MOVAL,0OUTDXMOVDX,MY8255_MODE;8255初始化MOVAL,81H;10000001:A口:方式0,輸出,B口:方式0,;輸出,C口:低四位輸入,高四位輸出OUTDXA1:NOP;等待MOVCX,32HA2:MOVDX,MY8255_BMOVAX,DATAMOVDS,AXMOVBX,OFFSETLEDMOVAL,SECONDAXLATLEDCMPADJUST,01H;是否調(diào)整秒的個位JNEDIS_SECONDACMPFLASH,0FFH;是否閃爍JNEDIS_SECONDAANDAL,00H;熄滅數(shù)碼管(若FLASH=1)DIS_SECONDA:;顯示秒的個位OUTDXMOVDX,MY8255_AMOVAL,0111BOUTDXCALLKEYCTR;調(diào)用按鍵處理程序CALLDELAY;調(diào)用延遲程序MOVDX,MY8255_BMOVAX,DATAMOVDS,AXMOVBX,OFFSETLEDMOVAL,SECONDBXLATLEDCMPADJUST,02H;是否調(diào)整秒的十位JNEDIS_SECONDBCMPFLASH,0FFHJNEDIS_SECONDBANDAL,00HDIS_SECONDB:;顯示秒的十位OUTDX,MOVDX,MY8255_AMOVAL,1011BOUTDXCALLKEYCTRCALLDELAYMOVDX,MY8255_BMOVAX,DATAMOVDS,AXMOVBX,OFFSETLEDMOVAL,MINUTEAXLATLEDCMPADJUST,03H;是否調(diào)整分的個位JNEDIS_MINUTEACMPFLASH,0FFHJNEDIS_MINUTEAANDAL,00HDIS_MINUTEA:;顯示分的個位ADDAL,80H;顯示XX.XX中的點“.”O(jiān)UTDX,MOVDX,MY8255_AMOVAL,1101BOUTDXCALLKEYCTRCALLDELAYMOVDX,MY8255_BMOVAX,DATAMOVDS,AXMOVBX,OFFSETLEDMOVAL,MINUTEBXLATLEDCMPADJUST,04H;是否調(diào)整分的十位JNEDIS_MINUTEBCMPFLASH,0FFHJNEDIS_MINUTEBANDAL,00HDIS_MINUTEB:;顯示分的十位OUTDX,MOVDX,MY8255_AMOVAL,1110BOUTDXCALLKEYCTRCALLDELAYLOOPSK1JMPSK2SK1:JMPA2SK2:JMPA1MYINT:PUSHDSPUSHAXPUSHDXMOVDX,IMB4_BYTE3INAL,DXMOVDX,INTCSR_BYTE2MOVAL,3FHOUTDX;清8259中斷標(biāo)志MOVAL,63H;根據(jù)中斷號修改OUT0A0H,ALMOVAL,62HOUT20H,ALMOVAX,DATAMOVDS,AXNOTFLASH;中斷處理程序MOVKEYMARK,0BCMPPAUSE,0BJNEL1INCSECONDACMPSECONDA,0AHJCL1MOVSECONDA,00HINCSECONDBCMPSECONDB,06HJCL1MOVSECONDB,00HINCMINUTEACMPMINUTEA,0AHJCL1INCMINUTEBMOVMINUTEA,00HCMPMINUTEB,06HJCL1MOVMINUTEB,00HL1:POPDSPOPAXPOPDXIRETKEYCTRPROCNEARMOVINKEY,ALMOVDX,MY8255_CINAL,DXANDAL,03H;高六位清零CMPAL,10B;是否按下Y1行JNEINY2ADDINKEY,00HJMPJUDGKEYINY2:CMPAL,01B;是否按下Y2行JNESKIPADDINKEY,10000BJUDGKEY:CMPINKEY,01110B;是否按下1鍵JNEKEY2ANDSECONDA,00H;時間位清零ANDSECONDB,00HANDMINUTEA,00HANDMINUTEB,00HSKIP:JMPBACKKEY2:CMPINKEY,01101B;是否按下2鍵JNEKEY3ANDPAUSE,0B;啟動計時JMPBACKKEY3:CMPINKEY,01011B;是否按下3鍵JNEKEY4MOVPAUSE,1B;暫停計時JMPBACKKEY4:CMPINKEY,00111B;是否按下4鍵JNEKEY5MOVDX,MY8255_AMOVAL,0FFH;熄滅數(shù)碼管,程序退出OUTDXCALLDELAYMOVAX,4C00HINT21HJMPBACKKEY5:CMPINKEY,11110B;是否按下5鍵JNEKEY6CMPKEYMARK,0BJNEKEY6MOVKEYMARK,1BMOVPAUSE,1BCMPADJUST,04H;是否已調(diào)整完分的十位JETLINCADJUSTJMPBACKTL:ANDADJUST,00HJMPBACKKEY6:CMPINKEY,11101B;是否按下6鍵JNEBACKCMPKEYMARK,0BJNEBACKMOVKEYMARK,1BCMPADJUST,01H;是否調(diào)整秒的個位JNEAD1INCSECONDA;秒的個位加1CALLOUTCLEAR;判斷溢出JMPBACKAD1:CMPADJUST,02H;是否調(diào)整秒的十位JNEAD2INCSECONDBCALLOUTCL

溫馨提示

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

評論

0/150

提交評論