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

下載本文檔

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

文檔簡介

1、<p>  單片機技術(shù)課程設(shè)計說明書</p><p><b>  數(shù)字電子鐘</b></p><p>  系 、 部: 電氣與信息工程系 </p><p>  學(xué)生姓名: </p><p>  指導(dǎo)教師: 職稱 </p><p> 

2、 專 業(yè): 電子信息工程 </p><p>  班 級: </p><p>  完成時間: 2011.12.20 </p><p><b>  摘 要</b></p><p>  電子鐘現(xiàn)如今已非常普遍而且也早已成為人生日常生活中必不

3、可少的必需品,廣泛應(yīng)用于家庭、學(xué)校、車站、劇院、商店、辦公室等場所。幾乎走到哪都我們都離不開對時間的控制,甚至有的場合對其精確度有著很高的要求。因而電子鐘給人們的生活、學(xué)習(xí)、工作帶來了極大的方便。本課題中采用單片機技術(shù)設(shè)計電子鐘。采用AT89S52單片機為主控芯片,實現(xiàn)了時間的顯示、調(diào)整及整點報時功能。根據(jù)時鐘時、分和秒之間的關(guān)系通過軟件編程的方法實現(xiàn)電子鐘的運行。用8位7段LED數(shù)碼管(兩個四位一體數(shù)碼管)顯示。具有走時準確、顯示直觀

4、、精度、穩(wěn)定等優(yōu)點。更具有推廣應(yīng)用價值。</p><p>  關(guān)鍵詞 電子鐘;單片機;硬件系統(tǒng);軟件系統(tǒng)</p><p><b>  ABSTRACT</b></p><p>  Electric clock has now very common but also has already become life daily life ess

5、ential necessities, widely used in family, school, station, theatres, stores, offices and other places. Almost go where are we all is inseparable from the time of control and even some occasions with high accuracy of the

6、 request. Thus electric clock to the life of people, study, work brought great convenience. This topic in the one-chip computer technology design electric clock. Adopt AT89S52 SCM as the controller </p><p> 

7、 Keywords electric clock; microcontroller; hardware system;software system</p><p><b>  目 錄</b></p><p>  1 設(shè)計課題任務(wù)、功能要求說明及總體方案介紹4</p><p>  1.1 設(shè)計課題任務(wù)4</p><

8、p>  1.2 功能要求說明4</p><p>  1.3 設(shè)計課題總體方案介紹及工作原理說明4</p><p>  2 設(shè)計課題硬件系統(tǒng)的設(shè)計6</p><p>  2.1 設(shè)計課題硬件系統(tǒng)各模塊功能6</p><p>  2.2 設(shè)計課題相關(guān)圖紙6</p><p>  2.3 設(shè)計課題元

9、器件清單6</p><p>  3 設(shè)計課題軟件系統(tǒng)的設(shè)計7</p><p>  3.1 設(shè)計課題使用單片機資源的情況7</p><p>  3.2 設(shè)計課題軟件系統(tǒng)各模塊功能7</p><p>  3.3 設(shè)計課題軟件系統(tǒng)程序流程框圖7</p><p>  3.4 設(shè)計課題軟件系統(tǒng)程序清單11&

10、lt;/p><p>  4 設(shè)計結(jié)論及教學(xué)建議12</p><p>  4.1 設(shè)計課題的設(shè)計結(jié)論及使用說明12</p><p>  4.2 設(shè)計課題的仿真結(jié)果12</p><p>  4.3 設(shè)計課題的誤差分析13</p><p>  4.4 設(shè)計心得及教學(xué)建議13</p><p&

11、gt;<b>  結(jié)束語17</b></p><p><b>  參考文獻14</b></p><p>  致 謝錯誤!未定義書簽。</p><p><b>  附 錄17</b></p><p><b>  附錄一17</b></p&

12、gt;<p><b>  附錄二20</b></p><p><b>  附錄三21</b></p><p>  1 設(shè)計課題任務(wù)、功能要求說明及總體方案介紹</p><p>  1.1 設(shè)計課題任務(wù)</p><p>  設(shè)計一個具有特定功能的電子鐘。</p>&

13、lt;p>  1.2 功能要求說明</p><p>  該電子鐘上電或按鍵復(fù)位后能自動顯示系統(tǒng)提示符“P.”, 進入時鐘準備狀態(tài);第一次按電子鐘啟動/調(diào)整鍵,電子鐘從0時0分0秒開始運行,進入時鐘運行狀態(tài);再次按電子鐘啟動/調(diào)整鍵,則電子鐘進入時鐘調(diào)整狀態(tài),此時可利用各調(diào)整鍵調(diào)整時間,調(diào)整結(jié)束后可按啟動/調(diào)整鍵再次進入時鐘運行狀態(tài)。</p><p>  1.3 設(shè)計課題總體方案介

14、紹及工作原理說明</p><p>  本課題中的電子鐘主要由單片機、獨立式鍵盤、數(shù)碼管顯示電路和復(fù)位電路、晶振電路及蜂鳴器構(gòu)成,設(shè)計課題的總體方案硬件結(jié)構(gòu)圖如圖1.1所示。</p><p>  圖1 電子鐘設(shè)計總體方案硬件結(jié)構(gòu)圖</p><p>  本次設(shè)計電子鐘,采用了AT89S52單片機芯片控制電路,單片機控制電路簡單且省去了很多復(fù)雜的線路,使得電路簡明易懂,

