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

下載本文檔

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

文檔簡介

1、<p>  《單片機技術(shù)》課程設(shè)計任務(wù)</p><p>  一、設(shè)計題目:基于單片機并行口的電子鐘的設(shè)計</p><p>  二、適用班級:電子0303</p><p><b>  三、指導(dǎo)教師:王韌</b></p><p><b>  四、任務(wù)與要求:</b></p>&l

2、t;p>  在智能化儀器儀表中,控制核心均為微處理器,而單片機以其高性能、高速度、體積小、價格低廉、穩(wěn)定可靠而得到廣泛應(yīng)用,是設(shè)計智能化儀器儀表的首選微控制器,單片機結(jié)合簡單的接口電路即可構(gòu)成電子鐘,它可廣泛應(yīng)用于工業(yè)、農(nóng)業(yè)、日常生活等領(lǐng)域,與傳統(tǒng)鐘表相比較,它具有高精度、高可靠性、操作方便、價格便宜、智能化等特點,是鐘表的一個發(fā)展方向,具有一定的實用價值。</p><p>  1、本課題任務(wù)如下:<

3、/p><p>  設(shè)計一個具有特定功能的電子鐘。該電子鐘上電或按鍵復(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>  2、本課題要求如下:</p>&l

4、t;p> ?。?)在AT89S51的P0口和P2口外接由六個LED數(shù)碼管(LED5~LED0)構(gòu)成的顯示器,用P0口作LED的段碼輸出口(P0.0~P0.7對應(yīng)于LED的a~dp),P2.5~P2.0作LED的位控輸出線(P2.5~P2.0對應(yīng)于LED5~LED0),P1口外接四個按鍵A、B、C、D(對應(yīng)于P1.0~P1.3)。</p><p> ?。?)、利用六個LED顯示當前時間。</p>

5、<p> ?。?)、四個按鍵的功能:A鍵用于電子鐘啟動/調(diào)整;B鍵用于調(diào)時,范圍0-23,0為24點,每按一次時加1;C鍵用于調(diào)分,范圍0-59,0 為60分,每按一次分加1;D鍵用于調(diào)秒, 范圍0-59,0為60秒,每按一次秒加1。</p><p> ?。?)、單片機采用AT89S51,fosc=12MHZ。</p><p> ?。?)、電子鐘供電電源電路的設(shè)計。</p

6、><p> ?。?)、電子鐘時鐘電路,復(fù)位電路的設(shè)計。</p><p> ?。?)、編寫系統(tǒng)監(jiān)控程序、鍵掃子程序、顯示子程序及其它所需子程序、功能程序和中斷服務(wù)程序。</p><p> ?。?)、計算機輸出課程設(shè)計說明書一份。 </p><p> ?。?)、設(shè)計時間:二周</p><p> ?。?/p>

7、10)、制作電子鐘實物。</p><p>  五、課程設(shè)計說明書主要內(nèi)容</p><p>  1、課程設(shè)計說明書封面;</p><p>  2、課程設(shè)計任務(wù)書封面及課程設(shè)計任務(wù)書;</p><p><b>  3、前言;</b></p><p>  4、課程設(shè)計說明書目錄;</p>

8、<p>  5、電子鐘功能說明及總體方案介紹;</p><p>  6、詳細介紹電子鐘的工作原理;</p><p>  7、繪制電子鐘整機電路框圖、整機電路原理圖、電源電路原理圖及PCB圖各1份;</p><p>  8、列出電子鐘元器件清單;</p><p>  9、詳細介紹電子鐘單元電路工作原理(包括電源電路、時鐘電路、復(fù)位電路

9、、鍵盤/顯示接口電路及所用主要芯片);</p><p>  10、單片機硬件資源的使用分配情況;</p><p>  11、畫出電子鐘軟件系統(tǒng)監(jiān)控程序、各子程序、中斷服務(wù)程序及各功能程序的流程框圖;</p><p>  12、列出電子鐘軟件系統(tǒng)程序清單;</p><p>  13、寫出電子鐘的使用說明;</p><p>

10、;  14、設(shè)計體會,談?wù)劚驹O(shè)計的重點、難點及精妙之處,是否存在不足之點及改進意見;</p><p>  15、提出《單片機技術(shù)》課程教學(xué)建議;</p><p><b>  16、參考資料。</b></p><p>  六、課程設(shè)計說明書書寫格式</p><p>  參照“課程設(shè)計說明書書寫格式”文件。</p>

11、;<p><b>  七、參考資料</b></p><p>  [1]、曹巧媛,單片機原理及應(yīng)用[M],北京:電子工業(yè)出版社,1997.7。</p><p>  [2]、趙秀珍,單永磊,單片微型計算機原理及其應(yīng)用[M],北京:中國水利水電出版社,2001.8。</p><p>  [3]、張毅剛,修林成,胡振江,MCS-51單片機

12、應(yīng)用設(shè)計[M],哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1990.8。</p><p>  [4]、張洪潤,蘭清華,單片機應(yīng)用技術(shù)教程[M],北京:清華大學(xué)出版社,1997.11。</p><p>  [5]、李華,MCS-51系列單片機實用接口技術(shù)[M],北京:北京航空航天大學(xué)出版社,1993.8。</p><p>  [6]、陳景初,單片機應(yīng)用系統(tǒng)設(shè)計與實踐[M],北京:

13、北京航空航天大學(xué)出版社。</p><p>  [7]、馬家辰,MCS-51單片機原理與接口技術(shù)[M],哈爾濱:哈爾濱工業(yè)大學(xué)出版社。</p><p>  [8]、劉守義,單片機應(yīng)用技術(shù)[M],西安:西安電子科技大學(xué)出版社。</p><p><b>  電氣自動化教研室</b></p><p>  2005年9月10日&l

14、t;/p><p><b>  前 言</b></p><p>  電子科技日新月異,人們對現(xiàn)代電子設(shè)備的智能化和微型化及其精度提出了更高的要求,而單片機因其具有穩(wěn)定可靠、 體積小、 價格低廉等特點,成為設(shè)計智能化儀器儀表的首選微控制器,因此本次我們沒有選用傳統(tǒng)的專用的時鐘芯片,而是采用了AT89S51芯片,此款單片機可以使用軟件對其進行在線編程,其靈活性和可靠性都相

