數(shù)字鐘畢業(yè)設計_第1頁
已閱讀1頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  [摘要]:近年來隨著計算機在社會領域的滲透和大規(guī)模集成電路的發(fā)展,單片機的應用正在不斷地走向深入,由于它具有功能強,體積小,功耗低,價格便宜,工作可靠,使用方便等特點,因此特別適合于與控制有關的系統(tǒng),越來越廣泛地應用于自動控制,智能化儀器,儀表,數(shù)據(jù)采集,軍工產(chǎn)品以及家用電器等各個領域,單片機往往是作為一個核心部件來使用,在根據(jù)具體硬件結構,以及針對具體應用對象特點的軟件結合,以作完善。本次做的數(shù)字鐘是以單片機(A

2、T89C51)為核心,結合相關的元器件,再配以相應的軟件,其硬件電路設計主要包括中央處理單元電路、時鐘電路等部分組成。</p><p>  [關鍵字]:單片機 電子時鐘 AT89C51 </p><p><b>  第一章 緒 論</b></p><p><b>  第一節(jié) 課題簡介</b></p&

3、gt;<p>  該產(chǎn)品介紹一個采用AT89C51單片機芯片制作的“數(shù)碼顯示電子鐘”,該LED數(shù)碼管時鐘電路采用24小時計時方式,時、分、秒用六位數(shù)碼管顯示。該電路采用AT89C51單片機,使用橋式整流電流電路和變壓器將交流電轉(zhuǎn)化為直流電,其具有電路簡單、制作容易、設置方便、使用靈活等優(yōu)點。</p><p>  第二節(jié) 系統(tǒng)功能要求</p><p>  1.本電路采用的內(nèi)部

4、振蕩器方式,晶體振蕩器頻率為12MHZ,具有較高的頻率穩(wěn)定性,且延時采用數(shù)字計數(shù)的方式進行,因而對時間的控制、精度較高,可有效地控制時間不準、不可靠的問題出現(xiàn)。</p><p>  2.初始加電時,顯示初始狀態(tài),本電路的6位數(shù)碼顯示管將自動顯示出程序默認的時間,只要不進行新的時間設置,數(shù)碼管將從初始狀態(tài)起計時。本程序的初始狀態(tài)設為00:00:00。</p><p>  3.本電路允許用戶隨

5、時通過閃爍和加1的功能來輸入和設置新的時間參數(shù),范圍在1S和24H之間任意調(diào)試,使用戶可以根據(jù)自身的需求來進行不同的時間來設置.</p><p>  4.當調(diào)時進行完畢后,數(shù)碼管顯示將根據(jù)程序的要求自動加入1S秒兩位累計加到六十時,向分位進一;分兩位累計加到六十時,向時位進一;當時兩位累計加到二十三,且分位為五十九秒位為五十九時,十位分位秒位自動歸零.并且具有整點報時功能.</p><p>

6、;  5.本電路的外接電源可用5V直流電池電源,可以將交流電壓轉(zhuǎn)變成直流電,簡單方便.</p><p>  6.在進行時間參數(shù)的設置和整個顯示過程中系統(tǒng)采用六位數(shù)碼管做”時位分位秒位”來計時顯示,直觀又準確.</p><p><b>  第二章 設計方案</b></p><p>  隨著社會科技文化的發(fā)展,電子、電腦技術的不斷提高,許多電路都

7、有了不同的設計方案及連接方法。相同的產(chǎn)品用不同的系統(tǒng)也能用不同的原理去制成。</p><p>  數(shù)字鐘作為一個普通的生活用品,有多種不同的制作方案。雖然數(shù)字鐘比較簡單,但作為我初次實驗設計方案,對于我們初學者來說還是很有幫助的。</p><p>  在制作數(shù)字鐘電路時,我選擇了二種使用設計方案。第一種是用上述所說的單片機(AT89C51)制作的。第二種主要是用JK觸發(fā)器制作的。</

8、p><p><b>  第一節(jié) 設計功能</b></p><p>  為了達到本次設計的要求,有眾多方法可以選擇,如:運用電子電路設計就是其中一種。才用大量門元件組成數(shù)字鐘電路,但因條件有限,再加上其十分煩瑣、焊接復雜、精度不高,達不到本次設計的目的,故不采用。為了達到實現(xiàn)LED顯示器的數(shù)字顯示,可采用動態(tài)顯示法和靜態(tài)顯示法。由于靜態(tài)顯示法需要數(shù)據(jù)鎖存器等硬件,接口又稍

9、微復雜一些,而本身此次設計時鐘顯示只有六位,并且系統(tǒng)本身又沒有其它什么繁重的處理任務,所以決定采用動態(tài)掃描法實現(xiàn)LED的顯示。設計中單片機采用容易購買的AT89C51系列,單片機就具有足夠的空余硬件資源實現(xiàn)其它的擴展功能,如果考慮到要采用電池供電的話,則可采用其它適合型號的單片機,在軟件方面,通過程序的編制,可以很快的通過運用偉福軟件進行修改,大大的提高了工作效率,程序灌輸也很迅速。</p><p>  第二節(jié)

10、 實現(xiàn)功能方法</p><p>  第一種方案(見原理圖)</p><p>  第一種方案的特點比較明顯:(1)可靠性高 (2)性能價格比高 </p><p> ?。?)操作簡便 (4)才用AT89C51單片機系統(tǒng)相對的比前者的集成化程度更高。而基本的功能和元器件在[電路的設計方案和功能要求]中會詳細說明。</p><p>  兩種電路方