15、使用鍵盤鍵上的按鍵來調(diào)整時鐘的時、分、秒,用蜂鳴器來進行整點時間提醒,通過四個模塊:單片機、鍵盤、顯示器及蜂鳴器即可滿足設(shè)計要求。利用單片機定時器中斷的方法使電子鐘以秒運行。通過按鍵控制電子鐘的啟動和調(diào)整狀態(tài),并通過按鍵選擇調(diào)整秒、分、時,選擇完后可進行加一或者減一的操作。</p><p>  電路中最重要部分即單片機系統(tǒng),單片機系統(tǒng)是在單片機芯片的基礎(chǔ)上擴展其它電路或芯片構(gòu)成的具有一定應(yīng)用功能的計算機系統(tǒng)。在單

16、片機系統(tǒng)中,單片機是控制核心,是構(gòu)成單片機系統(tǒng)的硬件和軟件基礎(chǔ)。在后面章節(jié)將具體介紹本課題中單片機硬件及軟件系統(tǒng)的個模塊的功能。</p><p>  此外,本次課程設(shè)計用到最重要的一部分就是單片機的定時器中斷功能,其中定時器的工作方式由控制寄存器TMOD控制,其高半字節(jié)用于控制T1,也就是本課題中用到的定時器。另外TMOD中的M1和M0是定時器的工作方式選擇位,由于定時需要達到1秒,所以選擇其工作方式1工作。&l

17、t;/p><p>  定時器在模式1工作時為16位計數(shù)器,記到65535才溢出,最長計時65.535ms??梢悦扛?0ms中斷一次,中斷20次為1秒。計算初值由公式得X=15536=3CB0H。因此TH1=3CH,TL1=0B0H。</p><p>  2 設(shè)計課題硬件系統(tǒng)的設(shè)計</p><p>  2.1 設(shè)計課題硬件系統(tǒng)各模塊功能</p><

18、p>  本課題設(shè)計的硬件系統(tǒng)主要由以下幾個模塊來實現(xiàn),控制模塊、輸入模塊、輸出模塊、電源模塊。</p><p>  控制模塊即單片機系統(tǒng),主要用于對按鍵信號的接受和處理以及處理完后控制顯示器的顯示。</p><p>  輸入模塊主要是指獨立式鍵盤,用于向控制模塊輸入各種信息。在本課題中可按鍵控制時間的調(diào)整。</p><p>  輸出模塊主要是指顯示器,用于實時

19、的顯示各種信息。在本課中用以顯示時間。</p><p>  電源模塊主要用于向整個硬件系統(tǒng)供電。</p><p>  2.2 設(shè)計課題相關(guān)圖紙</p><p>  設(shè)計課題電路原理圖、PCB圖、元器件布局圖見附錄一。</p><p>  2.3 設(shè)計課題元器件清單</p><p>  設(shè)計課題元器件清單見附錄二。&

20、lt;/p><p>  3 設(shè)計課題軟件系統(tǒng)的設(shè)計</p><p>  3.1 設(shè)計課題使用單片機資源的情況</p><p>  設(shè)計課題使用單片機資源情況如下:AT89S52單片機的P0口通過上拉電阻作為輸出數(shù)碼管段控信號, P2口作為輸出數(shù)碼管位控信號,P1口接八個獨立式鍵盤,作為控制鍵。利用定時器中斷的方法實現(xiàn)電子鐘的運行。P3.1接蜂鳴器以達到整點報時的功能

21、。復(fù)位電路及晶振電路的使用。78H-7FH字節(jié)單元用于顯示緩存區(qū)。各寄存器用于暫存數(shù)據(jù),堆棧棧底5FH。</p><p>  3.2 設(shè)計課題軟件系統(tǒng)各模塊功能</p><p>  本課題設(shè)計中的軟件系統(tǒng)主要采用以下各模塊來實現(xiàn):系統(tǒng)監(jiān)控程序、中斷服務(wù)程序、鍵功能程序和子程序。</p><p>  系統(tǒng)監(jiān)控程序即主程序,用于對輸入信號的處理、輸出信號的控制和對各個

22、功能程序模塊的運用及其控制。</p><p>  中斷服務(wù)程序主要用于實現(xiàn)電子鐘的準確運行及整點報時功能。</p><p>  鍵功能程序即實現(xiàn)各個按鍵不同功能的程序,本設(shè)計中有四個鍵功能程序,包括:啟動/調(diào)整鍵、選擇調(diào)整鍵、加一鍵及減一鍵。</p><p>  子程序包括鍵盤掃描子程序、數(shù)碼管顯示子程序和延時程序。鍵盤掃描子程序用于確定按鍵并進行相應(yīng)的鍵值處理;數(shù)

23、碼管顯示子程序則用于控制數(shù)碼管的顯示,以準確的顯示時間;延時程序即是數(shù)碼管動態(tài)顯示中必要的一部分,因此我們才能看到時間穩(wěn)穩(wěn)地顯示在數(shù)碼管上。</p><p>  3.3 設(shè)計課題軟件系統(tǒng)程序流程框圖</p><p>  系統(tǒng)軟件采用匯編語言按模塊化方式進行設(shè)計,然后通過Keil軟件開發(fā)平臺將程</p><p>  序轉(zhuǎn)變成十六進制程序語言,接著使用Proteus