15、對提高。</p><p>  通過此次實物制作,增強了我們的動手能力,把理論與實踐融合在一起。同時,也進一步加深了對單片機的硬件結(jié)構(gòu)的理解和鞏固,編程能力也得到了提高。在此將電子鐘制作過程中用到的知識進行了一些總結(jié),并記錄了遇到的問題,希望自己今后能注意。同時也希望能成為讀者的參考資料,能幫助讀者避免出現(xiàn)相同的問題,并能從中得到一些啟發(fā)。</p><p>  在此要感謝王老師對我的指導(dǎo),感

16、謝同組人的合作及幫助過我的同學(xué)。由于編者水平有限,書中的錯漏在所難免,懇請讀者批評指正。</p><p><b>  編者:吳 海 林</b></p><p>  2005—11—13</p><p><b>  目 錄</b></p><p>  1 多功能電子表說明及總體方案介紹1&l

17、t;/p><p>  1.1 多功能電子表計時方案1</p><p>  1.2 多功能電子表鍵盤/顯示方案2</p><p>  2 電子鐘的工作原理4</p><p>  3 多功能電子表原理框圖、原理圖及PCB圖5</p><p>  3.1 多功能電子表原理框圖5</p>

18、<p>  3.2 多功能電子表整機原理圖5</p><p>  3.3 多功能電子表電路PCB圖7</p><p>  4 多功能電子表元器件清單9</p><p>  5 多功能電子表單元電路工作原理及芯片11</p><p>  5.1 電源電路工作原理11</p><

19、p>  5.2 時鐘電路工作原理11</p><p>  5.3 復(fù)位電路工作原理12</p><p>  5.4 鍵盤電路工作原理12</p><p>  5.5 顯示器工作原理13</p><p>  5.6 AT89S51芯片17</p><p>  5.7 74LS244

20、芯片20</p><p>  5.8 S8550PNP三極管21</p><p>  5.9 四位一體數(shù)碼管23</p><p>  6 單片機硬件資源分配25</p><p>  7 程序流程圖26</p><p>  8 電子鐘程序清單32</p><

21、p>  9 誤差分析40</p><p>  10 電子鐘使用說明43</p><p>  11 設(shè)計體會44</p><p>  12 教學(xué)意見45</p><p>  13 參考資料46</p><p>  1 多功能電子表說明及總體方案介紹</p>

22、<p>  本次設(shè)計電子鐘系統(tǒng)功能簡單,用單片機的最小系統(tǒng)就能得以實現(xiàn)。而單片機的最小系統(tǒng)設(shè)計中實際上最重要的就是對鍵盤/顯示器接口電路的設(shè)計,由于系統(tǒng)功能不同所以要求就不同,接口設(shè)計也就不同。對一個鍵盤/顯示器接口設(shè)計應(yīng)從整個系統(tǒng)出發(fā),綜合考慮軟、硬件特點。下面是本人在設(shè)計前對各種設(shè)計方案的考慮:</p><p>  1.1 多功能電子表計時方案</p><p>  方案一:

23、采用實時時鐘芯片</p><p>  實時時鐘芯片具備年、月、日、時、分、秒計時功能和多點定時功能,計時數(shù)據(jù)的更新每秒自動進行一次,不需程序干預(yù)。計算機可通過中斷或查詢方式讀取計時數(shù)據(jù)進行顯示,因此計時功能的實現(xiàn)無需占用CPU的時間,程序簡單。此外,實時時鐘芯片多數(shù)帶有鋰電池做后備電源,具備永不停止的計時功能;具有可編程方波輸出功能,可用做實時測控系統(tǒng)的采樣信號等;有的實時時鐘芯片內(nèi)部還帶有非易失性RAM,可用來

24、存放需長期保存但有時也需變更的數(shù)據(jù)。由于功能完善,精度高,軟件程序設(shè)計相對簡單,且計時不占用CPU時間,因此,在工業(yè)實時測控系統(tǒng)中多采用這一類專用芯片來實現(xiàn)實時時鐘功能。</p><p>  方案二: 軟件控制。</p><p>  利用單片機內(nèi)部的定時/計數(shù)器進行中斷定時,配合軟件延時實現(xiàn)時、分、秒的計時及秒表計時。該方案節(jié)省硬件成本,且能使設(shè)計者對單片機的指令系統(tǒng)能有更深入的了解,從而

25、掌握單片機應(yīng)用技術(shù)MCS-51匯編語言程序設(shè)計方法,因此,本系統(tǒng)設(shè)計采用此種軟件控制方法來實現(xiàn)計時。而由于ATMEL公司的AT89S51單片機是低功耗的具有4KB在線可編程Flash存儲器的單片機。它與通用80C51系列單片機的指令系和引腳兼容。片內(nèi)的Flash可允許在線重新編程,也可使用通用非易失性存儲器編程。它將通用CPU和在線可編程Flash集成在一個芯片上,形成了功能強大、使用靈活和具有較高性能價格比的微控制器。它的功能強大,而

26、且也較容易購買,故本設(shè)計中所選的單片機為AT89S51單片機。</p><p>  1.2 多功能電子表鍵盤/顯示方案</p><p>  方案一: 8279擴展。</p><p>  該方案方框圖如圖1.2.1所示,8279是一種可編程的鍵盤/顯示接口專用芯片,它含有鍵盤輸入和顯示輸出兩種功能,鍵掃描程序和動態(tài)顯示程序全由8279硬件自動完成,此種方案能以比較簡

27、單的硬件 </p><p>  電路和較少的軟件開銷實現(xiàn)單片機與鍵盤、LED顯示器的接口。</p><p>  方案二: 8155擴展,LED動態(tài)顯示。 </p><p>  該方案方框圖如圖1.2.2所示,8155是一塊可編程的接口芯片,與單片機的接口非常簡單,它的鍵盤、顯示共用一個接口電路,可節(jié)省I/O口。但動態(tài)掃描方式需占用CPU較多的時間,在單片機沒有太

