版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《單片機(jī)技術(shù)》課程設(shè)計(jì)任務(wù)</p><p> 一、設(shè)計(jì)題目:基于單片機(jī)并行口的電子鐘的設(shè)計(jì)</p><p><b> 二、適用班級(jí): </b></p><p><b> 三、指導(dǎo)教師: </b></p><p><b> 四、任務(wù)與要求:</b>&
2、lt;/p><p> 在智能化儀器儀表中,控制核心均為微處理器,而單片機(jī)以其高性能、高速度、體積小、價(jià)格低廉、穩(wěn)定可靠而得到廣泛應(yīng)用,是設(shè)計(jì)智能化儀器儀表的首選微控制器,單片機(jī)結(jié)合簡(jiǎn)單的接口電路即可構(gòu)成電子鐘,它可廣泛應(yīng)用于工業(yè)、農(nóng)業(yè)、日常生活等領(lǐng)域,與傳統(tǒng)鐘表相比較,它具有高精度、高可靠性、操作方便、價(jià)格便宜、智能化等特點(diǎn),是鐘表的一個(gè)發(fā)展方向,具有一定的實(shí)用價(jià)值。</p><p> 1
3、、本課題任務(wù)如下:</p><p> 設(shè)計(jì)一個(gè)具有特定功能的電子鐘。該電子鐘上電或按鍵復(fù)位后能自動(dòng)顯示系統(tǒng)提示符“P.”, 進(jìn)入時(shí)鐘準(zhǔn)備狀態(tài);第一次按電子鐘啟動(dòng)/調(diào)整鍵,電子鐘從0時(shí)0分0秒開(kāi)始運(yùn)行,進(jìn)入時(shí)鐘運(yùn)行狀態(tài);再次按電子鐘啟動(dòng)/調(diào)整鍵,則電子鐘進(jìn)入時(shí)鐘調(diào)整狀態(tài),此時(shí)可利用各調(diào)整鍵調(diào)整時(shí)間,調(diào)整結(jié)束后可按啟動(dòng)/調(diào)整鍵再次進(jìn)入時(shí)鐘運(yùn)行狀態(tài)。</p><p> 2、本課題要求如下:&
4、lt;/p><p> ?。?)在AT89S51的P0口和P2口外接由六個(gè)LED數(shù)碼管(LED5~LED0)構(gòu)成的顯示器,用P0口作LED的段碼輸出口(P0.0~P0.7對(duì)應(yīng)于LED的a~dp),P2.5~P2.0作LED的位控輸出線(P2.5~P2.0對(duì)應(yīng)于LED5~LED0),P1口外接四個(gè)按鍵A、B、C、D(對(duì)應(yīng)于P1.0~P1.3)。</p><p> ?。?)、利用六個(gè)LED顯示當(dāng)前時(shí)
5、間。</p><p> ?。?)、四個(gè)按鍵的功能:A鍵用于電子鐘啟動(dòng)/調(diào)整;B鍵用于調(diào)時(shí),范圍0-23,0為24點(diǎn),每按一次時(shí)加1;C鍵用于調(diào)分,范圍0-59,0 為60分,每按一次分加1;D鍵用于調(diào)秒, 范圍0-59,0為60秒,每按一次秒加1。</p><p> (4)、單片機(jī)采用AT89S51,fosc=12MHZ。</p><p> ?。?)、電子鐘供電電
6、源電路的設(shè)計(jì)。</p><p> ?。?)、電子鐘時(shí)鐘電路,復(fù)位電路的設(shè)計(jì)。</p><p> ?。?)、編寫系統(tǒng)監(jiān)控程序、鍵掃子程序、顯示子程序及其它所需子程序、功能程序和中斷服務(wù)程序。</p><p> (8)、計(jì)算機(jī)輸出課程設(shè)計(jì)說(shuō)明書(shū)一份。 </p><p> ?。?)、設(shè)計(jì)時(shí)間:二周</p>
7、<p> ?。?0)、制作電子鐘實(shí)物。</p><p> 五、課程設(shè)計(jì)說(shuō)明書(shū)主要內(nèi)容</p><p> 1、課程設(shè)計(jì)說(shuō)明書(shū)封面;</p><p> 2、課程設(shè)計(jì)任務(wù)書(shū)封面及課程設(shè)計(jì)任務(wù)書(shū);</p><p><b> 3、前言;</b></p><p> 4、課程設(shè)計(jì)說(shuō)明書(shū)目錄
8、;</p><p> 5、電子鐘功能說(shuō)明及總體方案介紹;</p><p> 6、詳細(xì)介紹電子鐘的工作原理;</p><p> 7、繪制電子鐘整機(jī)電路框圖、整機(jī)電路原理圖、電源電路原理圖及PCB圖各1份;</p><p> 8、列出電子鐘元器件清單;</p><p> 9、詳細(xì)介紹電子鐘單元電路工作原理(包括電
9、源電路、時(shí)鐘電路、復(fù)位電路、鍵盤/顯示接口電路及所用主要芯片);</p><p> 10、單片機(jī)硬件資源的使用分配情況;</p><p> 11、畫出電子鐘軟件系統(tǒng)監(jiān)控程序、各子程序、中斷服務(wù)程序及各功能程序的流程框圖;</p><p> 12、列出電子鐘軟件系統(tǒng)程序清單;</p><p> 13、寫出電子鐘的使用說(shuō)明;</p&
10、gt;<p> 14、設(shè)計(jì)體會(huì),談?wù)劚驹O(shè)計(jì)的重點(diǎn)、難點(diǎn)及精妙之處,是否存在不足之點(diǎn)及改進(jìn)意見(jiàn);</p><p> 15、提出《單片機(jī)技術(shù)》課程教學(xué)建議;</p><p><b> 16、參考資料。</b></p><p> 六、課程設(shè)計(jì)說(shuō)明書(shū)書(shū)寫格式</p><p> 參照“課程設(shè)計(jì)說(shuō)明書(shū)書(shū)寫格式
11、”文件。</p><p><b> 七、參考資料</b></p><p> [1]、曹巧媛,單片機(jī)原理及應(yīng)用[M],北京:電子工業(yè)出版社,1997.7。</p><p> [2]、趙秀珍,單永磊,單片微型計(jì)算機(jī)原理及其應(yīng)用[M],北京:中國(guó)水利水電出版社,2001.8。</p><p> [3]、張毅剛,修林成,
12、胡振江,MCS-51單片機(jī)應(yīng)用設(shè)計(jì)[M],哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1990.8。</p><p> [4]、張洪潤(rùn),蘭清華,單片機(jī)應(yīng)用技術(shù)教程[M],北京:清華大學(xué)出版社,1997.11。</p><p> [5]、李華,MCS-51系列單片機(jī)實(shí)用接口技術(shù)[M],北京:北京航空航天大學(xué)出版社,1993.8。</p><p> [6]、陳景初,單片機(jī)應(yīng)用系
13、統(tǒng)設(shè)計(jì)與實(shí)踐[M],北京:北京航空航天大學(xué)出版社。</p><p> [7]、馬家辰,MCS-51單片機(jī)原理與接口技術(shù)[M],哈爾濱:哈爾濱工業(yè)大學(xué)出版社。</p><p> [8]、劉守義,單片機(jī)應(yīng)用技術(shù)[M],西安:西安電子科技大學(xué)出版社。</p><p><b> 電氣自動(dòng)化教研室</b></p><p>
14、 2005年9月10日</p><p><b> 前 言</b></p><p> 電子科技日新月異,人們對(duì)現(xiàn)代電子設(shè)備的智能化和微型化及其精度提出了更高的要求,而單片機(jī)因其具有穩(wěn)定可靠、 體積小、 價(jià)格低廉等特點(diǎn),成為設(shè)計(jì)智能化儀器儀表的首選微控制器,因此本次我們沒(méi)有選用傳統(tǒng)的專用的時(shí)鐘芯片,而是采用了AT89S51芯片,此款單片機(jī)可以使用軟件對(duì)其進(jìn)行在線
15、編程,其靈活性和可靠性都相對(duì)提高。</p><p> 通過(guò)此次實(shí)物制作,增強(qiáng)了我們的動(dòng)手能力,把理論與實(shí)踐融合在一起。同時(shí),也進(jìn)一步加深了對(duì)單片機(jī)的硬件結(jié)構(gòu)的理解和鞏固,編程能力也得到了提高。在此將電子鐘制作過(guò)程中用到的知識(shí)進(jìn)行了一些總結(jié),并記錄了遇到的問(wèn)題,希望自己今后能注意。同時(shí)也希望能成為讀者的參考資料,能幫助讀者避免出現(xiàn)相同的問(wèn)題,并能從中得到一些啟發(fā)。</p><p> 在此
16、要感謝xx老師對(duì)我的指導(dǎo),感謝同組人的合作及幫助過(guò)我的同學(xué)。由于編者水平有限,書(shū)中的錯(cuò)漏在所難免,懇請(qǐng)讀者批評(píng)指正。</p><p><b> 目 錄</b></p><p> 1 多功能電子表說(shuō)明及總體方案介紹1</p><p> 1.1 多功能電子表計(jì)時(shí)方案1</p><p> 1.2 多功能
17、電子表鍵盤/顯示方案2</p><p> 2 電子鐘的工作原理4</p><p> 3 多功能電子表原理框圖、原理圖及PCB圖5</p><p> 3.1 多功能電子表原理框圖5</p><p> 3.2 多功能電子表整機(jī)原理圖5</p><p> 3.3 多功能電子表電路PC
18、B圖7</p><p> 4 多功能電子表元器件清單9</p><p> 5 多功能電子表單元電路工作原理及芯片11</p><p> 5.1 電源電路工作原理11</p><p> 5.2 時(shí)鐘電路工作原理11</p><p> 5.3 復(fù)位電路工作原理12</
19、p><p> 5.4 鍵盤電路工作原理12</p><p> 5.5 顯示器工作原理13</p><p> 5.6 AT89S51芯片17</p><p> 5.7 74LS244芯片20</p><p> 5.8 S8550PNP三極管21</p><p>
20、 5.9 四位一體數(shù)碼管23</p><p> 6 單片機(jī)硬件資源分配25</p><p> 7 程序流程圖26</p><p> 8 電子鐘程序清單32</p><p> 9 誤差分析40</p><p> 10 電子鐘使用說(shuō)明43</p>
21、<p> 11 設(shè)計(jì)體會(huì)44</p><p> 12 教學(xué)意見(jiàn)45</p><p> 13 參考資料46</p><p> 1 多功能電子表說(shuō)明及總體方案介紹</p><p> 本次設(shè)計(jì)電子鐘系統(tǒng)功能簡(jiǎn)單,用單片機(jī)的最小系統(tǒng)就能得以實(shí)現(xiàn)。而單片機(jī)的最小系統(tǒng)設(shè)計(jì)中實(shí)際上最重要的就是對(duì)鍵盤/顯示器
22、接口電路的設(shè)計(jì),由于系統(tǒng)功能不同所以要求就不同,接口設(shè)計(jì)也就不同。對(duì)一個(gè)鍵盤/顯示器接口設(shè)計(jì)應(yīng)從整個(gè)系統(tǒng)出發(fā),綜合考慮軟、硬件特點(diǎn)。下面是本人在設(shè)計(jì)前對(duì)各種設(shè)計(jì)方案的考慮:</p><p> 1.1 多功能電子表計(jì)時(shí)方案</p><p> 方案一:采用實(shí)時(shí)時(shí)鐘芯片</p><p> 實(shí)時(shí)時(shí)鐘芯片具備年、月、日、時(shí)、分、秒計(jì)時(shí)功能和多點(diǎn)定時(shí)功能,計(jì)時(shí)數(shù)據(jù)的更新
23、每秒自動(dòng)進(jìn)行一次,不需程序干預(yù)。計(jì)算機(jī)可通過(guò)中斷或查詢方式讀取計(jì)時(shí)數(shù)據(jù)進(jìn)行顯示,因此計(jì)時(shí)功能的實(shí)現(xiàn)無(wú)需占用CPU的時(shí)間,程序簡(jiǎn)單。此外,實(shí)時(shí)時(shí)鐘芯片多數(shù)帶有鋰電池做后備電源,具備永不停止的計(jì)時(shí)功能;具有可編程方波輸出功能,可用做實(shí)時(shí)測(cè)控系統(tǒng)的采樣信號(hào)等;有的實(shí)時(shí)時(shí)鐘芯片內(nèi)部還帶有非易失性RAM,可用來(lái)存放需長(zhǎng)期保存但有時(shí)也需變更的數(shù)據(jù)。由于功能完善,精度高,軟件程序設(shè)計(jì)相對(duì)簡(jiǎn)單,且計(jì)時(shí)不占用CPU時(shí)間,因此,在工業(yè)實(shí)時(shí)測(cè)控系統(tǒng)中多采用這
24、一類專用芯片來(lái)實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘功能。</p><p> 方案二: 軟件控制。</p><p> 利用單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器進(jìn)行中斷定時(shí),配合軟件延時(shí)實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí)及秒表計(jì)時(shí)。該方案節(jié)省硬件成本,且能使設(shè)計(jì)者對(duì)單片機(jī)的指令系統(tǒng)能有更深入的了解,從而掌握單片機(jī)應(yīng)用技術(shù)MCS-51匯編語(yǔ)言程序設(shè)計(jì)方法,因此,本系統(tǒng)設(shè)計(jì)采用此種軟件控制方法來(lái)實(shí)現(xiàn)計(jì)時(shí)。而由于ATMEL公司的AT89S51單
25、片機(jī)是低功耗的具有4KB在線可編程Flash存儲(chǔ)器的單片機(jī)。它與通用80C51系列單片機(jī)的指令系和引腳兼容。片內(nèi)的Flash可允許在線重新編程,也可使用通用非易失性存儲(chǔ)器編程。它將通用CPU和在線可編程Flash集成在一個(gè)芯片上,形成了功能強(qiáng)大、使用靈活和具有較高性能價(jià)格比的微控制器。它的功能強(qiáng)大,而且也較容易購(gòu)買,故本設(shè)計(jì)中所選的單片機(jī)為AT89S51單片機(jī)。</p><p> 1.2 多功能電子表鍵盤/顯
26、示方案</p><p> 方案一: 8279擴(kuò)展。</p><p> 該方案方框圖如圖1.2.1所示,8279是一種可編程的鍵盤/顯示接口專用芯片,它含有鍵盤輸入和顯示輸出兩種功能,鍵掃描程序和動(dòng)態(tài)顯示程序全由8279硬件自動(dòng)完成,此種方案能以比較簡(jiǎn)單的硬件 </p><p> 電路和較少的軟件開(kāi)銷實(shí)現(xiàn)單片機(jī)與鍵盤、LED顯示器的接口。</p>
27、<p> 方案二: 8155擴(kuò)展,LED動(dòng)態(tài)顯示。 </p><p> 該方案方框圖如圖1.2.2所示,8155是一塊可編程的接口芯片,與單片機(jī)的接口非常簡(jiǎn)單,它的鍵盤、顯示共用一個(gè)接口電路,可節(jié)省I/O口。但動(dòng)態(tài)掃描方式需占用CPU較多的時(shí)間,在單片機(jī)沒(méi)有太多實(shí)時(shí)測(cè)控任務(wù)的情況下可以采用。</p><p> 方案三: 串口擴(kuò)展,LED靜態(tài)顯示。</p>
28、<p> 該方案方框圖如圖1.2.3所示,獨(dú)立式鍵盤配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單,按鍵較多時(shí)不宜采用。靜態(tài)顯示占用口資源少,采用串口傳輸實(shí)現(xiàn)靜態(tài)顯示, LED數(shù)碼管與單片機(jī)之間通過(guò)6個(gè)移位寄存器相連,顯示亮度有保證,但此方案的硬件開(kāi)銷大,電路復(fù)雜,信息刷新速度慢,比較適用于并行口資源較少的場(chǎng)合。</p><p> 方案四: 獨(dú)立式按鍵,LED動(dòng)態(tài)顯示。 </p><p> 該方案
29、方框圖如圖1.2.4所示,獨(dú)立式按鍵直接與單片機(jī)I/O口相連構(gòu)成鍵盤,每個(gè)按鍵不會(huì)相互影響,因本系統(tǒng)用到的按鍵比較少,采用獨(dú)立式鍵盤不會(huì)浪費(fèi)I/O口線,所以本系統(tǒng)采用獨(dú)立式鍵盤。動(dòng)態(tài)顯示的亮度雖然不如靜態(tài)顯示,但其硬件電路較簡(jiǎn)單,可節(jié)省硬件成本,雖然動(dòng)態(tài)掃描需占用CPU較多的時(shí)間,但本系統(tǒng)中的單片機(jī)沒(méi)有很多實(shí)時(shí)測(cè)控任務(wù),因此,本系統(tǒng)采用此種方案。 </p><p> 2
30、 多功能電子表的工作原理</p><p> 本設(shè)計(jì)中的數(shù)字鐘的核心是AT89S51單片機(jī),其內(nèi)部帶有4KB在線可編程Flash存儲(chǔ)器的單片機(jī),無(wú)須外擴(kuò)程序存儲(chǔ)器,硬件電路主要由四部分構(gòu)成:時(shí)鐘電路,復(fù)位電路,鍵盤以及顯示電路。</p><p> 時(shí)鐘電路是電子表硬件電路的核心,沒(méi)有時(shí)鐘電路,電子表將無(wú)法正常工作計(jì)時(shí)。本系統(tǒng)時(shí)鐘電路采用的晶振的頻率為12MHz,定時(shí)器采用的是定時(shí)器0工
31、作在方式1定時(shí),用于實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí),定時(shí)時(shí)間為62.5ms。復(fù)位電路可使電子表恢復(fù)到初始狀態(tài)。鍵盤可對(duì)電子表進(jìn)行開(kāi)啟、停止,還能實(shí)現(xiàn)時(shí)、分、秒的顯示及設(shè)定等操作。顯示電路由兩個(gè)共陽(yáng)級(jí)4位一體LED數(shù)碼管構(gòu)成,它的段控端和位控端通過(guò)74LS244及其S8550PNP型號(hào)三極管與AT89S51單片機(jī)的I/O口相連,顯示器可使電子表顯示出時(shí)、分、秒。 </p><p> 多功能電子表的計(jì)時(shí)原理為:上電后,電子表
32、顯示P.提示符,按下A鍵后,電子表從00:00:00開(kāi)始計(jì)時(shí)。當(dāng)定時(shí)器0的定時(shí)時(shí)間滿62.5ms后,定時(shí)器0溢出一次,溢出滿16次后,電子表的秒加1,滿60秒后,分加1,滿60分后,時(shí)加1,滿24時(shí)后,電子表重新從00:00:00開(kāi)始計(jì)時(shí)。</p><p> 3 多功能電子表原理方框圖、原理圖及PCB圖</p><p> 3.1 多功能電子表原理方框圖</p><
33、;p> 多功能電子表整機(jī)電路方框圖如圖3.1</p><p> 3.2 多功能電子表電路原理圖</p><p> 3.2.1多功能電子表電源電路原理圖</p><p> 直流穩(wěn)壓電源電路原理圖如圖3.2所示</p><p> 3.2.2 多功能電子表整機(jī)電路原理</p><p> 3.3 多功能
34、電子表電路PCB圖</p><p> 3.3.1 多功能電子表電源電路PCB圖</p><p> 電源電路PCB圖如圖3.4所示</p><p> 3.3.2 多功能電子表整機(jī)電路PCB圖</p><p> 多功能電子表整機(jī)電路PCB圖如圖3.5所示</p><p><b> 3.5整機(jī)PCB圖
35、</b></p><p> 4 多功能電子表元器件清單</p><p> 多功能電子表電路所有元器件清單如表4.1所示</p><p> 表4.1 多功能電子表元器件清單1</p><p> 5 多功能電子表單元電路工作原理介紹</p><p> 5.1 電源電路工作原理</p>
36、<p> 圖5.1所示為集成直流穩(wěn)壓電源電路的原理圖,本電源電路是由集成穩(wěn)壓器構(gòu)成的。電路可分成三部分:電源變壓器部分、整流濾波部分和穩(wěn)壓部分。</p><p> 變壓器原邊為工頻交流220V電壓,經(jīng)過(guò)變壓后,變壓器副邊的電壓變?yōu)榻涣?1V,11V交流電壓經(jīng)過(guò)橋式整流電路整流后變?yōu)橹绷?0V電壓,直流10V電壓作為CW7805的輸入電壓,CW7805輸出+5V電壓。圖中D2為整流橋,它由四個(gè)整流
37、二極管接成電橋形式。C3為濾波電容,C1用于抵消輸入端較長(zhǎng)接線的電感效應(yīng),以防止自激振蕩,還可抑制電源的高頻脈沖干擾。一般取0.1——1μF。CW7805為三端固定輸出集成穩(wěn)壓器,其輸入和輸出電壓都為固定值,它的輸入電壓為+10V,輸出電壓為+5V。C2和C4用以改善負(fù)載的瞬態(tài)響應(yīng),消除電路的高頻噪聲,同時(shí)也具有消振作用。</p><p> 5.2 時(shí)鐘電路工作原理</p><p>
38、 圖5.2所示為時(shí)鐘電路原理圖,在AT89S51芯片內(nèi)部有一個(gè)高增益反相放大器,其輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。而在芯片內(nèi)部,XTAL1和XTAL2之間跨接晶體振蕩器和微調(diào)電容,從而構(gòu)成一個(gè)穩(wěn)定的自激振蕩器。時(shí)鐘電路產(chǎn)生的振蕩脈沖經(jīng)過(guò)觸發(fā)器進(jìn)行二分頻之后,才成為單片機(jī)的時(shí)鐘脈沖信號(hào)。 </p><p> 5.3 復(fù)位電路工作原理</p><p> 圖5.
39、3所示為復(fù)位電路原理圖,復(fù)位是單片機(jī)的初始化操作,其主要功能是把PC初始化為0000H,使單片機(jī)從0000H單元開(kāi)始執(zhí)行程序,并使其它功能單元處于一個(gè)確定的初始狀態(tài)。本復(fù)位電路采用的是按鍵復(fù)位,它是通過(guò)復(fù)位端經(jīng)電阻與VCC電源接通而實(shí)現(xiàn)的,它兼具上電復(fù)位功能。因本系統(tǒng)的晶振的頻率為12MHz,所以,復(fù)位信號(hào)持續(xù)時(shí)間應(yīng)當(dāng)超過(guò)2μS才能完成復(fù)位操作。</p><p> 5.4 鍵盤工作原理</p>
40、<p> 圖5.4所示為鍵盤原理圖,本系統(tǒng)采用的是獨(dú)立式鍵盤結(jié)構(gòu),每個(gè)按鍵單獨(dú)占用一根I/O口線,每個(gè)按鍵的工作不會(huì)影響其它I/O口線的狀態(tài)。它軟件是采用查詢式結(jié)構(gòu),首先逐位查詢每根I/O口線的輸入狀態(tài),如某一根I/O口線輸入為低電平,則可確認(rèn)該I/O口線所對(duì)應(yīng)的按鍵已按下,然后,再轉(zhuǎn)向該鍵的功能處理程序。 </p><p> 5.5 顯示器工作原理<
41、/p><p> 系統(tǒng)采用動(dòng)態(tài)顯示方式,用P0口來(lái)控制LED數(shù)碼管的段控線,而用P2口來(lái)控制其位控線。動(dòng)態(tài)顯示通常都是采用動(dòng)態(tài)掃描的方法進(jìn)行顯示,即循環(huán)點(diǎn)亮每一個(gè)數(shù)碼管,這樣雖然在任何時(shí)刻都只有一位數(shù)碼管被點(diǎn)亮,但由于人眼存在視覺(jué)殘留效應(yīng),只要每位數(shù)碼管間隔時(shí)間足夠短,就可以給人以同時(shí)顯示的感覺(jué)。圖中的S8550作為驅(qū)動(dòng)器,而8個(gè)510歐姆電阻則起限流作用。</p><p> 由圖5.5可知
42、,要想讓數(shù)碼管那一段亮,在該數(shù)碼管位控段為高電平的情況下給這段送低電平就可以了。顯示電路結(jié)構(gòu)采用動(dòng)態(tài)掃描的方式,所有數(shù)碼管的段控端公用單片機(jī)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口線上,每個(gè)數(shù)碼管的位控線單獨(dú)占用單片機(jī)P2口一根輸出口線,8位數(shù)碼管從高位到低位分別接P2.0~P2.7引腳。段控碼(低電平有效)由P0
43、口輸出經(jīng)上拉電阻上拉電壓后通過(guò)鎖存器74LS244送到數(shù)碼管的段控端,位控碼由P2口輸出經(jīng)三極管S8550驅(qū)動(dòng)后送到數(shù)碼管的位控端。</p><p> 在單片機(jī)內(nèi)部顯示緩沖區(qū)79H、7AH、7BH、7CH、7DH、7EH內(nèi)的值分別是秒的個(gè)位、秒的十位、分的個(gè)位、分的十位、時(shí)的個(gè)位、時(shí)的十位,顯示器LED0、LED1、LED2、LED3、LED4、LED5分別顯示秒的個(gè)位十位、分的個(gè)位十位、時(shí)的個(gè)位十位,由圖5.
44、5所示。</p><p> 數(shù)碼管動(dòng)態(tài)顯示:由于顯示的數(shù)據(jù)和LED數(shù)碼管的段控碼并不是一一對(duì)應(yīng)的關(guān)系,即顯示的數(shù)據(jù)與數(shù)碼管的字型代碼不相符。顯示數(shù)據(jù)與字型代碼之間存在著轉(zhuǎn)換關(guān)系,數(shù)碼管段控?cái)?shù)據(jù)和數(shù)碼管各段的對(duì)應(yīng)關(guān)系如表5.1、表5.2所示。</p><p> 表5.1 數(shù)碼管數(shù)據(jù)和數(shù)碼管每段的對(duì)應(yīng)關(guān)系</p><p> 表5.2 數(shù)碼管斷碼和字型的對(duì)應(yīng)關(guān)系(共
45、陽(yáng)極)</p><p> 從電子鐘程序清單中的顯示程序可以知道:數(shù)據(jù)表格存儲(chǔ)單元從首地址到最高位分別存放的是共陽(yáng)極數(shù)碼管0、1、2、3、4、5、6、7、8、9、P.、滅的十六進(jìn)制字型代碼,所以只要把顯示緩沖區(qū)內(nèi)的數(shù)值加上偏移地址rel(偏移量計(jì)算方法如式3.1所示),把和送到累加器A中,使用MOVC A, @A+PC就可以取出緩沖區(qū)內(nèi)要顯示數(shù)據(jù)的字型代碼,當(dāng)然要取P.和滅的字型代碼就要分別給緩沖區(qū)送0AH、
46、0BH。</p><p> 偏移地址rel=數(shù)據(jù)表格首地址-MOVC A @A+PC指令單元首地址-1 式3.1</p><p> 在動(dòng)態(tài)掃描時(shí),顯示緩沖區(qū)79H內(nèi)部存放的是要顯示的秒的個(gè)位的數(shù)值,使用MOVC A, @A+PC指令取出段控碼,由P0口輸出通過(guò)鎖存器74LS244后送到數(shù)碼管的段控端,給P2口送01H通過(guò)鎖存器74LS244驅(qū)動(dòng)以后,只有LED0位的位控端有效,此時(shí)
47、只有LED0被點(diǎn)亮來(lái)顯示秒的個(gè)位,延時(shí)持續(xù)點(diǎn)亮一段時(shí)間,然后把顯示緩沖單元地址加1,位控值左移一位,取出段控碼,再把段控碼和位控碼送到數(shù)碼管顯示器,此時(shí)只有LED1被點(diǎn)亮顯示秒的十位,延時(shí)持續(xù)點(diǎn)亮一段時(shí)間,就這樣通過(guò)逐個(gè)地從低位到高位點(diǎn)亮各個(gè)顯示器,掃描到最高位時(shí)的十位被點(diǎn)亮就返回。這樣雖然在任一時(shí)刻只有一位顯示器被點(diǎn)亮,但是由于人眼具有視覺(jué)殘留效應(yīng),看起來(lái)與全部顯示器持續(xù)點(diǎn)亮效果完全一樣。</p><p>
48、5.6 AT89S51芯片介紹</p><p> 如圖5.7所示為AT89S51芯片的引腳圖</p><p> 兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)的AT89S51單片機(jī)是一個(gè)低功耗、高性能CHMOS的單片機(jī),片內(nèi)含4KB在線可編程Flash存儲(chǔ)器的單片機(jī)。它與通用80C51系列單片機(jī)的指令系統(tǒng)和引腳兼容。AT89S51單片機(jī)片內(nèi)的Flash可允許在線重新編程,也可用通用非易失性存儲(chǔ)編程器編程
49、;片內(nèi)數(shù)據(jù)存儲(chǔ)器內(nèi)含128字節(jié)的RAM;有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口;具有兩個(gè)16位可編程定時(shí)器;中斷系統(tǒng)是具有6個(gè)中斷源、5個(gè)中斷矢量、2級(jí)中斷優(yōu)先級(jí)的中斷結(jié)構(gòu);震蕩器頻率0到33MHZ,因此我們?cè)诖诉x用12MHZ的晶振是比較合理的;具有片內(nèi)看門狗定時(shí)器;具有斷電標(biāo)志POF等等。AT89S51具有PDIP,TQFP和PLCC三種封裝形式。上圖就是PDIP封裝的引腳排列,下面介紹各引腳的功能。P0口:8位、開(kāi)漏級(jí)
50、、雙向I/O口 。</p><p> P0口可作為通用I/O口,但須外接上拉電阻;作為輸出口,每各引腳可吸收8各TTL的灌電流。作為輸入時(shí),首先應(yīng)將引腳置1。P0也可用做訪問(wèn)外部程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器時(shí)的低8位地址/數(shù)據(jù)總線的復(fù)用線。在該模式下,P0口含有內(nèi)部上拉電阻。在FLASH編程時(shí),P0口接收代碼字節(jié)數(shù)據(jù);在編程效驗(yàn)時(shí),P0口輸出代碼字節(jié)數(shù)據(jù)(需要外接上拉電阻)。</p><p>
51、 P1口:8位、雙向I/0口,內(nèi)部含有上拉電阻。</p><p> P1口可作普通I/O口。輸出緩沖器可驅(qū)動(dòng)四個(gè)TTL負(fù)載;用作輸入時(shí),先將引腳置1,由片內(nèi)上拉電阻將其抬到高電平。P1口的引腳可由外部負(fù)載拉到低電平,通過(guò)上拉電阻提供電流。</p><p> 在FLASH并行編程和校驗(yàn)時(shí),P1口可輸入低字節(jié)地址。在串行編程和效驗(yàn)時(shí),P1.5/MO-SI,P1.6/MISO和P1.7/S
52、CK分別是串行數(shù)據(jù)輸入、輸出和移位脈沖引腳。 </p><p> P2口:具有內(nèi)部上拉電阻的8位雙向I/O口。</p><p> P2口用做輸出口時(shí),可驅(qū)動(dòng)4各TTL負(fù)載;用做輸入口時(shí),先將引腳置1,由內(nèi)部上拉電阻將其提高到高電平。若負(fù)載為低電平,則通過(guò)內(nèi)部上拉電阻向外部輸出電流。</p><p> CPU訪問(wèn)外部16位地址的存儲(chǔ)器時(shí),P2口提供高8位地址。當(dāng)
53、CPU用8位地址尋址外部存儲(chǔ)時(shí),P2口為P2特殊功能寄存器的內(nèi)容。</p><p> 在FLASH并行編程和校驗(yàn)時(shí),P2口可輸入高字節(jié)地址和某些控制信號(hào)。</p><p> P3口:具有內(nèi)部上拉電阻的8位雙向口。</p><p> P3口用做輸出口時(shí),輸出緩沖器可吸收4各TTL的灌電流;用做輸入口時(shí),首先將引腳置1,由內(nèi)部上拉電阻抬位高電平。若外部的負(fù)載是低電
54、平,則通過(guò)內(nèi)部上拉電阻向輸出電流。</p><p> 在與FLASH并行編程和校驗(yàn)時(shí),P3口可輸入某些控制信號(hào)。</p><p> P3口除了通用I/O口功能外,還有替代功能,如表5.3所示</p><p> 表5.3 P3口的替代功能</p><p> RST:復(fù)位端。當(dāng)振蕩器工作時(shí),此引腳上出現(xiàn)兩個(gè)機(jī)器周期的高電平將系統(tǒng)復(fù)位。&
55、lt;/p><p> ALE/ :當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),ALE(允許地址鎖存)是一個(gè)用于鎖存地址的低8位字節(jié)的書(shū)粗脈沖。在Flash 編程期間,此引腳也可用于輸入編程脈沖()。在正常操作情況下,ALE以振蕩器頻率的1/6的固定速率發(fā)出脈沖,它是用作對(duì)外輸出的時(shí)鐘,需要注意的是,每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如果希望禁止ALE操作,可通過(guò)將特殊功能寄存器中位地址為8EH那位置的“0”來(lái)實(shí)現(xiàn)。該位置的“
56、1”后。ALE僅在MOVE或MOVC指令期間激活,否則ALE引腳將被略微拉高。若微控制器在外部執(zhí)行方式,ALE禁止位無(wú)效。</p><p> :外部程序存儲(chǔ)器讀選取通信號(hào)。當(dāng)AT89S51在讀取外部程序時(shí), 每個(gè)機(jī)器周期 將PSEN激活兩次。在此期間內(nèi),每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)兩個(gè)信號(hào)。</p><p> /Vpp:訪問(wèn)外部程序存儲(chǔ)器允許端。為了能夠從外部程序存儲(chǔ)器的0000H
57、至FFFFH單元中取指令,必須接地,然而要注意的是,若對(duì)加密位1進(jìn)行編程,則在復(fù)位時(shí),的狀態(tài)在內(nèi)部被鎖存。</p><p> 執(zhí)行內(nèi)部程序應(yīng)接VCC。不當(dāng)選擇12V編程電源時(shí),在Flash編程期間,這個(gè)引腳可接12V編程電壓。</p><p> XTAL1:振蕩器反向放大器輸入端和內(nèi)部時(shí)鐘發(fā)生器的輸入端。</p><p> XTAL2:振蕩器反相放大器輸出端。
58、</p><p> 5.7 74LS244驅(qū)動(dòng)器</p><p> 74LS244是單向總線驅(qū)動(dòng)器。是8輸入8輸出芯片,中1G和2G為使能端,低電平有效。它的外部管腳圖如圖5.8所示。</p><p> 74LS244是一種三態(tài)輸出的八緩沖器和線驅(qū)動(dòng)器,該芯片的邏輯電路圖和引腳圖如圖5.8所示。從圖5.8可見(jiàn),該緩沖器有8個(gè)輸入端,分為兩路——1A1~1A4
59、,2A1~2A4,同時(shí)8個(gè)輸出端,也分為兩路——1Y1~1Y4,2Y1~2Y4,分別由2個(gè)門控信號(hào)1G和2G控制,當(dāng)記為低電平時(shí),1Y1~1Y4的電平與1A1~1A4的電平相同,即輸出反映輸入電平的高低;同樣,當(dāng)2G為低電平時(shí),1Y1~1Y4的電平與2A1~2A4的電平和同。而當(dāng)1G(或2G)為高電平時(shí),輸出1A1~1A4(或2A1~2A4)為高阻態(tài)。經(jīng)74LS244緩沖后,輸入信號(hào)被驅(qū)動(dòng),輸出信號(hào)的驅(qū)動(dòng)能力加大了。</p>
60、<p> 其功能表如表5.4所示,表中 H為高電平,L為低電平,A為高阻態(tài),X為任意狀態(tài)</p><p> 表5.4 74LS244引腳功能表</p><p> 5.8 S8550PNP三極管</p><p> 5.8.1主要用途:</p><p> 作為音頻放大器,應(yīng)用于收錄機(jī)、電動(dòng)玩具等電子產(chǎn)品。(
61、與S8050互補(bǔ))</p><p> 其管腳圖如下圖5.9</p><p> 5.8.2極限值如下表5.5 </p><p> 5.8.3電參數(shù)(Ta=25℃)</p><p><b> 電參數(shù)表5.6</b></p><p> 5.9 四位一體數(shù)碼管</p><p&
62、gt; 四位一體數(shù)碼管的內(nèi)部結(jié)構(gòu),如圖5.10所示。由圖可知,四個(gè)數(shù)碼管的位控端連接在一起,共用8根數(shù)據(jù)線,四個(gè)公共端卻單獨(dú)占一根口線。假設(shè)段控端有段碼輸入時(shí),每個(gè)數(shù)碼管的段控端都收到了段碼,但只有位控線有效的數(shù)碼管才能顯示數(shù)據(jù),反之亦反。共陽(yáng)極數(shù)碼管段控端為低電平有效,位控端高電平有效,共陰極數(shù)碼管恰恰相反。</p><p> 四位一體數(shù)碼管用于動(dòng)態(tài)掃描,即把數(shù)碼管顯示數(shù)據(jù)的段控碼分時(shí)送到其對(duì)應(yīng)的段控端。當(dāng)
63、一個(gè)段控碼被送到段控端時(shí),顯示此段控碼數(shù)據(jù)的數(shù)碼管,它的位控端置有效電平,數(shù)碼管點(diǎn)亮;而其他數(shù)碼管的位控端送無(wú)效電平,數(shù)碼管不亮。持續(xù)點(diǎn)亮一段時(shí)間,再送其它的段控碼,依次把顯示段控碼的數(shù)碼管,使其位控端為有效電平,其他數(shù)碼管的位控端為無(wú)效電平,就這樣數(shù)碼管依次被點(diǎn)亮。四位一體數(shù)碼管共十二個(gè)引腳,從數(shù)碼管的正面看,它以第一腳為起點(diǎn),逆時(shí)針排列的。由圖可知,6、8、9、12為公共端,A-11、B-7、C-4、D-2、E-1、F-10、G-5
64、、DP-3。</p><p> 顯示字型和代碼關(guān)系如表5.3所示。</p><p> 表5.7 十六進(jìn)制數(shù)字型代碼</p><p> 6 單片機(jī)硬件資源的分配</p><p> 本次設(shè)計(jì)用到了單片機(jī)正常工作的硬件資源,如(連接晶振的引腳XTAL1和XTAL2,復(fù)位引腳RESET),對(duì)其硬件資源還做了具體的安排。</p>
65、<p><b> (1).P0口</b></p><p> 作為數(shù)碼管顯示器的段控輸出口,對(duì)數(shù)碼管顯示器進(jìn)行控制。</p><p><b> (2).P1口</b></p><p> P1.0~P1.3接了四個(gè)獨(dú)立式分別為A鍵、B鍵、C鍵、D鍵,用于對(duì)鍵盤的控制,P1.5、P1.6、P1.7則作為ISP程
66、序下載的輸入端。</p><p><b> (3).P2口</b></p><p> 該口全部用于數(shù)碼管的位控端。</p><p> (4).定時(shí)/計(jì)數(shù)器</p><p> 使用定時(shí)器0來(lái)實(shí)現(xiàn)本次電子鐘的運(yùn)行。</p><p> (5).內(nèi)部存儲(chǔ)單元</p><p&g
67、t; 30H存儲(chǔ)定時(shí)/計(jì)數(shù)器0的中斷次數(shù)。31H~36H分別作為時(shí)、分、秒個(gè)位和十位的數(shù)據(jù)存儲(chǔ)單元。79H~7E分別作為L(zhǎng)ED0、LED1、LED2、LED3、LED4、LED5顯示緩沖單元。</p><p><b> (6).通用寄存器</b></p><p> 第0組寄存器:R0、R1、R3、R7,用來(lái)存放鍵功能程序的數(shù)據(jù);第1組寄存器:R3,用來(lái)存放中斷服
68、務(wù)程序的數(shù)據(jù);第2組寄存器:R1、R4,用來(lái)存放顯示程序的數(shù)據(jù)。</p><p><b> (7).專用寄存器</b></p><p> 定時(shí)器控制寄存器TCON,通過(guò)設(shè)置該寄存器中TR0位的狀態(tài)來(lái)控制定時(shí)/計(jì)數(shù)器0的啟動(dòng)/停止;中斷允許寄存器IE,通過(guò)設(shè)置該寄存器EA/ET0位的狀態(tài)來(lái)設(shè)置定時(shí)/計(jì)數(shù)器0中斷允許/禁止;定時(shí)/計(jì)數(shù)器工作方式寄存器TMOD,設(shè)置定時(shí)
69、/計(jì)數(shù)器0的工作方式。</p><p> 7 程序流程圖 </p><p><b> 8 電子鐘程序清單</b></p><p> 調(diào)整運(yùn)行后的電子鐘程序清單</p><p> ;該程序?qū)崿F(xiàn)電子鐘時(shí)、分、秒運(yùn)行,時(shí)、分、秒調(diào)整;十、分、秒同時(shí)顯示;</p><p> ??;
70、共A、B、C、D四個(gè)按鍵,A鍵實(shí)現(xiàn)電子鐘的運(yùn)行和停止、B鍵調(diào)時(shí)、C鍵調(diào)分、D鍵調(diào)秒</p><p> ??;該電子鐘是單片機(jī)AT89S51控制,使用芯片中的定時(shí)器0方式1實(shí)現(xiàn)定時(shí)功能;P0口輸出段控碼、P2口輸出位控碼控制數(shù)碼管顯示</p><p> ??;該電子鐘共使用兩個(gè)4位一體數(shù)碼管(S02841A-B)顯示</p><p> ??;系統(tǒng)初始化程序*********
71、*******************************************</p><p> ORG 0000H</p><p> AJMP MAIN;轉(zhuǎn)到系統(tǒng)初始化程序</p><p> ORG 000BH</p><p> AJMP PITO;轉(zhuǎn)到定時(shí)器0中斷服務(wù)程序<
72、/p><p> ORG 0100H</p><p> MAIN: MOV SP, #60H;確立堆棧區(qū)</p><p> MOV TMOD, #01H;設(shè)定定時(shí)器0為工作方式1</p><p> MOV TL0, #0DCH;裝計(jì)數(shù)器初值</p><p>
73、; MOV TH0, #0BH</p><p> CLR 21H.0</p><p> CLR TR0H;TR0置“0”,定時(shí)關(guān)閉</p><p> SETB EAH;EA置“1”,中斷總允許</p><p> SETB ET0H ;ET0置“1”
74、,定時(shí)器0中斷</p><p><b> 允許</b></p><p> MOV 30H, #10H;循環(huán)次數(shù)</p><p> MOV 7EH, #0AH;P.點(diǎn)顯示初始化</p><p> MOV R0, #79H</p><p>
75、 MOV R1, #05H</p><p> PP: MOV @R0, #0BH</p><p> INC R0</p><p> DJNZ R1, PP</p><p> MOV R0, #31H;時(shí)、分、秒值存儲(chǔ)單元清零</p><p>
76、; MOV R1, #06H</p><p> Q00: MOV @R0, #00H</p><p> INC R0</p><p> DJNZ R1, Q00</p><p> ;監(jiān)控程序**********************************************
77、************ </p><p> LOOP: LCALL DIR;調(diào)顯示子程序</p><p> LCALL KEY;調(diào)鍵掃描子程序</p><p> LOOP1: JB 20H.0, KEYA ;A鍵是否按下,是跳轉(zhuǎn)到A鍵功能程序 </p><p> JB
78、 20H.1, KEYB ;B鍵是否按下,是跳轉(zhuǎn)到B鍵功能程序</p><p> JB 20H.2, KEYC ;C鍵是否按下,是跳轉(zhuǎn)到C鍵功能程序</p><p> JB 20H.3, KEYD ;D鍵是否按下,是跳轉(zhuǎn)到D鍵功能程序</p><p> LCALL DIR</p><p&
79、gt; LJMP LOOP;跳轉(zhuǎn)到監(jiān)控程序</p><p> ??;A鍵功能子程序****************************************************</p><p> KEYA: CPL TR0H ;開(kāi)啟/關(guān)閉定時(shí)器</p><p> SETB 21H.0</p&g
80、t;<p> AJMP LOOP ;返回</p><p> ;B鍵功能子程序****************************************************</p><p> KEYB: JB TR0H, KEYBO ;定時(shí)器是否運(yùn)行,是跳轉(zhuǎn)</p><p> JNB 21H
81、.0, KEYBOO</p><p> MOV R0, #36H ;時(shí)值存儲(chǔ)單元地址送R0</p><p> LCALL DAAD1 ;調(diào)加1子程序</p><p> MOV A, R3 ;時(shí)值加1后的值送累加器A</p><p> XRL A, #24H
82、 </p><p> JNZ KEYBO ;時(shí)值是否到24時(shí),否返回</p><p> LCALL CLR0 ;時(shí)值存儲(chǔ)單元清零</p><p> KEYBO: MOV 7DH, 35H</p><p> MOV 7EH, 36H</p>
83、<p> KEYBOO: LJMP LOOP ;返回監(jiān)控程序</p><p> ??;C鍵功能子程序****************************************************</p><p> KEYC: JB 8CH, KEYCO ;定時(shí)器是否運(yùn)行,否跳轉(zhuǎn)</p><p> JNB
84、 21H.0, KEYCOO</p><p> MOV R0, #34H ;分值存儲(chǔ)單元地址送R0</p><p> LCALL DAAD1 ;調(diào)加1子程序</p><p> MOV A, R3 ;分值加1后的值送累加器A</p><p> XRL A,
85、#60H</p><p> JNZ KEYCO ;分值是否到60分,否返回</p><p> LCALL CLR0 ;分值存儲(chǔ)單元清零</p><p> KEYCO: MOV 7CH, 34H</p><p> MOV 7BH, 33H</p><p>
86、 KEYCOO: LJMP LOOP ;返回監(jiān)控程序</p><p> ;D鍵功能子程序****************************************************</p><p> KEYD: JB 8CH, KEYDO ;定時(shí)器是否運(yùn)行,否跳轉(zhuǎn)</p><p> JNB 21H.0,
87、 KEYDOO</p><p> MOV R0, #32H ;秒值存儲(chǔ)單元地址送R0</p><p> LCALL DAAD1 ;調(diào)加1子程序</p><p> MOV A, R3 ;秒值加1后的值送R0</p><p> XRL A, #60H&
88、lt;/p><p> JNZ KEYDO;秒值是否到60秒,否返回</p><p> LCALL CLR0;秒值存儲(chǔ)單元清0</p><p> KEYDO: MOV 79H, 31H</p><p> MOV 7AH, 32H</p><p> KEYDOO
89、: LJMP LOOP;返回監(jiān)控程序</p><p> ?。恢袛喾?wù)程序******************************************************</p><p> PITO: PUSH PSW;中斷服務(wù)程序,現(xiàn)場(chǎng)保護(hù) </p><p> PUSH A</p&g
90、t;<p> SETB RS0;選第三組通用寄存器</p><p> SETB RS1</p><p> MOV TL0, #0DCH;計(jì)數(shù)器重新加載</p><p> MOV TH0, #0BH</p><p> MOV A, 30H
91、;循環(huán)次數(shù)減1</p><p> DEC A</p><p> MOV 30H, A</p><p> JNZ RETO;不滿16次,轉(zhuǎn)RET0返回</p><p> MOV 30H, #10H;滿16次開(kāi)始計(jì)時(shí)操作</p><p> MOV
92、 R0, #32H;秒顯示單元地址</p><p> ACALL DAAD1;秒加1</p><p> MOV A, R3;加1后秒值在R3中</p><p> XRL A, #60H;判是否到60秒</p><p> JNZ RET
93、O;不到轉(zhuǎn)RET0返回</p><p> ACALL CLR0;到60秒顯示單元清0</p><p> MOV R0, #34H;分顯示單元地址</p><p> ACALL DAAD1;分加1</p><p> MOV A, R3;加1后分值在
94、R3中</p><p> XRL A, #60H;判是否到60分</p><p> JNZ RETO;不到轉(zhuǎn)RET0返回</p><p> ACALL CLR0;到60分顯示單元清0</p><p> MOV R0, #36H;時(shí)顯示單元地址</
95、p><p> ACALL DAAD1;時(shí)加1</p><p> MOV A, R3;加1后時(shí)值在R3中</p><p> XRL A, #24H;判是否到24時(shí)</p><p> JNZ RETO;不到轉(zhuǎn)RET0返回</p><p>
96、; ACALL CLR0;到24時(shí)顯示單元清0</p><p> RETO: CLR RS0;返回第0組通用寄存器</p><p> CLR RS1</p><p> POP A;現(xiàn)場(chǎng)恢復(fù)</p><p> POP PSW</p><
97、;p> MOV 79H, 31H;時(shí)、分、秒值放緩沖區(qū)</p><p> MOV 7AH, 32H</p><p> MOV 7BH, 33H</p><p> MOV 7CH, 34H</p><p> MOV 7DH, 35H</p&
98、gt;<p> MOV 7EH, 36H</p><p> RETI ;中斷返回</p><p> ;加1子程序*******************************************************</p><p> DAAD1: MOV A, @R0 ;加1子
99、程序,十位送A</p><p> DEC R0</p><p> SWAP A;十位數(shù)占高4位</p><p> ORL A, @R0;個(gè)位數(shù)占低4位</p><p> ADD A, #01H;加1</p><p> DA
100、 A;十進(jìn)制調(diào)整</p><p> MOV R3, A;全值暫存R3中</p><p> ANL A, #0FH;屏蔽十位數(shù),取出個(gè)位數(shù)</p><p> MOV @R0, A;個(gè)位值送顯示緩沖單元</p><p> MOV A,
101、 R3</p><p> INC R0</p><p> ANL A, #0F0H;屏蔽個(gè)位數(shù)取出十位數(shù)</p><p> SWAP A;使十位數(shù)占低四位</p><p> MOV @R0, A;十位數(shù)送緩沖單元</p><p>
102、RET;返回</p><p> CLR0: CLR A;清緩沖單元子程序</p><p> MOV @R0, A;十位緩沖單元清“0”</p><p> DEC R0</p><p> MOV @R0, A;個(gè)位數(shù)緩沖單元清“0”</p>
103、;<p> RET;返回</p><p> ??;鍵盤掃描子程序***************************************************</p><p> KEY: LCALL KEYCHULI;調(diào)鍵值處理子程序</p><p> JZ EXIT;沒(méi)有鍵按下轉(zhuǎn)到返回</p
104、><p> LCALL DIR</p><p> LCALL DIR;調(diào)顯示去抖動(dòng)</p><p> LCALL KEYCHULI;調(diào)鍵值處理子程序</p><p> JZ EXIT;沒(méi)有鍵按下轉(zhuǎn)到返回</p><p> MOV B, 20H;保
105、存鍵值</p><p> KEYSF: LCALL KEYCHULI;調(diào)鍵值處理子程序</p><p> JZ KEY1;鍵釋放,轉(zhuǎn)到恢復(fù)鍵值</p><p> LCALL DIR;調(diào)顯示子程序延時(shí)</p><p> AJMP KEYSF;等到鍵釋放</p><
106、;p> KEY1: MOV 20H, B;鍵值送20H單元保存</p><p> EXIT: RET;返回</p><p> KEYCHULI: PUSH PSW;保護(hù)現(xiàn)場(chǎng)</p><p> CLR RS1;改變寄存器組號(hào)</p><p> SETB R
107、S0</p><p> MOV P1, #0FFH;先向P1口寫1</p><p> MOV A, P1;P1口值送累加器A</p><p> CPL A;A值取反</p><p> ANL A, #0FH;保存P1口的低4位</p>&
108、lt;p> MOV 20H, A;A值送20H保存</p><p> CLR RS1;改變寄存器組號(hào)</p><p> CLR RS0</p><p> POP PSW;恢復(fù)現(xiàn)場(chǎng)</p><p><b> RET</b></p>
109、<p> ??;顯示子程序********************************************************</p><p> DIR: PUSH PSW ;恢復(fù)現(xiàn)場(chǎng)</p><p> SETB RS1 ;改變寄存器組號(hào)</p><p> CLR RS0<
110、/p><p> MOV R0, #79H;建立顯示緩沖區(qū)首地址</p><p> MOV R3, #0FBH;設(shè)置位控碼</p><p> LD0: MOV P2, R3;送位控碼</p><p> MOV A, @R0;緩沖區(qū)值送累加器A</p&g
111、t;<p> DISP1: ADD A, #1BH</p><p> MOVC A, @A+PC;取段控碼并送A中</p><p> DISP2: MOV P0, A;送段控碼</p><p> MOV R2, #09H;設(shè)置延時(shí)循環(huán)次數(shù)</p>&l
112、t;p> ACALL DEY;延時(shí)點(diǎn)亮</p><p> INC R0;緩沖區(qū)地址加1</p><p> MOV A, R3;位控碼送A</p><p> JNB ACC.1, HERE;是否到最高位,是轉(zhuǎn)到返回</p><p> JBACC.5, L
113、D2</p><p><b> RL A</b></p><p> RL A;不到向顯示器高位移位</p><p> LD2:RL A</p><p> MOV R3, A;位控值保存到R4中</p><p> AJMP LD0
114、;繼續(xù)掃描</p><p> HERE: CLR RS0;改變寄存器組號(hào)</p><p> CLR RS1</p><p> POP PSW;恢復(fù)現(xiàn)場(chǎng)</p><p> RET;返回</p><p> DBB: DB 0C0H<
115、;/p><p> DB 0F9H</p><p> DB 0A4H</p><p> DB 0B0H</p><p> DB 99H</p><p> DB 92H</p><p> DB 82H</p><
116、p> DB 0F8H</p><p> DB 80H</p><p> DB 90H</p><p> DB 0CH</p><p> DB 0FFH</p><p> ??;延時(shí)子程序***********************************
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)多功能電子鐘畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)論文 單片機(jī)多功能電子鐘設(shè)計(jì)
- 單片機(jī)多功能電子鐘畢業(yè)設(shè)計(jì)
- 單片機(jī)多功能電子鐘畢業(yè)設(shè)計(jì)
- 單片機(jī)多功能電子鐘畢業(yè)設(shè)計(jì) (2)
- 基于單片機(jī)的多功能數(shù)字電子鐘設(shè)計(jì)畢業(yè)設(shè)計(jì)論文
- 單片機(jī)課程設(shè)計(jì)--多功能數(shù)字電子鐘
- 基于51單片機(jī)的多功能電子鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)— 多功能數(shù)字電子鐘
- 單片機(jī)課程設(shè)計(jì)報(bào)告---多功能電子鐘
- 單片機(jī)數(shù)字電子鐘畢業(yè)設(shè)計(jì)
- 單片機(jī)數(shù)字時(shí)鐘課程設(shè)計(jì)--單片機(jī)多功能電子鐘設(shè)計(jì)
- 多功能數(shù)字電子鐘畢業(yè)設(shè)計(jì)論文
- 單片機(jī)微型機(jī)課程設(shè)計(jì)---多功能電子鐘
- 基于單片機(jī)的多功能電子鐘課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-基于單片機(jī)的多功能電子鐘的設(shè)計(jì)
- 多功能數(shù)字電子鐘畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)----基于單片機(jī)的電子鐘設(shè)計(jì)
- 單片機(jī)課程論文設(shè)計(jì)-電子鐘設(shè)計(jì)
- 單片機(jī)課程論文設(shè)計(jì)電子鐘設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論