2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  第1章 緒論</b></p><p><b>  1. 設(shè)計要求</b></p><p> ?。?)系統(tǒng)可以按“秒”進(jìn)行計時。</p><p> ?。?)數(shù)字時鐘可以顯示小時(00-23)、分鐘(00-59)和秒(00-59)。</p><p> ?。?)可通過按鍵K

2、1來選擇設(shè)置“小時”、“分鐘”和“秒”。設(shè)置時可通過“加”和“減”按鍵(K2、K3)來調(diào)整時間;設(shè)置過程中時鐘停止計時。</p><p> ?。?)無鍵按下三秒后,自動進(jìn)入時鐘的計時程序。</p><p><b>  2. 設(shè)計方案</b></p><p>  采用AT89C51芯片作為硬件核心,其內(nèi)部采用Flash ROM,具有4KB ROM

3、 存儲空間,能于3V的超低壓工作,本系統(tǒng)的計時方案是利用單片機內(nèi)部的定時/計數(shù)器進(jìn)行中斷定時, 配合軟件延時實現(xiàn)對時、分、秒的計時。</p><p>  整個系統(tǒng)的控制方案是:上電后系統(tǒng)自動進(jìn)入時間顯示,從00:00:00 開始計時。按下P1.0鍵,進(jìn)入調(diào)秒狀態(tài),時鐘停止計時;按P1.1或P1.2鍵可進(jìn)行加1或減1操作;繼續(xù)按P1.0鍵可分別進(jìn)行分位、時調(diào)整;無鍵按下3秒鐘后退出調(diào)整狀態(tài),自動進(jìn)入時鐘的計時和顯示

4、。</p><p>  整個系統(tǒng)的硬件原理框圖如圖1.1,它采用的是AT89C51單片機,只用了P1口。為了簡化硬件電路,LED顯示采用了動態(tài)掃描的方式實現(xiàn), LED采用共陽極數(shù)碼管,驅(qū)動電流由三極管9012提供。為了提高計數(shù)精度,所采用的晶振頻率為12MHz。</p><p><b>  第2章 硬件設(shè)計</b></p><p><b

5、>  1 單片機的選擇</b></p><p>  本課程選用AT89C51型號的單片機。 AT89C51 是美國ATMEL 公司生產(chǎn)的低電壓,高性能CMOS8 位單片機,片內(nèi)含4k bytes 的可反復(fù)擦寫的只讀程序存 儲器(PEROM)和128 bytes 的隨機存取數(shù)據(jù)存儲器(RAM ),器件采用ATMEL 公司的高密度、非易失性存儲技術(shù)生產(chǎn), 兼容標(biāo)準(zhǔn)MCS-51 指令系統(tǒng),片內(nèi)置通用

6、8 位 央處理器(CPU)和Flash 存儲單元,功能強大AT89C51 單片機可為您提供許多高性價比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域。</p><p><b>  主要性能參數(shù):</b></p><p>  ·與MCS-51 產(chǎn) 指令系統(tǒng)完全兼容 </p><p>  ·4k 字節(jié)可重擦寫Flash 閃速存儲器 <

7、;/p><p>  ·1000 次擦寫周期 </p><p>  ·全靜態(tài)操作:0Hz-24MHz </p><p>  ·三級加密程序存儲器 </p><p>  ·128×8 字節(jié)內(nèi)部RAM </p><p>  ·32 個可編程I /O 口線 </p

8、><p>  ·2 個16 位定時/計數(shù)器</p><p><b>  2. 顯示方案</b></p><p>  由于系統(tǒng)要顯示的內(nèi)容較簡單,顯示量不多,所以選用數(shù)碼管既方便又經(jīng)濟。LED有共陰極和共陽極兩種。如圖2.2所示。</p><p>  二極管的陰極連接在一起,通常此公共陰極接地,而共陽極則將發(fā)光二極管

9、的陽極連接在一起,接入+5V的電壓。一位顯示器由8個發(fā)光二極管組成,其中7個發(fā)光二極管構(gòu)成字型“8”的各個筆劃(段)a~g,另一個小數(shù)點為dp發(fā)光二極管。當(dāng)在某段發(fā)光二極管施加一定的正向電壓時,該段筆劃即亮;不加電壓則暗。為了保護(hù)各段LED不被損壞,需外加限流電阻。</p><p>  圖2.2 LED數(shù)碼管結(jié)構(gòu)原理圖</p><p>  眾所周知,LED顯示數(shù)碼管通常由硬件7段譯碼集成電