28、多實時測控任務(wù)的情況下可以采用。</p><p>  方案三: 串口擴展,LED靜態(tài)顯示。</p><p>  該方案方框圖如圖1.2.3所示,獨立式鍵盤配置靈活,軟件結(jié)構(gòu)簡單,按鍵較多時不宜采用。靜態(tài)顯示占用口資源少,采用串口傳輸實現(xiàn)靜態(tài)顯示, LED數(shù)碼管與單片機之間通過6個移位寄存器相連,顯示亮度有保證,但此方案的硬件開銷大,電路復(fù)雜,信息刷新速度慢,比較適用于并行口資源較少的場合。

29、</p><p>  方案四: 獨立式按鍵,LED動態(tài)顯示。 </p><p>  該方案方框圖如圖1.2.4所示,獨立式按鍵直接與單片機I/O口相連構(gòu)成鍵盤,每個按鍵不會相互影響,因本系統(tǒng)用到的按鍵比較少,采用獨立式鍵盤不會浪費I/O口線,所以本系統(tǒng)采用獨立式鍵盤。動態(tài)顯示的亮度雖然不如靜態(tài)顯示,但其硬件電路較簡單,可節(jié)省硬件成本,雖然動態(tài)掃描需占用CPU較多的時間,但本系統(tǒng)中的單片機沒

30、有很多實時測控任務(wù),因此,本系統(tǒng)采用此種方案。 </p><p>  2 多功能電子表的工作原理</p><p>  本設(shè)計中的數(shù)字鐘的核心是AT89S51單片機,其內(nèi)部帶有4KB在線可編程Flash存儲器的單片機,無須外擴程序存儲器,硬件電路主要由四部分構(gòu)成:時鐘電路,復(fù)位電路,鍵盤以及顯示電路。</p><p>  時

31、鐘電路是電子表硬件電路的核心,沒有時鐘電路,電子表將無法正常工作計時。本系統(tǒng)時鐘電路采用的晶振的頻率為12MHz,定時器采用的是定時器0工作在方式1定時,用于實現(xiàn)時、分、秒的計時,定時時間為62.5ms。復(fù)位電路可使電子表恢復(fù)到初始狀態(tài)。鍵盤可對電子表進行開啟、停止,還能實現(xiàn)時、分、秒的顯示及設(shè)定等操作。顯示電路由兩個共陽級4位一體LED數(shù)碼管構(gòu)成,它的段控端和位控端通過74LS244及其S8550PNP型號三極管與AT89S51單片機

32、的I/O口相連,顯示器可使電子表顯示出時、分、秒。 </p><p>  多功能電子表的計時原理為:上電后,電子表顯示P.提示符,按下A鍵后,電子表從00:00:00開始計時。當定時器0的定時時間滿62.5ms后,定時器0溢出一次,溢出滿16次后,電子表的秒加1,滿60秒后,分加1,滿60分后,時加1,滿24時后,電子表重新從00:00:00開始計時。</p><p>  3 多功能電子

33、表原理方框圖、原理圖及PCB圖</p><p>  3.1 多功能電子表原理方框圖</p><p>  多功能電子表整機電路方框圖如圖3.1</p><p>  3.2 多功能電子表電路原理圖</p><p>  3.2.1多功能電子表電源電路原理圖</p><p>  直流穩(wěn)壓電源電路原理圖如圖3.2所示<

34、/p><p>  3.2.2 多功能電子表整機電路原理</p><p>  3.3 多功能電子表電路PCB圖</p><p>  3.3.1 多功能電子表電源電路PCB圖</p><p>  電源電路PCB圖如圖3.4所示</p><p>  3.3.2 多功能電子表整機電路PCB圖</p><

35、p>  多功能電子表整機電路PCB圖如圖3.5所示</p><p><b>  3.5整機PCB圖</b></p><p>  4 多功能電子表元器件清單</p><p>  多功能電子表電路所有元器件清單如表4.1所示</p><p>  表4.1 多功能電子表元器件清單1</p><p&g

36、t;  5 多功能電子表單元電路工作原理介紹</p><p>  5.1 電源電路工作原理</p><p>  圖5.1所示為集成直流穩(wěn)壓電源電路的原理圖,本電源電路是由集成穩(wěn)壓器構(gòu)成的。電路可分成三部分:電源變壓器部分、整流濾波部分和穩(wěn)壓部分。</p><p>  變壓器原邊為工頻交流220V電壓,經(jīng)過變壓后,變壓器副邊的電壓變?yōu)榻涣?1V,11V交流電壓經(jīng)過

37、橋式整流電路整流后變?yōu)橹绷?0V電壓,直流10V電壓作為CW7805的輸入電壓,CW7805輸出+5V電壓。圖中D2為整流橋,它由四個整流二極管接成電橋形式。C3為濾波電容,C1用于抵消輸入端較長接線的電感效應(yīng),以防止自激振蕩,還可抑制電源的高頻脈沖干擾。一般取0.1——1μF。CW7805為三端固定輸出集成穩(wěn)壓器,其輸入和輸出電壓都為固定值,它的輸入電壓為+10V,輸出電壓為+5V。C2和C4用以改善負載的瞬態(tài)響應(yīng),消除電路的高頻噪聲

38、,同時也具有消振作用。</p><p>  5.2 時鐘電路工作原理</p><p>  圖5.2所示為時鐘電路原理圖,在AT89S51芯片內(nèi)部有一個高增益反相放大器,其輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。而在芯片內(nèi)部,XTAL1和XTAL2之間跨接晶體振蕩器和微調(diào)電容,從而構(gòu)成一個穩(wěn)定的自激振蕩器。時鐘電路產(chǎn)生的振蕩脈沖經(jīng)過觸發(fā)器進行二分頻之后,才成為單片機的時鐘脈沖信