24、進行仿真,讀出顯示數(shù)據(jù)。</p><p>  中斷服務(wù)程序流程圖如圖2所示。</p><p>  監(jiān)控程序流程圖如圖3所示。</p><p>  調(diào)整鍵的鍵功能程序流程圖如圖4所示。</p><p>  加一鍵的鍵功能程序流程圖如圖5所示。</p><p>  減一鍵的鍵功能程序流程圖如圖6所示。</p>

25、<p>  鍵盤掃描子程序流程圖如圖7所示。</p><p>  數(shù)碼管顯示子程序流程圖如圖8所示。</p><p>  圖2 中斷服務(wù)程序流程圖</p><p>  圖3 監(jiān)控程序流程圖</p><p>  圖4 調(diào)整鍵的鍵功能程序流程圖</p><p>  圖5 加一鍵的鍵功能程序流程圖<

26、/p><p>  圖6 減一鍵的鍵功能程序流程圖</p><p>  圖7 鍵盤掃描子程序流程圖</p><p>  圖8 數(shù)碼管顯示子程序流程圖</p><p>  3.4 設(shè)計課題軟件系統(tǒng)程序清單</p><p>  設(shè)計課題軟件系統(tǒng)程序清單,詳見附錄三。</p><p>  4 設(shè)計

27、結(jié)論及教學(xué)建議</p><p>  4.1 設(shè)計課題的設(shè)計結(jié)論及使用說明</p><p>  本課題采用單片機技術(shù)設(shè)計,用獨立式鍵盤控制時鐘的顯示,上電數(shù)碼管最左端顯示“P.”。按下啟動/調(diào)整鍵時鐘從0時0分0秒開始運行,再按啟動/調(diào)整鍵時鐘則進入準備調(diào)整狀態(tài),此時按下調(diào)整選擇鍵可選擇調(diào)整秒、分或時位數(shù),被選擇的位數(shù)會閃爍。選擇好調(diào)整的位數(shù)后,可控制加一鍵對任意位進行加一操作,另外有減一

28、鍵對任意位進行減一操作,以方便時鐘的調(diào)整。調(diào)整完后按下啟動/調(diào)整鍵時鐘會重新進入運行狀態(tài)。此外還利用蜂鳴器有整點報時功能,每到整點,蜂鳴器會叫一聲以提醒時間。</p><p>  4.2 設(shè)計課題的仿真結(jié)果</p><p>  在Proteus ISIS的Debug菜單中選擇Execute,運行程序,系統(tǒng)仿真結(jié)果如圖9與10所示。</p><p>  實現(xiàn)功能:可

29、調(diào)整運行的電子鐘具有三種工作狀態(tài):“P.”狀態(tài)、運行狀態(tài)、調(diào)整狀態(tài)。</p><p>  “P.”狀態(tài),依靠上電或按復(fù)位鍵進入,在此狀態(tài)下,按K1、K2、K3鍵均無效,按K0鍵有效,進入運行狀態(tài)。</p><p>  運行狀態(tài),在此狀態(tài)下,按K2、K3鍵均無效,按K0進入調(diào)整狀態(tài),再按K1鍵可選擇調(diào)整的位數(shù);按下K0鍵推出調(diào)整狀態(tài),重新進入運行狀態(tài)。</p><p>

30、;  調(diào)整狀態(tài),按K1鍵可選擇進入時、分、秒的閃爍,在此狀態(tài)下,按K2(+1鍵)、K3(-1鍵)鍵均有效;調(diào)整結(jié)束后必須按K0鍵,即可退出調(diào)整狀態(tài),重新進入運行狀態(tài)。</p><p>  時間顯示格式為:時-分-秒。</p><p>  圖9 “P.”狀態(tài)仿真結(jié)果</p><p>  圖10 時鐘運行狀態(tài)仿真結(jié)果</p><p>  4.

31、3 設(shè)計課題的誤差分析</p><p>  該電子鐘在運行中存在一定的誤差,本課題最好方案應(yīng)該采用計時器中斷的方法編程,雖然已經(jīng)采用此種方法,還是存在一些誤差。存在誤差是因為執(zhí)行中斷程序,這個過程是需要時間的。其次還有硬件系統(tǒng)也有一定的影響,因而實際運行時會慢一些,有需改進的地方。比如計數(shù)初值可稍微比計算的值設(shè)的大一些,但誤差或多或少都會有的,難以完全避免。</p><p>  4.4

32、 設(shè)計心得及教學(xué)建議</p><p>  本次課程設(shè)計雖然功能已完成了老師的要求,但還存在很多不足之處。剛開始編程時沒考慮比較各個方案就開始設(shè)計,因而沒有選擇好最佳方案,對電子鐘的準確運行造成了不好的影響。并在最后還發(fā)現(xiàn)在按鍵不松的情況下時鐘會停止運行通過本次設(shè)計,因而又重新設(shè)計過了程序。通過這次課程設(shè)計讓我明白一點就是設(shè)計課題不要盲目開始,在開始前要有完整的思路,確定最佳方案,設(shè)計的過程中不要帶有定勢思維去思考