10、路,完成從數(shù)字到顯示碼的譯碼驅(qū)動。本系統(tǒng)采用軟件譯碼,以減小體積,降低成本和功耗,軟件譯碼的另一優(yōu)勢還在于比硬件譯碼有更大的靈活性。所謂軟件譯碼,即由單片機軟件完成從數(shù)字到顯示碼的轉(zhuǎn)換。從LED數(shù)碼管結(jié)構(gòu)原理可知,為了顯示字符,要為LED顯示數(shù)碼管提供顯示段碼,組成一個“8”字形字符的7段,再加上1個小數(shù)點位,共計8段,因此提供給LED數(shù)碼管的顯示段碼為1個字節(jié)。各段碼位與顯示段的對應(yīng)關(guān)系如表2.2。</p><p&

11、gt;  表2.2 各段碼位的對應(yīng)關(guān)系</p><p>  需說明的是當(dāng)用數(shù)據(jù)口連接LED數(shù)碼管a~dp引腳時,不同的連接方法,各段碼位與顯示段有不同的對應(yīng)關(guān)系。通常數(shù)據(jù)口的D0位與a段連接,D1位與b段連接,……D7位與dp段連接,如表1所示,表2.3為用于LED數(shù)碼管顯示的十六進(jìn)制數(shù)和空白字符與P的顯示段碼。</p><p>  根據(jù)AT89C2051單片機灌電流能力強,拉電流能力弱的

12、特點,我們選用共陽數(shù)碼管。將AT89C2051的P1.0~P1.7分別與共陽數(shù)碼管的a~g及dp相連,高電平的位對應(yīng)的LED數(shù)碼管的段暗,低電平的位對應(yīng)的LED數(shù)碼管的段亮,這樣,當(dāng)P0口輸出不同的段碼,就可以控制數(shù)碼管顯示不同的字符。例如:當(dāng)P0口輸出的段碼為1100 0000,數(shù)碼管顯示的字符為0。</p><p>  表2.3 LED顯示段碼</p><p>  注:(1)本表所列各

13、字符的顯示段碼均為小數(shù)點不亮的情況。</p><p> ?。?)“空白”字符即沒有任何顯示。</p><p>  數(shù)碼管顯示器有二種工作方式,即靜態(tài)顯示方式和動態(tài)掃描顯示方式。為節(jié)省端口及降低功耗,本系統(tǒng)采用動態(tài)掃描顯示方式。動態(tài)掃描顯示方式需解決多位LED數(shù)碼管的“段控”和“位控”問題,本電路的“段控”(即要顯示的段碼的控制)通過P0口實現(xiàn);而每一位的公共端,即LED數(shù)碼管的“位控”,則

14、由P3口控制。這種連接方式由于多位字段線連在一起,因此,要想顯示不同的內(nèi)容,必然要采取輪流顯示的方式,即在某一瞬間,只讓其中的某一位的字位線處于選通狀態(tài),其它各位的字位線處于斷開狀態(tài),同時字段線上輸出這一位相應(yīng)要顯示字符的字段碼。在這一瞬時,只有這一位在顯示,其他幾位則暗。在本系統(tǒng)中,字位線的選通與否是通過PNP三極管的導(dǎo)通與截止來控制,即三極管處于“開關(guān)”狀態(tài)。</p><p><b>  第3章

15、軟件設(shè)計</b></p><p><b>  主程序</b></p><p>  主程序功能主要是初始化、正?,F(xiàn)實時間和判斷功能轉(zhuǎn)換鍵。流程圖如圖3.1所示。</p><p>  圖3.1 主程序流程圖</p><p>  2. 定時器T0中斷服務(wù)程序</p><p>  定時器T0用

16、于時間計時。定時溢出中斷周期可設(shè)為50ms,中斷進(jìn)入后,時鐘計時累計20次(即1s)時,對秒計數(shù)單元進(jìn)行加1操作。時鐘計數(shù)單元在定義的6個單元70H~75H中, 70H~71H 存放秒數(shù)據(jù), 72H~73H存放分?jǐn)?shù)據(jù), 74H~75H存放時數(shù)據(jù)。最大計時值為23小時59分59秒。在計數(shù)單元中采用十進(jìn)制BCD碼計數(shù),秒、分、時之間滿60進(jìn)位。</p><p><b>  顯示子程序</b>&l