39、號。 </p><p>  5.3 復(fù)位電路工作原理</p><p>  圖5.3所示為復(fù)位電路原理圖,復(fù)位是單片機的初始化操作,其主要功能是把PC初始化為0000H,使單片機從0000H單元開始執(zhí)行程序,并使其它功能單元處于一個確定的初始狀態(tài)。本復(fù)位電路采用的是按鍵復(fù)位,它是通過復(fù)位端經(jīng)電阻與VCC電源接通而實現(xiàn)的,它兼具上電復(fù)位功能。因本系統(tǒng)的晶振的頻率為12MHz,所以,復(fù)

40、位信號持續(xù)時間應(yīng)當超過2μS才能完成復(fù)位操作。</p><p>  5.4 鍵盤工作原理</p><p>  圖5.4所示為鍵盤原理圖,本系統(tǒng)采用的是獨立式鍵盤結(jié)構(gòu),每個按鍵單獨占用一根I/O口線,每個按鍵的工作不會影響其它I/O口線的狀態(tài)。它軟件是采用查詢式結(jié)構(gòu),首先逐位查詢每根I/O口線的輸入狀態(tài),如某一根I/O口線輸入為低電平,則可確認該I/O口線所對應(yīng)的按鍵已按下,然后,再轉(zhuǎn)向該

41、鍵的功能處理程序。 </p><p>  5.5 顯示器工作原理</p><p>  系統(tǒng)采用動態(tài)顯示方式,用P0口來控制LED數(shù)碼管的段控線,而用P2口來控制其位控線。動態(tài)顯示通常都是采用動態(tài)掃描的方法進行顯示,即循環(huán)點亮每一個數(shù)碼管,這樣雖然在任何時刻都只有一位數(shù)碼管被點亮,但由于人眼存在視覺殘留效應(yīng),只要每位數(shù)碼管間隔時間足夠短,就可以給人以

42、同時顯示的感覺。圖中的S8550作為驅(qū)動器,而8個510歐姆電阻則起限流作用。</p><p>  由圖5.5可知,要想讓數(shù)碼管那一段亮,在該數(shù)碼管位控段為高電平的情況下給這段送低電平就可以了。顯示電路結(jié)構(gòu)采用動態(tài)掃描的方式,所有數(shù)碼管的段控端公用單片機P0口的8根輸出口線,數(shù)碼管的段控端a、b、c、d、e、f、g、dp分別接到P0口的P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7

43、口線上,每個數(shù)碼管的位控線單獨占用單片機P2口一根輸出口線,8位數(shù)碼管從高位到低位分別接P2.0~P2.7引腳。段控碼(低電平有效)由P0口輸出經(jīng)上拉電阻上拉電壓后通過鎖存器74LS244送到數(shù)碼管的段控端,位控碼由P2口輸出經(jīng)三極管S8550驅(qū)動后送到數(shù)碼管的位控端。</p><p>  在單片機內(nèi)部顯示緩沖區(qū)79H、7AH、7BH、7CH、7DH、7EH內(nèi)的值分別是秒的個位、秒的十位、分的個位、分的十位、時的

44、個位、時的十位,顯示器LED0、LED1、LED2、LED3、LED4、LED5分別顯示秒的個位十位、分的個位十位、時的個位十位,由圖5.5所示。</p><p>  數(shù)碼管動態(tài)顯示:由于顯示的數(shù)據(jù)和LED數(shù)碼管的段控碼并不是一一對應(yīng)的關(guān)系,即顯示的數(shù)據(jù)與數(shù)碼管的字型代碼不相符。顯示數(shù)據(jù)與字型代碼之間存在著轉(zhuǎn)換關(guān)系,數(shù)碼管段控數(shù)據(jù)和數(shù)碼管各段的對應(yīng)關(guān)系如表5.1、表5.2所示。</p><p&

45、gt;  表5.1 數(shù)碼管數(shù)據(jù)和數(shù)碼管每段的對應(yīng)關(guān)系</p><p>  表5.2 數(shù)碼管斷碼和字型的對應(yīng)關(guān)系(共陽極)</p><p>  從電子鐘程序清單中的顯示程序可以知道:數(shù)據(jù)表格存儲單元從首地址到最高位分別存放的是共陽極數(shù)碼管0、1、2、3、4、5、6、7、8、9、P.、滅的十六進制字型代碼,所以只要把顯示緩沖區(qū)內(nèi)的數(shù)值加上偏移地址rel(偏移量計算方法如式3.1所示),把和送到

46、累加器A中,使用MOVC A, @A+PC就可以取出緩沖區(qū)內(nèi)要顯示數(shù)據(jù)的字型代碼,當然要取P.和滅的字型代碼就要分別給緩沖區(qū)送0AH、0BH。</p><p>  偏移地址rel=數(shù)據(jù)表格首地址-MOVC A @A+PC指令單元首地址-1 式3.1</p><p>  在動態(tài)掃描時,顯示緩沖區(qū)79H內(nèi)部存放的是要顯示的秒的個位的數(shù)值,使用MOVC A, @A+PC指令取出段控碼,由

47、P0口輸出通過鎖存器74LS244后送到數(shù)碼管的段控端,給P2口送01H通過鎖存器74LS244驅(qū)動以后,只有LED0位的位控端有效,此時只有LED0被點亮來顯示秒的個位,延時持續(xù)點亮一段時間,然后把顯示緩沖單元地址加1,位控值左移一位,取出段控碼,再把段控碼和位控碼送到數(shù)碼管顯示器,此時只有LED1被點亮顯示秒的十位,延時持續(xù)點亮一段時間,就這樣通過逐個地從低位到高位點亮各個顯示器,掃描到最高位時的十位被點亮就返回。這樣雖然在任一時刻

48、只有一位顯示器被點亮,但是由于人眼具有視覺殘留效應(yīng),看起來與全部顯示器持續(xù)點亮效果完全一樣。</p><p>  5.6 AT89S51芯片介紹</p><p>  如圖5.7所示為AT89S51芯片的引腳圖</p><p>  兼容標準MCS-51指令系統(tǒng)的AT89S51單片機是一個低功耗、高性能CHMOS的單片機,片內(nèi)含4KB在線可編程Flash存儲器的單片機。