33、,多動腦,多想方法以達到最佳的效果。但設(shè)計過程中還是受益匪淺的,最重要的是要吸取本次的教訓(xùn)。</p><p>  硬件方面的設(shè)計是在老師的監(jiān)督安排下順利完成的,動手從畫原理圖到PCB圖,然后轉(zhuǎn)印、腐蝕以及焊元器件一路做過來收獲很多,明白了制作實物的大概流程,自己從這一系列的實踐操作中學(xué)到了很多書本上學(xué)不到的東西,這點非常感謝老師以及同學(xué)的幫助。</p><p>  通過一學(xué)期的單片機學(xué)習(xí),

34、會了很多,老師的教學(xué)方法是我喜歡的,一步步從硬件到軟件教給了我們很多,不管是期間為我們布置的作業(yè)還是實驗的要求都讓我從實踐中深刻的學(xué)到了很多東西,才使得課程設(shè)計進行的比較順暢。</p><p>  最后,想說老師保持這種教學(xué)方法一直下去就好,認真負責的態(tài)度會讓學(xué)生收獲很多,循序漸進的教學(xué)方法能讓學(xué)生比較輕易地接受所學(xué)內(nèi)容并有興趣一直學(xué)下去,這點真的做的很好。只是在引導(dǎo)學(xué)生思考的時候希望還能多給出些方法上的指導(dǎo),不

35、要一昧的叫學(xué)生自己思考,有的時候真的會很難想到,雖然多思考也有好處。</p><p><b>  結(jié)束語</b></p><p>  在此次課程設(shè)計,由于第一次做單片機在制作的過程中遇到了很多問題,比如不知道如何編寫程序,如何使用編程器燒寫程序到芯片等。通過這次程序的編寫和在編寫程序過程中所遇到的種種問題,我總結(jié)了在編寫程序時需要注意的一些事項:</p>

36、<p>  1.在設(shè)計程序之前,務(wù)必要對所用單片機的內(nèi)部結(jié)構(gòu)有一個系統(tǒng)的了解,知道該單片機片內(nèi)有哪些資源;2.設(shè)計程序采用什么編程語言并不是非常重要,關(guān)鍵要有一個清晰的思路和一個完整的軟件流程圖;3.在設(shè)計程序時,不能妄想一次就將整個程序設(shè)計好,“反復(fù)修改,不斷改進”是程序設(shè)計的必經(jīng)之路;4.要養(yǎng)成注釋程序的好習(xí)慣,一個程序的完美與否不僅僅是實現(xiàn)功能,而應(yīng)該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便;5.在

37、設(shè)計程序過程中遇到問題是很正常的,但我們應(yīng)該將每次遇到的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題。經(jīng)過這兩周的課程設(shè)計,使我對單片機系統(tǒng)有了更深的認識,對單片機有了更濃厚的學(xué)習(xí)熱情,特別是鍛煉了我對所學(xué)知識的認知應(yīng)用能力,在老師同學(xué)的指導(dǎo)下,讓我順利完成了這一次課程設(shè)計,使我們認識到課程的重要性,同時也感受到理論與實踐之間的差距,促進今后的學(xué)習(xí)熱情。      

38、60;  </p><p><b>  致 謝</b></p><p>  最開始當然是要謝謝指導(dǎo)老師了,因為老師的教學(xué)方法才讓本次課程設(shè)計順暢的完成,除了老師,還要感謝同學(xué)這一學(xué)期來的幫助,有星星之火的幫助在做實物的過程中才少走了很多的彎路也學(xué)到了很多。沒有同學(xué)的幫助很多事也會無從做起。衷心的感謝他們。</p><p>

39、<b>  參考文獻</b></p><p>  [1]李廣弟,朱月秀,冷祖祁.單片機基礎(chǔ)[M].第3版.北京:北京航空航天大學(xué)出版社,2007.18~156</p><p>  Li Guangdi. Zhu Yuexiu. Leng zuqi. Microcontroller based on [M].3rd ed.Beijing: Beijing Aerospa

40、ce University Press, 2007. 18~156</p><p><b>  附 錄</b></p><p><b>  附錄一</b></p><p><b>  電路原理圖:</b></p><p><b>  PCB圖</b>&l

41、t;/p><p><b>  頂層:</b></p><p><b>  底層:</b></p><p><b>  元器件布局圖:</b></p><p><b>  附錄二</b></p><p><b>  元器件清單&

42、lt;/b></p><p><b>  附錄三</b></p><p>  ;******************************************************</p><p>  ;項目名稱:數(shù)字電子鐘的設(shè)計</p><p><b>  ;設(shè)計者:陳 力</b>&

43、lt;/p><p>  ;設(shè)計日期:2011年12月20日</p><p>  ;******************************************************</p><p><b>  ;堆棧棧底:5FH</b></p><p>  ;****************************

44、**************************</p><p>  ;LED數(shù)碼管顯示器設(shè)定;</p><p>  ;P0.7---P0.0段控線,接LED的顯示段dp,g,f,e,d,c,b,a</p><p>  ;P2.7---P2.0位控線,從左至右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)</p>

45、<p>  ;顯示緩沖區(qū)設(shè)定從左至右依次為</p><p>  7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)</p><p>  ;****************************************************************</p>

46、<p><b>  ;獨立式鍵盤設(shè)定;</b></p><p>  ;8個按鍵S2至S9分別依次接在P1.0至P1.7口線; </p><p>  ;**************************************************** </p><p><b>  ;子程序;</b><