17、t;/p><p>  數(shù)碼管顯示的數(shù)據(jù)放在內(nèi)存單元70H~75H中,其中70H~71H存放秒數(shù)據(jù), 72H~73H]存放分?jǐn)?shù)據(jù), 74H~75H存放時數(shù)據(jù),每一單元內(nèi)均為十進(jìn)制BCD碼。由于采用軟件動態(tài)掃描實現(xiàn)數(shù)據(jù)顯示功能,顯示用的十進(jìn)制BCD碼數(shù)據(jù)的對應(yīng)段碼存放在ROM表中,顯示時,先取出70H~75H中的某一地址中的數(shù)據(jù),然后查表得對應(yīng)的顯示段碼從P0口輸出,P2口將對應(yīng)的數(shù)碼管位選中供電,就能顯示該地址單元的數(shù)

18、據(jù)值。 </p><p>  定時器T1中斷服務(wù)程序</p><p>  進(jìn)行時間調(diào)整是,正在被調(diào)整的時間以閃爍的形式表現(xiàn),定時器T1用于產(chǎn)生閃爍的時間間隔,每隔0.3s閃爍一次。</p><p><b>  調(diào)時功能程序</b></p><p>  通過按鍵K1來選擇設(shè)置“小時”、“分鐘”和“秒”。</p>

19、<p>  通過“加”和“減”按鍵(K2、K3)來調(diào)整時間</p><p><b>  6.延時程序</b></p><p>  因為系統(tǒng)是動態(tài)顯示,為了確保系統(tǒng)在有效顯示時間范圍內(nèi)必須執(zhí)行顯示程序,所以使用延時程序。</p><p><b>  7. 結(jié)論</b></p><p> 

20、 這次課程設(shè)計項目雖然是最簡單的數(shù)字時鐘設(shè)計,但用的技術(shù)和知識是源于課本又遠(yuǎn)遠(yuǎn)高于課本的,比如說AT89C51基本操作知識,匯編語言方面的知識等。</p><p>  我負(fù)責(zé)的是軟件設(shè)計的時間設(shè)置以及T1中斷部分,運用到了按鍵部分以及定時器/計數(shù)器部分的知識。通過這次自己編寫程序,使我擺脫了以往單純的理論知識學(xué)習(xí)狀態(tài),并且在和實際設(shè)計的結(jié)合鍛煉了我的綜合運用所學(xué)的專業(yè)基礎(chǔ)知識。不過在這次課設(shè)中我也遇到了不少問題,

21、實際操作時才發(fā)現(xiàn)課堂知識和實際運用還是有差距的,不過最終還是在老師或同學(xué)的幫助下一個一個解決了。</p><p>  通過這次對課程設(shè)計,我也認(rèn)識到自己對單片機應(yīng)用方面的知識的貧乏,對于書本上的很多理論知識還不能靈活運用,有很多我們掌握的知識在等著我去學(xué)習(xí),我會在以后的學(xué)習(xí)生活中彌補我所缺少的知識。同時還從中學(xué)到了一件很重要的東西,那就是如何從理論到實踐的轉(zhuǎn)化。此次的課程設(shè)計給我奠定了一個實踐基礎(chǔ),我會在以后的學(xué)

22、習(xí),生活中磨練自己,使自己掌握更多的技術(shù)能力。</p><p><b>  8.參考文獻(xiàn)</b></p><p>  [1]楊忠義.單片機課程設(shè)計指導(dǎo).北京:清華大學(xué)出版社,2009.201~217</p><p>  [2]靳達(dá).單片機應(yīng)用系統(tǒng)開發(fā)實例導(dǎo)航.北京:人民郵電出版社,2004.1~37</p><p>  

23、[3]南建輝.MCS-51單片機原理及應(yīng)用實例.北京:清華大學(xué)出版社,2004.92~117</p><p>  [4]劉海成.單片機及應(yīng)用系統(tǒng)設(shè)計原理與實踐.北京:北京航天航空大學(xué)出版社,2009.129~180</p><p><b>  附錄</b></p><p>  ORG 0000H</p><p> 

24、 AJMP MAINT ;轉(zhuǎn)主程序</p><p><b>  NOP</b></p><p>  ORG 000BH</p><p>  AJMP INT01 ;轉(zhuǎn)定時器T0中斷程序</p><p><b>  NOP</b></p><

25、p>  ORG 001BH</p><p>  AJMP INT11 ;轉(zhuǎn)定時器T1中斷程序</p><p><b>  NOP</b></p><p>  MAINT: MOV R0,#7FH ;00H~7FH單元清零</p><p><b>  CLR

26、 A</b></p><p>  WZ1: MOV @R0,A</p><p>  DJNZ R0,WZ1</p><p>  MOV SP,#30H ;置堆棧指針</p><p>  MOV 5AH,#0AH ;放入“熄滅符”數(shù)據(jù)</p><p>  MOV