49、它與通用80C51系列單片機的指令系統(tǒng)和引腳兼容。AT89S51單片機片內(nèi)的Flash可允許在線重新編程,也可用通用非易失性存儲編程器編程;片內(nèi)數(shù)據(jù)存儲器內(nèi)含128字節(jié)的RAM;有40個引腳,32個外部雙向輸入/輸出(I/O)端口;具有兩個16位可編程定時器;中斷系統(tǒng)是具有6個中斷源、5個中斷矢量、2級中斷優(yōu)先級的中斷結(jié)構(gòu);震蕩器頻率0到33MHZ,因此我們在此選用12MHZ的晶振是比較合理的;具有片內(nèi)看門狗定時器;具有斷電標志POF等

50、等。AT89S51具有PDIP,TQFP和PLCC三種封裝形式。上圖就是PDIP封裝的引腳排列,下面介紹各引腳的功能。P0口:8位、開漏級、雙向I/O口 。</p><p>  P0口可作為通用I/O口,但須外接上拉電阻;作為輸出口,每各引腳可吸收8各TTL的灌電流。作為輸入時,首先應(yīng)將引腳置1。P0也可用做訪問外部程序存儲器和數(shù)據(jù)存儲器時的低8位地址/數(shù)據(jù)總線的復(fù)用線。在該模式下,P0口含有內(nèi)部上拉電阻。在FL

51、ASH編程時,P0口接收代碼字節(jié)數(shù)據(jù);在編程效驗時,P0口輸出代碼字節(jié)數(shù)據(jù)(需要外接上拉電阻)。</p><p>  P1口:8位、雙向I/0口,內(nèi)部含有上拉電阻。</p><p>  P1口可作普通I/O口。輸出緩沖器可驅(qū)動四個TTL負載;用作輸入時,先將引腳置1,由片內(nèi)上拉電阻將其抬到高電平。P1口的引腳可由外部負載拉到低電平,通過上拉電阻提供電流。</p><p&

52、gt;  在FLASH并行編程和校驗時,P1口可輸入低字節(jié)地址。在串行編程和效驗時,P1.5/MO-SI,P1.6/MISO和P1.7/SCK分別是串行數(shù)據(jù)輸入、輸出和移位脈沖引腳。 </p><p>  P2口:具有內(nèi)部上拉電阻的8位雙向I/O口。</p><p>  P2口用做輸出口時,可驅(qū)動4各TTL負載;用做輸入口時,先將引腳置1,由內(nèi)部上拉電阻將其提高到高電平。若負載為低電平,則

53、通過內(nèi)部上拉電阻向外部輸出電流。</p><p>  CPU訪問外部16位地址的存儲器時,P2口提供高8位地址。當CPU用8位地址尋址外部存儲時,P2口為P2特殊功能寄存器的內(nèi)容。</p><p>  在FLASH并行編程和校驗時,P2口可輸入高字節(jié)地址和某些控制信號。</p><p>  P3口:具有內(nèi)部上拉電阻的8位雙向口。</p><p&g

54、t;  P3口用做輸出口時,輸出緩沖器可吸收4各TTL的灌電流;用做輸入口時,首先將引腳置1,由內(nèi)部上拉電阻抬位高電平。若外部的負載是低電平,則通過內(nèi)部上拉電阻向輸出電流。</p><p>  在與FLASH并行編程和校驗時,P3口可輸入某些控制信號。</p><p>  P3口除了通用I/O口功能外,還有替代功能,如表5.3所示</p><p>  表5.3 P

55、3口的替代功能</p><p>  RST:復(fù)位端。當振蕩器工作時,此引腳上出現(xiàn)兩個機器周期的高電平將系統(tǒng)復(fù)位。</p><p>  ALE/ :當訪問外部存儲器時,ALE(允許地址鎖存)是一個用于鎖存地址的低8位字節(jié)的書粗脈沖。在Flash 編程期間,此引腳也可用于輸入編程脈沖()。在正常操作情況下,ALE以振蕩器頻率的1/6的固定速率發(fā)出脈沖,它是用作對外輸出的時鐘,需要注意的是,每當

56、訪問外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如果希望禁止ALE操作,可通過將特殊功能寄存器中位地址為8EH那位置的“0”來實現(xiàn)。該位置的“1”后。ALE僅在MOVE或MOVC指令期間激活,否則ALE引腳將被略微拉高。若微控制器在外部執(zhí)行方式,ALE禁止位無效。</p><p> ?。和獠砍绦虼鎯ζ髯x選取通信號。當AT89S51在讀取外部程序時, 每個機器周期 將PSEN激活兩次。在此期間內(nèi),每當訪問外部數(shù)據(jù)存儲器

57、時,將跳過兩個信號。</p><p>  /Vpp:訪問外部程序存儲器允許端。為了能夠從外部程序存儲器的0000H至FFFFH單元中取指令,必須接地,然而要注意的是,若對加密位1進行編程,則在復(fù)位時,的狀態(tài)在內(nèi)部被鎖存。</p><p>  執(zhí)行內(nèi)部程序應(yīng)接VCC。不當選擇12V編程電源時,在Flash編程期間,這個引腳可接12V編程電壓。</p><p>  XT

58、AL1:振蕩器反向放大器輸入端和內(nèi)部時鐘發(fā)生器的輸入端。</p><p>  XTAL2:振蕩器反相放大器輸出端。</p><p>  5.7 74LS244驅(qū)動器</p><p>  74LS244是單向總線驅(qū)動器。是8輸入8輸出芯片,中1G和2G為使能端,低電平有效。它的外部管腳圖如圖5.8所示。</p><p>  74LS244是一

59、種三態(tài)輸出的八緩沖器和線驅(qū)動器,該芯片的邏輯電路圖和引腳圖如圖5.8所示。從圖5.8可見,該緩沖器有8個輸入端,分為兩路——1A1~1A4,2A1~2A4,同時8個輸出端,也分為兩路——1Y1~1Y4,2Y1~2Y4,分別由2個門控信號1G和2G控制,當記為低電平時,1Y1~1Y4的電平與1A1~1A4的電平相同,即輸出反映輸入電平的高低;同樣,當2G為低電平時,1Y1~1Y4的電平與2A1~2A4的電平和同。而當1G(或2G)為高電平