47、;/p><p>  ;DIR(數(shù)碼管顯示子程序)</p><p>  ;KEY(鍵盤掃描子程序)</p><p>  ;KEYCL(P1口數(shù)據(jù)處理子程序)</p><p>  ;DL(數(shù)碼管顯示子程序中所需的延時子程序)</p><p>  ;****************************************

48、************</p><p><b>  ;常數(shù)表格;</b></p><p>  ;BG(共陽數(shù)碼管字型代碼表)</p><p>  ;BG0(系統(tǒng)提示符P.字型代碼序號表)</p><p>  ;BG1(電子鐘顯示0時0分0秒字符代碼序號表)</p><p>  ;********

49、*********************************************</p><p><b>  ;中斷服務(wù)程序;</b></p><p><b>  ;定時器1中斷TT</b></p><p>  ;**************************************************

50、***</p><p><b>  ;鍵功能程序;</b></p><p>  ;K0/K00:電子鐘開始/調(diào)整鍵</p><p>  ;K1/K10/K11:選擇調(diào)整時鐘的秒針數(shù)/分針數(shù)/時針數(shù)</p><p>  ;K20/K21/K22:對時鐘的秒針數(shù)/分針數(shù)/時針數(shù)進行加一操作</p><p&

51、gt;  ;K30/K31/K32:對時鐘的秒針數(shù)/分針數(shù)/時針數(shù)進行減一操作</p><p>  ;********************************************************</p><p>  ;數(shù)據(jù)存儲器變量及常量單元定義;</p><p>  ;20H字節(jié)單元:十六進制數(shù)鍵值</p><p>

52、;  ;78H-7FH字節(jié)單元:顯示緩存區(qū)</p><p>  ;21H.1位單元:布爾量借以判斷時十位數(shù)的狀態(tài)</p><p>  ;********************************************************</p><p><b>  ;系統(tǒng)起始程序區(qū)</b></p><p&g

53、t;  ORG0000H </p><p>  START:LJMPMAIN</p><p>  ORG001BH ;定時器1的中斷入口地址</p><p><b>  LJMPTT</b></p><p>  ;*************************************

54、********************</p><p><b>  ;系統(tǒng)監(jiān)控程序區(qū)</b></p><p>  ORG0030H</p><p>  MAIN:MOVSP,#5FH ;確立堆棧區(qū)</p><p>  MOVPSW,#00H ;初始化PSW,通用寄存器組為第0組</p&

55、gt;<p>  MOVR0,#20H ;RAM區(qū)首地址</p><p>  MOVR5,#96 ;RAM區(qū)單元個數(shù)</p><p>  QL:MOV@R0,#00H</p><p><b>  INCR0</b></p><p>  DJNZR5,QL<

56、/p><p>  SETBEA ;中斷初始化</p><p><b>  SETBET1</b></p><p>  MOVTMOD,#10H ;TMOD初始化</p><p>  MOVTH1,#3CH ;計數(shù)初值初始化</p><p>  MOVTL1,#0

57、B0H </p><p>  XP0:MOVDPTR,#BG0 ;提示符“P.”字符代碼表首地址</p><p>  MOVR0,#78H</p><p>  MOVR2,#08H</p><p>  XP:CLRA</p><p>  MOVCA,@A+DPTR

58、 </p><p>  MOV@R0,A</p><p><b>  INCR0</b></p><p><b>  INCDPTR</b></p><p>  DJNZR2,XP</p><p>  LCALLDIR ;調(diào)顯示子程序顯示提示

59、符“P.”</p><p>  LCALLKEY ;調(diào)鍵盤掃描子程序</p><p>  JB20H.0,K0</p><p><b>  LJMPXP0</b></p><p>  ;***********************************************</p>

60、<p><b>  ;鍵功能程序;</b></p><p>  ;電子鐘進入啟動/調(diào)整狀態(tài)</p><p>  K0:MOVDPTR,#BG1 ;顯示0時0分0秒字符代碼表首地址</p><p>  MOVR0,#78H</p><p>  MOVR1,#08H</p&

61、gt;<p>  XK:CLRA</p><p>  MOVCA,@A+DPTR</p><p>  MOV@R0,A</p><p><b>  INCR0</b></p><p><b>  INCDPTR</b></p><p>

62、;  DJNZR1,XK</p><p>  MOVR2,#14H </p><p>  KA:SETBTR1 ;開啟定時器,電子鐘進入啟動狀態(tài)</p><p>  KA0:LCALLDIR</p><p><b>  LCALLKEY</b></p>&l

63、t;p>  JB20H.0,K00</p><p><b>  LJMPKA0</b></p><p>  K00:CLRTR1 ;關(guān)閉定時器電子鐘進入準備調(diào)整狀態(tài)</p><p><b>  LCALLDIR</b></p><p><b>  LCAL

64、LKEY</b></p><p>  JB20H.0,T01 ;重新進入時鐘運行狀態(tài)</p><p>  JB20H.1,K1 ;選擇調(diào)整時鐘的秒針數(shù)</p><p><b>  LJMPK00</b></p><p>  ;*************************

65、***************************</p><p>  ;選擇調(diào)整時鐘的秒針數(shù)</p><p>  K1:MOVR5,7EH</p><p>  MOVR6,7FH</p><p>  MF3:MOVR0,78H</p><p>  MOVR1,79H;