27、TMOD,#11H ;設(shè)T0,T1為16位定時器</p><p>  MOV TL0,#0B0H ;置50 ms定時初值</p><p>  MOV TH0,#3CH</p><p>  MOV TL1,#0B0H</p><p>  MOV TH1,#3CH</p><p>  SETB

28、EA ;開中斷</p><p>  SETB ET0 ;允許T0中斷</p><p>  SETB TR0 ;啟動T0</p><p>  MOV R4,#14H ;用于產(chǎn)生1 s定時</p><p>  MAINT1: LCALL XS

29、ZCX ;調(diào)用顯示子程序</p><p>  JNB P1.0,SJTZ0 ;功能鍵按下,進(jìn)入調(diào)時程序</p><p>  SJMP MAINT</p><p>  ******T0中斷服務(wù)程序******</p><p>  INT01: PUSH ACC

30、 ;保護(hù)現(xiàn)場</p><p><b>  PUSH PSW</b></p><p>  CLR ET0 ;關(guān)T0中斷</p><p>  CLR TR0 ;關(guān)定時器T0</p><p>  MOV A,#0B7H

31、;修正中斷響應(yīng)時間</p><p>  ADD A,TL0</p><p>  MOV TL0,A</p><p>  MOV A,#3CH</p><p>  ADDC A,TH0</p><p>  SETB TR0 ;啟動定時器T0</p><p

32、>  DJNZ R4,INT0U ;20次中斷未到退出中斷</p><p>  AD1: MOV R4,#14H ;R4重新賦值</p><p>  MOV R0,#51H ;指向秒計時單元(50H,51H)</p><p>  LCALL ADD1

33、;調(diào)用加1 s程序</p><p>  MOV A,R3 ;秒數(shù)據(jù)放入A</p><p>  CLR C ;清進(jìn)位標(biāo)志</p><p>  CJNE A,#60H,AD2 ;小于60 s嗎</p><p>  AD2: JC INT0U

34、 ;小于60 s退出中斷</p><p>  CLR A ;大于或等于60 s,清秒計數(shù)單元</p><p>  MOV @R0,A</p><p><b>  DEC R0</b></p><p>  MOV @R0,A</p&g

35、t;<p>  MOV R0,#57H ;指向分計時單元 (56H,57H)</p><p>  ACALL ADD1 ;調(diào)用加1 min程序</p><p>  MOV A,R3 ;分?jǐn)?shù)據(jù)放入A</p><p><b>  CLR C</b&

36、gt;</p><p>  CJNE A,#60H,AD3 ;小于60 min嗎</p><p>  AD3: JC INT0U ;小于60 min退出中斷</p><p>  CLR A ;大于或等于60 min,清分計數(shù)單元</p>

37、<p>  MOV @R0,A</p><p><b>  DEC R0</b></p><p>  MOV @R0,A</p><p>  MOV R0,#59H ;指向小時計時單元 (58H,59H)</p><p>  ACALL ADD1

38、 ;調(diào)用加1 h程序</p><p>  MOV A,R3 ;小時數(shù)據(jù)放入A</p><p><b>  CLR C</b></p><p>  CJNE A,#24H,AD4 ;小于24 h嗎</p><p>  AD4: JC INT0U

39、 ;小于24 h退出中斷</p><p>  CLR A ;大于或等于24 h清小時計數(shù)單元</p><p><b>  MOV @R0,A</b></p><p><b>  DEC R0</b></p><p>  MOV

40、 @R0,A</p><p>  INT0U: MOV 52H,56H ;中斷退出時將分、時計時單元數(shù)</p><p>  MOV 53H,57H ;據(jù)移入對應(yīng)顯示單元</p><p>  MOV 54H,58H</p><p>  MOV 55H,59H</p&g

41、t;<p>  POP PSW ;恢復(fù)現(xiàn)場</p><p><b>  POP ACC</b></p><p>  SETB ET0 ;開放T0中斷</p><p>  RETI ;中斷返回</p><

42、p>  ******顯示子程序******</p><p>  XSZCX: MOV R1,#50H ;顯示數(shù)據(jù)首址</p><p>  MOV R5,#0FEH ;掃描控制字初值</p><p>  MAXY: MOV A,R5 ;掃描控制字送A</p><

43、;p>  MOV P2,A ;輸出掃描控制字</p><p>  MOV A,@R1 ;取顯示數(shù)據(jù)</p><p>  MOV DPTR,#ABC ;取段碼表首地址</p><p>  MOVC A,@A+DPTR ;取對應(yīng)段碼</p><p>  