60、時,輸出1A1~1A4(或2A1~2A4)為高阻態(tài)。經(jīng)74LS244緩沖后,輸入信號被驅(qū)動,輸出信號的驅(qū)動能力加大了。</p><p>  其功能表如表5.4所示,表中  H為高電平,L為低電平,A為高阻態(tài),X為任意狀態(tài)</p><p>  表5.4 74LS244引腳功能表</p><p>  5.8 S8550PNP三極管</p>&

61、lt;p>  5.8.1主要用途:</p><p>  作為音頻放大器,應(yīng)用于收錄機、電動玩具等電子產(chǎn)品。(與S8050互補)</p><p>  其管腳圖如下圖5.9</p><p>  5.8.2極限值如下表5.5 </p><p>  5.8.3電參數(shù)(Ta=25℃)</p><p><b>  

62、電參數(shù)表5.6</b></p><p>  5.9 四位一體數(shù)碼管</p><p>  四位一體數(shù)碼管的內(nèi)部結(jié)構(gòu),如圖5.10所示。由圖可知,四個數(shù)碼管的位控端連接在一起,共用8根數(shù)據(jù)線,四個公共端卻單獨占一根口線。假設(shè)段控端有段碼輸入時,每個數(shù)碼管的段控端都收到了段碼,但只有位控線有效的數(shù)碼管才能顯示數(shù)據(jù),反之亦反。共陽極數(shù)碼管段控端為低電平有效,位控端高電平有效,共陰極數(shù)碼

63、管恰恰相反。</p><p>  四位一體數(shù)碼管用于動態(tài)掃描,即把數(shù)碼管顯示數(shù)據(jù)的段控碼分時送到其對應(yīng)的段控端。當一個段控碼被送到段控端時,顯示此段控碼數(shù)據(jù)的數(shù)碼管,它的位控端置有效電平,數(shù)碼管點亮;而其他數(shù)碼管的位控端送無效電平,數(shù)碼管不亮。持續(xù)點亮一段時間,再送其它的段控碼,依次把顯示段控碼的數(shù)碼管,使其位控端為有效電平,其他數(shù)碼管的位控端為無效電平,就這樣數(shù)碼管依次被點亮。四位一體數(shù)碼管共十二個引腳,從數(shù)碼

64、管的正面看,它以第一腳為起點,逆時針排列的。由圖可知,6、8、9、12為公共端,A-11、B-7、C-4、D-2、E-1、F-10、G-5、DP-3。</p><p>  顯示字型和代碼關(guān)系如表5.3所示。</p><p>  表5.7 十六進制數(shù)字型代碼</p><p>  6 單片機硬件資源的分配</p><p>  本次設(shè)計用到了單片機

65、正常工作的硬件資源,如(連接晶振的引腳XTAL1和XTAL2,復(fù)位引腳RESET),對其硬件資源還做了具體的安排。</p><p><b>  (1).P0口</b></p><p>  作為數(shù)碼管顯示器的段控輸出口,對數(shù)碼管顯示器進行控制。</p><p><b>  (2).P1口</b></p><

66、;p>  P1.0~P1.3接了四個獨立式分別為A鍵、B鍵、C鍵、D鍵,用于對鍵盤的控制,P1.5、P1.6、P1.7則作為ISP程序下載的輸入端。</p><p><b>  (3).P2口</b></p><p>  該口全部用于數(shù)碼管的位控端。</p><p>  (4).定時/計數(shù)器</p><p>  使

67、用定時器0來實現(xiàn)本次電子鐘的運行。</p><p>  (5).內(nèi)部存儲單元</p><p>  30H存儲定時/計數(shù)器0的中斷次數(shù)。31H~36H分別作為時、分、秒個位和十位的數(shù)據(jù)存儲單元。79H~7E分別作為LED0、LED1、LED2、LED3、LED4、LED5顯示緩沖單元。</p><p><b>  (6).通用寄存器</b><

68、;/p><p>  第0組寄存器:R0、R1、R3、R7,用來存放鍵功能程序的數(shù)據(jù);第1組寄存器:R3,用來存放中斷服務(wù)程序的數(shù)據(jù);第2組寄存器:R1、R4,用來存放顯示程序的數(shù)據(jù)。</p><p><b>  (7).專用寄存器</b></p><p>  定時器控制寄存器TCON,通過設(shè)置該寄存器中TR0位的狀態(tài)來控制定時/計數(shù)器0的啟動/停止

69、;中斷允許寄存器IE,通過設(shè)置該寄存器EA/ET0位的狀態(tài)來設(shè)置定時/計數(shù)器0中斷允許/禁止;定時/計數(shù)器工作方式寄存器TMOD,設(shè)置定時/計數(shù)器0的工作方式。</p><p>  7 程序流程圖 </p><p><b>  8 電子鐘程序清單</b></p><p>  調(diào)整運行后的電子鐘程序清單</p>&

70、lt;p> ??;該程序?qū)崿F(xiàn)電子鐘時、分、秒運行,時、分、秒調(diào)整;十、分、秒同時顯示;</p><p>  ;共A、B、C、D四個按鍵,A鍵實現(xiàn)電子鐘的運行和停止、B鍵調(diào)時、C鍵調(diào)分、D鍵調(diào)秒</p><p>  ;該電子鐘是單片機AT89S51控制,使用芯片中的定時器0方式1實現(xiàn)定時功能;P0口輸出段控碼、P2口輸出位控碼控制數(shù)碼管顯示</p><p> ??;

71、該電子鐘共使用兩個4位一體數(shù)碼管(S02841A-B)顯示</p><p> ??;系統(tǒng)初始化程序****************************************************</p><p>  ORG 0000H</p><p>  AJMP MAIN;轉(zhuǎn)到系統(tǒng)初始化程序</p><p>  