66、保存緩沖區(qū)78H,79H中的內(nèi)容</p><p>  SM:MOV7EH,R5</p><p>  MOV7FH,R6</p><p>  MOV78H,#0AH</p><p>  MOV79H,#0AH;給78H,79H中送提示符“滅”字符代碼</p><p>  MOVR

67、2,#16H</p><p>  CL1:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,MF0;重新進入時鐘運行狀態(tài)</p><p>  JB20H.1,K10;選擇調(diào)整時鐘的分針數(shù)</p><p>

68、;  JB20H.2,K20;對時鐘的秒針數(shù)進行加一操作</p><p>  JB20H.3,T30</p><p>  DJNZR2,CL1</p><p>  MOV78H,R0</p><p>  MOV79H,R1;將78H,79H中原有的內(nèi)容送回其中</p><p&g

69、t;  MOVR2,#16H</p><p>  CL2:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,T01;重新進入時鐘運行狀態(tài)</p><p>  JB20H.1,K10;選擇調(diào)整時鐘的分針數(shù)</p>

70、<p>  JB20H.2,K20;對時鐘的秒針數(shù)進行加一操作</p><p>  JB20H.3,T30</p><p>  DJNZR2,CL2</p><p><b>  LJMPSM</b></p><p>  T30:LJMPK30;對時鐘的秒針數(shù)進行減

71、一操作</p><p>  MF0:MOV78H,R0</p><p>  MOV79H,R1</p><p>  T01:LJMPKA</p><p>  ;**************************************************</p><p>  ;選擇調(diào)整時鐘的分針

72、數(shù)</p><p>  K10:MOVR3,7BH</p><p>  MOVR4,7CH;保存緩沖區(qū)7BH,7CH中的內(nèi)容</p><p>  SF:MOV78H,R0</p><p>  MOV79H,R1</p><p>  MOV7BH,#0AH</p>

73、;<p>  MOV7CH,#0AH;給7BH,7CH中送提示符“滅”字符代碼</p><p>  MOVR2,#16H</p><p>  CL3:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,MF1;重

74、新進入時鐘運行狀態(tài)</p><p>  JB20H.1,T11</p><p>  JB20H.2,T21</p><p>  JB20H.3,T31</p><p>  DJNZR2,CL3</p><p>  MOV7BH,R3</p><p>  MOV7

75、CH,R4;將7BH,7CH中原有的內(nèi)容送回其中</p><p>  MOVR2,#16H</p><p>  CL4:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,T01;重新進入時鐘運行狀態(tài)</p>&l

76、t;p>  JB20H.1,T11</p><p>  JB20H.2,T21</p><p>  JB20H.3,T31</p><p>  DJNZR2,CL4</p><p><b>  LJMPSF</b></p><p>  T11:LJMPK11

77、;選擇調(diào)整時鐘的時針數(shù)</p><p>  T21:LJMPK21;對時鐘的分針數(shù)進行加一操作</p><p>  T31:LJMPK31;對時鐘的分針數(shù)進行減一操作</p><p>  ;*********************************************</p><p>  ;

78、對時鐘的秒針數(shù)進行加一操作</p><p>  K20:MOV78H,R0</p><p>  MOV79H,R1</p><p>  K200:CJNER0,#09H,IMG</p><p>  MOV78H,#00H</p><p><b>  INC79H</b&

79、gt;</p><p>  MOVR1,79H</p><p>  CJNER1,#06H,IMG0</p><p>  MOV79H,#00H</p><p>  LJMPIMG0</p><p>  IMG:INC78H</p><p>  IMG0:MOV

80、R0,78H</p><p>  MOVR1,79H</p><p>  CL70:MOVR2,#26H</p><p>  CL7:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,T02

81、;重新進入時鐘運行狀態(tài)</p><p>  JB20H.1,K10 ;選擇調(diào)整時鐘的分針數(shù)</p><p>  JB20H.2,K200 ;對時鐘的秒針數(shù)進行加一操作</p><p>  JB20H.3,K30 ;對時鐘的秒針數(shù)進行減一操作</p><p>  DJNZR2,CL7</

82、p><p><b>  LJMPCL70</b></p><p>  MF1:MOV7BH,R3</p><p>  MOV7CH,R4</p><p><b>  LJMPKA</b></p><p>  ;*************************

83、***************************</p><p>  ;對時鐘的秒針數(shù)進行減一操作</p><p>  K30:MOV78H,R0</p><p>  MOV79H,R1</p><p>  K300:CJNER0,#00H,DMG</p><p>  MOV78H,

84、#09H</p><p>  CJNER1,#00H,DMG1</p><p>  LJMPDMG2</p><p>  DMG1:DEC79H</p><p><b>  LJMPDMG0</b></p><p>  DMG2:MOV79H,#05H</p&

85、gt;<p><b>  LJMPDMG0</b></p><p>  DMG:DEC78H</p><p>  DMG0:MOVR0,78H</p><p>  MOVR1,79H</p><p>  CD70:MOVR2,#26H</p><p&g

86、t;  CD7:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,T02</p><p>  JB20H.1,T10</p><p>  JB20H.2,K20;對時鐘的秒針數(shù)進行加一操作</p><p> 