11、案相比較之下,前者的方案雖然價格不是很貴,也比較實用、精確。但其電子元件相對多了很多(例如僅是觸發(fā)器就有13個之多)。使得電路的焊接就顯得非常困難。在短期的實踐中就會顯得比較倉促。更重要的一點就是當今社會的發(fā)展趨勢是更趨向于高度的集成化。所以我選擇了后者即單片機控制時數(shù)碼管顯示電路。這個方案不僅電路簡單,也更符合發(fā)展的趨勢,將高度的集成化融入實踐中更具實際意義。</p><p>  第二種方案:如下圖所示:<

12、;/p><p>  第二種方案的設計思路:首先,應有一種秒脈沖產(chǎn)生器,由石英體振蕩器產(chǎn)生的基準信號,經(jīng)過整形和分頻獲得。秒脈沖經(jīng)過秒計數(shù)器(60進制)可以累計秒脈沖數(shù),而秒計數(shù)器輸出的分脈沖計數(shù)器(60進制)累計分鐘數(shù)。同樣,分計數(shù)器輸出的脈沖經(jīng)計數(shù)器(24進制)可累計時分數(shù)。這些時、分、秒計數(shù)通過譯碼器和顯示器顯示。最后需要考慮校時電路。</p><p>  這種設計方案中主要用到的是JK觸

13、發(fā)器。采用8421碼異步工作方式。計數(shù)方式則采用60進制與24進制。60進制就是10進制與6進制的串聯(lián)組合。24進制則采用40進制的組合,通過適當?shù)姆答伻サ舳嘤嗟?6個狀態(tài)形成24進制。</p><p>  10進制中用到了4個JK觸發(fā)器,驅(qū)動方程:</p><p>  J3=Q2Q1 J2=1 J1=Q3 J0=1</p><p>  K

14、3=1 K2=1 K1=1 K0=1</p><p>  6進制中用到了3個JK觸發(fā)器,驅(qū)動方程:</p><p>  J2=Q1 J1=Q2 J0=1</p><p>  K2=1 K1=1 K0=1</p><p>  各級譯碼和顯示電路都是由5Y8譯碼器和Y

15、S13-3八段式熒光數(shù)碼管組成。工作原理就是把脈沖的數(shù)累加起來,并把個觸發(fā)器的不同狀態(tài)選給5Y8進行譯碼。譯碼器譯出來的譯碼再進到數(shù)碼管,使其相應的字碼發(fā)光,從而直接顯示出來。</p><p>  最后則是一個校時電路(如前圖)</p><p> ?。?)調(diào)分、調(diào)秒電路:可接開關K1(調(diào)時)、K2(調(diào)分)、K3(調(diào)秒)。引入脈沖或0.2秒脈沖調(diào)至新校數(shù)字為止。</p><

16、;p> ?。?)報時清零電路:有單脈沖產(chǎn)生電路(由按鈕開關K4和基本觸發(fā)器構成)組成報時清零電路。</p><p><b>  第三節(jié) 方案論證</b></p><p>  從上面幾種方案可以看出,利用單片機所設計的數(shù)字鐘要比采用電子電路所設計的數(shù)字鐘有明顯的優(yōu)越性。利用AT89C51單片機控制的硬件電路比較簡單,軟件方面程序也不復雜。因此,制作原理簡單,可在

17、功能作用上要比電子電路設計的數(shù)字鐘精確廣泛,方便小巧又通俗易懂。在本次設計采用單片機設計中,動態(tài)掃描顯示法又有靜態(tài)掃描法無法比擬的優(yōu)點,故本次設計采用了以AT89C51為核心,利用其外部電路和數(shù)碼管的動態(tài)掃描的設計思想。</p><p>  第三章 硬件設計分析</p><p>  第一節(jié) 硬件框圖</p><p>  第二節(jié) 數(shù)字鐘電路原理圖</p

18、><p><b>  第三節(jié) 硬件分析</b></p><p><b> ?。ㄒ唬┕ぷ鬟^程</b></p><p>  本電路采用的是AT89C51單片機,使用5V電池供電,使用三個開關就可以進入調(diào)時、省電(不顯示LED數(shù)碼管)和正常顯示三種狀態(tài)。數(shù)碼管的時鐘設計電路如原理圖所示,其采用AT89C51單片機最小應用動態(tài)掃描方

19、式實現(xiàn)。P1口輸出段碼數(shù)據(jù),P3.0~P3.5口作為掃描輸出,P3.7口接按鈕開關。為了給LED數(shù)碼管提供足夠的驅(qū)動電流,用三極管9012做電源的驅(qū)動輸出。為了提高秒計時的精確性,因而采用了12MHZ的晶振。SET為復位操作鍵,在此接10UF電解電容,按鍵開關和10K電阻,實現(xiàn)復位操作鍵SET時,六位數(shù)碼管顯示00:00:00,即從新開始計時,外接晶體引腳XTAL1和XTAL2分別接石英晶體12MHZ兩端,再并聯(lián)2個30PF電容接地,它