72、ORG 000BH</p><p>  AJMP PITO;轉(zhuǎn)到定時器0中斷服務(wù)程序</p><p>  ORG 0100H</p><p>  MAIN: MOV SP, #60H;確立堆棧區(qū)</p><p>  MOV TMOD, #01H;設(shè)定定時器0為工作方式1<

73、/p><p>  MOV TL0, #0DCH;裝計數(shù)器初值</p><p>  MOV TH0, #0BH</p><p>  CLR 21H.0</p><p>  CLR TR0H;TR0置“0”,定時關(guān)閉</p><p>  SETB EAH;

74、EA置“1”,中斷總允許</p><p>  SETB ET0H ;ET0置“1”,定時器0中斷</p><p><b>  允許</b></p><p>  MOV 30H, #10H;循環(huán)次數(shù)</p><p>  MOV 7EH, #0AH;P.點顯

75、示初始化</p><p>  MOV R0, #79H</p><p>  MOV R1, #05H</p><p>  PP: MOV @R0, #0BH</p><p>  INC R0</p><p>  DJNZ R1, PP</p>

76、;<p>  MOV R0, #31H;時、分、秒值存儲單元清零</p><p>  MOV R1, #06H</p><p>  Q00: MOV @R0, #00H</p><p>  INC R0</p><p>  DJNZ R1, Q00</

77、p><p>  ;監(jiān)控程序********************************************************** </p><p>  LOOP: LCALL DIR;調(diào)顯示子程序</p><p>  LCALL KEY;調(diào)鍵掃描子程序</p><p>  LOOP1: JB

78、 20H.0, KEYA ;A鍵是否按下,是跳轉(zhuǎn)到A鍵功能程序 </p><p>  JB 20H.1, KEYB ;B鍵是否按下,是跳轉(zhuǎn)到B鍵功能程序</p><p>  JB 20H.2, KEYC ;C鍵是否按下,是跳轉(zhuǎn)到C鍵功能程序</p><p>  JB 20H.3, KEYD ;D鍵是否按

79、下,是跳轉(zhuǎn)到D鍵功能程序</p><p>  LCALL DIR</p><p>  LJMP LOOP;跳轉(zhuǎn)到監(jiān)控程序</p><p> ?。籄鍵功能子程序****************************************************</p><p>  KEYA: CPL TR

80、0H ;開啟/關(guān)閉定時器</p><p>  SETB 21H.0</p><p>  AJMP LOOP ;返回</p><p> ?。籅鍵功能子程序****************************************************</p><p>  KEYB: JB

81、 TR0H, KEYBO ;定時器是否運行,是跳轉(zhuǎn)</p><p>  JNB 21H.0, KEYBOO</p><p>  MOV R0, #36H ;時值存儲單元地址送R0</p><p>  LCALL DAAD1 ;調(diào)加1子程序</p><p>  MOV A,

82、 R3 ;時值加1后的值送累加器A</p><p>  XRL A, #24H </p><p>  JNZ KEYBO ;時值是否到24時,否返回</p><p>  LCALL CLR0 ;時值存儲單元清零</p><p>  KEYBO: MOV

83、 7DH, 35H</p><p>  MOV 7EH, 36H</p><p>  KEYBOO: LJMP LOOP ;返回監(jiān)控程序</p><p>  ;C鍵功能子程序****************************************************</p><p>  K

84、EYC: JB 8CH, KEYCO ;定時器是否運行,否跳轉(zhuǎn)</p><p>  JNB 21H.0, KEYCOO</p><p>  MOV R0, #34H ;分值存儲單元地址送R0</p><p>  LCALL DAAD1 ;調(diào)加1子程序</p><p>  MOV

85、 A, R3 ;分值加1后的值送累加器A</p><p>  XRL A, #60H</p><p>  JNZ KEYCO ;分值是否到60分,否返回</p><p>  LCALL CLR0 ;分值存儲單元清零</p><p>  KEYCO: MOV 7CH,

86、 34H</p><p>  MOV 7BH, 33H</p><p>  KEYCOO: LJMP LOOP ;返回監(jiān)控程序</p><p>  ;D鍵功能子程序****************************************************</p><p>  KEYD: JB

87、 8CH, KEYDO ;定時器是否運行,否跳轉(zhuǎn)</p><p>  JNB 21H.0, KEYDOO</p><p>  MOV R0, #32H ;秒值存儲單元地址送R0</p><p>  LCALL DAAD1 ;調(diào)加1子程序</p><p>  MOV A,

88、 R3 ;秒值加1后的值送R0</p><p>  XRL A, #60H</p><p>  JNZ KEYDO;秒值是否到60秒,否返回</p><p>  LCALL CLR0;秒值存儲單元清0</p><p>  KEYDO: MOV 79H, 31H&l

89、t;/p><p>  MOV 7AH, 32H</p><p>  KEYDOO: LJMP LOOP;返回監(jiān)控程序</p><p>  ;中斷服務(wù)程序******************************************************</p><p>  PITO: PUSH PSW

90、;中斷服務(wù)程序,現(xiàn)場保護 </p><p>  PUSH A</p><p>  SETB RS0;選第三組通用寄存器</p><p>  SETB RS1</p><p>  MOV TL0, #0DCH;計數(shù)器重新加載</p><p>

91、;  MOV TH0, #0BH</p><p>  MOV A, 30H;循環(huán)次數(shù)減1</p><p>  DEC A</p><p>  MOV 30H, A</p><p>  JNZ RETO;不滿16次,轉(zhuǎn)RET0返回</p>&l

92、t;p>  MOV 30H, #10H;滿16次開始計時操作</p><p>  MOV R0, #32H;秒顯示單元地址</p><p>  ACALL DAAD1;秒加1</p><p>  MOV A, R3;加1后秒值在R3中</p><p> 

93、 XRL A, #60H;判是否到60秒</p><p>  JNZ RETO;不到轉(zhuǎn)RET0返回</p><p>  ACALL CLR0;到60秒顯示單元清0</p><p>  MOV R0, #34H;分顯示單元地址</p><p>  ACALL