87、 JB20H.3,K300;對時鐘的秒針數(shù)進行減一操作</p><p>  DJNZR2,CD7</p><p><b>  LJMPCD70</b></p><p>  T10:LJMPK10;選擇調(diào)整時鐘的分針數(shù)</p><p>  T02:LJMPKA ;重新進入

88、時鐘運行狀態(tài)</p><p>  ;***************************************************</p><p>  ;選擇調(diào)整時鐘的時針數(shù)</p><p>  K11:MOVR5,7EH</p><p>  MOVR6,7FH;保存緩沖區(qū)7EH,7FH中的內(nèi)容</p&

89、gt;<p>  SS:MOV7BH,R3</p><p>  MOV7CH,R4</p><p>  MOV7EH,#0AH</p><p>  MOV7FH,#0AH;給7EH,7FH中送提示符“滅”字符代碼</p><p>  MOVR2,#16H</p><p

90、>  CL5:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,MF2;重新進入時鐘運行狀態(tài)</p><p>  JB20H.1,Y1;選擇調(diào)整時鐘的秒針數(shù)</p><p>  JB20H.2,T22</p>

91、;<p>  JB20H.3,T32</p><p>  DJNZR2,CL5</p><p>  MOV7EH,R5</p><p>  MOV7FH,R6;將7EH,7FH中原有的內(nèi)容送回其中</p><p>  MOVR2,#16H</p><p>  CL6

92、:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,T02;重新進入時鐘運行狀態(tài)</p><p>  JB20H.1,Y1;選擇調(diào)整時鐘的秒針數(shù)</p><p>  JB20H.2,T22</p><p&

93、gt;  JB20H.3,T32</p><p>  DJNZR2,CL6</p><p><b>  LJMPSS</b></p><p>  T22:LJMPK22;對時鐘的時針數(shù)進行加一操作</p><p>  T32:LJMPK32;對時鐘的時針數(shù)進行減一操作<

94、/p><p>  MF2:MOV7EH,R5</p><p>  MOV7FH,R6</p><p><b>  LJMPKA</b></p><p>  ;*********************************************</p><p>  ;對時鐘的分針數(shù)

95、進行加一操作</p><p>  K21:MOV7BH,R3</p><p>  MOV7CH,R4</p><p>  K210:CJNER3,#09H,IFG</p><p>  MOV7BH,#00H</p><p><b>  INC7CH</b><

96、/p><p>  MOVR4,7CH</p><p>  CJNER4,#06H,IFG0</p><p>  MOV7CH,#00H</p><p>  LJMPIFG0</p><p>  IFG:INC7BH</p><p>  IFG0:MOVR3,

97、7BH</p><p>  MOVR4,7CH</p><p>  CL80:MOVR2,#26H</p><p>  CL8:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,T02;重新進入時鐘運

98、行狀態(tài)</p><p>  JB20H.1,K11;選擇調(diào)整時鐘的時針數(shù)</p><p>  JB20H.2,K210;對時鐘的分針數(shù)進行加一操作</p><p>  JB20H.3,K31;對時鐘的分針數(shù)進行減一操作</p><p>  DJNZR2,CL8</p><

99、p>  LJMPCL80</p><p>  Y1:LJMPMF3</p><p>  ;*********************************************</p><p>  ;對時鐘的分針數(shù)進行減一操作</p><p>  K31:MOV7BH,R3</p><p>

100、  MOV7CH,R4</p><p>  K310:CJNER3,#00H,DFG</p><p>  MOV7BH,#09H</p><p>  CJNER4,#00H,DFG1</p><p><b>  LJMPDFG2</b></p><p>  DFG1

101、:DEC7CH</p><p><b>  LJMPDFG0</b></p><p>  DFG2:MOV7CH,#05H</p><p><b>  LJMPDFG0</b></p><p>  DFG:DEC7BH</p><p>  DFG0:

102、MOVR3,7BH</p><p>  MOVR4,7CH</p><p>  CD80:MOVR2,#26H</p><p>  CD8:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,T03

103、 ;重新進入時鐘運行狀態(tài)</p><p>  JB20H.1,Y11 ;選擇調(diào)整時鐘的時針數(shù)</p><p>  JB20H.2,K21 ;對時鐘的分針數(shù)進行加一操作</p><p>  JB20H.3,K310 ;對時鐘的分針數(shù)進行減一操作</p><p>  DJNZR2,C

104、D8</p><p><b>  LJMPCD80</b></p><p>  Y11:LJMPK11 ;選擇調(diào)整時鐘的時針數(shù)</p><p>  ;*********************************************</p><p>  ;對時鐘的時針數(shù)進行加一操作</

105、p><p>  K22:MOV7EH,R5</p><p>  MOV7FH,R6</p><p>  K220:MOV21H,7FH</p><p>  JB21H.1,I1</p><p>  CJNER5,#09H,ISG</p><p>  MOV7E

106、H,#00H</p><p><b>  INC7FH</b></p><p>  MOVR6,7FH</p><p>  CJNER6,#03H,ISG0</p><p>  MOV7FH,#00H</p><p><b>  LJMPISG0</b

107、></p><p>  I1:CJNER5,#03H,ISG</p><p>  MOV7EH,#00H</p><p>  MOV7FH,#00H</p><p>  LJMPISG0</p><p>  ISG:INC7EH</p><p>  ISG