20、是單片機的反相放大器的輸入和輸出端,構成了片內(nèi)振蕩器。單片機在時鐘電路工作以后,在RST端持續(xù)給出2個機器周期的高電平就可以完成復位操作。訪問片內(nèi)程序存儲器的控制信號時需在EA/VP上接皆V電源,因為當它為高電平時,單片機訪問片內(nèi)程序存儲器4KB。</p><p> ?。ǘ?shù)值計算和電阻取值</p><p><b>  如圖所示</b></p><

21、;p>  假設LED數(shù)碼顯示器八段全亮,則集成極電流Ics為240mA,基極與發(fā)射極之間的電壓2伏,則基極電流Ib=U/R,即為(5-2)/R,又因為集電極電流為共射電流放大系數(shù)B與基極電流之積,即Ic=BIb,當(5-2)/R>240mA/B時,PNP工作在飽和區(qū),即R<(5-2)*B/240.因此,在此電路中,我們?nèi)‰娮枳柚禐?00,使PNP工作在飽和區(qū).具體計算如下</p><p><

22、;b>  U1=2V</b></p><p><b>  Ics=240Ma</b></p><p>  Ib=U/R=(5-2)/R</p><p><b>  Ic=βIb</b></p><p><b>  Ib=Ic/β</b></p>

23、<p>  (5-2)/R≤240mA/β</p><p>  R≥(5-2)*β/240</p><p><b>  β=100</b></p><p><b>  R=100</b></p><p><b>  (三)元件清單</b></p><

24、;p>  名稱 型號規(guī)格 數(shù)量</p><p>  單片機 AT89C51 1</p><p>  LED數(shù)碼顯示管 SM4105 6</p><p>  電阻 RES2,100 7&

25、lt;/p><p>  RES2,10K 1</p><p>  RES2,4.7K 6</p><p>  三極管 9012 6</p><p>  有極性電容 ELECTR01,10UF 1</p>

26、<p>  無極性電容 CAP,30PF 2</p><p>  石英晶體 CRYSTAL,12MHZ 1</p><p>  按鍵開關 SW-PB 3</p><p>  蜂鳴器

27、 1</p><p>  第四章 軟件設計</p><p>  第一節(jié) 單片機匯編語言</p><p>  自從1946世界上第一臺數(shù)字電子計算機問世以來,計算機應用領域不斷擴大,計算機技術高速發(fā)展,尤其是近幾年來計算機的硬件和軟件日新月異。作為應用計算機的一種程序設計語言,也得到了不斷的充實和完善。</p><p>  由于構成計

28、算機的電子器件的特性所決定,計算機只能識別二進制代碼。這種以二進制代碼來描述指令功能代碼的語言,稱之為機器語言。用機器語言組成的程序,稱為目標程序。計算機就是按照機器語言的指令來完成各種功能操作的,它具有程序簡潔,占有存儲空間小,執(zhí)行速度快,控制功能強等特點。由于機器語言只是一種二進制數(shù)0、1組成的代碼。人們不易識別、記憶和書寫,因此使用不便,易錯,也很難用它來進行程序設計。</p><p>  為了既能體現(xiàn)機器

29、語言的特點,又便于人們的理解、記憶和書寫,計算機常采用助記符來編寫指令。助記符是根據(jù)機器指令不同的功能和操作對象來描述指令的。由于它采用有關英文的縮寫來描述指令的特征,因此不但便于記憶,也便于理解和分類。這種采用助記符和其他一些符號所編寫的指令程序,稱為匯編語言源程序。只要經(jīng)過匯編就可將源程序變成計算機可執(zhí)行的目標程序。但要注意的一個問題是,匯編語言與計算機的類型有關,不同的機器要完成同樣的功能。他們的助記符,即英文的縮寫有可能不同。因

30、此對不同的機器要掌握不同的匯編語言助記符,使用很不方便。</p><p>  單片機程序存儲器中存儲程序或常數(shù)表格,都是以二進制形式存放的機器語言程序,要把用助記符編制的匯編語言源程序翻譯成二進制目標程序有兩種途徑:一種是利用單片機開發(fā)裝置或PC機,用配有的匯編程序工具把匯編語言源程序編譯成目標程序;另一種是人工翻譯。</p><p>  第二節(jié) 系統(tǒng)主要程序設計</p>&