94、 DAAD1;分加1</p><p>  MOV A, R3;加1后分值在R3中</p><p>  XRL A, #60H;判是否到60分</p><p>  JNZ RETO;不到轉(zhuǎn)RET0返回</p><p>  ACALL CLR0;

95、到60分顯示單元清0</p><p>  MOV R0, #36H;時顯示單元地址</p><p>  ACALL DAAD1;時加1</p><p>  MOV A, R3;加1后時值在R3中</p><p>  XRL A, #24H;判是否到24時&l

96、t;/p><p>  JNZ RETO;不到轉(zhuǎn)RET0返回</p><p>  ACALL CLR0;到24時顯示單元清0</p><p>  RETO: CLR RS0;返回第0組通用寄存器</p><p>  CLR RS1</p><p>  POP

97、 A;現(xiàn)場恢復(fù)</p><p>  POP PSW</p><p>  MOV 79H, 31H;時、分、秒值放緩沖區(qū)</p><p>  MOV 7AH, 32H</p><p>  MOV 7BH, 33H</p><p>  M

98、OV 7CH, 34H</p><p>  MOV 7DH, 35H</p><p>  MOV 7EH, 36H</p><p>  RETI ;中斷返回</p><p> ??;加1子程序**********************************************

99、*********</p><p>  DAAD1: MOV A, @R0 ;加1子程序,十位送A</p><p>  DEC R0</p><p>  SWAP A;十位數(shù)占高4位</p><p>  ORL A, @R0;個位數(shù)占低4位</p>

100、;<p>  ADD A, #01H;加1</p><p>  DA A;十進制調(diào)整</p><p>  MOV R3, A;全值暫存R3中</p><p>  ANL A, #0FH;屏蔽十位數(shù),取出個位數(shù)</p><p>  MO

101、V @R0, A;個位值送顯示緩沖單元</p><p>  MOV A, R3</p><p>  INC R0</p><p>  ANL A, #0F0H;屏蔽個位數(shù)取出十位數(shù)</p><p>  SWAP A;使十位數(shù)占低四位</p&

102、gt;<p>  MOV @R0, A;十位數(shù)送緩沖單元</p><p>  RET;返回</p><p>  CLR0: CLR A;清緩沖單元子程序</p><p>  MOV @R0, A;十位緩沖單元清“0”</p><p>  DEC

103、 R0</p><p>  MOV @R0, A;個位數(shù)緩沖單元清“0”</p><p>  RET;返回</p><p>  ;鍵盤掃描子程序***************************************************</p><p>  KEY: LCALL KEYCHU

104、LI;調(diào)鍵值處理子程序</p><p>  JZ EXIT;沒有鍵按下轉(zhuǎn)到返回</p><p>  LCALL DIR</p><p>  LCALL DIR;調(diào)顯示去抖動</p><p>  LCALL KEYCHULI;調(diào)鍵值處理子程序</p><p>  JZ

105、 EXIT;沒有鍵按下轉(zhuǎn)到返回</p><p>  MOV B, 20H;保存鍵值</p><p>  KEYSF: LCALL KEYCHULI;調(diào)鍵值處理子程序</p><p>  JZ KEY1;鍵釋放,轉(zhuǎn)到恢復(fù)鍵值</p><p>  LCALL DIR;

106、調(diào)顯示子程序延時</p><p>  AJMP KEYSF;等到鍵釋放</p><p>  KEY1: MOV 20H, B;鍵值送20H單元保存</p><p>  EXIT: RET;返回</p><p>  KEYCHULI: PUSH PSW;保護現(xiàn)場</p>

107、<p>  CLR RS1;改變寄存器組號</p><p>  SETB RS0</p><p>  MOV P1, #0FFH;先向P1口寫1</p><p>  MOV A, P1;P1口值送累加器A</p><p>  CPL A;A值取

108、反</p><p>  ANL A, #0FH;保存P1口的低4位</p><p>  MOV 20H, A;A值送20H保存</p><p>  CLR RS1;改變寄存器組號</p><p>  CLR RS0</p><p>  POP

109、PSW;恢復(fù)現(xiàn)場</p><p><b>  RET</b></p><p> ??;顯示子程序********************************************************</p><p>  DIR: PUSH PSW ;恢復(fù)現(xiàn)場</p><p

110、>  SETB RS1 ;改變寄存器組號</p><p>  CLR RS0</p><p>  MOV R0, #79H;建立顯示緩沖區(qū)首地址</p><p>  MOV R3, #0FBH;設(shè)置位控碼</p><p>  LD0: MOV P2, R3

111、;送位控碼</p><p>  MOV A, @R0;緩沖區(qū)值送累加器A</p><p>  DISP1: ADD A, #1BH</p><p>  MOVC A, @A+PC;取段控碼并送A中</p><p>  DISP2: MOV P0, A;送段控

112、碼</p><p>  MOV R2, #09H;設(shè)置延時循環(huán)次數(shù)</p><p>  ACALL DEY;延時點亮</p><p>  INC R0;緩沖區(qū)地址加1</p><p>  MOV A, R3;位控碼送A</p><p>  JN

113、B ACC.1, HERE;是否到最高位,是轉(zhuǎn)到返回</p><p>  JBACC.5, LD2</p><p><b>  RL A</b></p><p>  RL A;不到向顯示器高位移位</p><p>  LD2:RL A</p><p&

114、gt;  MOV R3, A;位控值保存到R4中</p><p>  AJMP LD0;繼續(xù)掃描</p><p>  HERE: CLR RS0;改變寄存器組號</p><p>  CLR RS1</p><p>  POP PSW;恢復(fù)現(xiàn)場</p>

115、<p>  RET;返回</p><p>  DBB: DB 0C0H</p><p>  DB 0F9H</p><p>  DB 0A4H</p><p>  DB 0B0H</p><p>  DB 99H</p><

116、;p>  DB 92H</p><p>  DB 82H</p><p>  DB 0F8H</p><p>  DB 80H</p><p>  DB 90H</p><p>  DB 0CH</p><p>  DB

溫馨提示

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

評論

0/150

提交評論