108、0:MOVR5,7EH</p><p>  MOVR6,7FH</p><p>  CL90:MOVR2,#26H</p><p>  CL9:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,T03

109、</p><p>  JB20H.1,Y1;選擇調(diào)整時鐘的秒針數(shù)</p><p>  JB20H.2,K220;對時鐘的時針數(shù)進行加一操作</p><p>  JB20H.3,K32;對時鐘的時針數(shù)進行減一操作</p><p>  DJNZR2,CL9</p><p>&l

110、t;b>  LJMPCL90</b></p><p>  T03:LJMPKA ;重新進入時鐘運行狀態(tài)</p><p>  ;*********************************************</p><p>  ;對時鐘的時針數(shù)進行減一操作</p><p>  K32:MOV

111、7EH,R5</p><p>  MOV7FH,R6</p><p>  K320:MOVA,7FH</p><p><b>  JZD1</b></p><p>  CJNER5,#00H,DSG</p><p>  MOV7EH,#09H</p>

112、<p>  CJNER6,#00H,DSG1</p><p><b>  LJMPDSG2</b></p><p>  D1:CJNER5,#00H,DSG</p><p>  DSG2:MOV7EH,#03H</p><p>  MOV7FH,#02H</p>

113、;<p>  LJMPDSG0</p><p>  DSG1:DEC7FH</p><p>  LJMPDSG0</p><p>  DSG:DEC7EH</p><p>  DSG0:MOVR5,7EH</p><p>  MOVR6,7FH</p>

114、<p>  CD90:MOVR2,#26H</p><p>  CD9:LCALLDIR</p><p><b>  LCALLKEY</b></p><p>  JB20H.0,T03;重新進入時鐘運行狀態(tài)</p><p>  JB20H.1,Y2;選擇調(diào)整時鐘的秒

115、針數(shù)</p><p>  JB20H.2,Y22;對時鐘的時針數(shù)進行加一操作</p><p>  JB20H.3,K320;對時鐘的時針數(shù)進行減一操作</p><p>  DJNZR2,CD9</p><p><b>  LJMPCD90</b></p><p>

116、  Y2:LJMPMF3</p><p>  Y22:LJMPK22</p><p>  ;*************************************************</p><p><b>  ;中斷服務(wù)程序:</b></p><p>  TT:MOVTH1,#3CH;

117、重賦計數(shù)初值</p><p>  MOVTL1,#0B0H</p><p>  DJNZR2,QUIT;中斷次數(shù)沒滿20次則跳出中斷</p><p>  MOVR2,#14H</p><p>  SETBP3.1;關(guān)蜂鳴器</p><p>  INC78H;秒個位加

118、一</p><p>  MOVA,#0AH</p><p>  XRLA,78H</p><p>  JNZQUIT;秒個位不等于10則跳出中斷</p><p>  MOV78H,#00H;秒個位重賦0</p><p>  INC79H;秒十位加一</p&

119、gt;<p>  MOVA,#06H</p><p>  XRLA,79H</p><p>  JNZQUIT;秒十位不等于6則跳出中斷</p><p>  MOV79H,#00H;秒十位重賦0</p><p>  INC7BH;分個位加一</p><

120、p>  MOVA,#0AH</p><p>  XRLA,7BH</p><p>  JNZQUIT;分個位不等于10則跳出中斷</p><p>  MOV7BH,#00H;分個位重賦0</p><p>  INC7CH;分十位加一</p><p>  M

121、OVA,#06H</p><p>  XRLA,7CH</p><p>  JNZQUIT;分十位不等于6則跳出中斷</p><p>  MOV7CH,#00H;分十位重賦0</p><p>  CLRP3.1;蜂鳴器整點報時</p><p>  MOV21H

122、,7FH </p><p>  JB21H.1,X1;查時十位狀態(tài)</p><p><b>  INC7EH</b></p><p>  MOVA,#0AH</p><p>  XRLA,7EH</p><p>  JNZQUIT;時個

123、位不等于10則跳出中斷</p><p>  MOV7EH,#00H</p><p><b>  LJMPX2</b></p><p>  X1:INC7EH</p><p>  MOVA,#04H</p><p>  XRLA,7EH</p><

124、p>  JNZQUIT;時個位不等于4則跳出中斷</p><p>  MOV7EH,#00H</p><p>  X2:INC7FH</p><p>  MOVA,#03H</p><p>  XRLA,7FH</p><p>  JNZQUIT;時十位不

125、等于3則跳出中斷</p><p>  MOV7FH,#00H</p><p>  QUIT:RETI;中斷返回</p><p>  ;*********************************************</p><p>  ;鍵盤掃描子程序:鍵值在內(nèi)部RAM 20H單元中</p>&l

126、t;p>  KEY:PUSHACC</p><p>  LCALLKEYCL ;調(diào)P1口數(shù)據(jù)處理子程序</p><p>  JZFH;判斷鍵是否按下</p><p>  LCALLDIR;調(diào)顯示子程序去抖動</p><p>  LCALLDIR</p><p&g

127、t;  JZFH;確認鍵是否真的按下</p><p>  MOVB,20H;保存取反后的鍵值</p><p>  KEYSF:LCALLKEYCL;調(diào)P1口數(shù)據(jù)處理子程序</p><p>  JZHF;判斷鍵是否釋放</p><p>  LCALLDIR;調(diào)顯示子程序延時<

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論