44、MOV P1,A ;P1口輸出段碼</p><p>  LCALL YS1MS ;延時1 ms</p><p>  INC R1 ;顯示地址增1</p><p>  MOV A,R5 ;掃描控制字送A</p><

45、;p>  JNBACC.5,ENDOUT ;ACC.5為0時一次顯示結(jié)束</p><p>  RL A ;控制字左移</p><p>  MOV R5,A ;制字送回R5中</p><p>  AJMP MAXY ;循環(huán)顯示下一個數(shù)據(jù)

46、</p><p>  ENDOUT: MOV P2,#0FFH ;一次顯示結(jié)束,P2口復(fù)位</p><p>  MOV P1,#0FFH ;P1口復(fù)位</p><p>  RET ;子程序返回 </p><p>  ****** T1中斷服

47、務(wù)程序******</p><p>  INT11: PUSH ACC ;中斷保護(hù)現(xiàn)場</p><p>  PUSH PSW</p><p>  MOV TL1,#0B0H ;裝定時器T1初值</p><p>  MOV TH1,#3CH </p><p&

48、gt;  DJNZ R2,INT1U ;0.3 s未到退出中斷</p><p>  MOV R2,#06H ;重裝0.3 s定時用初值</p><p>  CPL 02H ;0.3 s定時到,對閃爍標(biāo)志取反</p><p>  JB 02H,CCC1 ;02H

49、位為1時顯示單元“熄滅”</p><p>  MOV 52H,56H ;02H位為0時顯示正常</p><p>  MOV 53H,57H</p><p>  MOV 54H,58H</p><p>  MOV 55H,59H</p><p>  INT1U: POP PSW

50、 ;恢復(fù)現(xiàn)場</p><p><b>  POP ACC</b></p><p>  RETI ;退出中斷</p><p>  INT0U: POP PSW ;恢復(fù)狀態(tài)字(出棧)</p><p>  PO

51、P ACC ;恢復(fù)累加器</p><p>  RETI ;中斷返回</p><p>  ******時鐘時間調(diào)整程序******</p><p>  SET0: LCALL XSZCX ;通過調(diào)用顯示時間程序延時消抖動</p><p> 

52、 JNBP1.0,SJTZ1</p><p>  SJMP MAINT1 ;功能鍵沒有按下,顯示時間</p><p>  SET1: CLR ET0 ;關(guān)閉定時器T0中斷</p><p>  CLR TR0 ;關(guān)閉定時器T0</p><p>  M

53、OV R2,#06H ;進(jìn)入調(diào)時狀態(tài),置閃爍定時初值</p><p>  SETB ET1 ;允許T1中斷</p><p>  SETB TR1 ;啟動T1</p><p>  SET2: JNB P1.0,SET1 ;P1.0端為0(鍵未釋放),等待</p

54、><p>  CLR 01H ;置調(diào)分標(biāo)志位為1</p><p>  SET4: JB P1.0,SET3 ;等待鍵按下</p><p>  JNB P1.0,HOUR ;有鍵按下,進(jìn)入調(diào)小時狀態(tài)</p><p>  JB P1.0,SET10 ;等待鍵

55、按下</p><p>  JNB P1.0,MINUTE ;有鍵按下,進(jìn)入調(diào)分狀態(tài)</p><p>  JB P1.0,SET12 ;等待鍵按下</p><p>  JNB P1.0,SECOND ;有鍵按下,進(jìn)入調(diào)秒狀態(tài)</p><p>  MOV A,R3 ;取要調(diào)整的

56、單元數(shù)據(jù)</p><p><b>  CLR C</b></p><p>  KMTES: SETB ET0 ;省電狀態(tài),開T0中斷</p><p>  SETB TR0 ;啟動T0(開時鐘)</p><p>  KMA: JB P1.0,$

57、 ;無按鍵按下,等待</p><p>  LCALL XSZCX ;通過調(diào)用顯示時間程序延時消抖動</p><p>  JB P1.1,KMA ;是干擾返回等待</p><p>  KMA1: JNB P1.0,$ ;等待鍵釋放</p><p>  L

58、JMP MAINT1 ;返回主程序,顯示時間</p><p>  HOUR: JNB P1.0,SET5 ;等待鍵釋放</p><p>  SETB 01H ;置調(diào)小時標(biāo)志位</p><p>  SET6: JB P1.0,SET9 ;等待鍵按下</p>