31、lt;p>  顯示緩沖單元在70H—75H,70H—71H顯示秒,72H—73H顯示分,74H—75H顯示時;時間計數(shù)單元在70H—71H(秒),76H—77H(分),78H—79H(時),74H單元放熄滅符(#0AH);計數(shù)單元采用BCD碼計數(shù),定時器T0設置為50ms溢出中斷,為秒計數(shù)用,定時器T1為調(diào)整時閃爍用</p><p>  P3.7為調(diào)整按鈕,P1口為字符輸出口,采用共陽顯示管。</p&

32、gt;<p>  1.主程序:從本設計的主程序流程圖中可以看出,當按下復位開關SET時,顯示單元開始清零,將T0、T1設為16位計數(shù)器模式。此時允許T0中斷,然后調(diào)用子程序,如果此時P3.7口為零,即輸入為低電平,表示此時復位鍵SET已經(jīng)按下,即可進入調(diào)時程序進行時間設置。如若P3.7口不為零,為1,即高電平,則程序返回到顯示子程序,繼續(xù)執(zhí)行,進行時間加1S,如此循環(huán)。</p><p><b&

33、gt;  N</b></p><p><b>  Y</b></p><p><b>  2.顯示子程序:</b></p><p>  數(shù)碼管的顯示的數(shù)據(jù)存放在內(nèi)存單元70H—75H中,其中70H—71H存放秒數(shù)據(jù),72H—73H存放分數(shù)據(jù),74H—75H存放時數(shù)據(jù)。每一單元內(nèi)均為十進制BCD碼。由于采用軟件動

34、態(tài)掃描實現(xiàn)數(shù)據(jù)顯示功能,顯示用十進制BCD碼數(shù)據(jù)的對應碼段存放在ROM表中。顯示時,先取出70H—75H某一地址中的數(shù)據(jù),然后查它的對應的顯示用碼段從P1口輸出。P3口將對應的數(shù)碼管選種供電,這樣就能顯示地址單元的數(shù)據(jù)值。</p><p>  3.定時器T0中斷服務程序:</p><p>  這是本次時鐘設計的關鍵,也是重中之重。定時器T0的作用是用來進行時間計時。定時溢出中斷周期設為50

35、ms ,中斷累計達20次,即1s鐘時對秒計時單元的數(shù)據(jù)進行加1操作。在執(zhí)行T0中斷服務程序時采用了BCD碼計數(shù),滿60進位。具體分析見下圖:</p><p><b>  N</b></p><p><b>  N</b></p><p><b>  N</b></p><p>

36、;<b>  N</b></p><p><b>  N</b></p><p>  4.調(diào)時程序調(diào)時程序是本次設計的一個重點,也是一個難點,因此,此次設計對調(diào)時程序作了較為詳細的分析。調(diào)時功能程序的設計方法是:按下按鈕,若按下時時間小于1S,進入省電狀態(tài)(數(shù)碼管不亮,時鐘不停),否則進入調(diào)分狀態(tài),等待操作,此時計時器停止走動。當再次按下按鈕時

37、,若按下時間小于0.5s,則時間加1分鐘;若按下時間大于0.5s,則進入小時調(diào)整狀態(tài)。在小時調(diào)整狀態(tài)下,當按鍵按下的時間大于0.5s時退出調(diào)整狀態(tài),時鐘繼續(xù)走動。 </p><p>  第三節(jié) 數(shù)字鐘匯編語言源程序</p><p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

38、;;;;;;;;</p><p>  ;; 中斷入口程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b>  ;</b></p><p>  ORG 0000H ;程序執(zhí)行開始

39、地址</p><p>  LJMP START ;跳到標號START執(zhí)行</p><p>  ORG 0003H ;外中斷0中斷程序入口</p><p>  RETI ;外中斷0中斷返回</p><p>  ORG 000BH ;定時器T0中斷程序入口</p>&l

40、t;p>  LJMP INTT0 ;跳至INTTO執(zhí)行</p><p>  ORG 0013H ;外中斷1中斷程序入口</p><p>  RETI ;外中斷1中斷返回</p><p>  ORG 001BH ;定時器T1中斷程序入口</p><p>  LJMP

41、 INTT1 ;跳至INTT1執(zhí)行</p><p>  ORG 0023H ;串行中斷程序入口地址</p><p>  RETI ;串行中斷程序返回</p><p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

42、;;;;;</p><p>  ;; 主 程 序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ; START: MOV R0,#70H ;清70H-7AH共11個內(nèi)存單元</p><p>  

43、MOV R7,#0BH ;</p><p>  CLEARDISP: MOV @R0,#00H ;</p><p>  INC R0 ;</p><p>  DJNZ R7,CLEARDISP ;</p><p>  MOV 20H,#00H ;清20H(標志用)

44、</p><p>  MOV 7AH,#0AH ;放入"熄滅符"數(shù)據(jù)</p><p>  MOV TMOD,#11H ;設T0、T1為16位定時器</p><p>  MOV TL0,#0B0H ;50MS定時初值(T0計時用)</p><p>  MOV TH0,#3CH

45、 ;50MS定時初值</p><p>  MOV TL1,#0B0H ;50MS定時初值(T1閃爍定時用)</p><p>  MOV TH1,#3CH ;50MS定時初值</p><p>  SETB EA ;總中斷開放</p><p>  SETB ET0 ;允

46、許T0中斷</p><p>  SETB TR0 ;開啟T0定時器</p><p>  MOV R4,#14H ;1秒定時用初值(50MS×20)</p><p>  START1: LCALL DISPLAY ;調(diào)用顯示子程序</p><p>  JNB P3.7,SET

47、MM1 ;P3.7口為0時轉(zhuǎn)時間調(diào)整程序</p><p>  SJMP START1 ;P3.7口為1時跳回START1</p><p>  SETMM1: LJMP SETMM ;轉(zhuǎn)到時間調(diào)整程序SETMM</p><p><b>  ;</b></p><p>  ;;;

48、;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 1秒計時程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b>  ;T0中斷服務程序</b></p>

49、;<p>  INTT0: PUSH ACC ;累加器入棧保護</p><p>  PUSH PSW ;狀態(tài)字入棧保護</p><p>  CLR ET0 ;關T0中斷允許</p><p>  CLR TR0 ;關閉定時器T0</p><p&

50、gt;  MOV A,#0B7H ;中斷響應時間同步修正</p><p>  ADD A,TL0 ;低8位初值修正</p><p>  MOV TL0,A ;重裝初值(低8位修正值)</p><p>  MOV A,#3CH ;高8位初值修正</p><p>  ADD

51、C A,TH0 ;</p><p>  MOV TH0,A ;重裝初值(高8位修正值)</p><p>  SETB TR0 ;開啟定時器T0</p><p>  DJNZ R4, OUTT0 ;20次中斷未到中斷退出</p><p>  ADDSS: MOV R4,#

52、14H ;20次中斷到(1秒)重賦初值</p><p>  MOV R0,#71H ;指向秒計時單元(71H-72H)</p><p>  ACALL ADD1 ;調(diào)用加1程序(加1秒操作)</p><p>  MOV A,R3 ;秒數(shù)據(jù)放入A(R3為2位十進制數(shù)組合)</p>&l

53、t;p>  CLR C ;清進位標志</p><p>  CJNE A,#60H,ADDMM ;</p><p>  ADDMM: JC OUTT0 ;小于60秒時中斷退出</p><p>  ACALL CLR0 ;大于或等于60秒時對秒計時單元清0</

54、p><p>  MOV R0,#77H ;指向分計時單元(76H-77H)</p><p>  ACALL ADD1 ;分計時單元加1分鐘</p><p>  MOV A,R3 ;分數(shù)據(jù)放入A</p><p>  CLR C ;清進位

55、標志</p><p>  CJNE A,#60H,ADDHH ;</p><p>  ADDHH: JC OUTT0 ;小于60分時中斷退出</p><p>  ACALL CLR0 ;大于或等于60分時分計時單元清0</p><p>  MOV R0,#79H

56、 ;指向小時計時單元(78H-79H)</p><p>  ACALL ADD1 ;小時計時單元加1小時</p><p>  MOV A,R3 ;時數(shù)據(jù)放入A</p><p>  CLR C ;清進位標志</p><p>  CJNE A,

57、#24H,HOUR ;</p><p>  HOUR: JC OUTT0 ;小于24小時中斷退出</p><p>  ACALL CLR0 ;大于或等于24小時小時計時單元清OUTT0: MOV 72H,76H ;中斷退出時將分、時計時單元數(shù)據(jù)移</p><p>  MOV

58、 73H,77H ;入對應顯示單元</p><p>  MOV 74H,78H ;</p><p>  MOV 75H,79H ;</p><p>  POP PSW ;恢復狀態(tài)字(出棧)</p><p>  POP ACC

59、 ;恢復累加器</p><p>  SETB ET0 ;開放T0中斷</p><p>  RETI ;中斷返回</p><p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

60、;;;;</p><p>  ;; 閃動調(diào)時 程 序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;T1中斷服務程序,用作時間調(diào)整時調(diào)整單元閃爍指示</p><p>  INTT1: PUSH ACC

61、 ;中斷現(xiàn)場保護</p><p>  PUSH PSW ;</p><p>  MOV TL1, #0B0H ;裝定時器T1定時初值</p><p>  MOV TH1, #3CH ;</p><p>  DJNZ R2,INTT1OU

62、T ;0.3秒未到退出中斷(50MS中斷6次)</p><p>  MOV R2,#06H ;重裝0.3秒定時用初值</p><p>  CPL 02H ;0.3秒定時到對閃爍標志取反</p><p>  JB 02H,FLASH1 ;02H位為1時顯示單元"熄滅"

63、;</p><p>  MOV 72H,76H ;02H位為0時正常顯示</p><p>  MOV 73H,77H ;</p><p>  MOV 74H,78H ;</p><p>  MOV 75H,79H ;</p><p>  I

64、NTT1OUT: </p><p>  POP PSW ;恢復現(xiàn)場</p><p>  POP ACC ;</p><p>  RETI ;中斷退出</p><p>  FLASH1: JB 01H,FLASH2 ;01H位為1時,轉(zhuǎn)小

65、時熄滅控制</p><p>  MOV 72H,7AH ;01H位為0時,"熄滅符"數(shù)據(jù)放入分</p><p>  MOV 73H,7AH ;顯示單元(72H-73H),將不顯示分數(shù)據(jù)</p><p>  MOV 74H,78H ;</p><p>  MOV

66、 75H,79H ;</p><p>  AJMP INTT1OUT ;轉(zhuǎn)中斷退出</p><p>  FLASH2: MOV 72H,76H ;01H位為1時,"熄滅符"數(shù)據(jù)放入小時</p><p>  MOV 73H,77H ;顯示單元(74H-75H),小時數(shù)據(jù)將不顯示</

67、p><p>  MOV 74H,7AH ;</p><p>  MOV 75H,7AH ;</p><p>  AJMP INTT1OUT ;轉(zhuǎn)中斷退出</p><p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;

68、;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 加1子 程 序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b>  ;</b></p><p>  ADD1:

69、MOV A,@R0 ;取當前計時單元數(shù)據(jù)到A</p><p>  DEC R0 ;指向前一地址</p><p>  SWAP A ;A中數(shù)據(jù)高四位與低四位交換</p><p>  ORL A,@R0 ;前一地址中數(shù)據(jù)放入A中低四位</p><p>  ADD A,#01H

70、 ;A加1操作</p><p>  DA A ;十進制調(diào)整</p><p>  MOV R3,A ;移入R3寄存器</p><p>  ANL A,#0FH ;高四位變0</p><p>  MOV @R0,A ;放回前一地址單元</p><p>  MOV

71、 A,R3 ;取回R3中暫存數(shù)據(jù)</p><p>  INC R0 ;指向當前地址單元</p><p>  SWAP A ;A中數(shù)據(jù)高四位與低四位交換</p><p>  ANL A,#0FH ;高四位變0</p><p>  MOV @R0,A ;數(shù)據(jù)放入當削地址單元中&

72、lt;/p><p>  RET ;子程序返回</p><p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;; 清零程序 ;;</p>

73、;<p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b>  ;對計時單元復零用</b></p><p>  CLR0: CLR A ;清累加器</p><p>  MOV @R0,A ;清當前地址單元</p>&

74、lt;p>  DEC R0 ;指向前一地址</p><p>  MOV @R0,A ;前一地址單元清0</p><p>  RET ;子程序返回</p><p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;

75、;;;;;;;;;;;;;;;;;</p><p>  ;; 時鐘調(diào)整程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;當調(diào)時按鍵按下時進入此程序 </p><p>

76、;  SETMM: CLR ET0 ;關定時器T0中斷</p><p>  CLR TR0 ;關閉定時器T0</p><p>  LCALL DL1S ;調(diào)用1秒延時程序</p><p>  JB P3.7,CLOSEDIS ;鍵按下時間小于1秒,關閉顯示(省電)</p>

77、<p>  MOV R2,#06H ;進入調(diào)時狀態(tài),賦閃爍定時初值</p><p>  SETB ET1 ;允許T1中斷</p><p>  SETB TR1 ;開啟定時器T1</p><p>  SET2: JNB P3.7,SET1 ;P3.7口為0(鍵未釋放),等待&l

78、t;/p><p>  SETB 00H ;鍵釋放,分調(diào)整閃爍標志置1</p><p>  SET4: JB P3.7,SET3 ;等待鍵按下</p><p>  LCALL DL05S ;有鍵按下,延時0.5秒</p><p>  JNB P3.7,SETHH ;

79、按下時間大于0.5秒轉(zhuǎn)調(diào)小時狀態(tài)</p><p>  MOV R0,#77H ;按下時間小于0.5秒加1分鐘操作</p><p>  LCALL ADD1 ;調(diào)用加1子程序</p><p>  MOV A,R3 ;取調(diào)整單元數(shù)據(jù)</p><p>  CLR C

80、 ;清進位標志</p><p>  CJNE A,#60H,HHH ;調(diào)整單元數(shù)據(jù)與60比較</p><p>  HHH: JC SET4 ;調(diào)整單元數(shù)據(jù)小于60轉(zhuǎn)SET4循環(huán)</p><p>  LCALL CLR0 ;調(diào)整單元數(shù)據(jù)大于或等于60時清0</p><p>  CLR C

81、 ;清進位標志</p><p>  AJMP SET4 ;跳轉(zhuǎn)到SET4循環(huán)CLOSEDIS:SETB ET0 ;省電(LED不顯示)狀態(tài)。開T0中斷</p><p>  SETB TR0 ;開啟T0定時器(開時鐘)</p><p>  CLOSE: JB P3.7,CL

82、OSE ;無按鍵按下,等待。</p><p>  LCALL DISPLAY ;有鍵按下,調(diào)顯示子程序延時削抖</p><p>  JB P3.7,CLOSE ;是干擾返回CLOSE等待</p><p>  WAITH: JNB P3.7,WAITH ;等待鍵釋放</p><p>  LJM

83、P START1 ;返回主程序(LED數(shù)據(jù)顯示亮)</p><p>  SETHH: CLR 00H ;分閃爍標志清除(進入調(diào)小時狀態(tài))</p><p>  SETHH1: JNB P3.7,SET5 ;等待鍵釋放</p><p>  SETB 01H ;小時調(diào)整標志置

84、1</p><p>  SET6: JB P3.7,SET7 ;等待按鍵按下</p><p>  LCALL DL05S ;有鍵按下延時0.5秒</p><p>  JNB P3.7,SETOUT ;按下時間大于0.5秒退出時間調(diào)整</p><p>  MOV R0,#79H

85、 ;按下時間小于0.5秒加1小時操作</p><p>  LCALL ADD1 ;調(diào)加1子程序</p><p>  MOV A,R3 ;</p><p>  CLR C ;</p><p>  CJNE A,#24H,HOUU ;計時單元數(shù)據(jù)與

86、24比較</p><p>  HOUU: JC SET6 ;小于24轉(zhuǎn)SET6循環(huán)</p><p>  LCALL CLR0 ;大于或等于24時清0操作</p><p>  AJMP SET6 ;跳轉(zhuǎn)到SET6循環(huán)</p><p>  SETOUT: JNB

87、 P3.7,SETOUT1 ;調(diào)時退出程序。等待鍵釋放</p><p>  LCALL DISPLAY ;延時削抖</p><p>  JNB P3.7,SETOUT ;是抖動,返回SETOUT再等待</p><p>  CLR 01H ;清調(diào)小時標志</p><p&

88、gt;  CLR 00H ;清調(diào)分標志</p><p>  CLR 02H ;清閃爍標志</p><p>  CLR TR1 ;關閉定時器T1</p><p>  CLR ET1 ;關定時器T1中斷</p><p>

89、  SETB TR0 ;開啟定時器T0</p><p>  SETB ET0 ;開定時器T0中斷(計時開始)</p><p>  LJMP START1 ;跳回主程序</p><p>  SET1: LCALL DISPLAY ;鍵釋放等待時調(diào)用顯示程序(調(diào)分)</p

90、><p>  AJMP SET2 ;防止鍵按下時無時鐘顯示</p><p>  SET3: LCALL DISPLAY ;等待調(diào)分按鍵時時鐘顯示用</p><p>  AJMP SET4</p><p>  SET5: LCALL DISPLAY ;鍵釋放等待時調(diào)用顯示程

91、序(調(diào)小時)</p><p>  AJMP SETHH1 ;防止鍵按下時無時鐘顯示</p><p>  SET7: LCALL DISPLAY ;等待調(diào)小時按鍵時時鐘顯示用</p><p>  AJMP SET6</p><p>  SETOUT1: LCALL DISPLAY

92、 ;退出時鐘調(diào)整時鍵釋放等待</p><p>  AJMP SETOUT ;防止鍵按下時無時鐘顯示</p><p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ;;

93、顯示程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p>  ; 顯示數(shù)據(jù)在70H-75H單元內(nèi),用六位LED共陽數(shù)碼管顯示,P1口輸出段碼數(shù)據(jù),P3口作</p><p>  ; 掃描控制,每個LED數(shù)碼管亮1MS時間再逐位循環(huán)。</p>&

94、lt;p>  DISPLAY: MOV R1,#70H ;指向顯示數(shù)據(jù)首址</p><p>  MOV R5,#0FEH ;掃描控制字初值</p><p>  PLAY: MOV A,R5 ;掃描字放入A</p><p>  MOV P3,A ;從P3口輸出</p><

95、;p>  MOV A,@R1 ;取顯示數(shù)據(jù)到A</p><p>  MOV DPTR,#TAB ;取段碼表地址</p><p>  MOVC A,@A+DPTR ;查顯示數(shù)據(jù)對應段碼</p><p>  MOV P1,A ;段碼放入P1口</p><p>  LCALL

96、DL1MS ;顯示1MS</p><p>  INC R1 ;指向下一地址</p><p>  MOV A,R5 ;掃描控制字放入A</p><p>  JNB ACC.5,ENDOUT ;ACC.5=0時一次顯示結束</p><p>  RL A

97、 ;A中數(shù)據(jù)循環(huán)左移</p><p>  MOV R5,A ;放回R5內(nèi)</p><p>  AJMP PLAY ;跳回PLAY循環(huán)</p><p>  ENDOUT: SETB P3.5 ;一次顯示結束,P3口復位</p><p>  MOV P1

98、,#0FFH ;P1口復位</p><p>  RET ;子程序返回</p><p>  TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH</p><p>  ;共陽段碼表 "0""1"&q

99、uot;2" "3""4""5""6""7" "8""9""不亮"</p><p><b>  ;</b></p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

100、;;;;;</p><p>  ;; 延時程序 ;;</p><p>  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b>  ;</b></p><p>  ;1MS延時程序,LED顯示程序用</p&g

101、t;<p>  DL1MS: MOV R6,#14H</p><p>  DL1: MOV R7,#19H</p><p>  DL2: DJNZ R7,DL2</p><p>  DJNZ R6,DL1</p><p><b>  RET</b></p><p> 

102、 ;20MS延時程序,采用調(diào)用顯示子程序以改善LED的顯示閃爍現(xiàn)象</p><p>  DS20MS: ACALL DISPLAY</p><p>  ACALL DISPLAY</p><p>  ACALL DISPLAY</p><p><b>  RET</b></p><p> 

103、 ;延時程序,用作按鍵時間的長短判斷</p><p>  DL1S: LCALL DL05S</p><p>  LCALL DL05S</p><p><b>  RET</b></p><p>  DL05S: MOV R3,#20H ;8毫秒*32=0.196秒</p><p

104、>  DL05S1: LCALL DISPLAY</p><p>  DJNZ R3,DL05S1</p><p><b>  RET</b></p><p>  END ;程序結束</p><p><b>  第五章 檢測與調(diào)試</b></p

105、><p>  第一節(jié) 硬件調(diào)試:</p><p>  硬件調(diào)試是利用開發(fā)系統(tǒng)、基本測試儀器(萬用表、示波器)等,檢查用戶系統(tǒng)硬件中存在的故障。</p><p>  硬件調(diào)試可分為靜態(tài)調(diào)試和動態(tài)調(diào)試兩步進行:</p><p>  靜態(tài)調(diào)試:靜態(tài)調(diào)試是在用戶系統(tǒng)未工作時的一種調(diào)試。</p><p><b>  步

106、驟如下:</b></p><p>  第一步:目測。檢查外部的各種元件或者是電路是否有斷點。</p><p>  第二步:用萬用表測試。先用萬用表復核目測中有疑問的連接點,在檢測各種電源線與接地線之間是否有短路現(xiàn)象。</p><p>  第三步:加點檢測。給電路板加電,檢測所有的插座或者是硬件的電源是否符合要求的植。</p><p&g

107、t;  第四步:聯(lián)機檢查。應為只有單片機開發(fā)系統(tǒng)才能完成對用戶系統(tǒng)的調(diào)試。</p><p>  動態(tài)調(diào)試:動態(tài)調(diào)試是在用戶系統(tǒng)工作的情況下發(fā)現(xiàn)和排除用戶系統(tǒng)硬件中存在的器件內(nèi)部故障、元器件失效或一些邏輯錯誤等的一種硬件檢查。</p><p>  第二節(jié) 軟件調(diào)試:</p><p>  軟件調(diào)試是通過對用戶程序的匯編、連接、執(zhí)行來發(fā)現(xiàn)程序中存在的語法錯誤與邏輯錯誤并

108、加以排除糾正的過程。程序運行后編輯,查看是否有邏輯的錯誤。直到都沒有錯誤后,我們就可以生成HEX文本,然后將程序灌到芯片中,最后,將芯片安裝到硬件電路中去,插上電源進行調(diào)試,看電路是否能按工作原理正常運行。</p><p><b>  第六章 心得體會</b></p><p>  隨著畢業(yè)日子的到來,畢業(yè)設計也接近了尾聲。經(jīng)過幾周的奮戰(zhàn)我的畢業(yè)設計終于完成了。在沒有做

109、畢業(yè)設計以前覺得畢業(yè)設計只是對這幾年來所學知識的單純總結,但是通過這次做畢業(yè)設計發(fā)現(xiàn)自己的看法有點太片面。畢業(yè)設計不僅是對前面所學知識的一種檢驗,而且也是對自己能力的一種提高。通過這次畢業(yè)設計使我明白了自己原來知識還比較欠缺。自己要學習的東西還太多,以前老是覺得自己什么東西都會,什么東西都懂,有點眼高手低。通過這次畢業(yè)設計,我才明白學習是一個長期積累的過程,在以后的工作、生活中都應該不斷的學習,努力提高自己知識和綜合素質(zhì)。 有了

110、自己的設計方案之后就擬定電路草圖,電路草圖擬定好以后,就通過萬用表等儀器,不斷的制定元件的參數(shù),選取元件。電路板的排板得講究其合理性與美觀性。在焊接電路板時要非常細心,對應的口線要連接正確,特別應注意的是LED數(shù)碼管的引腳號對應的端口連接的是否正確。在檢測電路板的過程中也得細心,遇到有錯誤時不要慌,慢慢檢查,先檢查連線是否正確。在確保連線都正確的情況下,一般問題都出現(xiàn)在焊接技術上,檢查是否有虛焊,或是不小心連焊的。</p>

111、<p>  總的來說,這次的畢業(yè)設計做得很成功。對我的啟發(fā)也很大。從選擇到定稿、從查找資料到電路圖設計、再從理論到實踐,整個過程中包含了很多知識,我學到了不少以前沒接觸的東西,同時也鞏固了以前所學的知識。課程設計給了我一個教訓,要有縝密的思維,扎實的專業(yè)基礎加以靈活利用。本次設計讓我領會到,理論與實踐相結合。光有設想與理論是不行的,還要把它們轉(zhuǎn)化成實踐。這次的畢業(yè)設計讓我把單片機的理論知識用在實踐中,實現(xiàn)了理論和實踐相結合,

112、從中更懂得理論的是實踐的基礎,實踐有能檢驗理論的正確性,對我以后參加工作或者繼續(xù)學習。通過本次設計,我對單片機有了更深入的了解,對于程序的編寫也有了很大的提高。</p><p>  我的心得也就這么多了,總之,不管學會的還是學不會的的確覺得困難比較多,真是萬事開頭難,不知道如何入手。最后終于做完了有種如釋重負的感覺。此外,還得出一個結論:知識必須通過應用才能實現(xiàn)其價值!有些東西以為學會了,但真正到用的時候才發(fā)現(xiàn)是

113、兩回事,所以我認為只有到真正會用的時候才是真的學會了。 在此要感謝我的指導老師xx主任對我悉心的指導,感謝老師給我的幫助。在設計過程中,我通過查閱大量有關資料,與同學交流經(jīng)驗和自學,并向老師請教等方式,使自己學到了不少知識,也經(jīng)歷了不少艱辛,但收獲同樣巨大。在整個設計中我懂得了許多東西,也培養(yǎng)了我獨立工作的能力,樹立了對自己工作能力的信心,相信會對今后的學習工作生活有非常重要的影響。而且大大提高了動手的能力,使我充分體會到了在創(chuàng)

114、造過程中探索的艱難和成功時的喜悅。雖然這個設計做的也不太好,但是在設計過程中所學到的東西是這次畢業(yè)設計的最大收獲和財富,使我終身受益。</p><p>  附錄:[參考文獻] </p><p>  [1] 楊欣等.電子設計從零開始[M] .北京:清華大學出版社.2005-10</p><p>  [2] 夏路易,石宗義.電路原理圖與電路設計教程Protel 99SE

115、[M] .北京:北京希望電子出版社.2002</p><p>  [3] 黃正謹.綜合電子設計與實踐[M] .南京:東南大學出版社.2002-3</p><p>  [4] 于海生.微型計算機控制技術[M] .北京:清華大學出版社.1999-6</p><p>  [5] 孫涵芳.MCS-51系列單片機原理及應用[M] .北京:北京航空航天大學出版社.1996-4&

溫馨提示

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

評論

0/150

提交評論