59、<p>  LCALL TM3s ;有鍵按下延時3秒</p><p>  LCALL XSZCX ;消抖</p><p>  JNB P1.0,STOP ;按下時間大于3秒,退出調(diào)整狀態(tài)</p><p>  MOV R0,#70H ;小于3秒,調(diào)整小時</p>&

60、lt;p>  JB P1.1, SET3 ;等待鍵按下</p><p>  JNB P1.1, ADD1 ;P1.1按下,調(diào)時間加1子程序</p><p>  JB P1.2, SET3 ;等待鍵按下</p><p>  JNB P1.2,SUB-H ;P1.2按下,調(diào)小時減1子程序

61、 </p><p>  MOV A,R3</p><p><b>  CLR C</b></p><p>  CJNE A,#24H,BJ24 ;計時單元與24比較</p><p>  BJ24: JC SET6, ;小于24轉(zhuǎn)SET6循環(huán)</p>

62、<p>  CLR A ;大于或等于24,則清零</p><p>  MOV @R0,A</p><p>  DEC R0</p><p>  MOV @R0,A</p><p>  AJMP SET6 ;轉(zhuǎn)SET6循環(huán)</p>&

63、lt;p>  MINUTE: JNB P1.0,SET10 ;等待鍵釋放</p><p>  SETB 01H ;置調(diào)分鐘標(biāo)志位</p><p>  SET7: JB P1.0,SET11 ;等待鍵按下</p><p>  LCALL TM3s ;有鍵按下延時

64、3秒</p><p>  LCALL XSZCX ;消抖</p><p>  JNB P1.0,STOP ;按下時間大于3秒,退出調(diào)整狀態(tài)</p><p>  MOV R0,#70H ;小于3秒,調(diào)整分鐘</p><p>  JB P1.1,SET11 ;等待

65、鍵按下</p><p>  JNB P1.1, ADD1 ;P1.1按下,調(diào)時間加1子程序</p><p>  JB P1.2, SET11 ;等待鍵按下</p><p>  JNB P1.2,SUB-M ;P1.2按下,調(diào)分減1子程序 </p><p>  MOV A,R3&

66、lt;/p><p><b>  CLR C</b></p><p>  CJNE A,#60H,BJ601 ;計時單元與60比較</p><p>  BJ601: JC SET7, ;小于24轉(zhuǎn)SET7循環(huán)</p><p>  CLR A

67、 ;大于或等于24,則清零</p><p>  MOV @R0,A</p><p>  DEC R0</p><p>  MOV @R0,A</p><p>  AJMP SET7 ;轉(zhuǎn)SET7循環(huán)</p><p>  SECOND:JNB P1.0,SET12

68、 ;等待鍵釋放</p><p>  SETB 01H ;置調(diào)秒鐘標(biāo)志位</p><p>  SET8: JB P1.0,SET13 ;等待鍵按下</p><p>  LCALL TM3s ;有鍵按下延時3秒</p><p>  LCALL XSZCX

69、 ;消抖</p><p>  JNB P1.0,STOP ;按下時間大于3秒,退出調(diào)整狀態(tài)</p><p>  MOV R0,#70H ;小于3秒,調(diào)整分鐘</p><p>  JB P1.1,SET13 ;等待鍵按下</p><p>  JNB P1.1, ADD1

70、 ;P1.1按下,調(diào)時間加1子程序</p><p>  JB P1.2, SET13 ;等待鍵按下</p><p>  JNB P1.2,SUB-S ;P1.2按下,調(diào)時間減1子程序 </p><p>  MOV A,R3</p><p><b>  CLR C</b&g

71、t;</p><p>  CJNE A,#60H,BJ602 ;計時單元與60比較</p><p>  BJ602: JC SET8, ;小于24轉(zhuǎn)SET8循環(huán)</p><p>  CLR A ;大于或等于24,則清零</p><p>  MOV @R0,

72、A</p><p>  DEC R0</p><p>  MOV @R0,A</p><p>  AJMP SET8 ;轉(zhuǎn)SET8循環(huán)</p><p>  OUT: JNB P1.0,SETOUT1 ;退出調(diào)時狀態(tài),等待鍵釋放</p><p>  LCALL

73、XSZCX ;通過調(diào)用顯示程序延時消抖動</p><p>  JNB P1.0,SETOUT ;是抖動,返回SETOUT等待</p><p>  MOV 20H,#00H ;清調(diào)時標(biāo)志位</p><p>  CLR TR1 ;關(guān)閉T1</p><p&g

74、t;  CLR ET1 ;關(guān)T1中斷</p><p>  SETB TR0 ;啟動T0</p><p>  SETB ET0 ;開T0中斷</p><p>  LJMP MAINT1 ;返回主程序</p>

75、<p>  SET1: LCALL XSZCX ;鍵釋放等待時,調(diào)用顯示子程序</p><p>  AJMP SET2 ;防止此時無時鐘顯示 </p><p>  SET3: LCALL XSZCX ;等待調(diào)小時按鍵時時鐘顯示用</p><p>  

76、AJMP SET4 ;調(diào)時等待</p><p>  SET5: LCALL XSZCX ;鍵釋放等待時調(diào)用顯示程序(調(diào)小時)</p><p>  AJMP SETHH ;防止鍵按下時無時鐘顯示</p><p>  SET9: LCALL XSZCX

77、 </p><p>  AJMP SET6</p><p>  SET10: LCALL XSZCX ;鍵釋放等待時調(diào)用顯示程序(調(diào)分鐘)</p><p>  AJMP SETHH ;防止鍵按下時無時鐘顯示</p><p>  SET11: LCALL XSZC

78、X </p><p>  AJMP SET7</p><p>  SET12: LCALL XSZCX ;鍵釋放等待時調(diào)用顯示程序(調(diào)秒鐘)</p><p>  AJMP SETHH ;防止鍵按下時無時鐘顯示</p><p>  SET13: LCA

79、LL XSZCX </p><p>  AJMP SET8</p><p>  SETOUT1:LCALL XSZCX</p><p>  AJMP OUT</p><p>  ****** 加1子程序******</p><p>  ADD1: MOV A,@R0

80、 ;取出現(xiàn)計時數(shù)據(jù)放入A</p><p>  DEC R0 ;指向前一單元</p><p>  SWAP A ;A中高4位與低4位互換</p><p>  ORL A,@R0 ;前一單元中數(shù)據(jù)放入A中低4位</p><

81、;p>  ADD A,#01H ;A加1</p><p>  DA A ;十進(jìn)制調(diào)整</p><p>  MOV R3,A ;移入R3寄存器</p><p>  ANL A,#0FH ;高4位變0</p>

82、<p>  MOV @R0,A ;放回前一地址單元</p><p>  MOV A,R3 ;取回R3中暫存數(shù)據(jù) </p><p>  INC R0 ;指向當(dāng)前地址單元</p><p>  SWAP A

83、;A中高4位與低4位互換</p><p>  ANL A,#0FH ;高4位變0</p><p>  MOV @R0, A ;數(shù)據(jù)存入當(dāng)前地址單元</p><p>  RET ;子程序返回</p><p>  ****** 時減1子

84、程序******</p><p>  SUB-H: MOV A,@R0 ;取當(dāng)前計時單元數(shù)據(jù)到A</p><p>  DEC R0 ;指向前一地址</p><p>  SWAP A ;A中數(shù)據(jù)高4位與低4位交換</p><p>

85、  ORL A,@R0 ;前一地址中數(shù)據(jù)放入A中低4位</p><p>  JZ SUB-H1 ;00減1為23(小時)</p><p>  DEC A ;A減1操作</p><p>  SUB-H11: MOV R3,A

86、 ;移入R3寄存器</p><p>  ANL A,#0FH ;高4位變0</p><p>  CLR C ;清進(jìn)位標(biāo)志</p><p>  SUBB A,#0FH; ;時個位是否大于9</p><p>  SUB-H111: JC

87、 SUB-H110 </p><p>  MOV @R0,#09H ;大于等于0AH,為9</p><p>  SUB-H10: MOV A,R3 ;取回R3中暫存數(shù)據(jù)</p><p>  INC R0 ;指向當(dāng)前地址單元</p><p>

88、  SWAP A ;A中數(shù)據(jù)高4位與低4位交換</p><p>  ANL A,#0FH ;高4位變0</p><p>  MOV @R0,A ;時十位數(shù)據(jù)放入</p><p>  RET ; 子程序返回</p><

89、;p>  SUB-H1: MOV A,#23H</p><p>  AJMP SUB-H11</p><p>  SUB-H110: MOV A,R3 ;時個位小于0A不處理</p><p>  ANL A,#0FH ;高4位變0</p><p>  MOV

90、 @R0,A ;時個位數(shù)據(jù)放入</p><p>  AJMP SUB-H10</p><p>  ******分減1子程序******</p><p>  SUB-M: MOV A,@R0 ;取當(dāng)前計時單元數(shù)據(jù)到A</p><p>  DEC R0 ;

91、指向前一地址</p><p>  SWAP A ;A中數(shù)據(jù)高4位與低4位交換</p><p>  ORL A,@R0 ;前一地址中數(shù)據(jù)放入A中低4位</p><p>  JZ SUB-M1 </p><p>  DEC A

92、 ;A減1操作</p><p>  SUB-M11: MOV R3,A ;移入R3寄存器</p><p>  ANL A,#0FH ;高4位變0</p><p>  CLR C ;清進(jìn)位標(biāo)志</p><p>  SUBB A,#0AH;

93、 </p><p>  SUB-M111: JC SUB-M110 </p><p>  MOV @R0,#09H ;大于等于0AH,為9</p><p>  SUB-M10: MOV A,R3 ;取回R3中暫存數(shù)據(jù)</p><p>  INC R0

94、 ;指向當(dāng)前地址單元</p><p>  SWAP A ;A中數(shù)據(jù)高4位與低4位交換</p><p>  ANL A,#0FH ;高4位變0</p><p>  MOV @R0,A ;數(shù)據(jù)放入當(dāng)前地址單元中</p><p>  RET

95、 ; 子程序返回</p><p>  SUB-M1: MOV A,#59H</p><p>  AJMP SUB-M11</p><p>  SUB-M110: MOV A,R3 ;移入R3寄存器</p><p>  ANL A,#0FH

96、 ;高4位變0</p><p>  MOV @R0,A </p><p>  AJMP SUB-M10</p><p>  ****** 秒減1子程序******</p><p>  SUB-S: MOV A,@R0 ;取當(dāng)前計時單元數(shù)據(jù)到A</p><p>

97、;  DEC R0 ;指向前一地址</p><p>  SWAP A ;A中數(shù)據(jù)高4位與低4位交換</p><p>  ORL A,@R0 ;前一地址中數(shù)據(jù)放入A中低4位</p><p>  JZ SUB-S1 </p><p&g

98、t;  DEC A ;A減1操作</p><p>  SUB-S11: MOV R3,A ;移入R3寄存器</p><p>  ANL A,#0FH ;高4位變0</p><p>  CLR C ;清進(jìn)位標(biāo)志</p><p

99、>  SUBB A,#0BH; </p><p>  SUB-S111: JC SUB-S110 </p><p>  MOV @R0,#09H ;大于等于0AH,為9</p><p>  SUB-S10: MOV A,R3 ;取回R3中暫存數(shù)據(jù)</p><p&

100、gt;  INC R0 ;指向當(dāng)前地址單元</p><p>  SWAP A ;A中數(shù)據(jù)高4位與低4位交換</p><p>  ANL A,#0FH ;高4位變0</p><p>  MOV @R0,A ;數(shù)據(jù)放入當(dāng)前地址單元中</p

101、><p>  RET ; 子程序返回</p><p>  SUB-S1: MOV A,#14H</p><p>  AJMP SUB-S11</p><p>  SUB-S110: MOV A,R3 ;移入R3寄存器</p><p&g

102、t;  ANL A,#0FH ;高4位變0</p><p>  MOV @R0,A </p><p>  AJMP SUB-S10</p><p>  ******延時子程序******</p><p>  TM1ms: MOV R6, #14H ;延時1 ms子程序&l

103、t;/p><p>  TM1: MOV R7,#19H</p><p>  TM2: DJNZ R7,YS2</p><p>  DJNZ R6,YS1</p><p><b>  RET</b></p><p>  TM3s: LCALL TM05s ;延時3

104、s子程序</p><p>  LCALL TM05s</p><p>  LCALL TM05s</p><p>  LCALL TM05s</p><p>  LCALL TM05s</p><p>  LCALL TM05s</p><p><b>  RET</b

105、></p><p>  TM05s: MOV R3,#51H ;延時0.5 s子程序</p><p>  YS05s1:LCALLXSZCX</p><p>  DJNZ R3,YS05s1</p><p><b>  RET</b></p><p>  TAB:DB

106、 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH</p><p><b>  END</b></p><p><b>  目錄</b></p><p><b>  第1章 緒論1</b></p><p><b>

107、;  1. 設(shè)計要求1</b></p><p><b>  2. 設(shè)計方案1</b></p><p>  第2章 硬件設(shè)計2</p><p>  1 單片機的選擇2</p><p><b>  2. 顯示方案2</b></p><p>  第3章 軟

108、件設(shè)計5</p><p><b>  1.主程序5</b></p><p>  2. 定時器T0中斷服務(wù)程序5</p><p>  3.顯示子程序5</p><p>  4.定時器T1中斷服務(wù)程序6</p><p>  5.調(diào)時功能程序6</p><p>

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論